原文
source.android.google.cn/docs/core/c… source.android.google.cn/docs/core/c…
翻译
概览
Android 提供默认 Android 框架实现,其中包括对各种 WLAN 协议和模式的支持,这些协议和模式包括:
WLAN 基础架构 (STA)
| 项目 | 说明 |
| 全称 | STA(站点) |
| 俗称 | 手机、平板、车机等设备, 连接 Wi-Fi 路由器 |
| 工作模式 | 客户端模式 - 设备作为客户端连接到 AP(Access Point,接入点) |
网络共享模式或仅限本地模式下的 WLAN 热点 (Soft AP)
| 项目 | 说明 |
| 全称 | Software Access Point(软件接入点) |
| 俗称 | 手机、平板、车机等开热点、个人热点、网络共享 |
| 工作模式 | AP 模式 - 设备自己变成 Wi-Fi 路由器 |
两种子模式:
| 模式 | 说明 | 使用场景 |
| 网络共享模式 (Tethering) | 共享蜂窝数据网络(4G/5G)给其他设备 | 手机开热点给笔记本上网 |
| 仅限本地模式 (Local Only) | 不共享互联网,仅创建本地网络 | 打印机热点、文件传输、设备配网 |
为什么叫 "Soft" AP?
- 硬件 AP:专用路由器芯片(如家用路由器)
- 软件 AP:通过软件模拟,复用 Wi-Fi 芯片(如手机热点)
WLAN 直连(点对点)
| 项目 | 说明 |
| 全称(Wi-Fi Direct / P2P) | Peer-to-Peer(点对点) |
| 俗称 | Wi-Fi 直连、手机快传、Android Beam(旧版) |
| 工作模式 | 设备之间直接连接,不需要路由器、 |
典型应用:
| 场景 | 说明 |
| 华为分享/小米互传 | 快速传照片、视频 |
| 投屏 (Miracast) | 手机屏幕无线投到电视 |
| 打印 | 手机直连打印机 |
| 游戏联机 | 两台设备直接对战 |
WLAN 感知 (NAN)
| 项目 | 说明 |
| 全称 | Neighborhood Aware Networking(邻近感知网络) |
| 俗称 | Wi-Fi Aware |
| 工作模式 | 设备发现附近的其他设备,无需连接即可通信 |
核心特点:
| 特性 | 说明 |
| 无需 AP | 不需要连接到任何 Wi-Fi 网络 |
| 低功耗 | 比传统 Wi-Fi 扫描省电 |
| 双向发现 | 设备互相发现,无需中央服务器 |
| 无需配对 | 不像蓝牙需要手动配对 |
WLAN RTT (IEEE 802.11mc FTM)
| 项目 | 说明 |
| 全称 | Round Trip Time(往返时间) |
| 标准 | IEEE 802.11mc - Fine Timing Measurement(精细时间测量) |
| 俗称 | Wi-Fi 测距、室内定位 |
精度对比:
| 技术 | 精度 | 说明 |
| GPS | 5-10米 | 室外好用,室内失效 |
| Wi-Fi 信号强度 (RSSI) | 5-15米 | 不稳定,受环境影响大 |
| Wi-Fi RTT (802.11mc) | 0.5-2米 | 高精度,室内定位 |
| 蓝牙 Beacon | 2-5米 | 需要部署大量设备 |
| UWB (超宽带) | 10-30厘米 | 最高精度,但硬件要求高 |
WiFi 服务
Wi-Fi 服务在系统服务中运行,这类服务位于 packages/modules/Wifi/service/ 中。Wi-Fi 服务通过 AIDL 与 Wi-Fi HAL(硬件抽象层) 进行通信。
Wi-Fi 服务有很多种:
WLAN 服务(Wi-Fi Service):用于控制 WLAN 基础架构模式(包括 STA 和 AP)的主要机制。WLAN 点对点服务(Wi-Fi P2P Service):管理 WLAN 直连模式。WLAN 感知服务(Wi-Fi Aware Service):管理 WLAN 感知模式。Wi-Fi RTT 服务(Wi-Fi RTT Service):管理 IEEE 802.11mc FTM 功能。
Wi-Fi 框架还包含一个独立的 wificond 守护进程,该进程位于 system/connectivity/wificond 中。wificond 进程通过标准的 nl80211 命令与 Wi-Fi 驱动程序进行通信。
Wi-Fi HAL (WiFi 硬件抽象层)
Wi-Fi 框架具有三个 Wi-Fi HAL 接口,分别由三个不同的接口表示:供应商 HAL(Vendor HAL)、客户端 HAL(Supplicant HAL) 和 Hostapd HAL。
Wi-Fi 框架包含三个不同的 Wi-Fi HAL 层接口。对于运行 Android 14 及更高版本的设备,这三个接口均以稳定的 Android 接口定义语言(AIDL)软件包的形式提供。此前,这些接口是使用硬件接口定义语言(HIDL)定义的。
| HAL | 守护进程 | 模式 | 核心功能 |
| Vendor HAL(vendor 硬件抽象) | 无(直接调驱动) | 通用 | 芯片控制、射频管理 |
| Supplicant HAL(supplicant 硬件抽象) | wpa_supplicant | STA | 连接 Wi-Fi、认证加密 |
| Hostapd HAL (hostapd 硬件抽象) | hostapd | Soft AP | 开热点、管理客户端 |
供应商 HAL:用于处理 Android 特定命令的 HAL 层接口。其 AIDL 文件位于 hardware/interfaces/wifi/aidl。
| 项目 | 说明 |
| 作用 | 直接与 Wi-Fi 芯片通信,控制硬件 |
| 实现者 | 芯片厂商(如高通、联发科、博通) |
| 接口定义 | AIDL: IWifiChip, IWifiStaIface, IWifiApIface |
| 源码路径 | hardware/interfaces/wifi/aidl/ |
// 控制 Wi-Fi 芯片的开关、模式、扫描等底层操作
- 打开/关闭 Wi-Fi 硬件
- 创建 STA/AP 接口
- 执行扫描(Scan)
- 设置信道、功率等射频参数
- 管理 芯片(chip) 固件
供应商 HAL 提供 Android 特定的命令。对于基础模式站点(Station - STA)和 软接入点(Soft AP - SAP)模式的功能运行来说,它是可选的(非必须)。但是,对于 Wi-Fi Aware 和 Wi-Fi RTT 服务,它是强制要求的。
在 Android 14 及更高版本中,供应商 HAL 接口是使用 AIDL 定义的。 在 Android 13 及更低版本中,供应商 HAL 接口是使用 HIDL 定义的。
在 HIDL 之前(即 Android 8.0 版本之前),Android 使用的是现在称为 “旧版 HAL” 的 HAL 机制。Android 源代码目前使用在旧版 HAL 之上运行的 shim(适配层,垫片层) 来提供 AIDL 或 HIDL 默认实现。
旧版 HAL 标头位于 hardware/libhardware_legacy/include/hardware_legacy/ 中。基于旧版 HAL 的实现位于
- hardware/interfaces/wifi/aidl/default(对于 AIDL)
- hardware/interfaces/wifi/1.x/default(对于 HIDL)
连接管理 HAL(Supplicant HAL):用于 wpa_supplicant 的 HAL 层接口。其 AIDL 文件位于 hardware/interfaces/wifi/supplicant/aidl。
| 项目 | 说明 |
| 作用 | 与 wpa_supplicant 守护进程通信 |
| 功能 | 处理 Wi-Fi 连接、认证、加密(STA 模式) |
| 接口定义 | AIDL: Supplicant, ISupplicantStaIface |
| 对应模式 | STA(连接 Wi-Fi 路由器) |
// 处理 Wi-Fi 连接的所有协议层面操作
- 扫描网络(Scan)
- 关联(Associate)
- 认证(Authentication):WPA/WPA2/WPA3/EAP
- 4次握手(4-Way Handshake)
- 密钥管理(PMK, PTK, GTK)
- 漫游(Roaming)
Supplicant HAL 为 wpa_supplicant 守护进程提供接口。从 Android 13 开始,该接口使用 AIDL 进行 HAL 定义。对于 Android 13 之前的版本,接口和供应商分区均使用 HIDL。
wpa_supplicant 源代码位于 external/wpa_supplicant_8/wpa_supplicant。参考实现提供了一个 AIDL 接口,该接口实现在 aidl 子目录中。
热点管理 HAL(Hostapd HAL):用于 hostapd 的 HAL 层接口。其 AIDL 文件位于 hardware/interfaces/wifi/hostapd/aidl。
| 项目 | 说明 |
| 作用 | 与 hostapd 守护进程通信 |
| 功能 | 创建和管理 Wi-Fi 热点(Soft AP) |
| 接口定义 | AIDL: IHostapd, IHostapdCallback |
| 对应模式 | Soft AP(手机开热点) |
// 管理 Wi-Fi 热点的所有操作
- 启动/停止 AP 模式
- 配置 SSID((Service Set Identifier, wifi名字)、密码、加密方式
- 管理连接的设备(客户端列表)
- 设置信道、带宽
- 处理认证和关联请求
Hostapd HAL 为 hostapd 守护程序提供接口。 从 Android 13 开始,该接口使用 AIDL 进行 HAL 定义。对于 Android 13 之前的版本,接口和供应商分区均使用 HIDL。
hostapd 源代码位于 external/wpa_supplicant_8/hostapd 中。 参考实现提供了一个 AIDL 接口,该接口在 aidl 子目录中实现。