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 sonst nicht im Netzwerk 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 wird für die HAL-Schnittstelle des Anbieters AIDL verwendet. 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 für die Unterstützung von Wi‑Fi Direct sind im 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 Zufallsgenerierung von MAC-Adressen für Wi‑Fi Direct ist in „wpa_supplicant“ implementiert und wird 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
  • Lege in einem benutzerdefinierten Overlay für das Gerät config_wifi_p2p_mac_randomization_supported auf „wahr“ fest.

Zertifizierungsstufe

Android bietet eine Reihe von Unit-Tests, 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

Manager tests:

atest android.net.wifi.p2p

Compatibility Test Suite (CTS)-Tests

Verwenden Sie CTS-Tests, um die Wi‑Fi Direct-Funktion zu validieren. 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“.