Skip to main content

WFB-ng Video Link

WFB-ng (WiFi Broadcast next generation) is the protocol the agent uses for long-range HD video. It is not standard WiFi. Instead, it broadcasts raw 802.11 frames in monitor mode with forward error correction (FEC). This gives you 10-50+ km range at 30-70 ms latency. The agent manages WFB-ng directly as the ados-wfb systemd service. No OpenHD or other wrapper is required.

How it works

Traditional WiFi requires a two-way handshake (connect, authenticate, associate). That limits range to whatever distance both sides can reliably hear each other. WFB-ng skips all of that. The transmitter broadcasts packets one-way. The receiver picks up whatever it can hear. Key differences from standard WiFi:
Standard WiFiWFB-ng
ModeManaged (STA/AP)Monitor mode (raw injection)
ConnectionTwo-way handshakeOne-way broadcast
Range~100-300 m10-50+ km with directional antennas
Latency5-50 ms30-70 ms
Error handlingTCP retransmissionFEC (forward error correction)
EncryptionWPA2/WPA3Custom key-based

Hardware

WiFi adapter

The recommended chipset is the RTL8812EU (5.8 GHz, 802.11ac). It supports monitor mode and packet injection at high TX power.
SpecValue
ChipsetRTL8812EU
TX powerUp to 29 dBm (800 mW)
Frequency5.8 GHz
InterfaceUSB 2.0
Weight~25g (module form factor)
The agent auto-detects the adapter by scanning for USB devices with the RTL8812EU vendor/product IDs.
The RTL8812EU requires a DKMS kernel driver that is not part of the mainline Linux kernel. The install script installs this driver automatically on supported boards. If you are running a custom kernel, you need to build and install the driver manually.

Antennas

The adapter’s built-in antenna works for short-range bench testing. For real flights, use external antennas:
  • Air side (drone): Omnidirectional dipole antenna, 3-5 dBi. The drone moves in all directions, so omnidirectional coverage is important.
  • Ground side: Directional patch or panel antenna, 8-14 dBi. Point it at the drone for maximum range.
With a 14 dBi directional antenna on the ground and a 5 dBi dipole on the drone, expect 20-50 km line-of-sight range depending on conditions.

Configuration

video:
  mode: "wfb"
  wfb:
    interface: ""        # Auto-detected
    channel: 149         # 5 GHz channel (149 = 5745 MHz)
    tx_power: 25         # dBm (25 = ~300 mW)
    fec_k: 8             # FEC data blocks
    fec_n: 12            # FEC total blocks (data + parity)

Channel selection

WFB-ng operates on 5 GHz channels. Choose a channel that is not congested in your area. Common choices:
ChannelFrequencyNotes
365180 MHzDFS in some regions
1495745 MHzDefault, usually clean
1615805 MHzAlternative
1655825 MHzCommon FPV channel
Check your local regulations. Some 5 GHz channels require DFS (Dynamic Frequency Selection) or are restricted for outdoor use. The agent does not enforce regulatory limits. You are responsible for compliance.

TX power

The tx_power setting is in dBm. Higher power means more range but also more interference and heat. Start at 25 dBm and increase only if needed.
dBmmWTypical use
1532Bench testing
20100Short range (< 1 km)
25316Medium range (1-10 km)
29800Long range (10-50 km)

FEC tuning

Forward Error Correction adds redundancy to the stream. The fec_k parameter is the number of data blocks, and fec_n is the total number of blocks (data + parity). The ratio fec_k/fec_n determines how much packet loss the stream can tolerate.
fec_kfec_nParity ratioMax loss tolerance
81233%33% packet loss
4850%50% packet loss
1250%50% packet loss
8911%11% packet loss
Higher parity means more resilience but also more bandwidth overhead. The default 8/12 is a good balance for most conditions.

Key management

WFB-ng uses a shared key for stream encryption. The agent generates a key at install time and stores it at /etc/ados/wfb.key. The ground station needs the same key to receive the stream. When using the ADOS Ground Station (another instance of the agent in ground-station profile), the key is exchanged automatically during pairing. For manual key management:
# On the air unit (drone), the key is at:
cat /etc/ados/wfb.key

# Copy it to the ground station's /etc/ados/wfb.key
The ados-wfb service reports link statistics to the state IPC socket and REST API:
MetricDescription
RSSIReceived signal strength (dBm)
SNRSignal-to-noise ratio (dB)
ChannelCurrent operating channel
Packets receivedTotal packets decoded
Packets lostTotal packets lost (before FEC)
FEC recoveredPackets recovered by FEC
FEC failedUnrecoverable packet groups
BitrateCurrent stream bitrate (kbps)
From the CLI:
$ ados link
State:    active
RSSI:     -42 dBm
SNR:      28.5 dB
Channel:  149
Packets:  184523 rx, 12 lost
FEC:      8 recovered, 0 failed
Bitrate:  4200 kbps

Ground station pairing

The air unit (drone) runs wfb_tx to transmit. The ground station runs wfb_rx to receive. Both need to be on the same channel with the same key. When using two ADOS agents (one drone profile, one ground-station profile), channel and key synchronization happens automatically through the pairing flow. When using a standalone WFB-ng receiver (like wfb-cli or a custom setup), configure the channel and key manually on both sides.

Troubleshooting

Run lsusb and check for the RTL8812EU device. If it is present but not recognized, the DKMS driver may not have built for your kernel version. Check dmesg | grep 88x2eu for driver load errors.
Check antenna connections. Verify TX power is set appropriately. Make sure the adapter is not USB-hub-connected (use a direct USB port for stable power). Try a different 5 GHz channel to avoid interference.
If fec_failed is climbing, you are at the edge of range or have interference. Options: increase FEC parity (lower fec_k/fec_n ratio), reduce video bitrate, use a directional antenna on the ground, or move to a cleaner channel.