Wi‑Fi Aware

Die in Android 8.0 hinzugefügte Funktion Wi‑Fi Aware ermöglicht es unterstützten Geräten, sich gegenseitig direkt über das Wi‑Fi Aware-Protokoll zu erkennen, zu verbinden und (in Android 9 hinzugefügt) die Entfernung zueinander zu bestimmen, ohne dass eine Internet- oder Mobilfunkverbindung erforderlich ist. Diese Funktion basiert auf der Wi-Fi Aware-Spezifikation (Versionen 2.0, 3.0, 3.1 und 4.0) der Wi-Fi Alliance (WFA) und ermöglicht den einfachen Austausch von Daten mit hohem Durchsatz zwischen vertrauenswürdigen Geräten und Apps, die sich ansonsten nicht im Netzwerk befinden.

Beispiele und Quelle

Damit diese Funktion genutzt werden kann, müssen Gerätehersteller das Wi‑Fi Vendor HAL implementieren. In Android 14 und höher wird die Vendor-HAL-Schnittstelle mit AIDL definiert. Unter Android 13 und niedriger wird die Vendor-HAL-Schnittstelle mit HIDL definiert.

Folgen Sie der WLAN-Schnittstelle, um die Wi-Fi Aware-Funktion zu verwenden. Je nachdem, welche Schnittstelle implementiert ist, ist dies entweder:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 oder höher

In der alten WLAN-HAL finden Sie Informationen dazu, wie sie mit den AIDL- und HIDL-Schnittstellen zusammenhängt: hardware/libhardware_legacy/+/android16-release/include/hardware_legacy/wifi_nan.h.

Implementierung

Gerätehersteller müssen sowohl Framework- als auch HAL-/Firmware-Support bieten:

  • Framework:
    • AOSP-Code
    • „Aware“ aktivieren: Erfordert sowohl ein Funktions- als auch ein Build-Flag
  • Unterstützung der Wi-Fi Aware (NAN) HAL (was Firmware-Unterstützung impliziert)

Um diese Funktion zu implementieren, müssen Gerätehersteller die WLAN-Schnittstelle implementieren und zwei Funktionsflags aktivieren:

  • Fügen Sie in BoardConfig.mk oder BoardConfig-common.mk unter device/<oem>/<device> das folgende Flag hinzu:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • Ändern Sie in device.mk im Verzeichnis device/<oem>/<device> die Umgebungsvariable PRODUCT_COPY_FILES, um Unterstützung für das Wi-Fi Aware-Feature hinzuzufügen:

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

Wi-Fi Aware umfasst die Entfernungsmessung zu Peer-Geräten mit dem IEEE 802.11mc-Protokoll, auch bekannt als Round Trip Time (RTT). Diese Unterfunktion von Wi-Fi Aware ist davon abhängig, ob das Gerät die Wi-Fi RTT-Funktion unterstützt. Das Gerät muss also sowohl Wi-Fi Aware als auch Wi-Fi RTT unterstützen. Weitere Informationen finden Sie unter Wi‑Fi RTT.

Andernfalls ist alles, was für diese Funktion erforderlich ist, in AOSP enthalten.

Das Flag WIFI_HIDL_FEATURE_AWARE wird ignoriert, wenn das Flag WIFI_HAL_INTERFACE_COMBINATIONS angegeben ist. Weitere Informationen finden Sie unter Gleichzeitigkeit von WLAN-Schnittstellen.

MAC‑Randomisierung

Unter Android muss die MAC-Adresse der Wi-Fi Aware-Erkennungs- (NMI) und Datenschnittstellen (NDPs) zufällig generiert werden und darf nicht mit der tatsächlichen MAC-Adresse des Geräts identisch sein. Die MAC-Adressen müssen folgende Anforderungen erfüllen:

  • Wird zufällig generiert, wenn Wi‑Fi Aware aktiviert oder reaktiviert wird.
  • Wenn Wi‑Fi Aware aktiviert ist, muss die MAC-Adresse in einem regelmäßigen Intervall randomisiert werden, das durch den Parameter NanConfigRequest.macAddressRandomizationIntervalSec konfiguriert wird. Das Framework konfiguriert dies standardmäßig auf 30 Minuten.

Anhalten und fortsetzen

Unter Android 14 und höher unterstützt Wi-Fi Aware die Möglichkeit für privilegierte Apps, aktive Erkennungssitzungen (einschließlich aller mit diesen Sitzungen verknüpften Datenpfade) anzuhalten und fortzusetzen. Durch die Unterstützung dieser Funktion können Geräte Erkennungssitzungen schneller fortsetzen und weniger Strom verbrauchen, da Erkennungssitzungen unterbrochen werden können.

Wenn ein Gerät diese Funktion zum Anhalten und Fortsetzen unterstützt, wird die Wi-Fi Aware-Sitzung durch die Firmware angehalten, wenn eine privilegierte App die Erkennungssitzung anhält. Wenn sich eine Erkennungssitzung im Status „Angehalten“ befindet, überträgt oder empfängt das Gerät keine Frames für diese Sitzung, einschließlich aller aktiven NDPs in dieser Sitzung. Wenn alle Discovery-Sitzungen angehalten werden, sendet oder empfängt das Gerät keine Wi-Fi Aware-Frames.

Wenn eine privilegierte App eine angehaltene Discovery-Sitzung fortsetzt, versetzt das Framework die Sitzung in den vorherigen Zustand zurück, einschließlich aller zugehörigen NDP-Sitzungen. Das Fortsetzen einer angehaltenen Erkennungssitzung ist schneller als das Aufrufen von Wi-Fi Aware und das Erstellen einer neuen Erkennungssitzung.

Damit das Anhalten und Fortsetzen von Erkennungssitzungen unterstützt wird, müssen Gerätehersteller HAL- und Firmware-Support bereitstellen. Weitere Informationen finden Sie unter IWifiNanIface.java.

Gerätehersteller können Out-of-Band-Kommunikation (z. B. BLE) verwenden, um das Anhalten und Fortsetzen auf mehreren Geräten zu synchronisieren.

Zertifizierungsstufe

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

Einheitentests

Die Wi-Fi Aware-Pakettests werden mit Folgendem ausgeführt:

Diensttests:

atest com.android.server.wifi.aware

Manager-Tests:

atest android.net.wifi.aware

CTS-Tests (Compatibility Test Suite)

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

Die CTS-Tests können mit folgenden Methoden ausgelöst werden:

atest SingleDeviceTest

CTS‑Prüfungstests

Mit CTS Verifier-Tests wird das Wi-Fi Aware-Verhalten mit zwei Geräten validiert: einem Testgerät und einem bekannten Gerät. Öffnen Sie CTS Verifier und rufen Sie den Abschnitt „Wi-Fi Aware Tests“ auf, um die Tests auszuführen.