WFB-NG (WiFi Broadcast Next Generation)
WFB-NG — це відкритий цифровий радіолінк для передачі відео, телеметрії та даних поверх «сирого» Wi-Fi. Він є основою відеолінку в OpenIPC/OpenFPV-системах. Проєкт розробляє svpcom.
На відміну від звичайного Wi-Fi-з'єднання, WFB-NG переводить мережеву карту в режим монітора й передає пакети напряму (інжекція), без асоціації та підтверджень — це дає мінімальну затримку й велику дальність.
Принцип роботи
- Broadcast без асоціації. Немає «підключення» між пристроями та очікування ACK — передавач просто транслює пакети, а будь-який приймач у тому ж каналі їх ловить.
- FEC (Forward Error Correction). Додаються надлишкові пакети, щоб відновлювати втрачені. За замовчуванням лінк відновлює до 4 втрачених пакетів із блоку в 12 (налаштовується через
fec_k/fec_n). - 1:1 RTP → IEEE 802.11. Кожен RTP-пакет відео мапиться в один радіопакет без серіалізації в потік — це мінімізує затримку.
- Шифрування. Трафік шифрується (libsodium) парою ключів
gs.key/drone.key.
Переваги
- Низька затримка — немає handshake-протоколів.
- Стійкість до завад — FEC відновлює втрачені пакети, є диверсивний прийом.
- Велика дальність — кілька кілометрів за правильних антен і потужності.
- Двосторонній канал — відео «вниз» + телеметрія MAVLink «вгору».
- Кілька приймачів — агрегація з кількох карт/станцій, автоматичний вибір найкращого передавача за рівнем сигналу.
Підтримуване обладнання
| Чипсет | Примітка |
|---|---|
| RTL8812AU | Найпоширеніший, потрібен патчений драйвер |
| RTL8812EU | Потрібен патчений драйвер |
| Atheros AR9350 | Підтримується |
Карта обов'язково має підтримувати режим монітора та інжекцію пакетів. Див. також Мережеві карти.
Компоненти
| Інструмент | Призначення |
|---|---|
wfb_keygen | Генерує пару ключів шифрування (gs.key, drone.key) |
wfb_tx | Передавач (інжекція пакетів у режимі монітора) |
wfb_rx | Приймач |
wfb_tun | Тунель IPv4 поверх лінку (для MAVLink/даних) |
wfb-cli gs | Монітор стану лінку на наземній станції (RSSI, FEC, втрати) |
Ключі шифрування
WFB-NG шифрує трафік. Ключі генеруються однією командою (щоб утворити коректну пару):
wfb_keygenКоманда створює два файли. Розкладіть їх так:
drone.key→ на камеру (дрон):/etc/drone.keygs.key→ на наземну станцію:/etc/gs.key
Ключі мають бути з однієї пари
Якщо gs.key і drone.key згенеровані різними викликами wfb_keygen, лінк не встановиться (помилка дешифрування). Генеруйте обидва ключі разом і лише потім розкладайте по пристроях.
Конфігурація: /etc/wifibroadcast.cfg
Головний конфіг лінку. Канал і регіон задаються в [common], а потоки відео/телеметрії — в окремих секціях.
[common]
wifi_channel = 161 # 161 = 5825 МГц (5.8 ГГц)
wifi_region = 'BO' # регіон для максимальної потужності
[drone_video]
peer = 'connect://127.0.0.1:5600' # куди віддавати відео
bandwidth = 20 # 20 або 40 МГц
stbc = 1
ldpc = 1
mcs_index = 1
fec_k = 8
fec_n = 12
[gs_video]
peer = 'listen://0.0.0.0:5600'
[gs_mavlink]
peer = 'connect://127.0.0.1:14550'Основні параметри
| Параметр | Значення | Опис |
|---|---|---|
wifi_channel | напр. 161 | Канал Wi-Fi (має збігатися на дроні та GS) |
wifi_region | напр. 'BO' | Регіон/потужність (обирайте легальний для вашої країни) |
bandwidth | 20 / 40 | Ширина каналу, МГц |
mcs_index | 1–5 | Схема модуляції: вище = більший бітрейт, менша дальність |
stbc / ldpc | 0/1 | Кодування для стійкості до завад |
fec_k / fec_n | напр. 8 / 12 | FEC: k даних із n пакетів (більший запас = надійніше) |
short_gi | True/False | Короткий guard interval |
Потужність і регіон
Параметр wifi_region впливає на дозволену потужність передавача. Використовуйте значення, легальне для вашої країни та діапазону. Завищена потужність може бути незаконною й перегрівати карту.
Налаштування наземної станції (Ubuntu)
Приклад для Ubuntu 22.04 LTS.
1. Залежності:
sudo apt update
sudo apt install dkms git python3-all-dev net-tools virtualenv fakeroot \
debhelper python3-twisted libpcap-dev python3-pyroute2 python3-future \
python3-all libsodium-dev2. Драйвер карти (приклад для RTL8812AU) — встановіть патчений драйвер через dkms.
3. Встановлення WFB-NG (вкажіть ім'я свого інтерфейсу з iwconfig):
git clone -b stable https://github.com/svpcom/wfb-ng.git
cd wfb-ng
sudo ./scripts/install_gs.sh "wlan0"4. Конфіг — відредагуйте /etc/wifibroadcast.cfg (канал/регіон/потоки, як вище) і покладіть /etc/gs.key.
Запуск і моніторинг
# Наземна станція
sudo systemctl enable --now wifibroadcast@gs
systemctl status wifibroadcast@gs
# Дрон (камера)
sudo systemctl enable --now wifibroadcast@drone
# Монітор лінку (RSSI, FEC, втрати пакетів)
wfb-cli gs
# Логи для діагностики
journalctl -xu wifibroadcast@gs -n 100Перегляд відео
Відеопотік (зазвичай H.265) віддається по UDP на порт 5600. Його можна відкрити у PixelPilot, QGroundControl чи GStreamer:
- QGroundControl — UDP h.265, адреса
0.0.0.0:5600, увімкніть Low Latency Mode. - GStreamer — приймання RTP/UDP на
5600з декодуванням H.265.
Вирішення проблем
| Симптом | Причина / рішення |
|---|---|
| Немає відео взагалі | Різний wifi_channel на дроні та GS — звірте /etc/wifibroadcast.cfg |
| Помилки дешифрування | gs.key і drone.key не з однієї пари — перегенеруйте wfb_keygen |
| Лінк рветься / низький бітрейт | Завеликий mcs_index для умов — зменшіть; перевірте антени та потужність |
| Карта не запускається | Немає режиму монітора/інжекції або непатчений драйвер |
Для автоматичного підбору бітрейту під умови зв'язку див. Adaptive-Link.

