Android 10에는 기기 프로비저닝 프로토콜(DPP)이라고도 하는 Wi-Fi Easy Connect 프로토콜 지원이 도입되었습니다. Wi-Fi Easy Connect는 Wi-Fi Protected 설정(WPS)의 대안으로 Wi-Fi Alliance(WFA)에 의해 도입되었습니다. WPS는 Android 9에서 지원 중단되었습니다.
Wi-Fi Easy Connect는 다음과 같은 간단하고 안전한 방법을 제공합니다.
- 비밀번호를 입력하지 않고도 헤드리스 기기를 포함한 Wi-Fi 기기를 네트워크에 온보딩합니다.
- 비밀번호를 모르거나 입력하지 않고도 Wi-Fi 네트워크에 참여합니다.
부트스트랩 및 인증은 URI를 사용하여 구성되며 URI는 카메라를 사용해 QR 코드를 스캔하여 획득하거나 예를 들어 BLE 또는 NFC를 사용하여 대역 외로 구성됩니다.
Wi-Fi Easy Connect는 암호화된 채널을 사용하여 기기 간에 Wi-Fi 사용자 인증 정보를 전송하며 공개 작업 프레임을 사용하므로 기기는 기존 액세스 포인트를 사용할 수 있습니다.
Android 10은 개시자(initiator) 모드에서만 Wi-Fi Easy Connect를 지원합니다(응답자[responder] 모드는 지원되지 않음). 다음과 같은 작동 모드가 지원됩니다.
- Initiator-Configurator: QR 코드를 스캔하여 네트워크 사용자 인증 정보를 새 기기로 전송합니다.
- Initiator-Enrollee: 네트워크 QR 코드를 스캔하여 네트워크에 참여합니다.
Android 10은 WPA2용 사전 공유 키(PSK) 프로토콜 및 WPA3용 SAE(Simultaneous Authentication of Equals) 프로토콜을 지원합니다.
Wi-Fi Easy Connect는 클라이언트 모드에서만 지원됩니다(SoftAP 모드는 지원되지 않음).
구현
Wi-Fi Easy Connect를 지원하려면 Android 오픈소스 프로젝트(AOSP)에서 제공되는 서플리컨트 인터페이스를 구현합니다. 구현된 인터페이스에 따라 다음 위치에 있습니다.
- HIDL의 경우
hardware/interfaces/wifi/supplicant/1.2/
이상 버전 - AIDL의 경우
hardware/interfaces/wifi/supplicant/aidl/
버전
DPP를 지원하려면 다음이 필요합니다.
DPP를 지원하는 Linux 커널 패치:
- cfg80211
- nl80211
DPP를 지원하는
wpa_supplicant
DPP를 지원하는 Wi-Fi 드라이버
DPP를 지원하는 Wi-Fi 펌웨어
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
통합 테스트(ACTS)
통합 테스트를 실행하려면 tools/test/connectivity/acts_tests/tests/google/wifi
에 있는 Android 커뮤니케이션 테스트 도구 모음(ACTS) 파일 WifiDppTest.py
를 사용합니다.
VTS 테스트
HIDL 인터페이스가 구현된 경우 VtsHalWifiSupplicantV1_2TargetTest
를 실행하여 서플리컨트 HAL v1.2의 동작을 테스트합니다.
AIDL 인터페이스가 구현된 경우 VtsHalWifiSupplicantStaIfaceTargetTest
를 실행하여 서플리컨트 HAL의 동작을 테스트합니다.