在上届 FOSDEM 2020 会议上 项目 ,开发第一个完整 Wi-Fi 802.11a/g/n 堆栈的开放实施,其中的信号形状和调制在软件(SDR,软件定义无线电)中指定。 OpenWifi 允许您创建无线设备所有组件的完全受控实现,包括低级层,在传统无线适配器中,低级层是在不可审计的芯片级别实现的。 代码 和 用于 FPGA 的 Verilog 语言的硬件模块根据 AGPLv3 许可证进行分发。
演示的工作原型的硬件组件基于 Xilinx Zynq FPGA 和 AD9361 通用收发器 (RF)。 OpenWifi 使用 SoftMAC 架构,这意味着在驱动程序端实现主要 802.11 无线堆栈(high-MAC),并在 FPGA 端存在 low-MAC 层。 无线堆栈使用 Linux 内核提供的 mac80211 子系统。 与SDR的交互是通过特殊的驱动程序进行的。
主要特点:
- 完全支持 802.11a/g,部分支持 802.11n MCS 0~7(目前仅支持 PHY rx)。 有计划支持802.11ax;
- 带宽 20MHz,频率范围 70 MHz 至 6 GHz;
- 操作模式: (客户端设备网络)、接入点、站和监控;
- FPGA端链路层协议的实现 (分布式协调功能),采用CSMA/CA方法。 提供帧处理时间() 电平为 10us;
- 可配置的通道访问优先级参数:RTS/CTS持续时间、CTS-to-self、SIFS、DIFS、xIFS、时隙等。
- 时间切片()基于MAC地址;
- 轻松更改带宽和频率:
2ah 为 802.11MHz,10p 为 802.11MHz;
目前,OpenWifi 提供 基于 FPGA 的 SDR 平台
Xilinx ZC706 配备 Analog Devices FMCOMMS2/3/4 收发器,以及捆绑包 (FPGA + RF) ADRV9361Z7035 SOM + ADRV1CRR-BOB 和 ADRV9361Z7035 SOM + ADRV1CRR-FMC。 成型用于装载 基于 ARM Linux 的 SD 卡。 计划支持 ADRV9364Z7020 SOM + ADRV1CRR-BOB、Xilinx zed + FMCOMMS2/3/4、Xilinx ZCU102 + FMCOMMS2/3/4 和
赛灵思 ZCU102 + ADRV9371。 第一个 OpenWifi 原型所涉及的组件成本约为 1300 欧元,但正在移植到更便宜的主板上。 例如,基于的解决方案的成本 将为 700 欧元,并在此基础上 - 400 欧元。
通过测试使用 TL-WDN4200 N900 USB 适配器将客户端连接到基于 OpenWifi 的接入点的性能,我们可以在从接入点向客户端传输数据时实现 30.6Mbps (TCP) 和 38.8Mbps (UDP) 的吞吐量,并且从客户端传输到接入点时为 17.0Mbps (TCP) 和 21.5Mbps (UDP)。 对于管理,可以使用标准 Linux 实用程序,例如 ifconfig 和 iwconfig,以及专用实用程序 sdrctl,它通过 netlink 工作,并允许您在低级别控制 SDR 的操作(操作寄存器、更改时间片设置、 ETC。)。

在其他尝试 Wi-Fi 堆栈的开放项目中,我们可以注意到该项目 开发符合 IEEE 802.11 a/g/p 标准的产品 基于 GNU Radio 和普通 PC。 软件开放 802.11 无线堆栈也在开发项目 и (微软研究软件无线电)。
来源: opennet.ru
