Android 10 引入了对 Wi-Fi Easy Connect 协议(也称为设备配置协议 (DPP))的支持。Wi-Fi Easy Connect 由 Wi-Fi 联盟 (WFA) 推出,作为 Wi-Fi Protected Setup (WPS) 的替代方案。WPS 已在 Android 9 中弃用。
Wi-Fi Easy Connect 提供了一种简单且安全的方法来
- 将 Wi-Fi 设备(包括无头设备)加入网络,而无需输入密码。
- 加入 Wi-Fi 网络,而无需知道或输入密码。
引导和身份验证通过 URI 进行配置,URI 通过扫描二维码(使用相机)获取,或者通过带外方式配置,例如,使用 BLE 或 NFC。
Wi-Fi Easy Connect 使用加密通道在设备之间发送 Wi-Fi 凭据,并且由于使用了公共操作帧,设备可以使用现有的接入点。
Android 10 仅在发起者模式下支持 Wi-Fi Easy Connect(不支持响应者模式)。支持以下操作模式
- 发起者-配置器: 通过扫描新设备的二维码,向其发送网络凭据。
- 发起者-加入者: 通过扫描网络二维码加入网络。
Android 10 支持 WPA2 的预共享密钥 (PSK) 协议和 WPA3 的同步身份验证对等 (SAE) 协议。
Wi-Fi Easy Connect 仅在客户端模式下受支持(不支持 SoftAP 模式)。
实现
要支持 Wi-Fi Easy Connect,请实现 Android 开源项目 (AOSP) 中提供的请求者接口。根据已实现的接口,它位于
hardware/interfaces/wifi/supplicant/1.2/
或更高版本(适用于 HIDL)hardware/interfaces/wifi/supplicant/aidl/
(适用于 AIDL)
以下是支持 DPP 所需的条件
支持 DPP 的 Linux 内核补丁
- cfg80211
- nl80211
wpa_supplicant
(支持 DPP)支持 DPP 的 Wi-Fi 驱动程序
支持 DPP 的 Wi-Fi 固件
公共 API 在 Android 10 中可用,供应用使用
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 的行为。