Wi-Fi Direct

Mit der Funktion Wi‑Fi Direct, auch als Wi‑Fi P2P bezeichnet, können unterstützte Geräte sich über das Wi‑Fi Direct-Protokoll direkt finden und verbinden, ohne dass ein Internet- oder Mobilfunknetzzugriff erforderlich ist. 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 „Wi‑Fi Vendor“ 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. Unter Android 12 und niedriger werden die Supplicant- und Vendor HAL-Schnittstellen mit HIDL definiert.

Die folgenden Wi‑Fi HAL-Oberflächen sind erforderlich, um die Wi‑Fi Direct-Funktion zu verwenden:

  • 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:

  • Framework:
    • AOSP-Code
    • Wi‑Fi Direct aktivieren: Erfordert ein Funktions-Flag
  • HAL-Unterstützung für Wi‑Fi Direct (P2P) (impliziert Firmware-Unterstützung)

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

```
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.

MAC-Adressrandomisierung

Android erfordert, dass die Geräteadresse und die Schnittstellenadresse von Wi‑Fi Direct zufällig generiert 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 beim Erstellen der Benutzeroberfläche zufällig generiert werden, wenn keine persistente Gruppe gespeichert ist. Andernfalls muss die Geräteadresse weiterhin die zuletzt generierte MAC-Adresse verwenden.
  • Die Adresse der Wi‑Fi Direct-Schnittstelle, auch als Gruppenadresse bezeichnet, muss jedes Mal zufällig generiert werden, wenn eine Verbindung hergestellt wird.

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.

Damit diese Funktion aktiviert werden kann, müssen Gerätehersteller Folgendes tun:

  • Implementieren Sie die Wi-Fi Supplicant ISupplicantP2pIface::setMacRandomization API. Je nach implementierter Schnittstelle befindet sich diese unter:
    • hardware/interface/wifi/supplicant/1.2 für HIDL
    • hardware/interface/wifi/supplicant/aidl für AIDL
  • Setze config_wifi_p2p_mac_randomization_supported in einem benutzerdefinierten Geräte-Overlay auf „true“.

Zertifizierungsstufe

Android bietet eine Reihe von Unittests, CTS-Tests (Compatibility Test Suite) 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 mit den folgenden Tests.

Diensttests:

atest com.android.server.wifi.p2p

Tests für Manager:

atest android.net.wifi.p2p

CTS-Tests (Compatibility Test Suite)

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

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

% atest android.net.wifi.p2p.cts

CTS Verifier-Tests

Bei CTS Verifier-Tests wird das Wi‑Fi Direct-Verhalten mit zwei Geräten validiert: einem Testgerät und einem als fehlerfrei bekannten Gerät. Öffnen Sie zum Ausführen der Tests den CTS-Verifier und gehen Sie zum Abschnitt „Wi‑Fi Direct-Tests“.