Android 10 では、Wi-Fi Easy Connect プロトコル(Device Provisioning Protocol、DPP)のサポートが導入されています。Wi-Fi Easy Connect は、Wi-Fi Protected Setup(WPS)に代わるものとして Wi-Fi Alliance(WFA)によって導入されました。Android 9 では WPS のサポートは終了しています。
Wi-Fi Easy Connect は次のようなシンプルで安全な方法を提供します。
- Wi-Fi デバイス(ヘッドレス デバイスを含む)を、パスワードを必要とせずにネットワークに接続します。
- パスワードを知らなくても、またはパスワードを入力しなくても Wi-Fi ネットワークに接続します。
ブートストラップと認証は、カメラで QR コードをスキャンして取得するか、BLE や NFC などの帯域外に設定した URI を使用して設定します。
Wi-Fi Easy Connect は、暗号化されたチャネルを使用してデバイス間で Wi-Fi 認証情報を送信します。また、公開アクション フレームを使用するため、デバイスは既存のアクセス ポイントを使用できます。
Android 10 は、イニシエータ モードでのみ Wi-Fi Easy Connect をサポートします(レスポンダ モードはサポートしていません)。サポートされるオペレーション モードは以下のとおりです。
- Initiator-Configurator: QR コードをスキャンしてネットワーク認証情報を新しいデバイスに送信します。
- Initiator-Enrollee: ネットワークの QR コードをスキャンしてネットワークに参加します。
Android 10 は、WPA2 の事前共有キー(PSK)プロトコルと、WPA3 の Simultaneous Authentication of Equals(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
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 を有効にするには、CONFIG_DPP
コンパイル オプションを wpa_supplicant
設定ファイルである android.config
に含めます。
# Easy Connect (Device Provisioning Protocol - DPP) CONFIG_DPP=y
検証
実装をテストするには、次のテストを実行します。
単体テスト
DppManagerTest
を実行して、DPP の機能フラグの動作を検証します。
atest DppManagerTest
VTS テスト
HIDL インターフェースが実装されている場合は、VtsHalWifiSupplicantV1_2TargetTest
を実行して、サプリカント HAL v1.2 の動作をテストします。
AIDL インターフェースが実装されている場合は、VtsHalWifiSupplicantStaIfaceTargetTest
を実行して、サプリカント HAL の動作をテストします。