Merge pull request #263 from cronyx/master

added minimal init script to start wifibroadcast
pull/265/head
Igor Zalatov 2022-07-13 21:50:51 +03:00 committed by GitHub
commit 7f74a6b074
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 140 additions and 68 deletions

View File

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

View File

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

View File

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

View File

@ -0,0 +1,5 @@
daemon=0
driver=rtl
wlan=wlan0
region=BO
channel=6

View File

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

View File

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