diff --git a/br-ext-chip-goke/Config.in b/br-ext-chip-goke/Config.in
index 402c30f0..b927479a 100644
--- a/br-ext-chip-goke/Config.in
+++ b/br-ext-chip-goke/Config.in
@@ -3,6 +3,7 @@ source "$BR2_EXTERNAL_GOKE_PATH/package/goke_patcher/Config.in"
 source "$BR2_EXTERNAL_GOKE_PATH/package/aura-httpd/Config.in"
 source "$BR2_EXTERNAL_GOKE_PATH/package/baresip-openipc/Config.in"
 source "$BR2_EXTERNAL_GOKE_PATH/package/comgt/Config.in"
+source "$BR2_EXTERNAL_GOKE_PATH/package/datalink/Config.in"
 source "$BR2_EXTERNAL_GOKE_PATH/package/dropbear-openipc/Config.in"
 source "$BR2_EXTERNAL_GOKE_PATH/package/df_sdwan_edge/Config.in"
 source "$BR2_EXTERNAL_GOKE_PATH/package/fdk-aac-openipc/Config.in"
diff --git a/br-ext-chip-goke/configs/gk7205v200_fpv_defconfig b/br-ext-chip-goke/configs/gk7205v200_fpv_defconfig
index 21f3c17c..c3900ecc 100644
--- a/br-ext-chip-goke/configs/gk7205v200_fpv_defconfig
+++ b/br-ext-chip-goke/configs/gk7205v200_fpv_defconfig
@@ -99,6 +99,7 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y
 # BR2_PACKAGE_WIREGUARD_TOOLS is not set
 
 # FPV
+BR2_PACKAGE_DATALINK=y
 BR2_PACKAGE_WIFIBROADCAST=y
 BR2_PACKAGE_MAVLINK_ROUTER=y
 BR2_PACKAGE_MAVFWD=y
@@ -107,7 +108,5 @@ BR2_PACKAGE_MAVFWD=y
 BR2_PACKAGE_HOST_GDB=y
 BR2_PACKAGE_GDB=y
 
-#
 # Compression and decompression
-#
 BR2_PACKAGE_LIBZIP=y
diff --git a/br-ext-chip-goke/configs/gk7205v300_fpv_defconfig b/br-ext-chip-goke/configs/gk7205v300_fpv_defconfig
index 1995bfd2..320c142a 100644
--- a/br-ext-chip-goke/configs/gk7205v300_fpv_defconfig
+++ b/br-ext-chip-goke/configs/gk7205v300_fpv_defconfig
@@ -99,15 +99,17 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y
 # BR2_PACKAGE_WIREGUARD_TOOLS is not set
 
 # FPV
+BR2_PACKAGE_DATALINK=y
 BR2_PACKAGE_WIFIBROADCAST=y
 BR2_PACKAGE_MAVLINK_ROUTER=y
 BR2_PACKAGE_MAVFWD=y
 
+# ZEROTIER
+# BR2_PACKAGE_ZEROTIER_ONE is not set
+
 # DEBUG
 BR2_PACKAGE_HOST_GDB=y
 BR2_PACKAGE_GDB=y
 
-#
 # Compression and decompression
-#
 BR2_PACKAGE_LIBZIP=y
diff --git a/br-ext-chip-goke/package/datalink b/br-ext-chip-goke/package/datalink
new file mode 120000
index 00000000..53bae00c
--- /dev/null
+++ b/br-ext-chip-goke/package/datalink
@@ -0,0 +1 @@
+../../general/package/datalink
\ No newline at end of file
diff --git a/br-ext-chip-hisilicon/Config.in b/br-ext-chip-hisilicon/Config.in
index 2e9ca602..96a704d8 100644
--- a/br-ext-chip-hisilicon/Config.in
+++ b/br-ext-chip-hisilicon/Config.in
@@ -5,6 +5,7 @@ source "$BR2_EXTERNAL_HISILICON_PATH/package/hisi_patcher/Config.in"
 source "$BR2_EXTERNAL_HISILICON_PATH/package/aura-httpd/Config.in"
 source "$BR2_EXTERNAL_HISILICON_PATH/package/baresip-openipc/Config.in"
 source "$BR2_EXTERNAL_HISILICON_PATH/package/comgt/Config.in"
+source "$BR2_EXTERNAL_HISILICON_PATH/package/datalink/Config.in"
 source "$BR2_EXTERNAL_HISILICON_PATH/package/dropbear-openipc/Config.in"
 source "$BR2_EXTERNAL_HISILICON_PATH/package/f2fs-tools-openipc/Config.in"
 source "$BR2_EXTERNAL_HISILICON_PATH/package/fdk-aac-openipc/Config.in"
diff --git a/br-ext-chip-hisilicon/configs/hi3516ev200_fpv_defconfig b/br-ext-chip-hisilicon/configs/hi3516ev200_fpv_defconfig
index 42515d70..20353d57 100644
--- a/br-ext-chip-hisilicon/configs/hi3516ev200_fpv_defconfig
+++ b/br-ext-chip-hisilicon/configs/hi3516ev200_fpv_defconfig
@@ -99,6 +99,7 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y
 # BR2_PACKAGE_WIREGUARD_TOOLS is not set
 
 # FPV
+BR2_PACKAGE_DATALINK=y
 BR2_PACKAGE_WIFIBROADCAST=y
 BR2_PACKAGE_MAVLINK_ROUTER=y
 BR2_PACKAGE_MAVFWD=y
@@ -107,7 +108,5 @@ BR2_PACKAGE_MAVFWD=y
 BR2_PACKAGE_HOST_GDB=y
 BR2_PACKAGE_GDB=y
 
-#
 # Compression and decompression
-#
 BR2_PACKAGE_LIBZIP=y
diff --git a/br-ext-chip-hisilicon/configs/hi3516ev300_fpv_defconfig b/br-ext-chip-hisilicon/configs/hi3516ev300_fpv_defconfig
index 151771f1..efebb5a6 100644
--- a/br-ext-chip-hisilicon/configs/hi3516ev300_fpv_defconfig
+++ b/br-ext-chip-hisilicon/configs/hi3516ev300_fpv_defconfig
@@ -99,15 +99,17 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y
 # BR2_PACKAGE_WIREGUARD_TOOLS is not set
 
 # FPV
+BR2_PACKAGE_DATALINK=y
 BR2_PACKAGE_WIFIBROADCAST=y
 BR2_PACKAGE_MAVLINK_ROUTER=y
 BR2_PACKAGE_MAVFWD=y
 
+# ZEROTIER
+# BR2_PACKAGE_ZEROTIER_ONE is not set
+
 # DEBUG
 BR2_PACKAGE_HOST_GDB=y
 BR2_PACKAGE_GDB=y
 
-#
 # Compression and decompression
-#
 BR2_PACKAGE_LIBZIP=y
diff --git a/br-ext-chip-hisilicon/package/datalink b/br-ext-chip-hisilicon/package/datalink
new file mode 120000
index 00000000..53bae00c
--- /dev/null
+++ b/br-ext-chip-hisilicon/package/datalink
@@ -0,0 +1 @@
+../../general/package/datalink
\ No newline at end of file
diff --git a/general/package/datalink/Config.in b/general/package/datalink/Config.in
new file mode 100644
index 00000000..cb22ad4c
--- /dev/null
+++ b/general/package/datalink/Config.in
@@ -0,0 +1,4 @@
+config BR2_PACKAGE_DATALINK
+	bool "datalink"
+	help
+	  Base package for build video link over wifi or lte.
diff --git a/general/package/datalink/datalink.mk b/general/package/datalink/datalink.mk
new file mode 100644
index 00000000..f16330c9
--- /dev/null
+++ b/general/package/datalink/datalink.mk
@@ -0,0 +1,27 @@
+################################################################################
+#
+# datalink
+#
+################################################################################
+DATALINK_VERSION = 
+DATALINK_SITE =
+DATALINK_LICENSE = GPL-2.0
+
+define DATALINK_INSTALL_TARGET_CMDS
+	$(INSTALL) -m 755 -d $(TARGET_DIR)/etc
+	cp ../general/package/datalink/files/datalink.conf $(TARGET_DIR)/etc
+
+	$(INSTALL) -m 755 -d $(TARGET_DIR)/etc               
+	cp ../general/package/datalink/files/telemetry.conf $(TARGET_DIR)/etc
+
+	$(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d
+	cp ../general/package/datalink/files/S98datalink $(TARGET_DIR)/etc/init.d
+
+	$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
+	cp ../general/package/datalink/files/telemetry $(TARGET_DIR)/usr/bin
+
+	$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
+	cp ../general/package/datalink/files/tweaksys $(TARGET_DIR)/usr/bin
+endef
+
+$(eval $(generic-package))
diff --git a/general/package/datalink/files/S98datalink b/general/package/datalink/files/S98datalink
new file mode 100755
index 00000000..75d287f0
--- /dev/null
+++ b/general/package/datalink/files/S98datalink
@@ -0,0 +1,55 @@
+#!/bin/sh
+#
+# Start fpv datalink
+#
+
+. /etc/datalink.conf
+
+chip=$(ipcinfo -c)
+cli="yaml-cli -i /etc/majestic.yaml"
+
+case "$1" in
+  start)
+	if ! [ -f /etc/system.ok ]; then
+		killall majestic
+		tweaksys ${chip}
+	fi
+
+	echo "Starting FPV datalink..."
+
+	if [ ${transport} = "lte" ]; then
+	  if [ ${usb_modem} = "true" ]; then
+		echo "Starting lte modem configuration..."
+		echo "Running usb_modswitch or other shit here..."
+	  fi
+	  # for the future
+	  #cli -s .outgoing.url1 udp://${gs_ipaddr}:${gs_port}
+	  if [ ${use_zt} = "true" ]; then
+		echo "Starting ZeroTier-One daemon..."
+		/usr/sbin/zerotier-one -d &
+		if [ ! -f /var/lib/zerotier-one/networks.d/${zt_netid}.conf ]; then
+		  sleep 8
+		  zerotier-cli join ${zt_netid} &> /dev/null
+		  echo "Don't forget authorize in the my.zerotier.com!"
+		fi
+	  fi
+	  if [ ${telemetry} = "true" ]; then
+		/usr/bin/telemetry start
+	  fi
+	else
+	  echo "Starting wifibroadcast service..."
+	  /usr/bin/wifibroadcast start
+	fi
+	;;
+  stop)
+    echo "Stopping all services..."
+    kill -9 $(pidof wfb_tx)
+    kill -9 $(pidof telemetry_rx)
+    kill -9 $(pidof telemetry_tx)
+    kill -9 $(pidof mavlink-routerd)
+    kill -9 $(pidof mavfwd)
+	;;
+    *)
+    echo "Usage: $0 {start|stop}"
+    exit 1
+esac
diff --git a/general/package/datalink/files/datalink.conf b/general/package/datalink/files/datalink.conf
new file mode 100644
index 00000000..b687e213
--- /dev/null
+++ b/general/package/datalink/files/datalink.conf
@@ -0,0 +1,11 @@
+daemon=1
+transport=wfb
+telemetry=true
+
+usb_modem=false
+gs_ipaddr=127.0.0.1
+gs_port=5600
+
+# firmware for 8Mb flash do not contain zerotier
+use_zt=false
+zt_netid=
diff --git a/general/package/wifibroadcast/files/telemetry b/general/package/datalink/files/telemetry
similarity index 81%
rename from general/package/wifibroadcast/files/telemetry
rename to general/package/datalink/files/telemetry
index a93c00f8..75019e92 100755
--- a/general/package/wifibroadcast/files/telemetry
+++ b/general/package/datalink/files/telemetry
@@ -3,6 +3,7 @@
 # Start telemetry
 #
 
+. /etc/datalink.conf
 . /etc/telemetry.conf
 
 keydir="/etc"
@@ -23,20 +24,22 @@ case "$1" in
   start)
 	echo "Loading MAVLink telemetry service..."
 
-	if [ ${router} -eq 1 ]; then
+	if [ ${router} -eq 1 ] || [ ${transport} = "lte" ]; then
 	  /usr/bin/mavlink-routerd &
 	else
 	  mavfwd --master ${serial} --baudrate ${baud} --out 127.0.0.1:${port_tx} --in 127.0.0.1:${port_rx} &
 	fi
-
-	start_telemetry
-
+	if [ ${transport} = "wfb" ]; then
+		start_telemetry
+	fi
 	echo "Done."
 	;;
   stop)
-	echo "Stopping telemetry service..."
+	echo "Stopping telemetry services..."
 	kill -9 $(pidof telemetry_rx)
 	kill -9 $(pidof telemetry_tx)
+	kill -9 $(pidof mavlink-routerd)
+	kill -9 $(pidof mavfwd)
 	;;
     *)
 	echo "Usage: $0 {start|stop}"
diff --git a/general/package/wifibroadcast/files/telemetry.conf b/general/package/datalink/files/telemetry.conf
similarity index 99%
rename from general/package/wifibroadcast/files/telemetry.conf
rename to general/package/datalink/files/telemetry.conf
index b4e40b5b..bf1e5fdc 100644
--- a/general/package/wifibroadcast/files/telemetry.conf
+++ b/general/package/datalink/files/telemetry.conf
@@ -1,6 +1,9 @@
 serial=/dev/ttyAMA0
-wlan=wlan0
 baud=115200
+### router: use simple mavfwd (0) or classic mavlink-routerd (1)
+router=0
+
+wlan=wlan0
 bandwidth=20
 stbc=1
 ldpc=1
@@ -15,5 +18,3 @@ fec_n=2
 fec_timeout=0
 guard_interval=long
 one_way=false
-### router: use simple mavfwd (0) or classic mavlink-routerd (1)
-router=0
diff --git a/general/package/wifibroadcast/files/tweaksys b/general/package/datalink/files/tweaksys
similarity index 96%
rename from general/package/wifibroadcast/files/tweaksys
rename to general/package/datalink/files/tweaksys
index c2e6e137..19cc641c 100755
--- a/general/package/wifibroadcast/files/tweaksys
+++ b/general/package/datalink/files/tweaksys
@@ -50,6 +50,11 @@ all_other() {
 	  ${cli} -s .isp.lowDelay true
 	  # ${cli} -s .video0.sliceUnits 4
   fi
+# tune socket buffer
+cat >> /etc/sysctl.conf << EOF
+net.core.rmem_default=524288
+net.core.rmem_max=2048000
+EOF
 # add outgoing rtp stream to udp
 cat >> /etc/majestic.yaml << EOF
 outgoing:
diff --git a/general/package/wifibroadcast/Config.in b/general/package/wifibroadcast/Config.in
index 3cc83f2b..4d8485f5 100644
--- a/general/package/wifibroadcast/Config.in
+++ b/general/package/wifibroadcast/Config.in
@@ -3,6 +3,7 @@ config BR2_PACKAGE_WIFIBROADCAST
 	select BR2_PACKAGE_LIBPCAP
 	select BR2_PACKAGE_LIBSODIUM
 	select BR2_PACKAGE_IW
+	select BR2_PACKAGE_DATALINK
 	help
 	  Transmit hd video over wifi for the UAV.
 
diff --git a/general/package/wifibroadcast/files/wfb.conf b/general/package/wifibroadcast/files/wfb.conf
index cee4b487..5fe266d8 100644
--- a/general/package/wifibroadcast/files/wfb.conf
+++ b/general/package/wifibroadcast/files/wfb.conf
@@ -1,4 +1,3 @@
-daemon=1
 wlan=wlan0
 region=BO
 channel=14
@@ -15,4 +14,3 @@ fec_k=8
 fec_n=12
 fec_timeout=0
 guard_interval=long
-telemetry=true
diff --git a/general/package/wifibroadcast/files/S98wfb b/general/package/wifibroadcast/files/wifibroadcast
similarity index 92%
rename from general/package/wifibroadcast/files/S98wfb
rename to general/package/wifibroadcast/files/wifibroadcast
index 7882ff03..3380d57e 100755
--- a/general/package/wifibroadcast/files/S98wfb
+++ b/general/package/wifibroadcast/files/wifibroadcast
@@ -3,6 +3,7 @@
 # Start wifibroadcast
 #
 
+. /etc/datalink.conf
 . /etc/wfb.conf
 
 keydir="/etc"
@@ -83,11 +84,6 @@ start_wfb() {
 
 case "$1" in
   start)
-	if ! [ -f /etc/system.ok ]; then
-		killall majestic
-		/usr/bin/tweaksys ${chip}
-	fi
-
     if [ ${daemon} -eq 1 ]; then
 
 	  echo "Loading modules and wifi card driver..."
@@ -124,8 +120,12 @@ case "$1" in
 	fi
     ;;
   stop)
-    echo "Stopping wifibroadcast service..."
-    kill -9 $(pidof wfb_tx)
+    echo "Stopping all services..."
+	kill -9 $(pidof wfb_tx)
+	kill -9 $(pidof telemetry_rx)
+	kill -9 $(pidof telemetry_tx)
+	kill -9 $(pidof mavlink-routerd)
+	kill -9 $(pidof mavfwd)
     ;;
     *)
     echo "Usage: $0 {start|stop}"
diff --git a/general/package/wifibroadcast/readme.md b/general/package/wifibroadcast/readme.md
deleted file mode 100644
index 308d86a5..00000000
--- a/general/package/wifibroadcast/readme.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# Настройка
-
-В конфигурационном файле /etc/wfb.conf включить автозапуск сервиса:
-
-```
-daemon=1
-```
-
-нужный wlan если их больше одного, если адаптер один, то оставить как есть:
-
-```
-wlan=wlan0
-```
-
-страна:
-
-```
-region=BO
-```
-
-канал:
-
-```
-channel=14
-```
-
-Выполнить настройки majestic по разрешению, битрейту и ключевым кадрам, после чего перезапустить камеру.
-
-При первом запуске сгенерируются ключи drone.key и gs.key, ключ для наземной станции находится по пути /etc/gs.key, копируем его.
-
-Изменить канал (до первой перезагрузки), при необходимости, можно стандартными командами из консоли:
-
-```
-iwconfig wlan0 channel X
-```
-
-# Телеметрия
-
-Включается в /etc/wfb.conf, настройки в /etc/telemetry.conf
-
-
-
-P.S. Это минимальная обвязка, возможно что-то не учтено или сделано не так как хотелось бы, все предложения приветствуются в issues.
diff --git a/general/package/wifibroadcast/wifibroadcast.mk b/general/package/wifibroadcast/wifibroadcast.mk
index 4766e922..0dd97182 100644
--- a/general/package/wifibroadcast/wifibroadcast.mk
+++ b/general/package/wifibroadcast/wifibroadcast.mk
@@ -25,17 +25,8 @@ define WIFIBROADCAST_INSTALL_TARGET_CMDS
 	$(INSTALL) -m 755 -d $(TARGET_DIR)/etc
 	cp ../general/package/wifibroadcast/files/wfb.conf $(TARGET_DIR)/etc
 
-	$(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d
-	cp ../general/package/wifibroadcast/files/S98wfb $(TARGET_DIR)/etc/init.d
-
 	$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
-	cp ../general/package/wifibroadcast/files/telemetry $(TARGET_DIR)/usr/bin
-
-	$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
-	cp ../general/package/wifibroadcast/files/tweaksys $(TARGET_DIR)/usr/bin
-
-	$(INSTALL) -m 755 -d $(TARGET_DIR)/etc
-	cp ../general/package/wifibroadcast/files/telemetry.conf $(TARGET_DIR)/etc
+	cp ../general/package/wifibroadcast/files/wifibroadcast $(TARGET_DIR)/usr/bin
 endef
 
 $(eval $(generic-package))