WLAN-Modus mit geringer Latenzzeit

In Android 10 wurde die Wi‑Fi-Lock-API erweitert, damit latenzempfindliche Apps WLAN in einem Modus mit niedriger Latenz konfigurieren können. Der Modus für geringe Latenzzeit wird gestartet, wenn alle folgenden Bedingungen erfüllt sind:

  • WLAN ist aktiviert und das Gerät hat Internetzugang.
  • Die App hat eine WLAN-Sperre erstellt und abgerufen und wird im Vordergrund ausgeführt.
  • Das Display ist eingeschaltet.

Damit Geräte den Modus mit niedriger Latenz unterstützen, müssen Gerätehersteller den WLAN-Treiber und die Vendor-HAL aktualisieren. Im Modus mit geringer Latenz wird der Energiesparmodus (auch als „Doze-Zustand“ im IEEE 802.11-Standard bezeichnet) explizit vom Framework deaktiviert. Die Scan- und Roaming-Parameter in der Treiber- und Firmware-Ebene können optimiert werden, um die WLAN-Latenz weiter zu reduzieren. Die genauen Optimierungen sind implementierungsspezifisch.

Android bietet einen WLAN-Sperrmodus mit hoher Leistung (eingeführt in API-Level 12), der vom Modus mit niedriger Latenz getrennt ist.

Implementierung

Um den WLAN-Modus mit geringer Latenz zu unterstützen, müssen Sie Implementierungen für die folgenden IWifiChip-Funktionen bereitstellen.

In der AIDL-HAL:

  • int getFeatureSet()
  • void setLatencyMode(in LatencyMode mode)

In der HIDL-HAL (1.3 oder höher):

  • getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)
  • setLatencyMode(LatencyMode mode) generates (WifiStatus status)

Eine Referenzimplementierung finden Sie unter wifi_legacy_hal.cpp mit den folgenden Funktionen:

  • wifi_error wifi_get_supported_feature_set(wifi_interface_handle iface, feature_set *set)
  • wifi_error wifi_set_latency_mode(wifi_interface_handle handle, wifi_latency_mode mode)

Im Modus mit geringer Latenz wird der Energiesparmodus durch WifiLockManager im Android-Framework explizit deaktiviert. Dazu muss der WLAN-Treiber den NL80211-Befehl NL80211_CMD_SET_POWER_SAVE unterstützen, um den Energiesparmodus zu aktivieren und zu deaktivieren. Wenn der WLAN-Energiesparmodus deaktiviert ist, muss das WLAN-System im aktiven Zustand bleiben und bereit sein, Pakete mit minimaler Verzögerung zu senden oder zu empfangen.

WifiLockManager

Funktion deaktivieren

Wenn Sie den Modus mit niedriger Latenz deaktivieren möchten, aktualisieren Sie den zugrunde liegenden Code von getFeatureSet() für die AIDL-HAL oder getCapabilities_1_3() für die HIDL-HAL, sodass capabilities & SET_LATENCY_MODE = 0 gilt. Dabei wird SET_LATENCY_MODE in der AIDL- oder HIDL-Definition IWifiChip definiert. Wenn diese Funktion deaktiviert ist, deaktiviert das Framework den Energiesparmodus nur, wenn der Modus mit niedriger Latenz aktiv ist.

Zertifizierungsstufe

Führen Sie die folgenden automatisierten Tests und manuellen Ping-Latenztests aus, um zu prüfen, ob der Modus mit niedriger Latenz funktioniert, wenn er aktiviert ist.

Automatisierte Tests

Führen Sie die folgenden VTS- und CTS-Tests aus:

Manuelle Tests

Erforderliche Testgeräte und Umgebung

Für manuelle Tests ist die folgende Einrichtung erforderlich:

  • WLAN-Zugangspunkt (AP)
  • Smartphone als Prüfling und Testcomputer

    • Das zu testende Gerät muss über WLAN mit dem Zugangspunkt verbunden sein.
    • Der Testcomputer muss über WLAN oder Ethernet mit dem Zugangspunkt verbunden sein.
    • Der Testcomputer muss über USB mit dem zu testenden Gerät verbunden sein.
  1. Aktivieren Sie den Modus für geringe Latenzzeit.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
  2. Achten Sie darauf, dass Ihr Computer über ADB mit dem Smartphone verbunden ist. Pinge das Gateway über die ADB-Shell 3 Stunden lang kontinuierlich in Intervallen von 1 Sekunde an.

  3. Speichern Sie die Testausgabe in einer Textdatei und verwenden Sie eine Tabelle oder ein Python-Skript, um ein Histogramm der Ergebnisse des Ping-Latenztests zu erstellen.

  4. Wiederholen Sie die Schritte 1 bis 3, wenn der Latenzmodus deaktiviert ist.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
  5. Vergleichen Sie die Testergebnisse, um sicherzustellen, dass der durchschnittliche Ping-Latenzwert bei aktiviertem Modus für geringe Latenzzeit reduziert wird.

  1. Aktivieren Sie den Modus für geringe Latenzzeit.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
  2. Pinge die IP-Adresse des Smartphones über die Befehlszeile des Testcomputers 3 Stunden lang im Sekundentakt an.

  3. Speichern Sie die Testausgabe in einer Textdatei und verwenden Sie eine Tabelle oder ein Python-Skript, um ein Histogramm der Ergebnisse des Ping-Latenztests zu erstellen.

  4. Wiederholen Sie die Schritte 1 bis 3, wenn der Latenzmodus deaktiviert ist.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
  5. Vergleichen Sie die Testergebnisse, um sicherzustellen, dass der durchschnittliche Ping-Latenzwert bei aktiviertem Modus für geringe Latenzzeit reduziert wird.

Andere Tests

Wiederholen Sie die oben genannten Tests in verschiedenen Umgebungen. Zum Beispiel zu Hause oder im Büro.