mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			rework fpv scripts for use wfb or lte transport (#693)
							parent
							
								
									a38084bab6
								
							
						
					
					
						commit
						fa92f2a2ae
					
				|  | @ -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" | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -0,0 +1 @@ | |||
| ../../general/package/datalink | ||||
|  | @ -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" | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -0,0 +1 @@ | |||
| ../../general/package/datalink | ||||
|  | @ -0,0 +1,4 @@ | |||
| config BR2_PACKAGE_DATALINK | ||||
| 	bool "datalink" | ||||
| 	help | ||||
| 	  Base package for build video link over wifi or lte. | ||||
|  | @ -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)) | ||||
|  | @ -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 | ||||
|  | @ -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= | ||||
|  | @ -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}" | ||||
|  | @ -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 | ||||
|  | @ -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: | ||||
|  | @ -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. | ||||
| 
 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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}" | ||||
|  | @ -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. | ||||
|  | @ -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)) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue