openwifi 是一份可上板运行的开源 IEEE 802.11 实现:FPGA 里是基带,旁边配 Linux 驱动和软件。开源主线支持 802.11a/g/n(Wi-Fi 4 的一部分),系统里就是一张普通网卡 sdr0hostapdwpa_supplicantiw 可以按商用 Wi-Fi 芯片那样用。

传统焊死在芯片里的 PHY低 MAC,被拆成可编程的 FPGA 和软件——能看见、能改、能测。

一、项目起源与目标

Wi-Fi 标准 1997 年就有了,开源基带却一直缺。蜂窝侧早有 srsRAN、OpenAirInterface;802.11 这边只能仿真、抠商用芯片,或买昂贵参考设计。低 MAC 时序、真实 CSI,闭源芯片通常不给你旋钮。

openwifi 约 2017 年在欧盟 Horizon 2020 ORCA 项目里起步。2019 年底上 GitHub,2020 年 FOSDEMJiao Xianjun(焦现军) 公开演示,同年 IEEE VTC 发论文。后来 NLnet 资助了 802.11n、成熟度,以及和 OpenWrt 的对接。
在这里插入图片描述

商用 Wi-Fi 芯片openwifi
透明度PHY/MAC 是黑盒Verilog + 驱动可改
和 Linux厂商驱动裁过能力接 mac80211,当普通 NIC 用
CSI / IQ多数不给信道响应、IQ 可拉到电脑
低 MACSIFS/DIFS/CW 动不了FPGA 里 CSMA,ACK 约 10 µs
适合干什么上网协议、安全、无线感知实验

核心目标:提供一份开源 Wi-Fi 芯片,把空口从黑盒里解放出来。

二、技术架构与构成

开发板是 Zynq:ARM 上跑 Linux,FPGA 里做基带,射频走 AD9361。系统里看到的那张网卡,不是插上去的 USB 网卡,而是这套软硬件一起组装出来的。
在这里插入图片描述

为什么必须 FPGA + ARM

802.11 收到数据后,要在 SIFS 窗口里回 ACK,大约 10 微秒。商用芯片在硅里硬做;PC + USRP 把 IQ 拉到电脑再处理,慢一到两个数量级,信道早就让出去了。

所以:OFDM、CSMA/CA、ACK 进 FPGA;ARM 上跑 Linux,管关联、hostapd 这些可以慢一点的事。

分层

  • 用户态hostapd / wpa_supplicant / iw,外加 sdrctl
  • 内核:cfg80211 + mac80211
  • 驱动 sdr.c:实现 mac80211 那组 API
  • FPGA:xpu(低 MAC / CSMA)、openofdm 收发、tx/rx 接口
  • 射频 AD9361:40 Msps IQ,FPGA 里再变成基带用的 20 Msps

三个仓库

仓库内容
openwifi驱动、sdrctl、镜像用法
openwifi-hwFPGA / Verilog
openwifi-hw-img各板预编译 bitstream,入门先用这个

基于 ADI 2021_r1 HDL 参考设计往上长。路径和常见嵌入式产品很像:Vivado、devicetree、内核模块。和特定版本的 Vivado、ADI 内核绑死,随便升级经常编不过。

三、支持哪些板子

在这里插入图片描述

主流是 Xilinx Zynq + AD9361BOARD_NAME 既对应 FPGA 工程,也对应 BOOT 分区要拷的文件,混板 bitstream 对不上。以 GitHub README 实时表格为准。

不必买 Vivado 许可证(文档标 NO need)
ZedBoard / ZC702 + FMCOMMS2/3/4,ADRV9364-Z7020,MicroPhase antsdr / e310v2,HexSDR sdrpi,以及 Unofficial 的 NeptuneSDR、LibreSDR。入门多走 ZedBoard 或 antsdr / LibreSDR。

需要许可证(文档标 Need)
ZC706、ADRV9361-Z7035、ZCU102 + FMCOMMS。实验室大板。还有 rfsoc4x2 等,以 hw 仓库为准。

没有板子:比利时 w-iLab.t 可远程摸流程。列表上有板 ≠ 淘来的山寨 AD9361 一定能关联;adrv9361z7035 在 5 GHz 功率极低,要靠很近。

四、亮点、场景与发展

可当 AP、客户端、Ad-hoc、Monitor。同时能改 CCA、SIFS/DIFS/CW,能拉 CSI / IQ,能按 MAC 做时间片调度,能注入 802.11 帧。目标不是打赢 AX3000,而是能测、能发论文。

较好情况(开 AMPDU):iperf TCP 约 40~50 Mbps,UDP 约 50 Mbps;EVM −38 dB;MCS0 −92 dBm,MCS7 −73 dBm。频率文档写 70 MHz~6 GHz,也可改成 2 MHz 或 10 MHz(偏 802.11ah / 802.11p)。

CSI 可做室内定位、动作识别、自收发通感。同一套架构还被拿去改 DECT-2020 NR 包检测——那是衍生实验,不是主线功能。ax 走官网订阅。

场景说明
协议研究改 PHY/MAC、频谱和接入时序
网络与安全协议测试、帧注入 / fuzz
无线感知实时 CSI:定位、动作、通感
嵌入式 / 驱动对着真实空口看 mac80211 和 FPGA 怎么咬合

五、注意事项

1. 不是消费级,也不是刷机即用
要选板、烧镜像、对 BOARD_NAME。20 MHz、11a/g/n,吞吐约五十兆,别跟家用 AX 路由比网速。

2. 硬件和工具链绑得死
Zynq + AD9361,Vivado 2021.1(还要 Vitis,不是 Vitis HLS)。乱升级经常不能用。

3. 没有 802.11b
只有 OFDM。老终端、部分 fullMAC 网卡建连会别扭,客户端有时需要打过补丁的 wpa_supplicant

4. 频谱合规是你的责任
能调到非 Wi-Fi 频段 ≠ 能合法发射。

5. 评估 IP 会中途停
Xilinx Viterbi 评估核大约两小时失效,演示前要知道。

6. 免费仓库不是 Wi-Fi 6/7
不要写成「开源 Wi-Fi 7 芯片」,也不是已经实现了 Wi-Fi 8。

六、优缺点对照

维度较好的地方不好的地方
自主权PHY/MAC 透明,CSI/IQ/时序能改安全、频谱、运维自己扛
和 Linux真 mac80211 网卡,标准工具能用没有 11b,客户端有时要打补丁
实时性FPGA 里 10 µs 级 ACK吞吐远不如商用 Wi-Fi 6
硬件Zynq+AD9361 家族多,有便宜板Vivado/内核绑死;山寨板风险
许可研究可改AGPL;闭源商用要另谈

七、适合谁 / 不适合谁

适合

  • 做 802.11 协议、无线安全、CSI 感知的研究生和工程师
  • 写过 Linux wireless,想对着真实空口改 MAC 的人
  • 手里有 ZedBoard / Pluto 系 / LibreSDR,愿意烧镜像的人

不太适合

  • 想给家里换一台更快路由的人(请看 OpenWrt 那篇)
  • 期望即插即用、Wi-Fi 6E / Mesh 全家桶的人
  • 不能接受 FPGA 工具链、不愿管频谱法规的人

八、想动手可以从哪开始

  1. 打开 open-sdr/openwifi,对 BOARD_NAME
  2. 烧预编译 SD 镜像(≥16 GB),按板子拷 BOOT 文件
  3. 电脑 192.168.10.1,SSH root@192.168.10.122(密码 openwifi,先改掉);./wgd.sh./fosdem.sh,SSID 为 openwifi
  4. 进阶看 CSI notes;改 FPGA 用 openwifi-hw,不要先升 Vivado

没有板子:先看 FOSDEM 录像和 w-iLab.t 教程。

九、总结

openwifi 不是给普通用户刷机的系统,而是把 Wi-Fi 协议摊开的研究平台。用 Zynq + AD9361,可以把 802.11a/g/n 做成 Linux 里一张能跑 hostapd 的网卡。代价是停在 Wi-Fi 4,工具链重,频谱法不能当儿戏。

说明:板表随上游更新;本文为技术科普。过空口须遵守无线电管理规定。授权以各仓库 LICENSE 及厂商条款为准。
在这里插入图片描述

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐