High-Speed SDR MANETs
on OpenWiFi + BATMAN-adv
The complete technical reference for turning Zynq FPGA-based software-defined radio hardware into a field-deployable, self-healing mesh network — architecture, exact configuration commands, and real throughput numbers.
▶ Watch the companion video walkthroughThree ideas that explain the whole system
Everything below expands on these three architectural decisions — understand these and the rest of the document is detail.
Open-source, top to bottom
OpenWiFi handles hardware-accelerated baseband; BATMAN-adv handles kernel-level mesh routing. Together they turn SDR hardware into a field-deployable MANET router with no closed-source components.
Baseband lives in the FPGA
MAC/PHY timing executes inside the FPGA fabric at ~10µs SIFS, leaving the Zynq's ARM cores free to run Linux, mesh routing daemons, and applications simultaneously.
Transparent bridging
PCs on Gigabit Ethernet, phones on USB-C LAN — every local device inherits multi-hop mesh routing automatically. No custom client software, ever.
Component mapping across the OSI stack
Each layer of the network stack is handled by a distinct, purpose-built component — from IP applications down to RF direct conversion.
The FPGA fabric absorbs all timing-critical baseband work, so the ARM cores stay free to run BATMAN-adv, video, and mesh applications at the same time — this is the architectural decision that makes the rest of the system possible.
OpenWiFi vs. BATMAN-adv
Both are open-source, but they solve completely different problems at completely different layers.
| Dimension | OpenWiFi | BATMAN-adv |
|---|---|---|
| Layer | Layer 1 + lower Layer 2 | Layer 2 (data link) |
| Hardware dependency | Requires Zynq FPGA + AD9361/AD9363 | Any standard Linux device, any network port |
| Packet handling | RF symbol framing, preamble detection, CSMA/CA | Dynamic global MAC address lookup table |
| Frequency awareness | Directly dictates center frequency & channel width | Entirely radio-agnostic |
| Linux representation | Standard mac80211 interface (wlan0 / sdr0) | Kernel module (batman-adv.ko), bat0 interface |
In short: OpenWiFi gets the bits onto the air. BATMAN-adv decides where those bits should go next. Combining them layers a self-healing mesh on top of a hardware-accelerated radio.
When & why to combine them on Zynq platforms
Layering BATMAN-adv on top of OpenWiFi provides tactical advantages that OpenWiFi's native 802.11s mesh mode cannot offer alone.
Heterogeneous hardware networks
Situation: OpenWiFi SDR nodes, standard Wi-Fi APs, and wired Ethernet links coexist.
Advantage: BATMAN-adv bridges the RF interface (sdr0) with Gigabit Ethernet (eth0) and USB-C LAN (usb0) into one unified Layer-2 switch.
Fast-moving tactical MANETs
Situation: High mobility (drones, mobile units) causes rapid RF signal fluctuation.
Advantage: BATMAN-adv's Transmit Quality (TQ) algorithm updates route tables instantly, preventing drops during movement.
Multi-radio channel diversity
Situation: A high-speed 5 GHz OpenWiFi link runs alongside a long-range sub-GHz LoRa/FSK backup.
Advantage: BATMAN-adv routes across both simultaneously, falling back to the long-range link if the fast link degrades.
Unlocking the AD9363 transceiver
The AD9363 found on boards like the PlutoSky R2 (Zynq-7020) is physically identical to the higher-end AD9361, but factory-restricted via software register settings.
Unlocking enables 40 MHz channel operation required for dual spatial streams, opens all major ISM/license bands, and allows fine-grained gain-table and baseband-filter tuning. See the Regulatory Notes section before transmitting outside your region's authorized bands and power limits.
Unlock commands (Linux / U-Boot)
U-Boot environment variables persist across reboot and select the AD9361 driver profile at next boot.
# Set environment variables in U-Boot or via fw_setenv in Linux fw_setenv attr_name ad9361 fw_setenv attr_val ad9361 # Reboot the system to initialize the updated driver parameters reboot # Verify driver initialization cat /sys/bus/iio/devices/iio:device0/name # Expected output: ad9361-phy
Maximizing throughput: 40 MHz & 2x2 MIMO
The PlutoSky R2 pairs a Xilinx Zynq XC7Z020 FPGA with dual RF transceivers (2TX / 2RX SMA). Configuring 2x2 MIMO over a 40 MHz channel doubles spatial streams.
The full configuration pipeline
Three stages: bring up the radio, bring up the mesh, verify the link. Run these in order on every node.
OpenWiFi high-speed driver initialization
Reconfigures sdr0 for 802.11n HT40 (40 MHz) operation with dual-stream MCS rates before joining the mesh.
# Bring down interface to reconfigure baseband parameters ip link set dev sdr0 down # Configure sdr0 for 802.11n, HT40 (40 MHz) with dual-stream MCS rates (8-15) iw dev sdr0 set bitrates ht-mcs-2.4 8 9 10 11 12 13 14 15 iw dev sdr0 set channel 36 HT40+ # Enable Ad-Hoc mode and bring interface up iw dev sdr0 set type ibss ip link set dev sdr0 up # Join high-speed SDR mesh network iw dev sdr0 ibss join HIGH_SPEED_MANET 5180 HT40
BATMAN-adv kernel module & bridge integration
Loads batman-adv, attaches the RF adapter, and bridges it with local Ethernet and USB-C LAN into one unified network.
# Load kernel module modprobe batman-adv # Add OpenWiFi RF adapter to BATMAN-adv routing engine batctl if add sdr0 ip link set dev sdr0 up ip link set dev bat0 up # Create local network bridge connecting local physical interfaces ip link add name br0 type bridge ip link set dev eth0 master br0 ip link set dev usb0 master br0 ip link set dev bat0 master br0 ip link set dev br0 up # Assign node IP address on unified bridge interface ip addr add 10.0.0.1/24 dev br0
Verification & performance diagnostics
Confirm neighbor discovery, then benchmark throughput between two nodes.
# 1. Verify BATMAN-adv neighbor discovery over RF batctl n # 2. Test throughput on receiver node iperf3 -s # 3. Test throughput on transmitter node iperf3 -c 10.0.0.2 -u -b 100M
Glossary
Terms used throughout this document, defined plainly.
- MANET
- Mobile Ad-hoc Network — a decentralized network of nodes that self-organize and self-heal without fixed infrastructure or a central router.
- SDR
- Software-Defined Radio — radio hardware whose modulation, filtering, and signal processing are implemented in software/firmware rather than fixed analog circuits.
- OpenWiFi
- An open-source, FPGA-based IEEE 802.11 Wi-Fi implementation that executes baseband processing inside the FPGA fabric and exposes a standard mac80211 interface to Linux.
- BATMAN-adv
- Better Approach To Mobile Ad-hoc Networking — a Linux kernel module implementing Layer 2 mesh routing, radio-agnostic and driven by link-quality metrics.
- mac80211
- The Linux kernel's generic 802.11 wireless stack, used by real and software-defined Wi-Fi drivers alike.
- SIFS
- Short Interframe Space — the brief, tightly-timed gap between frames in 802.11 that channel access timing depends on.
- OFDM
- Orthogonal Frequency-Division Multiplexing — the modulation scheme used by 802.11a/g/n/ac and most modern Wi-Fi/LTE systems.
- CSMA/CA
- Carrier-Sense Multiple Access with Collision Avoidance — the channel-access method Wi-Fi uses to avoid multiple radios transmitting simultaneously.
- MIMO
- Multiple-Input, Multiple-Output — using multiple antennas at both ends of a link to carry multiple simultaneous data streams (spatial streams).
- HT40
- High Throughput, 40 MHz — an 802.11n channel mode that bonds two adjacent 20 MHz channels for double the bandwidth.
- MCS
- Modulation and Coding Scheme — an index defining a specific combination of modulation type and coding rate; higher MCS = higher PHY rate, generally requiring better signal quality.
- IIO
- Industrial I/O — the Linux kernel subsystem used to interface with sensors and converters, including the AD9361/AD9363 RF transceivers.
- IBSS / Ad-hoc mode
- Independent Basic Service Set — a Wi-Fi operating mode where stations communicate directly, peer-to-peer, without an access point.
- TQ (Transmit Quality)
- BATMAN-adv's per-link quality metric, continuously recalculated to choose the best available route through the mesh.
Frequently asked questions
No, unlocking is optional. OpenWiFi runs on the factory-restricted AD9363 within its default 20 MHz / narrower tuning range. Unlocking is only required if you need 40 MHz channels, 2x2 MIMO at full bandwidth, or access to bands outside the factory-set range.
At minimum: a Zynq-7020-class SDR board with an AD9361/AD9363 transceiver (such as a PlutoSky R2 or similar), a Linux environment with `iw`, `batctl`, and `iperf3` installed, and at least two nodes to form a mesh. A second node is required to test multi-hop routing and throughput.
Yes — that's exactly the heterogeneous-hardware scenario covered in this guide. Because BATMAN-adv operates at Layer 2 and is radio-agnostic, it can bridge an OpenWiFi RF interface with standard Wi-Fi and wired Ethernet links into a single mesh.
Commercial mesh systems (consumer routers, etc.) use closed firmware and typically route only at Layer 3 between fixed nodes. This stack is fully open-source, routes at Layer 2 so any device is bridged transparently, and is designed for mobile, ad-hoc deployment rather than fixed home installations.
Range depends heavily on frequency, antenna gain, terrain, and transmit power — this guide doesn't specify a fixed number because it varies too much by deployment. The throughput benchmarks here assume clear line-of-sight and ≥25 dB SNR; expect throughput to drop as range or obstruction increases.
Yes — the fast-moving tactical MANET scenario in this guide is specifically about high-mobility use cases like drones. BATMAN-adv's Transmit Quality algorithm is designed to re-route quickly as link quality changes with movement.
Regulatory notes
Unlocking RF hardware can change which frequencies, bandwidths, and power levels you are legally permitted to transmit on. Spectrum use is regulated by national authorities (e.g. the FCC in the United States, national telecom regulators elsewhere), and rules vary significantly by country, band, and license class.
Before transmitting outside the factory-configured range — including on any 433/868/915 MHz, 2.4 GHz, or 5.8 GHz band unlocked via the AD9361 mode described in this guide — confirm that your intended frequency, bandwidth, and transmit power are authorized for your location and license status. Some bands require an amateur radio license or are restricted to specific power levels and use cases.
This document is a technical reference only and does not constitute legal or regulatory advice. You are responsible for compliance with the spectrum regulations that apply to you.
Resources & related projects
Primary sources and project homepages referenced throughout this guide.