diff --git a/general/package/wifibroadcast/files/S98wfb b/general/package/wifibroadcast/files/S98wfb new file mode 100755 index 00000000..1aacf4db --- /dev/null +++ b/general/package/wifibroadcast/files/S98wfb @@ -0,0 +1,91 @@ +#!/bin/sh +# +# Start wifibroadcast +# + +config="/etc/wfb.conf" +keydir="/etc" +wlan=`cat ${config} | grep wlan | cut -f 2 -d '='` +region=`cat ${config} | grep region | cut -f 2 -d '='` +channel=`cat ${config} | grep channel | cut -f 2 -d '='` + +load_rtl() { + modprobe cfg80211 + modprobe 88XXau +} + +load_ath() { + modprobe cfg80211 + modprobe mac80211 + modprobe ath9k_htc + sleep 3 # need to load firmware +} + +load_interface() { + + if cat ${config} | grep "rtl" > /dev/null 2>&1; then + ifconfig ${wlan} up + iwconfig ${wlan} mode monitor + elif cat ${config} | grep "ath" > /dev/null 2>&1; then + iwconfig ${wlan} mode monitor + ifconfig ${wlan} up + fi + + iw reg set ${region} + iwconfig ${wlan} channel ${channel} +} + +start_wfb() { + wfb_tx -p 1 -u 5600 -K ${keydir}/drone.key ${wlan} & +} + +case "$1" in + start) + if grep -q daemon=1 ${config}; then + + echo "Loading modules for selected driver..." + + if cat ${config} | grep "rtl"; then + if ! lsmod | grep "88XXau"; then + load_rtl + fi + elif cat ${config} | grep "ath"; then + if ! lsmod | grep "ath9k_htc"; then + load_ath + fi + fi + + echo "Done." + echo "Preparing interface wlan..." + + load_interface + + echo "Done." + + if ! cat ${keydir}/drone.key > /dev/null 2>&1; then + echo "Generating drone & ground station keys..." + cd ${keydir} ; wfb_keygen + echo "Done." + else + echo "Drone key exist... Done." + fi + + echo "Starting Wifibroadcast service..." + + start_wfb + + echo "Done." + + else + echo "Wifibroadcast service disabled in wfb.conf..." + fi + ;; + stop) + echo "Stopping wifibroadcast service..." + kill -9 $(pidof wfb_tx) + ifconfig ${wlan} down + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 +esac diff --git a/general/package/wifibroadcast/files/rx.sh b/general/package/wifibroadcast/files/rx.sh deleted file mode 100755 index 7413bba2..00000000 --- a/general/package/wifibroadcast/files/rx.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -wlan=$1 -chan="6" - -ifconfig ${wlan} down -iwconfig ${wlan} mode monitor -ifconfig ${wlan} up -iwconfig ${wlan} channel ${chan} - -wfb_rx -p 1 -u 5600 -K /tmp/gs.key ${wlan} diff --git a/general/package/wifibroadcast/files/tx.sh b/general/package/wifibroadcast/files/tx.sh deleted file mode 100755 index caa38cd0..00000000 --- a/general/package/wifibroadcast/files/tx.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -wlan=$1 -chan="6" - -ifconfig ${wlan} down -iwconfig ${wlan} mode monitor -ifconfig ${wlan} up -iwconfig ${wlan} channel ${chan} - -wfb_tx -p 1 -u 5600 -K /tmp/drone.key ${wlan} diff --git a/general/package/wifibroadcast/files/wfb.conf b/general/package/wifibroadcast/files/wfb.conf new file mode 100644 index 00000000..7e788d99 --- /dev/null +++ b/general/package/wifibroadcast/files/wfb.conf @@ -0,0 +1,5 @@ +daemon=0 +driver=rtl +wlan=wlan0 +region=BO +channel=6 diff --git a/general/package/wifibroadcast/readme.md b/general/package/wifibroadcast/readme.md index 410b6301..9ac2f1fd 100644 --- a/general/package/wifibroadcast/readme.md +++ b/general/package/wifibroadcast/readme.md @@ -1,61 +1,54 @@ -# ATHEROS +# Настройка -1. Для сборки с драйверами Atheros включить опции ядра в соотвествующем плате конфиге: +В конфигурационном файле /etc/wfb.conf включить автозапуск сервиса: ``` -br-ext-chip-goke/board/gk7205v200/kernel/gk7205v200.generic-fpv.config -br-ext-chip-goke/board/gk7205v200/kernel/gk7205v300.generic-fpv.config - -CONFIG_WLAN_VENDOR_ATH=y -CONFIG_ATH9K_HTC=m +daemon=1 ``` -2. Выбрать необходимые пакеты в конфиге соответствующем плате: +указать используемый драйвер: ``` -br-ext-chip-goke/configs/unknown_unknown_gk7205v200_fpv_defconfig -br-ext-chip-goke/configs/unknown_unknown_gk7205v300_fpv_defconfig - -BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_ATHEROS_9271=y -``` - -# REALTEK - -1. Выбрать необходимые пакеты в конфиге соответствующем плате: +driver=rtl или driver=ath ``` -br-ext-chip-goke/configs/unknown_unknown_gk7205v200_fpv_defconfig -br-ext-chip-goke/configs/unknown_unknown_gk7205v300_fpv_defconfig - - -BR2_PACKAGE_RTL8812AU_OPENIPC=y -``` - - -!!!ВАЖНО!!! Оба драйвера с большой вероятностью не поместятся в сборку, потому собирать по принципу 1 прошивка 1 драйвер. Majestic не включен в стандартную сборку, после прошивки его необходимо загрузить отдельно. - - -# Загрузка модулей - -## Realtek: +нужный wlan если их больше одного, если адаптер один, то оставить как есть: ``` -modprobe cfg80211 -modprobe 88XXau -``` -## Atheros: - -``` -modprobe cfg80211 -modprobe mac80211 -modprobe ath9k_htc +wlan=wlan0 ``` -# Настройка интерфейса +страна: ``` -iw set reg BO -ifconfig wlan0 up -iwconfig wlan0 mode monitor -iwconfig wlan0 channel 6 +region=BO ``` + +канал: + +``` +channel=6 +``` + +В конец /etc/majestic.yaml добавить секцию: + +``` +outgoing: + - udp://127.0.0.1:5600 +``` + +Выполнить настройки majestic, отключить все лишнее кроме необходимого потока, выполнить настройки по битрейту и ключевым кадрам, после чего перезапустить камеру. + +При первом запуске сгенерируются ключи drone.key и gs.key, ключ для наземной станции находится по пути /etc/gs.key, копируем его. + +Изменить канал при необходимости можно стандартными командами из консоли: + +``` +iwconfig wlan0 channel X +``` + +Никаких дополнительных настроек для wfb_tx пока не вынесено в конфиг, для тестов их можно добавлять в функции start_wfb в скрипте инициализации /etc/init.d/S98wfb + + + +P.S. Это минимальная обвязка, возможно что-то не учтено или сделано не так как хотелось бы, все предложения приветствуются в issues. diff --git a/general/package/wifibroadcast/wifibroadcast.mk b/general/package/wifibroadcast/wifibroadcast.mk index 32ee721c..54704d32 100644 --- a/general/package/wifibroadcast/wifibroadcast.mk +++ b/general/package/wifibroadcast/wifibroadcast.mk @@ -19,9 +19,14 @@ define WIFIBROADCAST_BUILD_CMDS endef define WIFIBROADCAST_INSTALL_TARGET_CMDS - $(INSTALL) -m 0755 -D $(@D)/wfb_rx $(TARGET_DIR)/usr/bin $(INSTALL) -m 0755 -D $(@D)/wfb_tx $(TARGET_DIR)/usr/bin $(INSTALL) -m 0755 -D $(@D)/wfb_keygen $(TARGET_DIR)/usr/bin + + $(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 endef $(eval $(generic-package))