К видеорегистратору можно подключить смартфон или планшет. Далее запускаете на планшете прогу типа fpv vr или QOpenHD и ещё какую нибудь.
Для более детальной информации смотрите видео:
Подключение по USB:
Первый скрипт:
#!/bin/sh
### Folder: /etc
case "$1" in
start)
echo "Starting usb tethering..."
/usr/bin/usbtet &
;;
stop)
echo "Stopping usb tethering..."
kill -9 $(pidof usbtet)
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
Второй скрипт:
#!/bin/sh
### Folder: /usr/bin
mode="vdec"
while [ true ]
do
have_phone="false"
devices=$(lsusb | cut -d ' ' -f6 | sort | uniq)
for card in ${devices}
do
if [ ${card} = "04e8:6863" ]; then
have_phone="true"
break
fi
done
if [ "${have_phone}" == "true" ] && [ "${mode}" == "vdec" ]; then
mode="tethering"
echo "Swithcing to ${mode}"
modprobe rndis_host
n=0
while ! $(ifconfig -a | grep -q usb0)
do
if [ ${n} -ge 5 ]; then
echo "usb0 did not appear."
exit
fi
sleep 0.5
n=$(expr ${n} + 1)
done
ifup usb0
sleep 0.5
n=0
phone_ip=$(ip route | grep usb0 | grep default | cut -d ' ' -f3)
while [ -z ${phone_ip} ]
do
if [ ${n} -ge 5 ]; then
echo "default route did not appear."
exit
fi
sleep 0.5
n=$(expr ${n} + 1)
phone_ip=$(ip route | grep usb0 | grep default | cut -d ' ' -f3)
done
cp /etc/mavlink.conf /tmp
sed -i s/0.0.0.0/${phone_ip}/g /tmp/mavlink.conf
/usr/bin/wifibroadcast stop
/usr/bin/wifibroadcast start
fi
if [ "${have_phone}" == "false" ] && [ "${mode}" == "tethering" ]; then
mode="vdec"
echo "Swithcing to ${mode}"
ifdown usb0
cp /etc/mavlink.conf /tmp
/usr/bin/wifibroadcast stop
/usr/bin/wifibroadcast start
fi
sleep 0.5
done
Исправленный файл wifibroadcast:
#!/bin/sh
#
# Start wifibroadcast for usb
#
. /etc/datalink.conf
. /etc/wfb.conf
keydir="/etc"
chip=$(ipcinfo -c)
vendor=$(ipcinfo -v)
driver=""
set_mcs() {
if [ ${vendor} = "ingenic" ]; then
mcs=$(ls -l /lib/firmware | grep "htc_9271" | awk {'print $11'} | cut -d "." -f3)
else
mcs=$(ls -l /lib/firmware/ath9k_htc | grep "htc_9271-1.4.0.fw" | cut -d "." -f6)
fi
if [ -z "${mcs}" ]; then
setmcs ${mcs_index}
fi
if [ ${mcs_index} -eq 1 ] || [ ${mcs_index} -eq 3 ]; then
if [ ! ${mcs_index} -eq ${mcs} ]; then
setmcs ${mcs_index}
sleep 3
fi
fi
}
# "0bda:8813" -> (8814) -> 8814au
# "0846:9052" -> (8811) -> 8821au
detect_wifi_card() {
echo "Detecting wifi card vendor..."
devices=$(lsusb | cut -d ' ' -f6 | sort | uniq)
for card in ${devices}
do
case "${card}" in
"0bda:8812" | "0bda:881a" | "0b05:17d2" | "2357:0101" | "2604:0012")
driver="realtek"
modprobe 88XXau rtw_tx_pwr_idx_override=${driver_txpower_override}
;;
"0cf3:9271" | "040d:3801")
driver="atheros"
if ! [ ${unit} = "gs" ]; then
set_mcs
fi
modprobe mac80211
modprobe ath9k_htc
;;
esac
done
if [ -z "${driver}" ]; then
echo "No usb wifi card detected. Check wifi stick connection, usb power or possible bad soldering."
exit
else
echo "Detected:" ${driver}
fi
echo "Awaiting interface ${wlan} in system..."
local n=0
while ! $(ifconfig -a | grep -q ${wlan})
do
if [ ${n} -ge 5 ]; then
echo "No interface ${wlan}. Check wifi stick connection, usb power or possible bad soldering."
exit
fi
sleep 0.5
n=$(expr ${n} + 1)
done
}
load_modules() {
modprobe cfg80211
detect_wifi_card
}
load_interface() {
if [ ${driver} = "realtek" ]; then
ifconfig ${wlan} up
iwconfig ${wlan} mode monitor
elif [ ${driver} = "atheros" ]; then
iwconfig ${wlan} mode monitor
ifconfig ${wlan} up
fi
iw reg set ${region}
if [ ! -z "${frequency}" ]; then
iwconfig ${wlan} freq ${frequency}
else
iwconfig ${wlan} channel ${channel}
fi
# dirty fix crash if txpower set. setting txpower disabled because patched driver always set txpower level 58
# iw dev ${wlan} set txpower fixed $((${txpower} * 100))
}
start_drone_wfb() {
wfb_tx -p ${stream} -u ${udp_port} -R ${rcv_buf} -K ${keydir}/${unit}.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} -T ${pool_timeout} -i ${link_id} -f ${frame_type} ${wlan} > /dev/null &
}
start_gs_wfb() {
wfb_rx -c ${udp_addr} -u ${udp_port} -p ${stream} -K ${keydir}/${unit}.key -i ${link_id} ${wlan} > /dev/null &
}
case "$1" in
start)
if [ ${daemon} -eq 1 ]; then
echo "Loading modules and wifi card driver..."
load_modules
echo "Preparing interface wlan..."
load_interface
if ! cat ${keydir}/${unit}.key > /dev/null 2>&1; then
echo "Generating drone & ground station keys..."
cd ${keydir} ; wfb_keygen
else
echo ${unit} "key exist..."
fi
if [ ! -e /tmp/mavlink.conf ]; then
cp /etc/mavlink.conf /tmp
fi
phone_ip=$(ip route | grep usb0 | grep default | cut -d ' ' -f3)
if [ ! -z ${phone_ip} ]; then
echo "USB Tethering mode detected."
udp_addr=${phone_ip}
fi
echo "Starting Wifibroadcast service..."
start_${unit}_wfb
echo "Done."
if [ ${telemetry} = "true" ]; then
if [ ${chip} = "gk7205v200" ]; then
# UART2_RX mux
devmem 0x120c0010 32 0x1e04
fi
telemetry start
fi
else
echo "Wifibroadcast service disabled in wfb.conf..."
fi
;;
stop)
echo "Stopping all services..."
kill -9 $(pidof wfb_tx)
kill -9 $(pidof wfb_rx)
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
Изменения в файле mavlinc.conf и telemetry.conf
Подключение по Wi-Fi:
Скрипт №1:
#!/bin/sh
### Folder: /etc/init.d
modprobe cfg80211
insmod /lib/modules/4.9.37/extra/8188eu.ko
ifup wlan1
exit 0
Скрипт №2:
#!/bin/sh
### Folder: /etc
tab_wlan=wlan1
. /etc/datalink.conf
. /etc/wfb.conf
keydir="/etc"
case "$1" in
start)
ifdown ${tab_wlan}
ifup ${tab_wlan}
TAB_IP=`ip route show 0.0.0.0/0 dev ${tab_wlan} | cut -d\ -f3`
if [ ! -z ${TAB_IP} ]; then
echo found ${tab_wlan} ap ${TAB_IP}
wfb_rx -c ${TAB_IP} -u ${udp_port} -p ${stream} -K ${keydir}/${unit}.key -i ${link_id} ${wlan} > /dev/null &
echo "start streaming to ${addr} one."
fi
;;
stop)
TAB_IP=`ip route show 0.0.0.0/0 dev ${tab_wlan} | cut -d\ -f3`
pid=`ps -ef | grep "wfb_rx -c ${TAB_IP}" | grep -v grep | awk '{print $1}'`
kill ${pid}
echo "stop streaming to ${addr} one."
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
Файл wfb.conf (добавить tab_wlan=wlan1):
### wfb.conf
unit=gs
wlan=wlan0
region=00
channel=149
txpower=20
driver_txpower_override=20
stream=0
link_id=7669206
udp_addr=127.0.0.1
udp_port=5600
telemetry=true
tab_wlan=wlan1
Исправленный файл interfaces:
iface lo inet loopback
### отправка видео на смартфон по WiFi (WiFi Tethering):
#auto wlan1
iface wlan1 inet dhcp
#pre-up if ! lsmod | grep 8188eu; then insmod /lib/modules/4.9.37/extra/8188eu.ko; fi
#pre-up sleep 4
pre-up wpa_passphrase "ВАШ_SSID" "ВАШ_ПАРОЛЬ" >/tmp/wpa_supplicant.conf
pre-up sed -i '2i \\tscan_ssid=1' /tmp/wpa_supplicant.conf
pre-up sleep 3
pre-up wpa_supplicant -B -D nl80211 -i wlan1 -c /tmp/wpa_supplicant.conf
post-down killall wpa_supplicant
post-down rm -f /tmp/wpa_supplicant.conf
#source-dir /etc/network/interfaces.d
Всем скриптам необходимо дать права на исполнение всем пользователям (команда cmod +x имя_скрипта)!