Wi-Fi - 无线保真组件
Wi-Fi(无线保真)是一种允许设备通过无线信号进行网络连接的技术。它基于 IEEE 802.11 系列标准,广泛应用于家庭、办公、公共场所等环境中,用于实现设备与互联网或局域网之间的无线通信。Wi-Fi 技术通过无线电波传输数据。
V821 是一款内置WIFI的多核芯片平台,其中 CPU0 运行Linux系统,CPU1 运行 RTOS 系统。V821 在 Linux 和 RTOS 平台上实现 TCP/IP 双栈,Linux 系统运行内核 TCP/IP Stack,RTOS系统运行 LWIP TCP/IP Stack和 WIFI HOST 协议栈,基于 MSGBOX 和共享内存进行异构通信,其大致层次关系如下图所示。

芯片内置 Wi-FI 支持 2.4G 802.11b/g/n-HT20。目前内置 WIFI 可处于 3 种工作模式,分别是 STATION,AP,MONITOR。也支持扩展复合模式,例如 STA-AP
- STATION:连接无线网络的终端,大部分无线网卡默认都处于该模式,也是常用的一种模式。
- AP:无线接入点,常称热点,比如路由器功能。
- MONITOR:也称为混杂设备监听模式,所有数据包无过滤传输到主机。
- STA-AP:STATION 模式与 AP 模式共存
Wi-Fi 软件结构

wifimanger: 主要用于STATION模式,提供Wi-Fi连接扫描等功能。softap manager:提供启动AP的功能。smartlink: 对于NoInput的设备,通过借助第三方设备(如手机)实现透传配网的功能,包括softap/soundwave/xconfig/airkiss/等多种配网方式。wpa_supplicant: 开源的无线网络配置工具,主要用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,实际上的工作内容是通过socket与驱动交互上报数据给用户。hostapd: 是一个用户态用于AP和认证服务器的守护进程。monitor: Wi-Fi处于混杂设备监听模式的处理应用。
Wi-Fi 驱动配置
由于 V821 是内置双栈 Wi-Fi, 所以驱动分为 Linux 端与 RTOS 端。在此需要分别配置(默认SDK已经配置完成,无需修改)
Linux 内核驱动配置
使用 make kernel_menuconfig 进入内核配置界面
Allwinner BSP --->
Device Drivers --->
Network Device Drivers --->
Wireless LAN --->
<M> v821 dual protocol stack support
<M> Support RPMSG platforms

RTOS 双栈配置
使用 mrtos menuconfig 进入内核配置界面
Drivers Options --->
other drivers --->
-*- rfkill drivers
[*] wireless devices --->
[*] XRADIO driver --->
[*] Enable xradio test cmd
Xradio chip (Enable v821 driver) --->
[*] Wi-Fi Certification of WFA
[*] v821 wlan dual core
[*] default init xradio dual net stack
[*] wlan station mode
[*] wlan monitor mode
[*] wlan ap mode

如果需要 STA+AP 共存模式,还需要打开以下配置,开启后会影响吞吐,仅有特殊需求时使用
Drivers Options --->
other drivers --->
[*] wireless devices --->
[*] XRADIO driver --->
[*] wlan STA and SoftAp coexist
Wi‑Fi 中间件介绍
wpa_supplicant
wpa_supplicant 是一个开源项目,主要用于支持 WEP、WPA/WPA2 和 WAPI 无线协议的加密与认证。它的核心功能是通过 socket 与无线驱动程序进行交互,将数据上报给用户。用户可以通过 socket 向 wpa_supplicant 发送命令,进而控制驱动程序操作 Wi-Fi 芯片。简而言之,wpa_supplicant 充当了 Wi-Fi 驱动与用户之间的中介,同时提供协议和加密认证的支持。
hostapd
hostapd 能够将无线网卡切换为 master 模式,从而模拟接入点(AP)的功能,也就是我们所说的软 AP(Soft AP)。hostapd 的主要功能是作为 AP 的认证服务器,负责控制和管理接入的 stations(通常指带有无线网卡的设备,如 PC)的接入和认证。通过 hostapd,可以将无线网卡切换为 AP/master 模式,并通过修改配置文件,设置一个开放式(不加密)、WEP、WPA、WPA2 或 WPA3 加密方式的无线网络。此外,配置文件还可以用来调整无线网卡的各种参数,包括频率、信号强度、beacon 包的时间间隔、是否发送 beacon 包以及如何响应探针请求等。
WiFiManager
WiFiManager 是一个用于 Wi-Fi 连接管理、通信以及提供一些附加功能的工具。它支持 STA、AP、monitor 和 P2P 模式,并集成了配网模式和其他功能。WiFiManager 屏蔽了底层系统的具体实现,使其能够适配各种差异化的系统平台,如 Linux、RTOS 和 xrLink(Linux 系统 + MCU 模组)。
WiFiManager 兼容 Linux、XrLink、FreeRTOS 等系统,支持 STA、AP、monitor 和 P2P 等模式,并集成了 SoftAP、BLE、XConfig、Soundwave 等配网功能。它提供了完善的 API 接口,方便用户进行调用,同时还提供了一个功能完整的 Demo,便于用户直接使用和测试。
WiFiManager 的软件结构整体分为三部分:
- 应用层:提供用户与系统交互的接口。
- lib 层:包含接口抽象层、模式抽象层和 OS 抽象层,用于屏蔽底层的具体实现。
- OS 具体实现层:负责操作系统相关的具体实现,确保跨平台兼容性。
该结构使得 WiFiManager 易于移植和扩展,同时为不同平台提供了统一的开发接口。
配置 WiFiManager
WiFiManager 软件包配置位于 RTOS 软件包配置内,执行 make menuconfig,配置 WiFiManager 为 XRLINK 模式。并且勾选 DEMO_TEST_TOOL 作为 DEMO 测试应用。 默认SDK已经配置完成,无需修改
Allwinner --->
Wireless --->
<*> wifimanager-v2.0 --->
--- wifimanager-v2.0
Wifimanager-v2.0 Configuration --->
Wifimanager support platform (XRLINK PLATFORM OS)
Wifimanager support mode Configuration --->
[*] Wifimanager support sta mode enable
[*] Wifimanager support ap mode enable
(/etc/wifi) Wifimanager config file path
[*] Wifimanager unregister callback function
<*> wifimanager-v2.0-lib
<*> wifimanager-v2.0-demo
Wifimanager demo choice (DEMO_TEST_TOOL) --->
(X) DEMO_TEST_TOOL
-*- wirelesscommon

内置 SIP Wi-Fi 双栈模式无需配置设备树。
WiFiManager Demo 功能命令
系统启动之后,会显示 Wi-Fi 相关的日志,示例如下:

STA模式命令
打开STA模式,使WiFi模块进入客户端模式,可以连接到无线接入点(AP)。
wifi -o sta
扫描可用的WiFi网络,列出周围的所有无线网络(SSID)。
wifi -s

连接到指定的WiFi接入点(SSID),如果该接入点有密码,需提供密码。如果没有密码,直接连接。
wifi -c ssid [passwd]