Wi-Fi Direct

Die Funktion Wi-Fi Direct, auch als Wi-Fi P2P bezeichnet, ermöglicht es unterstützenden Geräten, sich über das Wi-Fi Direct-Protokoll ohne Internet- oder Mobilfunknetzwerk direkt zu erkennen und sich mit ihnen zu verbinden. Diese Funktion basiert auf der Wi-Fi Direct-Spezifikation der Wi-Fi Alliance (WFA) und ermöglicht die Freigabe 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 zu verwenden, müssen Gerätehersteller die HAL-Schnittstellen für WLAN-Anbieter und Supplicant implementieren.

In Android 13 verwendet die Supplicant-Schnittstelle AIDL für die HAL-Definition. Unter Android 14 und höher verwendet die HAL-Schnittstelle des Anbieters AIDL. In Android 12 und niedriger werden die HAL-Schnittstellen für Supplicant und Anbieter mithilfe von HIDL definiert.

Die folgenden Wi-Fi-HAL-Oberflächen sind zur Verwendung der Wi-Fi Direct-Funktion 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 anbieten:

  • Framework:
    • AOSP-Code
    • Wi-Fi Direct aktivieren: Funktions-Flag erforderlich
  • Wi-Fi Direct (P2P) HAL-Unterstützung (was Firmware-Unterstützung impliziert)

Zur Implementierung dieser Funktion implementieren Gerätehersteller die Wi-Fi-HIDL- oder AIDL-Schnittstellen und aktivieren das Funktions-Flag für Wi-Fi Direct. Ändern Sie in device.mk in device/<oem>/<device> die Umgebungsvariable PRODUCT_COPY_FILES, um die Wi-Fi Direct-Funktion zu unterstützen:

```
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 in AOSP enthalten.

Randomisierung bei MAC

Bei Android müssen die Wi-Fi Direct-Geräteadresse und 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 für die Geräteadresse weiterhin die zuletzt generierte MAC-Adresse verwendet werden.
  • Die Adresse der Wi-Fi Direct-Schnittstelle, auch als Gruppenadresse bezeichnet, muss bei jedem Verbindungsaufbau zufällig ausgewählt werden.

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

Um diese Funktion zu aktivieren, müssen Gerätehersteller folgende Voraussetzungen erfüllen:

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

Zertifizierungsstufe

Android bietet eine Reihe von Unit-, Integrations- (Android Connectivity Test Suite oder ACTS), Compatibility Test Suite (CTS)- und CTS Verifier-Tests, um die Wi-Fi Direct-Funktion zu validieren. Wi-Fi Direct kann auch mit der Vendor Test Suite (VTS) getestet werden.

Einheitentests

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

Diensttests:

atest com.android.server.wifi.p2p

Tests für Manager:

atest android.net.wifi.p2p

Integrationstests (ACTS)

In der ACTS Wi-FI Direct-Testsuite in tools/test/connectivity/acts_tests/tests/google/wifi/p2p werden Funktionstests von Wi-Fi Direct implementiert.

CTS-Tests (Compatibility Test Suite)

Prüfen Sie die Wi-Fi Direct-Funktion mithilfe von CTS-Tests. CTS erkennt, wann die Funktion aktiviert ist, und schließt die zugehörigen Tests automatisch ein.

Führen Sie folgenden Befehl aus, um die CTS-Tests auszulösen:

% atest android.net.wifi.p2p.cts

Tests zur CTS-Prüfung

Der CTS-Verifizierer prüft das Wi-Fi Direct-Verhalten mit zwei Geräten: einem Testgerät und einem als gut bekannten Gerät. Öffnen Sie CTS Verifier und gehen Sie zum Abschnitt mit dem Titel „Wi-Fi Direct Tests“, um die Tests auszuführen.