Wi-Fi Direct

Mit der Wi-Fi Direct- Funktion, auch bekannt als Wi-Fi P2P, können unterstützende Geräte mithilfe des Wi-Fi Direct-Protokolls ohne Internet- oder Mobilfunknetzzugriff direkt einander erkennen und miteinander verbinden. Diese Funktion basiert auf der Wi-Fi Direct-Spezifikation der Wi-Fi Alliance (WFA) und ermöglicht die gemeinsame Nutzung von Daten mit hohem Durchsatz zwischen vertrauenswürdigen Geräten und Apps, die sich ansonsten außerhalb des Netzwerks befinden.

Beispiele und Quelle

Um diese Funktion nutzen zu können, müssen Gerätehersteller die HAL-Schnittstellen Wi-Fi Vendor und Supplicant implementieren.

In Android 13 verwendet die Supplicant-Schnittstelle AIDL für die HAL-Definition. In Android 14 und höher verwendet die Vendor HAL-Schnittstelle AIDL. In Android 12 und niedriger werden die Supplicant- und Vendor-HAL-Schnittstellen mit HIDL definiert.

Für die Nutzung der Wi-Fi Direct-Funktion sind die folgenden Wi-Fi-HAL-Oberflächen erforderlich:

  • hardware/interfaces/wifi/aidl oder hardware/interfaces/wifi/1.3 oder höher
  • hardware/interfaces/wifi/supplicant/aidl oder hardware/interfaces/wifi/supplicant/1.2 oder höher

Implementierung

Gerätehersteller müssen sowohl Framework- als auch HAL-/Firmware-Unterstützung bereitstellen:

  • Rahmen:
    • AOSP-Code
    • Wi-Fi Direct aktivieren: Erfordert ein Feature-Flag
  • Wi-Fi Direct (P2P) HAL-Unterstützung (was Firmware-Unterstützung impliziert)

Um diese Funktion zu implementieren, implementieren Gerätehersteller die Wi-Fi HIDL- oder AIDL-Schnittstellen und aktivieren das Feature-Flag für Wi-Fi Direct. Ändern Sie in device.mk unter device/<oem>/<device> die Umgebungsvariable PRODUCT_COPY_FILES , um Unterstützung für die Wi-Fi Direct-Funktion einzubeziehen:

```
PRODUCT_COPY_FILES +=
frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml
```

Alle anderen Anforderungen zur Unterstützung von Wi-FI Direct sind im AOSP enthalten.

MAC-Randomisierung

Android erfordert, dass die Wi-Fi Direct- Geräteadresse und die Schnittstellenadresse zufällig ausgewählt werden. Sie müssen sich von der tatsächlichen MAC-Adresse des Geräts unterscheiden und die folgenden Anforderungen erfüllen:

  • Die Wi-Fi Direct-Geräteadresse muss bei der Schnittstellenerstellung zufällig ausgewählt werden, wenn keine persistente Gruppe gespeichert ist; Andernfalls muss die Geräteadresse weiterhin die zuletzt generierte MAC-Adresse verwenden.
  • Die Wi-Fi Direct-Schnittstellenadresse, auch Gruppenadresse genannt, muss bei jedem Verbindungsaufbau zufällig ausgewählt werden.

Die Wi-Fi Direct MAC-Randomisierung ist in „wpa_supplicant“ implementiert und wird durch zwei Konfigurationen gesteuert: p2p_device_random_mac_addr und p2p_interface_random_mac_addr .

Um diese Funktion zu aktivieren, müssen Gerätehersteller:

  • Implementieren Sie die Wi-Fi Supplicant ISupplicantP2pIface::setMacRandomization API. Abhängig von der implementierten Schnittstelle ist dies in:
    • hardware/interface/wifi/supplicant/1.2 für HIDL
    • hardware/interface/wifi/supplicant/aidl für AIDL
  • Setzen Sie config_wifi_p2p_mac_randomization_supported in einem benutzerdefinierten Geräte-Overlay auf „true“.

Validierung

Android bietet eine Reihe von Komponententests, Integrationstests (Android Connectivity Test Suite oder ACTS), Compatibility Test Suite (CTS) -Tests und CTS Verifier- Tests zur Validierung der Wi-Fi Direct-Funktion. Wi-Fi Direct kann auch mit der Vendor Test Suite (VTS) getestet werden.

Unit-Tests

Überprüfen Sie das Wi-Fi Direct-Paket mithilfe der folgenden Tests.

Servicetests:

atest com.android.server.wifi.p2p

Managertests:

atest android.net.wifi.p2p

Integrationstests (ACTS)

Die ACTS Wi-FI Direct-Testsuite, die sich unter tools/test/connectivity/acts_tests/tests/google/wifi/p2p befindet, implementiert Funktionstests von Wi-Fi Direct.

Tests der Compatibility Test Suite (CTS).

Verwenden Sie CTS-Tests, um die Wi-Fi Direct-Funktion zu validieren. CTS erkennt, wenn die Funktion aktiviert ist, und schließt automatisch die zugehörigen Tests ein.

Um die CTS-Tests auszulösen, führen Sie Folgendes aus:

% atest android.net.wifi.p2p.cts

CTS Verifier-Tests

CTS Verifier-Tests validieren das Wi-Fi Direct-Verhalten mithilfe von zwei Geräten: einem Testgerät und einem bekanntermaßen guten Gerät. Um die Tests auszuführen, öffnen Sie CTS Verifier und navigieren Sie zum Abschnitt mit dem Titel „Wi-Fi Direct-Tests“.