2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
Wi-Fi Easy Connect
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
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)で提供されているサプリカント インターフェースを実装します。実装されたインターフェースに応じて、以下のようになります。
DPP をサポートするには、以下が必要です。
DPP をサポートする Linux カーネルパッチ:
DPP をサポートする wpa_supplicant
DPP をサポートする Wi-Fi ドライバ
DPP をサポートする Wi-Fi ファームウェア
Android 10 ではアプリが使用できる公開 API が利用可能です。
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 の動作をテストします。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-03-26 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-03-26 UTC。"],[],[],null,["# Wi-Fi Easy Connect\n\nAndroid 10 introduces support for the Wi-Fi Easy\nConnect protocol, also known as the device provisioning protocol (DPP).\n[Wi-Fi Easy Connect](https://www.wi-fi.org/discover-wi-fi/wi-fi-easy-connect)\nwas introduced by the Wi-Fi Alliance (WFA) as an alternative to\nWi-Fi Protected Setup (WPS). WPS was deprecated in Android 9.\n\nWi-Fi Easy Connect provides a simple and secure method to:\n\n- Onboard Wi-Fi devices (including headless devices) to a network without entering a password.\n- Join Wi-Fi networks without knowing or entering a password.\n\nBootstrapping and authentication is configured using a URI, which is acquired\nby scanning a QR code (using a camera), or is configured out-of-band,\nfor example, using BLE or NFC.\n\nWi-Fi Easy Connect uses an encrypted channel to send Wi-Fi credentials between\ndevices, and because public action frames are used, devices can use existing\naccess points.\n\nAndroid 10 supports Wi-Fi Easy Connect only in\ninitiator mode (responder mode is\nnot supported). These modes of operation are supported:\n\n- **Initiator-Configurator:** Send network credentials to a new device by scanning its QR code.\n- **Initiator-Enrollee:** Join a network by scanning the network QR code.\n\nAndroid 10 supports the pre-shared key (PSK) protocol\nfor WPA2 and the simultaneous authentication of equals (SAE) protocol for WPA3.\n\nWi-Fi Easy Connect is only supported in client mode (SoftAP mode is not\nsupported).\n\nImplementation\n--------------\n\nTo support Wi-Fi Easy Connect, implement the supplicant interface\nprovided in the Android Open Source Project (AOSP).\nDepending on the interface that was implemented, this is at:\n\n- [`hardware/interfaces/wifi/supplicant/1.2/`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/wifi/supplicant/1.2/) or a later version for HIDL\n- [`hardware/interfaces/wifi/supplicant/aidl/`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/wifi/supplicant/aidl/android/hardware/wifi/supplicant) for AIDL\n\nThe following are required to support DPP:\n\n- Linux kernel patches to support DPP:\n\n - cfg80211\n - nl80211\n- [`wpa_supplicant`](https://android.googlesource.com/platform/external/wpa_supplicant_8/+/refs/heads/main)\n with support for DPP\n\n- Wi-Fi driver with support for DPP\n\n- Wi-Fi firmware with support for DPP\n\nPublic APIs are available in Android 10 for use by\napps:\n\n- [`WifiManager#isEasyConnectSupported`](https://developer.android.com/reference/android/net/wifi/WifiManager#isEasyConnectSupported()): Queries the framework to determine whether the device supports Wi-Fi Easy Connect.\n- [`Activity#startActivityForResult(ACTION_PROCESS_WIFI_EASY_CONNECT_URI)`](https://developer.android.com/reference/android/provider/Settings.html#ACTION_PROCESS_WIFI_EASY_CONNECT_URI): Allows apps to integrate Wi-Fi Easy Connect into their onboarding/setup flow.\n\n### Enable Wi-Fi Easy Connect\n\nTo enable Wi-Fi Easy Connect in the Android framework, include the\n`CONFIG_DPP` compilation\noption in the `wpa_supplicant` configuration file,\n[`android.config`](https://android.googlesource.com/platform/external/wpa_supplicant_8/+/refs/heads/android16-release/wpa_supplicant/android.config): \n\n```\n# Easy Connect (Device Provisioning Protocol - DPP)\nCONFIG_DPP=y\n```\n\nValidation\n----------\n\nTo test your implementation, run the following tests.\n\n### Unit tests\n\nRun\n[`DppManagerTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:packages/modules/Wifi/service/tests/wifitests/src/com/android/server/wifi/DppManagerTest.java)\nto verify the behavior of the capability flags for DPP. \n\n```\natest DppManagerTest\n```\n\n### VTS tests\n\nIf the HIDL interface is implemented, run\n[`VtsHalWifiSupplicantV1_2TargetTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:hardware/interfaces/wifi/supplicant/1.2/vts/functional/supplicant_sta_iface_hidl_test.cpp)\nto test the behavior of the supplicant HAL v1.2.\n\nIf the AIDL interface is implemented, run\n[`VtsHalWifiSupplicantStaIfaceTargetTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:hardware/interfaces/wifi/supplicant/aidl/vts/functional/supplicant_sta_iface_aidl_test.cpp)\nto test the behavior of the supplicant HAL."]]