# wfb-ng Review: Raw WiFi Links for FPV Video and MAVLink

> wfb-ng is a Linux-oriented raw WiFi transport for long-range FPV video, MAVLink telemetry, and generic IP traffic. Its main trade-off is low-level hardware and driver dependence in exchange for a packet-oriented path that avoids ordinary WiFi byte-stream behavior.

**svpcom/wfb-ng** — WFB-NG - the next generation of long-range packet radio link based on raw WiFi radio

- Repository: https://github.com/svpcom/wfb-ng
- Website: https://docs.px4.io/main/en/companion_computer/video_streaming_wfb_ng_wifi.html
- Stars: 1,561 · Forks: 350
- Language: Python
- License: GPL-3.0
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/svpcom-wfb-ng

## Why wfb-ng Exists for FPV Links

wfb-ng addresses a specific problem: moving camera, telemetry, and control data over a long-range wireless link without treating the link as an ordinary byte-oriented network connection. It is aimed at users of FPV systems, PX4-based aircraft, Raspberry Pi companion computers, and OpenWrt-based radio hardware. The README identifies video downlink, bidirectional MAVLink telemetry, generic IPv4 transport, and distributed collection across multiple hosts as supported use cases.

The central design choice is visible in the description of RTP handling. wfb-ng provides a 1:1 map between RTP and IEEE 802.11 packets. That means the transport is designed around packet delivery and loss management rather than first serializing an application stream into a byte stream. The README also states that the project uses smart forward error correction and supports changing channel capacity and radio modulation without interrupting the link.

This is not a general replacement for a home WiFi router. It is a specialized link for systems that need predictable control over radio behavior, link state, retransmission-related design, and traffic priority. The project also includes encryption and authentication through libsodium, but the exact key distribution and operational security process is delegated to the linked setup documentation rather than described in full here.

## Packet Mapping, FEC, and Radio Adaptation

The documented architecture has several layers of packet handling. RTP video is mapped directly to IEEE 802.11 packets, while MAVLink and tunnel traffic can be aggregated before transmission. Aggregation matters because the README says that WFB-ng does not send a separate WiFi packet for every MAVLink or tunnel packet. This lowers packet overhead for those traffic types, although it does not make them suitable for every workload.

Forward error correction is treated as part of the transport rather than as an unrelated utility. The README advertises smart FEC, accelerated FEC through SIMD instructions on amd64, arm32, and arm64, and a stated 5-10x speed advantage over the pure C version. That performance figure is a project claim in the README, not an independently measured result from this review. The supported processing also includes logging of the complete channel state, including a MAVLink parser, which can support later offline debugging.

The radio side is adaptive. WFB-ng supports dynamic FEC and radio modulation, allowing channel capacity and reliability to change during operation. It also supports automatic transmit diversity, selecting a transmit card based on received RSSI, and traffic shaping through standard Linux facilities. Distributed operation allows cards on different hosts to contribute data, removing a single USB bus as the only possible bandwidth boundary. The cost is operational complexity, because these features depend on the selected adapters, drivers, Linux configuration, and endpoint setup.

## Hardware and Operating-System Boundaries

WFB-ng is tightly connected to WiFi hardware support. The README names RTL8812au and RTL8812eu as stable 802.11ac-capable adapters, but both require external patched drivers. It also names Atheros AR9350 as stable for 802.11n and LDPC, including 2.4GHz and 5GHz operation, while noting that kernel patches are required to control transmit power. For receive-only use, the README says that a card with monitoring mode may be suitable, giving an OpenWrt-enabled router as an example.

The supported CPU list is broad: arm32v7, arm64v8, amd64, mips64le, s390x, ppc64le, and i386. The stated operating-system boundary is Linux with kernel 4.x or newer and a USB port. That does not make every Linux machine a suitable host. The host still needs a compatible radio, a driver that exposes the required behavior, and enough local resources for the selected services.

Atheros systems have an additional constraint. The README says that cluster mode, identified as beta, is needed for Atheros SoC devices because of CPU, flash, and memory limits. This is a meaningful distinction for small routers. A device that can technically run the software may still be a poor host for video plus telemetry plus logging and FEC.

## Raspberry Pi Installation and First Link Check

The quickest documented path is a prebuilt Raspberry Pi image. The README directs users to Releases, where the latest image file is published as `*.img.gz`. It says to unpack the image and flash it to two SD cards, place the WiFi adapters in the Raspberry Pis, boot both systems, and connect over SSH. Replace the example address with the actual address of the Pi.

```bash
ssh pi@192.168.0.111
```

The documented password is `raspberry`. After login, configure the ground-station Pi by enabling the broadcast, RTSP, video, and OSD services, then reboot. The commands shown in the README are:

```bash
sudo systemctl enable wifibroadcast@gs
sudo systemctl enable rtsp
sudo systemctl enable fpv-video
sudo systemctl enable osd
sudo reboot
```

On the drone-side Pi, the README lists a separate service set for the link and camera:

```bash
sudo systemctl enable wifibroadcast@drone
sudo systemctl enable fpv-camera
sudo reboot
```

After reboot, the README says to check the link with `wfb-cli gs` on the ground station. If the connection fails, it directs users to inspect `sudo journalctl -xu wifibroadcast@gs`. It also says to compare `drone.key` and `gs.key`, and to check matching WiFi channel and link-domain settings in `/etc/wifibroadcast.cfg`, specifically `[common] wifi_channel` and the `[drone]` or `[gs]` `link_domain` entries.

## Debian or Ubuntu Ground-Station Setup

For Debian or Ubuntu ground stations, the README gives a source-based route. First install DKMS. Then clone the patched driver repository matching the adapter, install the driver with its script, identify the interface with `ifconfig`, and confirm the loaded driver with `ethtool -i wlan0`. The expected driver names in the README are `rtl88xxau_wfb` or `rtl8812eu`.

```bash
sudo apt-get install dkms
# For 8812au:
git clone -b v5.2.20 https://github.com/svpcom/rtl8812au.git
cd rtl8812au/
# For 8812eu:
git clone -b v5.15.0.1 https://github.com/svpcom/rtl8812eu.git
cd rtl8812eu/
# For both:
sudo ./dkms-install.sh
```

The interface check is a necessary setup step because the rest of the configuration refers to a named WiFi device. The README shows `wlan0` in its example and says to run:

```bash
ifconfig
ethtool -i wlan0
```

It then documents downloading and running the ground-station installer:

```bash
curl -o install_gs.sh https://raw.githubusercontent.com/svpcom/wfb-ng/refs/heads/master/scripts/install_gs.sh
sudo bash ./install_gs.sh
```

The README calls this complete for the Debian or Ubuntu path, after which `wfb-cli gs` monitors the ground-station link. This procedure does not cover the drone-side endpoint in the same block, so a complete installation still requires the corresponding air-side configuration.

## Limits of the IPv4 Tunnel and OSD Features

WFB-ng includes an IPv4 tunnel for ordinary IP packets, but the README explicitly warns against using that tunnel for high-bandwidth transfers such as video or MAVLink because it has more overhead than raw UDP streams. This is an important boundary. The generic tunnel is useful for control or other ordinary IP traffic, while the video path is built around direct RTP packet handling.

The OSD support is also hardware-dependent. The README describes enhanced OSD for Raspberry Pi and for systems supporting GStreamer and OpenGL, including Linux X11 or Wayland environments. It states that the Raspberry Pi implementation consumes 10% CPU on a Pi Zero and is compatible with any screen resolution. That statement is useful for initial sizing, but it is not a guarantee of performance on every host. Video capture, radio processing, FEC, rendering, and logging all consume local resources.

The project is therefore a poor fit when the requirement is simply to connect two computers to a normal wireless network. Its raw-radio design requires more deliberate configuration than a standard WiFi client, and its distributed mode is aimed at overcoming host or USB-bus limits rather than simplifying configuration.

## GPL-3.0, Maintenance, and Upgrade Work

The repository identifies the project as GPL-3.0. The README also repeats the standard warranty disclaimer, stating that the software comes without warranty and that contributors are not responsible for how it is used. That means adoption must account for the license obligations and the practical support boundary, although this review does not provide legal interpretation of the GPL.

The repository is not archived. Its last push was on 2026-10-11. The release list includes `wfb-ng-25.01.2` dated 2026-02-26, `wfb-ng-25.01.1` dated 2025-04-27, and `wfb-ng-25.01` dated 2025-02-25. These dates show that releases and repository updates exist, but the README does not provide a compatibility matrix for every PX4 release, Raspberry Pi image, adapter revision, or kernel version.

Upgrade effort is not limited to Python packages. The repository includes native components, Makefile rules, Debian packaging files, OpenWrt files, and scripts. The Makefile links against `libsodium` and defines compiler flags for several SIMD architectures. A deployment that depends on a patched driver, a flashed image, and matching key and channel settings should expect upgrade work at the image, driver, and endpoint-configuration levels, not only in the Python package.

## Conclusion

Adopt wfb-ng for a controlled Linux-based FPV or telemetry link where raw WiFi hardware, patched drivers, and link tuning are acceptable. Do not choose it for a conventional office network, an unsupported adapter, or a deployment that needs a standard WiFi access point. Verify first that the selected radio is supported, that its patched driver loads correctly, and that both endpoints use matching channel, link-domain, and key settings.

## FAQ

### What hardware does wfb-ng support?

The README lists RTL8812au, RTL8812eu, and Atheros AR9350 as supported adapters. RTL8812au and RTL8812eu require external patched drivers, while Atheros AR9350 requires kernel patches for transmit-power control. A monitoring-mode card may work for receive-only use.

### How do I install wfb-ng on a Raspberry Pi?

The documented Raspberry Pi path uses a release image named `*.img.gz`, which is unpacked and flashed to two SD cards. After booting both systems, enable the relevant services with `systemctl enable` and use `wfb-cli gs` on the ground station to monitor the link.

### Can wfb-ng carry generic IP traffic?

Yes, the README describes an IPv4 tunnel for generic usage. It explicitly advises against using the tunnel for high-bandwidth video or MAVLink because the tunnel has more overhead than raw UDP streams.

### What should I check if the wfb-ng connection fails?

The README recommends checking `sudo journalctl -xu wifibroadcast@gs`, confirming that `drone.key` and `gs.key` match, and checking that both endpoints use the same WiFi channel and link domain in `/etc/wifibroadcast.cfg`.

## Sources

- [License: GPL-3.0](https://github.com/svpcom/wfb-ng/blob/master/LICENSE)
- [Project website](https://docs.px4.io/main/en/companion_computer/video_streaming_wfb_ng_wifi.html)
- [README](https://github.com/svpcom/wfb-ng/blob/master/README.md)
- [Releases](https://github.com/svpcom/wfb-ng/releases)
- [svpcom/wfb-ng on GitHub](https://github.com/svpcom/wfb-ng)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/svpcom-wfb-ng
