В 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, реализуйте интерфейс клиента, предоставленный в 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Тесты VTS
Если реализован интерфейс HIDL, выполните команду VtsHalWifiSupplicantV1_2TargetTest, чтобы проверить поведение supplicant HAL версии 1.2.
Если интерфейс AIDL реализован, запустите команду VtsHalWifiSupplicantStaIfaceTargetTest, чтобы проверить поведение HAL-компонента supplicant.