Android 10 introduces support for the Wi-Fi Easy Connect protocol, also known as the device provisioning protocol (DPP). Wi-Fi Easy Connect was introduced by the Wi-Fi Alliance (WFA) as an alternative to Wi-Fi Protected Setup (WPS). WPS was deprecated in Android 9.
Wi-Fi Easy Connect provides a simple and secure method to:
- Onboard Wi-Fi devices (including headless devices) to a network without entering a password.
- Join Wi-Fi networks without knowing or entering a password.
Bootstrapping and authentication is configured using a URI, which is acquired by scanning a QR code (using a camera), or is configured out-of-band, for example, using BLE or NFC.
Wi-Fi Easy Connect uses an encrypted channel to send Wi-Fi credentials between devices, and because public action frames are used, devices can use existing access points.
Android 10 supports Wi-Fi Easy Connect only in initiator mode (responder mode is not supported). These modes of operation are supported:
- Initiator-Configurator: Send network credentials to a new device by scanning its QR code.
- Initiator-Enrollee: Join a network by scanning the network QR code.
Android 10 supports the pre-shared key (PSK) protocol for WPA2 and the simultaneous authentication of equals (SAE) protocol for WPA3.
Wi-Fi Easy Connect is only supported in client mode (SoftAP mode is not supported).
To support Wi-Fi Easy Connect, implement the supplicant interface provided in the Android Open Source Project (AOSP). Depending on the interface that was implemented, this is at:
hardware/interfaces/wifi/supplicant/1.2/or a later version for HIDL
The following are required to support DPP:
Linux kernel patches to support DPP:
wpa_supplicantwith support for DPP
Wi-Fi driver with support for DPP
Wi-Fi firmware with support for DPP
Public APIs are available in Android 10 for use by apps:
WifiManager#isEasyConnectSupported: Queries the framework to determine whether the device supports Wi-Fi Easy Connect.
Activity#startActivityForResult(ACTION_PROCESS_WIFI_EASY_CONNECT_URI): Allows apps to integrate Wi-Fi Easy Connect into their onboarding/setup flow.
Enabling Wi-Fi Easy Connect
To enable Wi-Fi Easy Connect in the Android framework, include the
option in the
wpa_supplicant configuration file,
# Easy Connect (Device Provisioning Protocol - DPP) CONFIG_DPP=y
To test your implementation, run the following tests.
to verify the behavior of the capability flags for DPP.
Integration test (ACTS)
To run an integration test, use the Android Comms Test Suite (ACTS) file,
If the HIDL interface is implemented, run
to test the behavior of the supplicant HAL v1.2.
If the AIDL interface is implemented, run
to test the behavior of the supplicant HAL.