diff --git a/br-ext-chip-goke/Config.in b/br-ext-chip-goke/Config.in
index 32a92f2e..ed457045 100644
--- a/br-ext-chip-goke/Config.in
+++ b/br-ext-chip-goke/Config.in
@@ -30,4 +30,4 @@ source "$BR2_EXTERNAL_GOKE_PATH/package/uacme-openipc/Config.in"
 source "$BR2_EXTERNAL_GOKE_PATH/package/vtund-openipc/Config.in"
 source "$BR2_EXTERNAL_GOKE_PATH/package/wifibroadcast/Config.in"
 source "$BR2_EXTERNAL_GOKE_PATH/package/yaml-cli/Config.in"
-
+source "$BR2_EXTERNAL_GOKE_PATH/package/zerotier-one/Config.in"
diff --git a/br-ext-chip-goke/configs/unknown_unknown_gk7205v300_openipc_defconfig b/br-ext-chip-goke/configs/unknown_unknown_gk7205v300_openipc_defconfig
index e146d9d4..e1036e3f 100644
--- a/br-ext-chip-goke/configs/unknown_unknown_gk7205v300_openipc_defconfig
+++ b/br-ext-chip-goke/configs/unknown_unknown_gk7205v300_openipc_defconfig
@@ -97,3 +97,6 @@ BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MT7601U=y
 # WIREGUARD
 BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
 BR2_PACKAGE_WIREGUARD_TOOLS=y
+
+# ZEROTIER
+BR2_PACKAGE_ZEROTIER_ONE is not set
diff --git a/br-ext-chip-goke/external.mk b/br-ext-chip-goke/external.mk
index 336d955b..37d5bb91 100644
--- a/br-ext-chip-goke/external.mk
+++ b/br-ext-chip-goke/external.mk
@@ -29,4 +29,5 @@ include $(BR2_EXTERNAL_GOKE_PATH)/package/rtl8812au-openipc/rtl8812au-openipc.mk
 include $(BR2_EXTERNAL_GOKE_PATH)/package/uacme-openipc/uacme-openipc.mk
 include $(BR2_EXTERNAL_GOKE_PATH)/package/vtund-openipc/vtund-openipc.mk
 include $(BR2_EXTERNAL_GOKE_PATH)/package/wifibroadcast/wifibroadcast.mk
-include $(BR2_EXTERNAL_GOKE_PATH)/package/yaml-cli/yaml-cli.mk
\ No newline at end of file
+include $(BR2_EXTERNAL_GOKE_PATH)/package/yaml-cli/yaml-cli.mk
+include $(BR2_EXTERNAL_GOKE_PATH)/package/zerotier-one/zerotier-one.mk
diff --git a/br-ext-chip-goke/package/zerotier-one b/br-ext-chip-goke/package/zerotier-one
new file mode 120000
index 00000000..9b56b811
--- /dev/null
+++ b/br-ext-chip-goke/package/zerotier-one
@@ -0,0 +1 @@
+../../general/package/zerotier-one
\ No newline at end of file
diff --git a/br-ext-chip-hisilicon/Config.in b/br-ext-chip-hisilicon/Config.in
index 975d2df3..638218bf 100644
--- a/br-ext-chip-hisilicon/Config.in
+++ b/br-ext-chip-hisilicon/Config.in
@@ -46,4 +46,5 @@ source "$BR2_EXTERNAL_HISILICON_PATH/package/rtl8188fu-openipc/Config.in"
 source "$BR2_EXTERNAL_HISILICON_PATH/package/uacme-openipc/Config.in"
 source "$BR2_EXTERNAL_HISILICON_PATH/package/uqmi/Config.in"
 source "$BR2_EXTERNAL_HISILICON_PATH/package/vtund-openipc/Config.in"
-source "$BR2_EXTERNAL_HISILICON_PATH/package/yaml-cli/Config.in"
\ No newline at end of file
+source "$BR2_EXTERNAL_HISILICON_PATH/package/yaml-cli/Config.in"
+source "$BR2_EXTERNAL_HISILICON_PATH/package/zerotier-one/Config.in"
diff --git a/br-ext-chip-hisilicon/configs/unknown_unknown_hi3516ev300_openipc_defconfig b/br-ext-chip-hisilicon/configs/unknown_unknown_hi3516ev300_openipc_defconfig
index c7c379c1..83ce87d7 100644
--- a/br-ext-chip-hisilicon/configs/unknown_unknown_hi3516ev300_openipc_defconfig
+++ b/br-ext-chip-hisilicon/configs/unknown_unknown_hi3516ev300_openipc_defconfig
@@ -97,3 +97,6 @@ BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MT7601U=y
 # WIREGUARD
 BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
 BR2_PACKAGE_WIREGUARD_TOOLS=y
+
+# ZEROTIER
+BR2_PACKAGE_ZEROTIER_ONE is not set
diff --git a/br-ext-chip-hisilicon/external.mk b/br-ext-chip-hisilicon/external.mk
index ee7be628..764c2180 100644
--- a/br-ext-chip-hisilicon/external.mk
+++ b/br-ext-chip-hisilicon/external.mk
@@ -47,3 +47,4 @@ include $(BR2_EXTERNAL_HISILICON_PATH)/package/uacme-openipc/uacme-openipc.mk
 include $(BR2_EXTERNAL_HISILICON_PATH)/package/uqmi/uqmi.mk
 include $(BR2_EXTERNAL_HISILICON_PATH)/package/vtund-openipc/vtund-openipc.mk
 include $(BR2_EXTERNAL_HISILICON_PATH)/package/yaml-cli/yaml-cli.mk
+include $(BR2_EXTERNAL_HISILICON_PATH)/package/zerotier-one/zerotier-one.mk
diff --git a/br-ext-chip-hisilicon/package/zerotier-one b/br-ext-chip-hisilicon/package/zerotier-one
new file mode 120000
index 00000000..9b56b811
--- /dev/null
+++ b/br-ext-chip-hisilicon/package/zerotier-one
@@ -0,0 +1 @@
+../../general/package/zerotier-one
\ No newline at end of file
diff --git a/building.sh b/building.sh
index 3a1e8208..5ea7fd26 100755
--- a/building.sh
+++ b/building.sh
@@ -597,7 +597,7 @@ xm550() {
 # ssc335_portal                 # Portal (partner)
 # ssc335_rotek                  # Rotek
 #
-ssc335de                      # OpenIPC
+# ssc335de                      # OpenIPC
 #
 # ssc337                        # OpenIPC => musl
 #
diff --git a/general/package/zerotier-one/0001-makefile.patch b/general/package/zerotier-one/0001-makefile.patch
new file mode 100644
index 00000000..873c02d3
--- /dev/null
+++ b/general/package/zerotier-one/0001-makefile.patch
@@ -0,0 +1,33 @@
+--- a/make-linux.mk	2022-04-13 12:12:52.070856266 +0300
++++ b/make-linux.mk	2022-04-13 12:17:32.643372724 +0300
+@@ -25,8 +25,8 @@
+ # otherwise build into binary as done on Mac and Windows.
+ ONE_OBJS+=osdep/PortMapper.o
+ override DEFS+=-DZT_USE_MINIUPNPC
+-MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2..*"' /usr/include/miniupnpc/miniupnpc.h && echo 1)
+-#MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2.."' /usr/include/miniupnpc/miniupnpc.h && echo 1)
++MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2..*"' $(STAGING_DIR)/usr/include/miniupnpc/miniupnpc.h && echo 1)
++#MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2.."' $(STAGING_DIR)/usr/include/miniupnpc/miniupnpc.h && echo 1)
+ ifeq ($(MINIUPNPC_IS_NEW_ENOUGH),1)
+ 	override DEFS+=-DZT_USE_SYSTEM_MINIUPNPC
+ 	LDLIBS+=-lminiupnpc
+@@ -34,7 +34,7 @@
+ 	override DEFS+=-DMINIUPNP_STATICLIB -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DOS_STRING=\"Linux\" -DMINIUPNPC_VERSION_STRING=\"2.0\" -DUPNP_VERSION_STRING=\"UPnP/1.1\" -DENABLE_STRNATPMPERR
+ 	ONE_OBJS+=ext/miniupnpc/connecthostport.o ext/miniupnpc/igd_desc_parse.o ext/miniupnpc/minisoap.o ext/miniupnpc/minissdpc.o ext/miniupnpc/miniupnpc.o ext/miniupnpc/miniwget.o ext/miniupnpc/minixml.o ext/miniupnpc/portlistingparse.o ext/miniupnpc/receivedata.o ext/miniupnpc/upnpcommands.o ext/miniupnpc/upnpdev.o ext/miniupnpc/upnperrors.o ext/miniupnpc/upnpreplyparse.o
+ endif
+-ifeq ($(wildcard /usr/include/natpmp.h),)
++ifeq ($(wildcard $(STAGING_DIR)/usr/include/natpmp.h),)
+ 	ONE_OBJS+=ext/libnatpmp/natpmp.o ext/libnatpmp/getgateway.o
+ else
+ 	LDLIBS+=-lnatpmp
+@@ -306,8 +306,8 @@
+ 		override CXXFLAGS+=-march=armv5t -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
+ 		ZT_USE_ARM32_NEON_ASM_CRYPTO=0
+ 	else
+-		override CFLAGS+=-mfloat-abi=hard -march=armv6kz -marm -mfpu=vfp -mno-unaligned-access -mtp=cp15 -mcpu=arm1176jzf-s
+-		override CXXFLAGS+=-mfloat-abi=hard -march=armv6kz -marm -mfpu=vfp -fexceptions -mno-unaligned-access -mtp=cp15 -mcpu=arm1176jzf-s
++		override CFLAGS+=-mfloat-abi=soft -march=armv6kz -marm -mfpu=vfp -mno-unaligned-access -mtp=cp15 -mcpu=arm1176jzf-s
++		override CXXFLAGS+=-mfloat-abi=soft -march=armv6kz -marm -mfpu=vfp -fexceptions -mno-unaligned-access -mtp=cp15 -mcpu=arm1176jzf-s
+ 		ZT_USE_ARM32_NEON_ASM_CRYPTO=0
+ 	endif
+ endif
diff --git a/general/package/zerotier-one/Config.in b/general/package/zerotier-one/Config.in
new file mode 100644
index 00000000..db4038c5
--- /dev/null
+++ b/general/package/zerotier-one/Config.in
@@ -0,0 +1,14 @@
+config BR2_PACKAGE_ZEROTIER_ONE
+	bool "zerotier-one"
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	select BR2_PACKAGE_LIBMINIUPNPC
+	select BR2_PACKAGE_LIBNATPMP
+	help
+	  ZeroTier One lets you join ZeroTier virtual networks and have
+	  them appear as tun/tap ports on your system.
+
+	  https://www.zerotier.com/
+
+comment "zerotier-one needs a toolchain w/ C++, threads"
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/general/package/zerotier-one/files/S90zerotier b/general/package/zerotier-one/files/S90zerotier
new file mode 100755
index 00000000..2215ff4f
--- /dev/null
+++ b/general/package/zerotier-one/files/S90zerotier
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# Start zerotier-one
+#
+
+case "$1" in
+  start)
+	echo "Starting zerotier-one daemon..."
+	/sbin/modprobe tun
+	/usr/sbin/zerotier-one -d
+    ;;
+  stop)
+	kill -9 $(pidof zerotier-one)
+	/sbin/rmmod -w tun
+    ;;
+    *)
+        echo "Usage: $0 {start|stop}"
+        exit 1
+esac
diff --git a/general/package/zerotier-one/readme.md b/general/package/zerotier-one/readme.md
new file mode 100644
index 00000000..f6ff6231
--- /dev/null
+++ b/general/package/zerotier-one/readme.md
@@ -0,0 +1,35 @@
+# ZeroTier One
+
+Пакет [ZeroTier One](https://www.zerotier.com) предназначен только для локальной сборки без установки в rootfs (соотвествующая строка в .mk имеет коментарий) за исключением скрипта запуска демона и библиотеки libstdc++. После прошивки камеры, zerotier-one необходимо загрузить в /usr/sbin и создать 2 симлинка:
+
+```
+ln -sf zerotier-one zerotier-cli
+ln -sf zerotier-one zerotier-idtool
+```
+Перезапустить камеру или выполнить команду из консоли (web либо ssh):
+
+```
+/etc/init.d/S90zerotier start
+```
+
+# Быстрый старт
+
+1. Зарегистироваться на https://my.zerotier.com
+2. Получить ID сети, настроить сеть как приватную.
+3. Из консоли камеры (web консоль или ssh) выполнить:
+
+```
+zerotier-cli join network_id где (ID сети полученный на этапе 2) в ответ будет отображен статус: <200 join OK>
+```
+
+4. Перейти в веб интерфейс на htts://my.zerotier.com и авторизовать только что подключенную камеру, авторизация происходит методом установки галочки напротив соотвествующего пира.
+
+Настройка завершена.
+
+Вся конфигурация хранится в /var/lib/zerotier-one, покинуть сеть (отключиться) можно выполнив команду в консоли:
+
+```
+zerotier-cli leave network_id где (ID сети полученный на этапе 2) в ответ будет отображен статус: <200 leave OK>
+```
+
+p.s. для hi3516ev300 и gk7205v300 на базе прошивки OpenIpc, собранные пакеты можно взять [здесь](https://github.com/cronyx/zerotier-openipc), проверить наличие места в оверлее, необходимо не менее 2.5Mb, распаковать и залить все файлы согласно дереву каталогов, выполнить п.1-4 настройки и подключения.
\ No newline at end of file
diff --git a/general/package/zerotier-one/zerotier-one.mk b/general/package/zerotier-one/zerotier-one.mk
new file mode 100644
index 00000000..73e951ee
--- /dev/null
+++ b/general/package/zerotier-one/zerotier-one.mk
@@ -0,0 +1,28 @@
+################################################################################
+#
+# zerotier-one
+#
+################################################################################
+
+ZEROTIER_ONE_VERSION = bd9c8d65ef6530ee5d14293a6d60cd2d4953ee05
+ZEROTIER_ONE_SITE = $(call github,zerotier,ZeroTierOne,$(ZEROTIER_ONE_VERSION))
+# ZEROTIER_ONE_DEPENDENCIES += libminiupnpc libnatpmp
+ZEROTIER_ONE_LICENSE = BUSL-1.1
+ZEROTIER_ONE_LICENSE_FILES = LICENSE.txt
+
+ZEROTIER_ONE_MAKE_OPTS = \
+	CC="$(TARGET_CC)" \
+	CXX="$(TARGET_CXX)"
+
+define ZEROTIER_ONE_BUILD_CMDS
+	$(MAKE) $(ZEROTIER_ONE_MAKE_OPTS) -C $(@D) all
+endef
+
+define ZEROTIER_ONE_INSTALL_TARGET_CMDS
+#	$(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
+
+	$(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d
+	cp ../general/package/zerotier-one/files/S90zerotier $(TARGET_DIR)/etc/init.d
+endef
+
+$(eval $(generic-package))
diff --git a/scripts/executing_commands_for_musl.sh b/scripts/executing_commands_for_musl.sh
index 6e1ca6c3..183c7d65 100755
--- a/scripts/executing_commands_for_musl.sh
+++ b/scripts/executing_commands_for_musl.sh
@@ -13,7 +13,7 @@ ln -sfv /lib/libc.so ${TARGET_DIR}/lib/ld-uClibc.so.0
 ln -sfv ../../lib/libc.so ${TARGET_DIR}/usr/bin/ldd
 #
 
-if grep -q ^BR2_PACKAGE_WIFIBROADCAST=y ${BR2_CONFIG}
+if grep -q ^BR2_PACKAGE_WIFIBROADCAST=y ${BR2_CONFIG} || grep -q ^BR2_PACKAGE_ZEROTIER_ONE=y ${BR2_CONFIG}
 then
   echo "Keep libsdc++..."
 else