В Android 10 реализована поддержка протокола Wi-Fi Easy Connect, также известного как протокол подготовки устройств (DPP). Wi-Fi Easy Connect был представлен Wi-Fi Alliance (WFA) в качестве альтернативы Wi-Fi Protected Setup (WPS). WPS был устарел в Android 9.
Wi-Fi Easy Connect — это простой и безопасный способ:
- Подключение устройств Wi-Fi (включая безголовые устройства) к сети без ввода пароля.
- Подключайтесь к сетям Wi-Fi, не зная и не вводя пароль.
Начальная загрузка и аутентификация настраиваются с использованием URI, который получается путем сканирования QR-кода (с помощью камеры) или настраивается внеполосно, например, с помощью BLE или NFC.
Wi-Fi Easy Connect использует зашифрованный канал для передачи учетных данных Wi-Fi между устройствами, а поскольку используются публичные кадры действий, устройства могут использовать существующие точки доступа.
Android 10 поддерживает Wi-Fi Easy Connect только в режиме инициатора (режим ответчика не поддерживается). Поддерживаются следующие режимы работы:
- Инициатор-конфигуратор: отправьте сетевые учетные данные на новое устройство, отсканировав его QR-код.
- Инициатор-абонент: присоединяйтесь к сети, отсканировав QR-код сети.
Android 10 поддерживает протокол предварительного общего ключа (PSK) для WPA2 и протокол одновременной аутентификации равных (SAE) для WPA3.
Wi-Fi Easy Connect поддерживается только в режиме клиента (режим SoftAP не поддерживается).
Выполнение
Для поддержки Wi-Fi Easy Connect реализуйте интерфейс supplicant, представленный в Android Open Source Project (AOSP). В зависимости от реализованного интерфейса, он находится по адресу:
-
hardware/interfaces/wifi/supplicant/1.2/
или более поздняя версия для HIDL -
hardware/interfaces/wifi/supplicant/aidl/
для AIDL
Для поддержки DPP требуется следующее:
Патчи ядра Linux для поддержки DPP:
- cfg80211
- nl80211
wpa_supplicant
с поддержкой DPPДрайвер Wi-Fi с поддержкой DPP
Прошивка Wi-Fi с поддержкой DPP
В 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
Чтобы включить Wi-Fi Easy Connect в среде Android, включите параметр компиляции CONFIG_DPP
в файл конфигурации wpa_supplicant
, android.config
:
# Easy Connect (Device Provisioning Protocol - DPP) CONFIG_DPP=y
Проверка
Чтобы проверить вашу реализацию, выполните следующие тесты.
Тесты модулей
Запустите DppManagerTest
, чтобы проверить поведение флагов возможностей для DPP.
atest DppManagerTest
Тесты СУДС
Если реализован интерфейс HIDL, запустите VtsHalWifiSupplicantV1_2TargetTest
, чтобы проверить поведение запрашивающего HAL v1.2.
Если реализован интерфейс AIDL, запустите VtsHalWifiSupplicantStaIfaceTargetTest
, чтобы проверить поведение запрашивающего HAL.