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 ha creado y adquirido 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 la HAL del proveedor. En el modo de baja latencia, el marco de trabajo 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 de API 12) que es independiente del modo de baja latencia.

Implementación

La función de modo de baja latencia de Wi-Fi se encuentra en android.hardware.wifi@1.3 . Para admitir esta característica, proporcione implementaciones para las siguientes funciones en IWifiChip.hal :

  • 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 deshabilita 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 Wi-Fi está deshabilitado, el sistema Wi-Fi debe permanecer en estado activo y estar listo para enviar o recibir paquetes con un retraso mínimo.

Deshabilitar la característica

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

Validación

Para probar que el modo de latencia baja 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 necesarios

Para la prueba manual, se requiere la siguiente configuración:

  • Punto de acceso Wi-Fi (AP)
  • Dispositivo bajo prueba (DUT) teléfono y computadora de prueba

    • El dispositivo bajo prueba 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 dispositivo bajo prueba 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 a intervalos de 1 segundo.

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

  4. Repita los pasos 1 a 3 con el modo de latencia deshabilitado.

    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 a intervalos de 1 segundo.

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

  4. Repita los pasos 1 a 3 con el modo de latencia deshabilitado.

    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.