Android 10 引入了对 Wi-Fi Easy Connect 协议(也称为设备配置协议 [DPP])的支持。Wi-Fi Easy Connect 由 Wi-Fi 联盟 (WFA) 引入,用于替代 Wi-Fi 保护设置 (WPS)。WPS 在 Android 9 中已弃用。
WLAN Easy Connect 可提供实现以下目的的简单且安全的方法:
- 在不输入密码的情况下将 WLAN 设备(包括无头设备)连接到网络。
- 在不知道或不输入密码的情况下接入 Wi-Fi 网络。
引导和身份验证使用 URI 进行配置;URI 通过扫描二维码(使用摄像头)获得或在带外进行配置(例如使用 BLE 或 NFC)。
WLAN Easy Connect 使用加密渠道在设备之间发送 WLAN 凭据,而且由于使用了公开操作帧,设备可以使用现有接入点。
Android 10 仅在发起程序模式下支持 WLAN Easy Connect(不支持响应程序模式)。支持以下操作模式:
- Initiator-Configurator:通过扫描网络凭据的二维码将其发送到新设备。
- Initiator-Enrollee:通过扫描网络二维码接入网络。
Android 10 支持适用于 WPA2 的预共享密钥 (PSK) 协议和适用于 WPA3 的对等实体同时验证 (SAE) 协议。
WLAN Easy Connect 仅在客户端模式下受支持(不支持 SoftAP 模式)。
实现
如需支持 Wi-Fi Easy Connect,请实现 Android 开源项目 (AOSP) 中提供的客户端接口。根据已实现的接口,相应位置如下:
hardware/interfaces/wifi/supplicant/1.2/
或更高版本的 HIDLhardware/interfaces/wifi/supplicant/aidl/
(适用于 AIDL)
如需支持 DPP,必须具备以下几项:
用以支持 DPP 的 Linux 内核补丁程序:
- cfg80211
- nl80211
支持 DPP 的
wpa_supplicant
支持 DPP 的 Wi-Fi 驱动程序
支持 DPP 的 WLAN 固件
Android 10 中提供可供应用使用的公共 API:
WifiManager#isEasyConnectSupported
:查询框架以便确定设备是否支持 Wi-Fi Easy Connect。Activity#startActivityForResult(ACTION_PROCESS_WIFI_EASY_CONNECT_URI)
:允许应用将 Wi-Fi Easy Connect 集成到其初始配置/设置流程中。
启用 Wi-Fi Easy Connect
如需在 Android 框架中启用 Wi-Fi Easy Connect,请在 wpa_supplicant
配置文件 android.config
中添加 CONFIG_DPP
编译选项:
# Easy Connect (Device Provisioning Protocol - DPP) CONFIG_DPP=y
验证
要测试实现情况,请运行以下测试。
单元测试
运行 DppManagerTest
以验证 DPP 功能标志的行为。
atest DppManagerTest
VTS 测试
如果实现了 HIDL 接口,请运行 VtsHalWifiSupplicantV1_2TargetTest
来测试客户端 HAL v1.2 的行为。
如果实现了 AIDL 接口,请运行 VtsHalWifiSupplicantStaIfaceTargetTest
来测试客户端 HAL 的行为。