In Android 10 wird die WLAN-Sperre API erweitert, damit latenzempfindliche Apps das 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 erworben und wird im Vordergrund ausgeführt.
- Das Display ist eingeschaltet.
Um den Modus mit niedriger Latenz auf Geräten zu unterstützen, müssen Gerätehersteller den WLAN-Treiber und den Anbieter-HAL aktualisieren. Im Modus mit geringer Latenz wird der Energiesparmodus (im IEEE 802.11-Standard auch als Ruhemodus bezeichnet) vom Framework ausdrücklich deaktiviert. Die Scan- und Roaming-Parameter auf den Treiber- und Firmwareebenen können optimiert werden, um die WLAN-Latenz weiter zu reduzieren. Die genauen Optimierungen sind implementierungsspezifisch.
Android hat einen leistungsstarken WLAN-Sperrmodus (eingeführt mit API-Ebene 12), der vom Modus mit niedriger Latenz getrennt ist.
Implementierung
Um den Modus mit niedriger Latenz für WLAN 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 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 mit niedriger Latenz wird der Energiesparmodus vom Android-Framework explizit deaktiviert.WifiLockManager
Dazu muss der WLAN-Treiber den NL80211-Befehl NL80211_CMD_SET_POWER_SAVE
unterstützen, um den Energiesparmodus zu aktivieren und zu deaktivieren. Wenn die WLAN-Energiesparfunktion deaktiviert ist, muss das WLAN-System inaktiv bleiben und bereit sein, Pakete mit minimaler Verzögerung zu senden oder zu empfangen.
Funktion deaktivieren
Wenn Sie die Funktion für 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 so, dass capabilities & SET_LATENCY_MODE = 0
, wobei SET_LATENCY_MODE
in der IWifiChip
AIDL- oder HIDL-Definition definiert ist.
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:
- VTS (AIDL):
hardware/interfaces/wifi/aidl/vts/functional/wifi_chip_aidl_test.cpp
- VTS (HIDL):
hardware/interfaces/wifi/1.3/vts/functional/wifi_chip_hidl_test.cpp
- CTS:
cts/tests/tests/net/src/android/net/wifi/cts/WifiLockTest.java
Manuelle Tests
Erforderliche Testgeräte und -umgebung
Für manuelle Tests ist folgende Einrichtung erforderlich:
- WLAN-Zugangspunkt (AP)
Testgerät (Device Under Test, 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.
Ping-Test für Uplink
Aktivieren Sie den Modus für geringe Latenzzeit.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Prüfe, ob dein Computer über ADB mit dem Smartphone verbunden ist. Führen Sie über die ADB-Shell 3 Stunden lang in 1-Sekunden-Intervallen einen Ping an das Gateway aus.
Speichern Sie die Testausgabe in einer Textdatei und erstellen Sie mit einer Tabelle oder einem Python-Script ein Histogramm der Ping-Latenztestergebnisse.
Wiederholen Sie die Schritte 1 bis 3 bei deaktiviertem Latenzmodus.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Vergleichen Sie die Testergebnisse, um sicherzustellen, dass der durchschnittliche Ping-Latenzwert reduziert wird, wenn der Modus mit geringer Latenz aktiviert ist.
Ping-Test für Downlink
Aktivieren Sie den Modus für geringe Latenzzeit.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Führen Sie über die Befehlszeile des Testcomputers 3 Stunden lang in 1-Sekunden-Intervallen einen Ping auf die IP-Adresse des Smartphones aus.
Speichern Sie die Testausgabe in einer Textdatei und erstellen Sie mit einer Tabelle oder einem Python-Script ein Histogramm der Ping-Latenztestergebnisse.
Wiederholen Sie die Schritte 1 bis 3 bei deaktiviertem Latenzmodus.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Vergleichen Sie die Testergebnisse, um sicherzustellen, dass der durchschnittliche Wert für die Ping-Latenz reduziert wird, wenn der Modus mit niedriger Latenz aktiviert ist.
Andere Tests
Wiederholen Sie die obigen Tests in verschiedenen Umgebungen. Beispielsweise zu Hause oder im Büro.