added prebuild mavlink-router (#269)

* added prebuild mavlink-router

* added telemetry scripts

* update

Co-authored-by: cronyx <cronyx@nodasoft.com>
pull/270/head
cronyx 2022-07-21 19:31:26 +03:00 committed by GitHub
parent e6875a14aa
commit 6a15fb9e15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 151 additions and 12 deletions

View File

@ -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"

View File

@ -104,3 +104,4 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y
# FPV
BR2_PACKAGE_WIFIBROADCAST=y
BR2_PACKAGE_MAVLINK_ROUTER=y

View File

@ -104,3 +104,4 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y
# FPV
BR2_PACKAGE_WIFIBROADCAST=y
BR2_PACKAGE_MAVLINK_ROUTER=y

View File

@ -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

View File

@ -0,0 +1 @@
../../general/package/mavlink-router

View File

@ -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"

View File

@ -104,3 +104,4 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y
# FPV
BR2_PACKAGE_WIFIBROADCAST=y
BR2_PACKAGE_MAVLINK_ROUTER=y

View File

@ -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

View File

@ -0,0 +1 @@
../../general/package/mavlink-router

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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))

View File

@ -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) можно получить из сэмпла конфига с официального гитхаба.

View File

@ -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}"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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))