--- /dev/null
+#
+# Copyright (C) 2017 Hauke Mehrtens <hauke@hauke-m.de>
+# Copyright (C) 2016 - 2017 Stijn Tintel <stijn@linux-ipv6.be>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=openzwave
+PKG_REV:=164
+PKG_VERSION:=1.4.$(PKG_REV)
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://old.openzwave.com/downloads
+PKG_HASH:=4ecf39787aaf278c203764069b581dbc26094ce57cafeab4a0c1f012d2c0ac69
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/openzwave/default
+ URL:=http://openzwave.com
+ MAINTAINER:=Stijn Tintel <stijn@linux-ipv6.be>
+ DEPENDS:=+libpthread +libstdcpp
+endef
+
+define Package/openzwave/description
+ Open-ZWave is a library that interfaces with selected Z-Wave PC controllers
+endef
+
+define Package/libopenzwave
+$(call Package/openzwave/default)
+ SECTION:=Libs
+ CATEGORY:=Libraries
+ TITLE:=Open-ZWave Library
+endef
+
+define Package/openzwave
+$(call Package/openzwave/default)
+ SECTION:=Utils
+ CATEGORY:=Utilities
+ TITLE:=Open-ZWave MinOZW test utility
+ DEPENDS:=+libopenzwave +openzwave-config
+endef
+
+define Package/openzwave-config
+$(call Package/openzwave/default)
+ SECTION:=Utils
+ CATEGORY:=Utilities
+ TITLE:=Open-ZWave Device Configs
+endef
+
+MAKE_FLAGS += \
+ LD="$(TARGET_CROSS)g++" \
+ PREFIX=$(CONFIGURE_PREFIX) \
+ instlibdir=/usr/lib \
+ pkgconfigdir=/usr/lib/pkgconfig \
+ sysconfdir=/etc/openzwave
+
+define Build/Prepare
+ $(call Build/Prepare/Default)
+ rm $(PKG_BUILD_DIR)/cpp/src/platform/HidController.*
+ sed -i -e '/hidapi/d;/HidController/d' $(PKG_BUILD_DIR)/distfiles.mk
+endef
+
+define Package/libopenzwave/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopenzwave.so* $(1)/usr/lib/
+endef
+
+define Package/openzwave/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/MinOZW $(1)/usr/bin/
+endef
+
+define Package/openzwave-config/install
+ $(INSTALL_DIR) $(1)/etc/
+ $(CP) $(PKG_INSTALL_DIR)/etc/openzwave $(1)/etc/
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/openzwave $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopenzwave.* $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libopenzwave.pc $(1)/usr/lib/pkgconfig/
+endef
+
+$(eval $(call BuildPackage,libopenzwave))
+$(eval $(call BuildPackage,openzwave))
+$(eval $(call BuildPackage,openzwave-config))
--- /dev/null
+From eab45f0959ccb1deb662c6f8c036651088e2e8d6 Mon Sep 17 00:00:00 2001
+From: Stijn Tintel <stijn@linux-ipv6.be>
+Date: Fri, 17 Feb 2017 05:42:25 +0100
+Subject: [PATCH] unix: fix compilation against musl libc (#1127)
+
+POSIX.1-2001 requires sys/select.h for select() and friends.
+Compile-tested on glibc and musl, runtime tested on musl.
+
+Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
+---
+ cpp/src/platform/unix/SerialControllerImpl.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/cpp/src/platform/unix/SerialControllerImpl.cpp b/cpp/src/platform/unix/SerialControllerImpl.cpp
+index d95f848..b52b74f 100644
+--- a/cpp/src/platform/unix/SerialControllerImpl.cpp
++++ b/cpp/src/platform/unix/SerialControllerImpl.cpp
+@@ -25,6 +25,7 @@
+ // along with OpenZWave. If not, see <http://www.gnu.org/licenses/>.
+ //
+ //-----------------------------------------------------------------------------
++#include <sys/select.h>
+ #include <unistd.h>
+ #include <pthread.h>
+ #include "Defs.h"
+--
+2.10.2
+
--- /dev/null
+--- a/cpp/build/Makefile
++++ b/cpp/build/Makefile
+@@ -15,7 +15,7 @@
+ # what flags we will use for compiling in debug mode
+ DEBUG_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-inline -Wno-format -Werror -Wno-error=sequence-point -Wno-sequence-point -ggdb -DDEBUG -fPIC -DSYSCONFDIR="\"$(PREFIX)/etc/openzwave/\""
+ # what flags we will use for compiling in release mode
+-RELEASE_CFLAGS := -Wall -Wno-unknown-pragmas -Werror -Wno-format -Wno-error=sequence-point -Wno-sequence-point -O3 -DNDEBUG -fPIC -DSYSCONFDIR="\"$(PREFIX)/etc/openzwave/\""
++RELEASE_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-error=sequence-point -Wno-sequence-point -DNDEBUG -fPIC -DSYSCONFDIR="\"/etc/openzwave/\""
+ #what flags we will use for linking in debug mode
+ DEBUG_LDFLAGS := -g
+
+@@ -139,7 +139,7 @@ $(LIBDIR)/libopenzwave.a: $(patsubst %.c
+ $(patsubst %.cpp,$(OBJDIR)/%.o,$(indep)) \
+ $(OBJDIR)/vers.o
+ @echo "Linking Static Library"
+- @$(AR) $@ $+
++ @$(AR) q $@ $+
+ @$(RANLIB) $@
+
+ $(LIBDIR)/$(SHARED_LIB_NAME): $(patsubst %.cpp,$(OBJDIR)/%.o,$(tinyxml)) \
+@@ -161,7 +161,7 @@ $(top_builddir)/libopenzwave.pc: $(top_s
+ -e 's|[@]exec_prefix@|$(PREFIX)/bin|g' \
+ -e 's|[@]libdir@|$(instlibdir)|g' \
+ -e 's|[@]includedir@|$(PREFIX)/include/openzwave/|g' \
+- -e 's|[@]sysconfdir@|$(PREFIX)/etc/openzwave/|g' \
++ -e 's|[@]sysconfdir@|/etc/openzwave/|g' \
+ -e 's|[@]gitversion@|$(GITVERSION)|g' \
+ -e 's|[@]docdir@|$(docdir)/|g' \
+ -e 's|[@]VERSION@|$(VERSION)|g' \
--- /dev/null
+--- a/cpp/src/Driver.cpp
++++ b/cpp/src/Driver.cpp
+@@ -37,11 +37,6 @@
+ #include "platform/Event.h"
+ #include "platform/Mutex.h"
+ #include "platform/SerialController.h"
+-#ifdef WINRT
+-#include "platform/winRT/HidControllerWinRT.h"
+-#else
+-#include "platform/HidController.h"
+-#endif
+ #include "platform/Thread.h"
+ #include "platform/Log.h"
+ #include "platform/TimeStamp.h"
+@@ -223,14 +218,7 @@ m_nonceReportSentAttempt( 0 )
+
+ initNetworkKeys(false);
+
+- if( ControllerInterface_Hid == _interface )
+- {
+- m_controller = new HidController();
+- }
+- else
+- {
+- m_controller = new SerialController();
+- }
++ m_controller = new SerialController();
+ m_controller->SetSignalThreshold( 1 );
+
+ Options::Get()->GetOptionAsBool( "NotifyTransactions", &m_notifytransactions );
+--- a/cpp/build/Makefile
++++ b/cpp/build/Makefile
+@@ -66,16 +66,7 @@ CFLAGS += $(CPPFLAGS)
+ #where to put the temporary library
+ LIBDIR ?= $(top_builddir)
+
+-INCLUDES := -I $(top_srcdir)/cpp/src -I $(top_srcdir)/cpp/tinyxml/ -I $(top_srcdir)/cpp/hidapi/hidapi/
+-
+-ifeq ($(UNAME),Darwin)
+-SOURCES_HIDAPI =$(top_srcdir)/cpp/hidapi/mac
+-else ifeq ($(UNAME),FreeBSD)
+-SOURCES_HIDAPI =$(top_srcdir)/cpp/hidapi/libusb
+-else
+-SOURCES_HIDAPI =$(top_srcdir)/cpp/hidapi/linux
+-endif
+-
++INCLUDES := -I $(top_srcdir)/cpp/src -I $(top_srcdir)/cpp/tinyxml/
+
+ SOURCES := $(top_srcdir)/cpp/src $(top_srcdir)/cpp/src/command_classes $(top_srcdir)/cpp/tinyxml \
+ $(top_srcdir)/cpp/src/value_classes $(top_srcdir)/cpp/src/platform $(top_srcdir)/cpp/src/platform/unix $(SOURCES_HIDAPI) $(top_srcdir)/cpp/src/aes/
+@@ -85,14 +76,6 @@ VPATH = $(top_srcdir)/cpp/src:$(top_srcd
+
+ tinyxml := $(notdir $(wildcard $(top_srcdir)/cpp/tinyxml/*.cpp))
+
+-ifeq ($(UNAME),Darwin)
+-hidapi := $(notdir $(wildcard $(top_srcdir)/cpp/hidapi/mac/*.c))
+-else ifeq ($(UNAME),FreeBSD)
+-hidapi := $(notdir $(wildcard $(top_srcdir)/cpp/hidapi/libusb/*.c))
+-else
+-hidapi := $(notdir $(wildcard $(top_srcdir)/cpp/hidapi/linux/*.c)) # we do not want the libusb version
+-endif
+-
+ cclasses := $(notdir $(wildcard $(top_srcdir)/cpp/src/command_classes/*.cpp))
+ vclasses := $(notdir $(wildcard $(top_srcdir)/cpp/src/value_classes/*.cpp))
+ pform := $(notdir $(wildcard $(top_srcdir)/cpp/src/platform/*.cpp)) \
+@@ -111,7 +94,6 @@ printversion:
+
+
+ -include $(patsubst %.cpp,$(DEPDIR)/%.d,$(tinyxml))
+--include $(patsubst %.c,$(DEPDIR)/%.d,$(hidapi))
+ -include $(patsubst %.cpp,$(DEPDIR)/%.d,$(cclasses))
+ -include $(patsubst %.cpp,$(DEPDIR)/%.d,$(vclasses))
+ -include $(patsubst %.cpp,$(DEPDIR)/%.d,$(pform))
+@@ -131,7 +113,6 @@ $(top_srcdir)/cpp/src/vers.cpp:
+ #$(OBJDIR)/vers.o: $(top_builddir)/vers.cpp
+
+ $(LIBDIR)/libopenzwave.a: $(patsubst %.cpp,$(OBJDIR)/%.o,$(tinyxml)) \
+- $(patsubst %.c,$(OBJDIR)/%.o,$(hidapi)) \
+ $(patsubst %.c,$(OBJDIR)/%.o,$(aes)) \
+ $(patsubst %.cpp,$(OBJDIR)/%.o,$(cclasses)) \
+ $(patsubst %.cpp,$(OBJDIR)/%.o,$(vclasses)) \
+@@ -143,7 +124,6 @@ $(LIBDIR)/libopenzwave.a: $(patsubst %.c
+ @$(RANLIB) $@
+
+ $(LIBDIR)/$(SHARED_LIB_NAME): $(patsubst %.cpp,$(OBJDIR)/%.o,$(tinyxml)) \
+- $(patsubst %.c,$(OBJDIR)/%.o,$(hidapi)) \
+ $(patsubst %.c,$(OBJDIR)/%.o,$(aes)) \
+ $(patsubst %.cpp,$(OBJDIR)/%.o,$(cclasses)) \
+ $(patsubst %.cpp,$(OBJDIR)/%.o,$(vclasses)) \
--- /dev/null
+--- a/cpp/src/platform/unix/SerialControllerImpl.cpp
++++ b/cpp/src/platform/unix/SerialControllerImpl.cpp
+@@ -34,10 +34,6 @@
+ #include "SerialControllerImpl.h"
+ #include "platform/Log.h"
+
+-#ifdef __linux__
+-#include <libudev.h>
+-#endif
+-
+ using namespace OpenZWave;
+
+ //-----------------------------------------------------------------------------
+--- a/cpp/build/Makefile
++++ b/cpp/build/Makefile
+@@ -59,7 +59,7 @@ endif
+
+ else
+ LDFLAGS += -shared -Wl,-soname,libopenzwave.so.$(VERSION)
+-LIBS += -ludev
++LIBS +=
+ endif
+ CFLAGS += $(CPPFLAGS)
+