Bringing WiFiBroadcast (WFB) to macOS: A Userspace Radio Stack
WiFiBroadcast (WFB) is typically the domain of Linux-based systems, often requiring specific kernel-level monitor mode and packet injection capabilities to facilitate long-range, low-latency radio links for drones and edge devices. For macOS users, this has historically been a barrier, overkill to require a separate Linux box just to communicate with edge hardware.
Enter wfb-link, a userspace radio stack written in Rust that enables macOS to establish WFB-style links using RTL8812AU USB adapters. By bypassing the standard macOS networking stack and talking directly to the hardware, wfb-link provides a bridge between macOS and the WFB-NG ecosystem.
The Technical Challenge: Bypassing macOS Monitor Mode
MacOS does not expose the monitor-mode or packet-injection paths that WFB systems traditionally rely on. In a standard WFB setup, the OS kernel handles the radio hardware to inject raw 802.11 frames. Because Apple's networking stack is restrictive, a traditional approach would be impossible on macOS.
To solve this, wfb-link takes a userspace approach. Instead of relying on the kernel's network driver, the project implements a native macOS userspace RTL8812AU bring-up. It communicates with the ALFA AWUS036ACH USB adapter as a peripheral directly, initializing the chip and submitting raw 802.11 WFB frames over bulk OUT and receiving them over bulk IN.
This architecture allows the project to treat the USB adapter as a raw data pipe rather than a network interface, effectively bypassing the OS's restrictions on packet injection.
Core Features and Implementation
Implemented in Rust for memory safety and performance, wfb-link provides several critical components to make the radio link functional:
- Direct Radio Path: Native macOS userspace bring-up for the RTL8812AU chipset.
- WFB Datagram TX/RX: The ability to transmit and receive WFB datagrams directly.
- WFB-NG Integration: It bridges these raw frames to WFB-NG’s distributor/aggregator UDP protocols, allowing it to integrate with existing WFB-NG tools.
- Network Bridging: A macOS
utunbridge helper is included for users who require an IP-based link over the radio. - Diagnostics and Control: The stack includes RF diagnostics, telemetry, LED heartbeats, and TDD (Time Division Duplexing) airtime controls to manage the radio's behavior.
AI-Assisted Development
One of the most interesting aspects of the wfb-link project is its development process. The author, a software engineer rather than a hardware or embedded systems engineer, leveraged Large Language Models (LLMs) to accelerate the development cycle. Using a combination of Codex GPT 5.5 and Claude Opus 4.7, the author was able to move from a blank slate to a first alpha release in approximately two weeks.
This demonstrates a growing trend where AI can be used to bridge the gap between a developer's high-level software engineering skills and specialized low-level hardware interaction, significantly reducing the time required to bring up a new radio stack.
Current State and Future Roadmap
Currently, wfb-link is available as an alpha release with arm64 macOS binaries. It has been tested primarily with ALFA AWUS036ACH adapters on both ends (with a Raspberry Pi 5 running Bookworm on the remote side).
Because libusb has proven unreliable on newer versions of macOS, the project utilizes IOUSBHost for communication.
While the only current focus is macOS, the author has expressed a goal for the project to be cross-platform. The next major milestone is an attempt at Android support via USB-OTG, which would potentially expand the accessibility of WFB links to mobile devices.
Summary of the Technical Approach
| Feature | Traditional WFB | wfb-link (macOS) |
|---|---|---|
| Driver Level | Kernel-mode (Monitor Mode) | Userspace (USB Bulk Transfer) |
| OS Requirement | Linux | macOS (via IOUSBHost) |
| ** 제품** | RTL8812AU / Others | ALFA AWUS036ACH |
| Communication | Raw 802.11 Frames | Bulk IN/OUT via USB |
| Integration | WFB-NG | WFB-NG UDP Protocols |