Skip to content

Open-source Wi-Fi on SDR

openwifi Wiki

This wiki is a plain-language guide to openwifi, a free and open-source, full-stack IEEE 802.11 (Wi-Fi) implementation compatible with Linux mac80211. It runs on SDR hardware built around Xilinx Zynq SoCs, usually paired with the Analog Devices AD9361 RF front end.

Unlike a commercial Wi-Fi chip, every layer of openwifi is open and modifiable. The OFDM PHY and the real-time low MAC (CSMA/CA) run in FPGA fabric, below a standard Linux SoftMAC driver. Everything above the driver is the ordinary Linux wireless stack, including hostapd, wpa_supplicant, iw, and Wireshark.

Spectrum regulation notice

Transmitting over the air is regulated everywhere. It is your responsibility to comply with your local spectrum regulations. When in doubt, use coaxial cable with attenuators, or a shielded chamber, instead of antennas.

What openwifi can do

  • 802.11a/g/n operation at 20 MHz bandwidth, with the RF front end tunable from 70 MHz to 6 GHz. Upstream also lists 2 MHz (802.11ah-style) and 10 MHz (802.11p) as adaptation targets. See the narrow-channel setup path.
  • All the usual roles: Access Point, client (station), ad-hoc, and monitor mode, all driven by the standard Linux tools.
  • A real-time low MAC in FPGA: DCF (CSMA/CA) that meets 802.11 SIFS timing (10 µs in 2.4 GHz, 16 µs in 5 GHz). It includes hardware ACK generation, retransmission, RTS/CTS, and NAV. You can configure or disable each of these for experiments.
  • Research features that a commercial chip does not provide. These include per-packet CSI extraction, raw IQ capture with dozens of trigger conditions, and packet injection and fuzzing. There is also a CSI fuzzer for privacy research, full-duplex self-reception ("Wi-Fi as radar"), and time-sliced FPGA transmit queues for network slicing.
  • Throughput in its best configuration (802.11n with A-MPDU aggregation): 40 to 50 Mbps TCP and about 50 Mbps UDP in iperf.
  • RF quality: EVM around −38 dB, and receiver sensitivity around −92 dBm at MCS0 and −73 dBm at MCS7 (measured with FMCOMMS2 at 2.4 GHz).

See Specifications for the source of these figures and the conditions they describe.

Not in the open-source release

MIMO and 40 MHz bandwidth are not supported in the open-source release. 802.11ax and other advanced features are part of the commercial offering at openwifi.tech.

The repositories

The project is split across four repositories, because the driver and the FPGA design use different toolchains. The Repositories guide explains why, and where to look for what you need to change.

Repository Contents
openwifi Linux kernel driver, user-space tools (sdrctl, capture scripts, demo scripts), SD-card boot files, documentation
openwifi-hw FPGA design: the openwifi IP cores plus board-level Vivado projects
openwifi-hw-img Prebuilt FPGA bitstreams per board, so you can skip hours of synthesis
openofdm (dot11zynq branch, forked from jhshi/openofdm) The 802.11 OFDM receiver that openwifi's openofdm_rx IP is based on

Where to go next

New to the project? Follow these five in order. They take you from "what is this" to bringing up your own board.

  • 1. The Repositories


    The four repos, why the project is split, and where to look for anything.

    The Repositories

  • 2. Getting Started


    The hardware you need, flashing the SD card, and bringing up your first openwifi AP.

    Getting Started

  • 3. Architecture Overview


    How the FPGA, driver, and Linux stack fit together. Required reading before touching code.

    Architecture Overview

  • 4. Supported Boards


    The board matrix, per-board hardware notes, and the GPIO and LED debug map.

    Supported Boards

  • 5. Operating Modes


    AP, client, ad-hoc, monitor, and packet injection walkthroughs.

    Operating Modes

Explore by area. Each card jumps into a part of the project. The sidebar lists every page within that area.

  • Using openwifi


    Run openwifi as an AP, client, ad-hoc, or monitor, and control it at runtime with sdrctl: TX power, rates, gain, CCA, ACK behavior, and frequency.

    Operating Modes

  • Developing


    Rebuild the driver, work on the FPGA IP cores, build SD images, and port openwifi to a new board.

    Software Development Workflow

  • Research features


    Per-packet CSI, raw IQ capture, CSI radar and fuzzer, loopback testing, and the counters and statistics.

    Research Features

  • Application notes


    An index of the application notes, with figures and links into the relevant wiki sections.

    Application Notes

  • Help & support


    Troubleshooting by symptom, the glossary, the FAQ and resources, and how to contribute.

    Troubleshooting

License and attribution

openwifi is dual-licensed. AGPLv3 covers the open-source release, and openwifi.tech offers commercial licenses. The project includes third-party components with their own license terms, such as Analog Devices HDL, Xilinx IP like the Viterbi decoder, and the openofdm receiver. Verify each component's license for your intended use. openwifi was created at Ghent University and imec by Xianjun Jiao, Wei Liu, Michael Mehari, and contributors. Funding came from the EU H2020 ORCA project and from NLnet through NGI Zero.

The pages here rewrite and restructure the documentation that lives in the openwifi repositories. The code and the repos are always the source of truth. If the wiki and the repos disagree, trust the repos, and please fix the wiki.