diff --git a/br-ext-chip-goke/Config.in b/br-ext-chip-goke/Config.in index 0ca9b61a..06d9ef06 100644 --- a/br-ext-chip-goke/Config.in +++ b/br-ext-chip-goke/Config.in @@ -21,6 +21,7 @@ source "$BR2_EXTERNAL_GOKE_PATH/package/libwebsockets-openipc/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/linux-firmware-openipc/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/majestic-fonts/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/majestic-gk7205v200/Config.in" +source "$BR2_EXTERNAL_GOKE_PATH/package/mavlink-router/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/mbedtls-openipc/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/microbe-web/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/motors/Config.in" diff --git a/br-ext-chip-goke/configs/unknown_unknown_gk7205v200_fpv_defconfig b/br-ext-chip-goke/configs/unknown_unknown_gk7205v200_fpv_defconfig index e530b5f7..380a1498 100644 --- a/br-ext-chip-goke/configs/unknown_unknown_gk7205v200_fpv_defconfig +++ b/br-ext-chip-goke/configs/unknown_unknown_gk7205v200_fpv_defconfig @@ -104,3 +104,4 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y # FPV BR2_PACKAGE_WIFIBROADCAST=y +BR2_PACKAGE_MAVLINK_ROUTER=y diff --git a/br-ext-chip-goke/configs/unknown_unknown_gk7205v300_fpv_defconfig b/br-ext-chip-goke/configs/unknown_unknown_gk7205v300_fpv_defconfig index e68f0d28..bd3db177 100644 --- a/br-ext-chip-goke/configs/unknown_unknown_gk7205v300_fpv_defconfig +++ b/br-ext-chip-goke/configs/unknown_unknown_gk7205v300_fpv_defconfig @@ -104,3 +104,4 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y # FPV BR2_PACKAGE_WIFIBROADCAST=y +BR2_PACKAGE_MAVLINK_ROUTER=y diff --git a/br-ext-chip-goke/external.mk b/br-ext-chip-goke/external.mk index 719e9bc1..b03bce6a 100644 --- a/br-ext-chip-goke/external.mk +++ b/br-ext-chip-goke/external.mk @@ -21,6 +21,7 @@ include $(BR2_EXTERNAL_GOKE_PATH)/package/libwebsockets-openipc/libwebsockets-op include $(BR2_EXTERNAL_GOKE_PATH)/package/linux-firmware-openipc/linux-firmware-openipc.mk include $(BR2_EXTERNAL_GOKE_PATH)/package/majestic-fonts/majestic-fonts.mk include $(BR2_EXTERNAL_GOKE_PATH)/package/majestic-gk7205v200/majestic-gk7205v200.mk +include $(BR2_EXTERNAL_GOKE_PATH)/package/mavlink-router/mavlink-router.mk include $(BR2_EXTERNAL_GOKE_PATH)/package/mbedtls-openipc/mbedtls-openipc.mk include $(BR2_EXTERNAL_GOKE_PATH)/package/microbe-web/microbe-web.mk include $(BR2_EXTERNAL_GOKE_PATH)/package/motors/motors.mk diff --git a/br-ext-chip-goke/package/mavlink-router b/br-ext-chip-goke/package/mavlink-router new file mode 120000 index 00000000..e2c255be --- /dev/null +++ b/br-ext-chip-goke/package/mavlink-router @@ -0,0 +1 @@ +../../general/package/mavlink-router \ No newline at end of file diff --git a/br-ext-chip-hisilicon/Config.in b/br-ext-chip-hisilicon/Config.in index 401f1c3c..e55a383c 100644 --- a/br-ext-chip-hisilicon/Config.in +++ b/br-ext-chip-hisilicon/Config.in @@ -36,6 +36,7 @@ source "$BR2_EXTERNAL_HISILICON_PATH/package/majestic-hi3516cv300/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/majestic-hi3516cv500/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/majestic-hi3516ev300/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/majestic-hi3519v101/Config.in" +source "$BR2_EXTERNAL_HISILICON_PATH/package/mavlink-router/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/mbedtls-openipc/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/microbe-web/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/motors/Config.in" diff --git a/br-ext-chip-hisilicon/configs/unknown_unknown_hi3516ev300_fpv_defconfig b/br-ext-chip-hisilicon/configs/unknown_unknown_hi3516ev300_fpv_defconfig index 621d9aa4..f2f22291 100644 --- a/br-ext-chip-hisilicon/configs/unknown_unknown_hi3516ev300_fpv_defconfig +++ b/br-ext-chip-hisilicon/configs/unknown_unknown_hi3516ev300_fpv_defconfig @@ -104,3 +104,4 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y # FPV BR2_PACKAGE_WIFIBROADCAST=y +BR2_PACKAGE_MAVLINK_ROUTER=y diff --git a/br-ext-chip-hisilicon/external.mk b/br-ext-chip-hisilicon/external.mk index f6bdc543..aea8d415 100644 --- a/br-ext-chip-hisilicon/external.mk +++ b/br-ext-chip-hisilicon/external.mk @@ -36,6 +36,7 @@ include $(BR2_EXTERNAL_HISILICON_PATH)/package/majestic-hi3516cv300/majestic-hi3 include $(BR2_EXTERNAL_HISILICON_PATH)/package/majestic-hi3516cv500/majestic-hi3516cv500.mk include $(BR2_EXTERNAL_HISILICON_PATH)/package/majestic-hi3516ev300/majestic-hi3516ev300.mk include $(BR2_EXTERNAL_HISILICON_PATH)/package/majestic-hi3519v101/majestic-hi3519v101.mk +include $(BR2_EXTERNAL_HISILICON_PATH)/package/mavlink-router/mavlink-router.mk include $(BR2_EXTERNAL_HISILICON_PATH)/package/mbedtls-openipc/mbedtls-openipc.mk include $(BR2_EXTERNAL_HISILICON_PATH)/package/microbe-web/microbe-web.mk include $(BR2_EXTERNAL_HISILICON_PATH)/package/motors/motors.mk diff --git a/br-ext-chip-hisilicon/package/mavlink-router b/br-ext-chip-hisilicon/package/mavlink-router new file mode 120000 index 00000000..e2c255be --- /dev/null +++ b/br-ext-chip-hisilicon/package/mavlink-router @@ -0,0 +1 @@ +../../general/package/mavlink-router \ No newline at end of file diff --git a/general/package/mavlink-router/Config.in b/general/package/mavlink-router/Config.in new file mode 100644 index 00000000..666743fd --- /dev/null +++ b/general/package/mavlink-router/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MAVLINK_ROUTER + bool "mavlink-router" + help + MAVLink Router is an application to distribute MAVLink messages between multiple endpoints (connections). It distributes packets to a single port or multiple endpoints depending on the target address. Connections can be made via UART, UDP or TCP. + + https://github.com/mavlink-router/mavlink-router diff --git a/general/package/mavlink-router/files/S97mavlink b/general/package/mavlink-router/files/S97mavlink new file mode 100755 index 00000000..0cc86434 --- /dev/null +++ b/general/package/mavlink-router/files/S97mavlink @@ -0,0 +1,18 @@ +#!/bin/sh +# +# Start MAVlink Router +# + +case "$1" in + start) + echo "Starting mavlink router daemon..." + /usr/bin/mavlink-routerd & + ;; + stop) + echo "Stopping mavlink router daemon..." + kill -9 $(pidof mavlink-routerd) + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 +esac diff --git a/general/package/mavlink-router/files/mavlink-routerd b/general/package/mavlink-router/files/mavlink-routerd new file mode 100755 index 00000000..e1874891 Binary files /dev/null and b/general/package/mavlink-router/files/mavlink-routerd differ diff --git a/general/package/mavlink-router/files/mavlink.conf b/general/package/mavlink-router/files/mavlink.conf new file mode 100644 index 00000000..c3ee677e --- /dev/null +++ b/general/package/mavlink-router/files/mavlink.conf @@ -0,0 +1,11 @@ +[General] +TcpServerPort = 0 + +[UartEndpoint drone] +Device = /dev/ttyAMA1 +Baud = 115200 + +[UdpEndpoint telemetry_tx] +Mode = Normal +Address = 127.0.0.1 +Port = 14701 diff --git a/general/package/mavlink-router/mavlink-router.mk b/general/package/mavlink-router/mavlink-router.mk new file mode 100644 index 00000000..42b054e3 --- /dev/null +++ b/general/package/mavlink-router/mavlink-router.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# mavlink-router +# +################################################################################ + +MAVLINK_ROUTER_LICENSE = ASF-2.0 + +define MAVLINK_ROUTER_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/bin + cp ../general/package/mavlink-router/files/mavlink-routerd $(TARGET_DIR)/usr/bin/mavlink-routerd + + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc + cp ../general/package/mavlink-router/files/mavlink.conf $(TARGET_DIR)/etc/mavlink.conf + + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d + cp ../general/package/mavlink-router/files/S97mavlink $(TARGET_DIR)/etc/init.d +endef + +$(eval $(generic-package)) diff --git a/general/package/mavlink-router/readme.md b/general/package/mavlink-router/readme.md new file mode 100644 index 00000000..2ab19d90 --- /dev/null +++ b/general/package/mavlink-router/readme.md @@ -0,0 +1,7 @@ +# MAVLink Router Package + +Все необходимые настройки находятся в /etc/mavlink.conf + +Запуск и остановка сервиса /etc/init.d/S97mavlink [start|stop] + +Полный список всех возможных [настроек](https://github.com/mavlink-router/mavlink-router/blob/master/examples/config.sample) можно получить из сэмпла конфига с официального гитхаба. diff --git a/general/package/wifibroadcast/files/S98wfb b/general/package/wifibroadcast/files/S98wfb index a3a3b8aa..c19a9d97 100755 --- a/general/package/wifibroadcast/files/S98wfb +++ b/general/package/wifibroadcast/files/S98wfb @@ -22,11 +22,11 @@ load_ath() { load_interface() { if [ ${driver} = "rtl" ]; then - ifconfig ${wlan} up - iwconfig ${wlan} mode monitor + ifconfig ${wlan} up + iwconfig ${wlan} mode monitor elif [ ${driver} = "ath" ]; then - iwconfig ${wlan} mode monitor - ifconfig ${wlan} up + iwconfig ${wlan} mode monitor + ifconfig ${wlan} up fi iw reg set ${region} @@ -34,7 +34,7 @@ load_interface() { } start_wfb() { - wfb_tx -p ${radio_port} -u ${udp_port} -K ${keydir}/drone.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${rs_k} -n ${rs_n} ${wlan} & + wfb_tx -p ${radio_port} -u ${udp_port} -K ${keydir}/drone.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} -T ${fec_timeout} ${wlan} & } case "$1" in @@ -74,6 +74,10 @@ case "$1" in echo "Done." + if [ ${telemetry} = "true" ]; then + sh /usr/bin/telemetry start + fi + else echo "Wifibroadcast service disabled in wfb.conf..." fi @@ -81,7 +85,6 @@ case "$1" in stop) echo "Stopping wifibroadcast service..." kill -9 $(pidof wfb_tx) - ifconfig ${wlan} down ;; *) echo "Usage: $0 {start|stop}" diff --git a/general/package/wifibroadcast/files/telemetry b/general/package/wifibroadcast/files/telemetry new file mode 100755 index 00000000..455203cf --- /dev/null +++ b/general/package/wifibroadcast/files/telemetry @@ -0,0 +1,38 @@ +#!/bin/sh +# +# Start telemetry +# + +. /etc/telemetry.conf + +keydir="/etc" + +start_telemetry() { + if [ ! -f /usr/bin/telemetry_rx -a ! -f /usr/bin/telemetry_tx ]; then + ln -s /usr/bin/wfb_rx /usr/bin/telemetry_rx ; chmod +x /usr/bin/telemetry_rx + ln -s /usr/bin/wfb_tx /usr/bin/telemetry_tx ; chmod +x /usr/bin/telemetry_tx + else + if [ ${one_way} = "false" ]; then + telemetry_rx -p ${stream_rx} -u ${port_rx} -K ${keydir}/drone.key -k ${fec_k} -n ${fec_n} ${wlan} & + fi + telemetry_tx -p ${stream_tx} -u ${port_tx} -K ${keydir}/drone.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} -T ${fec_timeout} ${wlan} & + fi +} + +case "$1" in + start) + echo "Loading MAVLink telemetry service..." + + start_telemetry + + echo "Done." + ;; + stop) + echo "Stopping telemetry service..." + kill -9 $(pidof telemetry_rx) + kill -9 $(pidof telemetry_tx) + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 +esac diff --git a/general/package/wifibroadcast/files/telemetry.conf b/general/package/wifibroadcast/files/telemetry.conf new file mode 100644 index 00000000..a29ab855 --- /dev/null +++ b/general/package/wifibroadcast/files/telemetry.conf @@ -0,0 +1,14 @@ +wlan=wlan0 +bandwidth=20 +stbc=1 +ldpc=1 +mcs_index=1 +stream_rx=1 +stream_tx=2 +port_rx=14700 +port_tx=14701 +fec_k=1 +fec_n=2 +fec_timeout=0 +guard_interval=long +one_way=true diff --git a/general/package/wifibroadcast/files/wfb.conf b/general/package/wifibroadcast/files/wfb.conf index c0194902..a8e5f901 100644 --- a/general/package/wifibroadcast/files/wfb.conf +++ b/general/package/wifibroadcast/files/wfb.conf @@ -1,14 +1,16 @@ -daemon=0 +daemon=1 driver=rtl wlan=wlan0 region=BO channel=14 bandwidth=20 -stbc=0 -ldpc=0 +stbc=1 +ldpc=1 mcs_index=1 radio_port=3 udp_port=5600 -rs_k=8 -rs_n=12 +fec_k=8 +fec_n=12 +fec_timeout=0 guard_interval=long +telemetry=false diff --git a/general/package/wifibroadcast/readme.md b/general/package/wifibroadcast/readme.md index 9ac2f1fd..ebdff98a 100644 --- a/general/package/wifibroadcast/readme.md +++ b/general/package/wifibroadcast/readme.md @@ -47,7 +47,11 @@ outgoing: iwconfig wlan0 channel X ``` -Никаких дополнительных настроек для wfb_tx пока не вынесено в конфиг, для тестов их можно добавлять в функции start_wfb в скрипте инициализации /etc/init.d/S98wfb +# Телеметрия + +Включается в /etc/wfb.conf, настройки в /etc/telemetry.conf + +Важно! Для работы телеметрии, придется экспериментировать с выделением памяти для системы. Отключить ВСЕ не нужное в камере кроме основного потока, проверить сколько свободной памяти осталось после выделения видео подсистеме и передать свободную в OS. (для GK7205v300: fw_setenv osmem 64M) diff --git a/general/package/wifibroadcast/wifibroadcast.mk b/general/package/wifibroadcast/wifibroadcast.mk index 54704d32..60d27e27 100644 --- a/general/package/wifibroadcast/wifibroadcast.mk +++ b/general/package/wifibroadcast/wifibroadcast.mk @@ -20,6 +20,7 @@ endef define WIFIBROADCAST_INSTALL_TARGET_CMDS $(INSTALL) -m 0755 -D $(@D)/wfb_tx $(TARGET_DIR)/usr/bin + $(INSTALL) -m 0755 -D $(@D)/wfb_rx $(TARGET_DIR)/usr/bin $(INSTALL) -m 0755 -D $(@D)/wfb_keygen $(TARGET_DIR)/usr/bin $(INSTALL) -m 755 -d $(TARGET_DIR)/etc @@ -27,6 +28,12 @@ define WIFIBROADCAST_INSTALL_TARGET_CMDS $(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)/etc + cp ../general/package/wifibroadcast/files/telemetry.conf $(TARGET_DIR)/etc endef $(eval $(generic-package))