Home

Awesome

<!-- Author: Xianjun jiao, Michael Mehari, Wei Liu SPDX-FileCopyrightText: 2019 UGent SPDX-License-Identifier: AGPL-3.0-or-later -->

openwifi

<img src="./openwifi-arch.jpg" width="900">

openwifi: Linux mac80211 compatible full-stack IEEE802.11/Wi-Fi design based on SDR (Software Defined Radio).

[Download img and Quick start] [Tips for Windows users]

This repository includes Linux driver and software. openwifi-hw repository has the FPGA design. It is YOUR RESPONSIBILITY to follow your LOCAL SPECTRUM REGULATION or use CABLE to avoid potential interference over the air.

[Project document] [Application notes] [Videos] [Publications and How to Cite] [maillist]

Openwifi code has dual licenses. AGPLv3 is the opensource license. For non-opensource and advanced feature license, please contact Filip.Louagie@UGent.be. Openwifi project also leverages some 3rd party modules. It is user's duty to check and follow licenses of those modules according to the purpose/usage. You can find an example explanation from Analog Devices for this compound license conditions. [How to contribute].

Features:

Performance (best case: aggregation/AMPDU on):

Supported SDR platforms:

board_nameDescriptionVivado license
zc706_fmcs2Xilinx ZC706 board + FMCOMMS2/3/4Need
zed_fmcs2Xilinx zed board + FMCOMMS2/3/4NO need
adrv9364z7020ADRV9364-Z7020 + ADRV1CRR-BOBNO need
adrv9361z7035ADRV9361-Z7035 + ADRV1CRR-BOB/FMCNeed
zc702_fmcs2Xilinx ZC702 board + FMCOMMS2/3/4NO need
antsdrMicroPhase enhanced ADALM-PLUTO NotesNO need
e310v2MicroPhase new antsdr NotesNO need
antsdr_e200MicroPhase enhanced ADALM-PLUTO (smaller/cheaper) NotesNO need
sdrpiHexSDR SDR in Raspberry Pi size NotesNO need
zcu102_fmcs2Xilinx ZCU102 board + FMCOMMS2/3/4Need
neptunesdrLow cost Zynq 7020 + AD9361 boardNO need

[Download img and Quick start] [Basic operations] [Update FPGA] [Update Driver] [Update sdrctl] [Easy Access and etc]

[Build openwifi Linux img from scratch] [Special note for 11b] [Porting guide] [Project document] [Application notes]

Download img and Quick start

Basic operations

The board actually is an Linux/Ubuntu computer which is running hostapd to offer Wi-Fi AP functionality over the Wi-Fi Network Interface (NIC). The NIC is implemented by openwifi-hw FPGA design. We use the term "On board" to indicate that the commands should be executed after ssh login to the board. "On PC" means the commands should run on PC.

Update FPGA

Since the pre-built SD card image might not have the latest bug-fixes/updates, it is recommended to always copy the latest files in the user_space directory on to the board. Then update the FPGA&Driver according to the Quick start of this app note. Following instructions are doing the same thing with extra info for environment setup.

(Check Driver and FPGA dynamic reloading app note for better understanding of updating FPGA and driver files without rebooting/power-cycle)

Update Driver

Since the pre-built SD card image might not have the latest bug-fixes/updates, it is recommended to always copy the latest files in the user_space directory on to the board. Then update the FPGA&Driver according to the Quick start of this app note. Following instructions are doing the same thing with extra info for environment setup.

(Check Driver and FPGA dynamic reloading app note for better understanding of updating FPGA and driver files without rebooting/power-cycle)

Update sdrctl

Easy Access and etc

Build openwifi Linux img from scratch

Special note for 11b

Openwifi only applies OFDM as its modulation scheme and as a result, it is not backward compatible with 802.11b clients or modes of operation. This is usually the case during beacon transmission, connection establishment, and robust communication.

As a solution to this problem, openwifi can be fully controlled only if communicating with APs/clients instantiated using hostapd/wpa_supplicant userspace programs respectively.

For hostapd program, 802.11b rates can be suppressed using configuration commands (i.e. supported_rates, basic_rates) and an example configuration file is provided (i.e. hostapd-openwifi.conf). One small caveat to this one comes from fullMAC Wi-Fi cards as they must implement the NL80211_TXRATE_LEGACY NetLink handler at the device driver level.

On the other hand, the wpa_supplicant program on the client side (commercial Wi-Fi dongle/board) cannot suppress 802.11b rates out of the box in 2.4GHz band, so there will be an issue when connecting openwifi (OFDM only). A patched wpa_supplicant should be used at the client side.

sudo apt-get install libssl1.0-dev
cd openwifi/user_space; ./build_wpa_supplicant_wo11b.sh

Porting guide

This section explains the porting work by showing the differences between openwifi and Analog Devices reference design. openwifi is based on 2021_r1 of HDL Reference Designs.

License

This project is available as open source under the terms of the AGPL 3.0 Or later. However, some elements are being licensed under GPL 2-0 or later and BSD 3 license . For accurate information, please check individual files.