Modalità a bassa latenza Wi-Fi

Android 10 estende l'API di blocco Wi-Fi per consentire alle app sensibili alla latenza di configurare il Wi-Fi in una modalità a bassa latenza. La modalità a bassa latenza si avvia quando si verificano tutte le seguenti condizioni:

  • Il Wi-Fi è attivo e il dispositivo ha accesso a internet.
  • L'app ha creato e acquisito un blocco Wi-Fi ed è in esecuzione in primo piano.
  • Lo schermo è acceso.

Per supportare la modalità a bassa latenza sui dispositivi, i produttori di dispositivi devono aggiornare il driver WLAN e l'HAL del fornitore. In modalità a bassa latenza, il risparmio energetico (noto anche come stato di sospensione nello standard IEEE 802.11) viene disattivato esplicitamente dal framework. I parametri di scansione e roaming nei livelli driver e firmware possono essere ottimizzati per ridurre ulteriormente la latenza Wi-Fi. Le ottimizzazioni esatte sono specifiche per l'implementazione.

Android dispone di una modalità di blocco Wi-Fi ad alte prestazioni (introdotta nel livello API 12) separata dalla modalità a bassa latenza.

Implementazione

Per supportare la funzionalità della modalità a bassa latenza Wi-Fi, fornisci implementazioni per le seguenti funzioni di IWifiChip.

Nell'HAL AIDL:

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

Nell'HAL HIDL (1.3 o versioni successive):

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

Un'implementazione di riferimento è disponibile in wifi_legacy_hal.cpp con le seguenti funzioni:

  • 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)

In modalità a bassa latenza, il risparmio energetico viene disattivato esplicitamente da WifiLockManager nel framework Android. A questo scopo, il driver WLAN deve supportare il comando NL80211, NL80211_CMD_SET_POWER_SAVE, per abilitare e disabilitare il risparmio energetico. Quando il risparmio energetico del Wi-Fi è disattivato, il sistema Wi-Fi deve rimanere attivo ed essere pronto a inviare o ricevere pacchetti con un ritardo minimo.

Disattivare la funzionalità

Per disattivare la funzionalità della modalità a bassa latenza, aggiorna il codice sottostante di getFeatureSet() per l'HAL AIDL o getCapabilities_1_3() per l'HAL HIDL, in modo che capabilities & SET_LATENCY_MODE = 0, dove SET_LATENCY_MODE è definito nella definizione IWifiChip AIDL o HIDL. Quando questa funzionalità è disattivata, il framework disattiva il risparmio energetico solo quando è attiva la modalità a bassa latenza.

Convalida

Per verificare che la modalità a bassa latenza funzioni quando è abilitata, esegui i seguenti test automatici e test manuali di latenza dei ping.

Test automatici

Esegui i seguenti test VTS e CTS:

Test manuale

Apparecchiature e ambiente di test richiesti

Per i test manuali, è necessaria la seguente configurazione:

  • Punto di accesso Wi-Fi (AP)
  • Smartphone e computer di test del dispositivo in test (DUT)

    • Il DUT deve essere connesso al punto di accesso tramite Wi-Fi.
    • Il computer di test deve essere connesso al punto di accesso tramite Wi-Fi o Ethernet.
    • Il computer di test deve essere connesso al DUT tramite USB.
  1. Attiva la modalità a bassa latenza.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Assicurati che il computer sia connesso allo smartphone tramite ADB. Dalla shell ADB, invia un ping al gateway continuamente per 3 ore a intervalli di 1 secondo.

  3. Salva l'output del test in un file di testo e utilizza un foglio di lavoro o uno script Python per generare un'istogramma dei risultati del test di latenza del ping.

  4. Ripeti i passaggi da 1 a 3 con la modalità di latenza disattivata.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Confronta i risultati del test per assicurarti che il valore medio della latenza del ping sia ridotto quando è attivata la modalità a bassa latenza.

  1. Attiva la modalità a bassa latenza.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Dalla riga di comando del computer di test, esegui un ping all'indirizzo IP dello smartphone continuamente per 3 ore a intervalli di 1 secondo.

  3. Salva l'output del test in un file di testo e utilizza un foglio di lavoro o uno script Python per generare un'istogramma dei risultati del test di latenza del ping.

  4. Ripeti i passaggi da 1 a 3 con la modalità di latenza disattivata.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Confronta i risultati del test per assicurarti che il valore medio della latenza del ping sia ridotto quando è attivata la modalità a bassa latenza.

Altri test

Ripeti i test precedenti in ambienti diversi. Ad esempio, a casa o in ufficio.