Modo Wi-Fi de baja latencia

Android 10 amplía la API de bloqueo de Wi-Fi para permitir que las aplicaciones sensibles a la latencia configuren Wi-Fi en un modo de baja latencia . El modo de baja latencia comienza cuando se cumplen todas las condiciones siguientes:

  • Wi-Fi está habilitado y el dispositivo tiene acceso a Internet.
  • La aplicación creó y adquirió un bloqueo de Wi-Fi y se está ejecutando en primer plano.
  • La pantalla está encendida.

Para admitir el modo de baja latencia en los dispositivos, los fabricantes de dispositivos deben actualizar el controlador WLAN y el proveedor HAL. En el modo de baja latencia, el marco deshabilita explícitamente el ahorro de energía (también conocido como estado de reposo en el estándar IEEE 802.11). Los parámetros de escaneo y roaming en las capas de controlador y firmware se pueden optimizar para reducir aún más la latencia de Wi-Fi. Las optimizaciones exactas son específicas de la implementación.

Android tiene un modo de bloqueo de Wi-Fi de alto rendimiento (introducido en el nivel API 12) que es independiente del modo de baja latencia.

Implementación

Para admitir la función del modo de baja latencia de Wi-Fi, proporcione implementaciones para las siguientes funciones IWifiChip .

En el AIDL HAL:

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

En HIDL HAL (1.3 o posterior):

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

Se puede encontrar una implementación de referencia en wifi_legacy_hal.cpp con las siguientes funciones:

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

En el modo de baja latencia, WifiLockManager desactiva explícitamente el ahorro de energía en el marco de Android. Para admitir esto, el controlador WLAN debe admitir el comando NL80211, NL80211_CMD_SET_POWER_SAVE , para habilitar y deshabilitar el ahorro de energía. Cuando el ahorro de energía de Wi-Fi está desactivado, el sistema Wi-Fi debe permanecer en estado despierto y estar listo para enviar o recibir paquetes con un retraso mínimo.

Deshabilitar la función

Para desactivar la función del modo de baja latencia, actualice el código subyacente de getFeatureSet() para AIDL HAL o getCapabilities_1_3() para HIDL HAL, de modo que capabilities & SET_LATENCY_MODE = 0 , donde SET_LATENCY_MODE se define en la definición IWifiChip AIDL o HIDL . Cuando esta función está deshabilitada, el marco deshabilita el ahorro de energía solo cuando el modo de baja latencia está activo.

Validación

Para probar que el modo de baja latencia funciona cuando está habilitado, ejecute las siguientes pruebas automatizadas y pruebas de latencia de ping manuales.

Pruebas automatizadas

Ejecute las siguientes pruebas VTS y CTS:

Prueba manual

Equipo de prueba y entorno requeridos.

Para pruebas manuales, se requiere la siguiente configuración:

  • Punto de acceso Wi-Fi (AP)
  • Teléfono del dispositivo bajo prueba (DUT) y computadora de prueba

    • El DUT debe estar conectado al punto de acceso a través de Wi-Fi.
    • La computadora de prueba debe estar conectada al punto de acceso a través de Wi-Fi o Ethernet.
    • La computadora de prueba debe estar conectada al DUT a través de USB.
  1. Habilite el modo de baja latencia.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Asegúrese de que su computadora esté conectada con el teléfono a través de ADB. Desde el shell ADB, haga ping a la puerta de enlace continuamente durante 3 horas en intervalos de 1 segundo.

  3. Guarde el resultado de la prueba en un archivo de texto y utilice una hoja de cálculo o un script de Python para generar un histograma de los resultados de la prueba de latencia de ping.

  4. Repita los pasos del 1 al 3 con el modo de latencia desactivado.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Compare los resultados de la prueba para asegurarse de que el valor promedio de latencia de ping se reduzca cuando el modo de baja latencia esté habilitado.

  1. Habilite el modo de baja latencia.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Desde la línea de comando de la computadora de prueba, haga ping a la dirección IP del teléfono continuamente durante 3 horas en intervalos de 1 segundo.

  3. Guarde el resultado de la prueba en un archivo de texto y utilice una hoja de cálculo o un script de Python para generar un histograma de los resultados de la prueba de latencia de ping.

  4. Repita los pasos del 1 al 3 con el modo de latencia desactivado.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Compare los resultados de la prueba para asegurarse de que el valor promedio de latencia de ping se reduzca cuando el modo de baja latencia esté habilitado.

Otras pruebas

Repita las pruebas anteriores en diferentes entornos. Por ejemplo, en casa o en la oficina.