WLAN-Modus mit geringer Latenzzeit

Android 10 erweitert die Wi-Fi-Sperr-API, damit latenzempfindliche Apps WLAN für einen Modus mit geringer Latenzzeit 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 Internetzugriff.
  • Die App hat eine WLAN-Sperre erstellt und erworben und wird im Vordergrund ausgeführt.
  • Der Bildschirm ist eingeschaltet.

Damit der Modus für geringe Latenzzeit auf Geräten unterstützt wird, müssen Gerätehersteller den WLAN-Treiber und die HAL des Anbieters aktualisieren. Im Modus für geringe Latenzzeit wird der Energiesparmodus (auch als Doze-Modus im IEEE 802.11-Standard bezeichnet) vom Framework explizit deaktiviert. Die Scan- und Roaming-Parameter in den Treiber- und Firmware-Ebenen können optimiert werden, um die WLAN-Latenz weiter zu reduzieren. Die genauen Optimierungen sind implementierungsspezifisch.

Android verfügt über einen leistungsstarken WLAN-Sperrmodus (eingeführt in API-Level 12), der vom Modus für geringe Latenzzeit getrennt ist.

Implementierung

Um die Funktion „WLAN-Modus mit geringer Latenzzeit“ zu unterstützen, stellen Sie Implementierungen für die folgenden IWifiChip-Funktionen bereit.

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 in 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 für geringe Latenzzeit wird der Energiesparmodus von 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 Pakete mit minimaler Verzögerung senden oder empfangen können.

Funktion deaktivieren

Wenn Sie die Funktion „Modus mit geringer Latenzzeit“ 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. SET_LATENCY_MODE ist in der IWifiChip AIDL- oder HIDL-Definition definiert. Wenn diese Funktion deaktiviert ist, deaktiviert das Framework den Energiesparmodus nur, wenn der Modus mit geringer Latenzzeit aktiv ist.

Validierung

Um zu testen, ob der Modus für geringe Latenzzeit funktioniert, wenn er aktiviert ist, führen Sie die folgenden automatisierten Tests und manuellen Ping-Latenztests aus.

Automatisierte Tests

Führen Sie automatisierte Tests aus, indem Sie die folgenden Tests der Vendor Test Suite (VTS) und der Compatibility Test Suite (CTS) ausführen:

Manuelle Tests

Erforderliche Testgeräte und -umgebung

Für manuelle Tests ist die folgende Einrichtung erforderlich:

  • WLAN-Zugangspunkt (ZP)
  • Zu testendes Gerät (DUT) und Testcomputer
    • Das DUT 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 DUT verbunden sein.
  1. Aktivieren Sie den Modus mit geringer Latenzzeit.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Prüfen Sie, ob Ihr Computer über die Android Debug Bridge (ADB) mit dem Smartphone verbunden ist. Pingen Sie über die ADB-Shell 3 Stunden lang kontinuierlich das Gateway 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 Ping-Latenztestergebnisse zu erstellen.

  4. Wiederholen Sie die Schritte 1 bis 3, wenn der Modus mit geringer Latenzzeit deaktiviert ist.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Vergleichen Sie die Testergebnisse, um zu prüfen, ob der durchschnittliche Ping-Latenzwert reduziert wird, wenn der Modus für geringe Latenzzeit aktiviert ist.

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

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Pingen Sie über die Befehlszeile des Testcomputers 3 Stunden lang kontinuierlich die IP-Adresse des Smartphones 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 Ping-Latenztestergebnisse zu erstellen.

  4. Wiederholen Sie die Schritte 1 bis 3, wenn der Modus mit geringer Latenzzeit deaktiviert ist.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Vergleichen Sie die Testergebnisse, um zu prüfen, ob der durchschnittliche Ping-Latenzwert reduziert wird, wenn der Modus für geringe Latenzzeit aktiviert ist.

Andere Tests

Wiederholen Sie die vorherigen Tests in verschiedenen Umgebungen. Beispiel: zu Hause oder im Büro.