Modo de Wi-Fi de baja latencia

Android 10 extiende la API de bloqueo de Wi-Fi para permitir sensibles a la latencia para configurar una conexión Wi-Fi de baja latencia automático. El modo de baja latencia comienza cuando se cumplen todas las condiciones siguientes:

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

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

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

Implementación

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

En la HAL del AIDL:

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

En la HAL de HIDL (1.3 o posterior), haz lo siguiente:

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

Puedes 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, el ahorro de energía está inhabilitado explícitamente por WifiLockManager en el framework de Android. Para ello, el controlador WLAN debe ser compatible con el comando NL80211. NL80211_CMD_SET_POWER_SAVE, para habilitar o inhabilitar el ahorro de energía. Cuando la conexión Wi-Fi está activa Guardar, el sistema Wi-Fi debe permanecer activo y estar listo para enviar o recibir paquetes con un retraso mínimo.

Inhabilitar la función

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

Validación

Para probar que el modo de baja latencia funciona cuando está habilitado, ejecuta el siguiente comando y pruebas manuales de latencia de ping.

Pruebas automáticas

Ejecuta las siguientes pruebas de VTS y CTS:

Pruebas manuales

Equipo de prueba y entorno requeridos

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

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

    • El DUT debe estar conectado al punto de acceso mediante Wi-Fi.
    • La computadora de prueba debe estar conectada al punto de acceso mediante Wi-Fi o Ethernet
    • La computadora de prueba debe estar conectada al DUT mediante USB.
  1. Habilita el modo de baja latencia.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Asegúrate de que tu computadora esté conectada con el teléfono mediante ADB. Desde la shell de ADB. Para ello, haz ping en la puerta de enlace de forma continua durante 3 horas a 1 segundo. en intervalos de tiempo.

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

  4. Repite los pasos 1 al 3 con el modo de latencia inhabilitado.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Compara los resultados de la prueba para asegurarte de que el valor de latencia de ping promedio sea el siguiente: se reducen cuando se habilita el modo de baja latencia.

  1. Habilita el modo de baja latencia.

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

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

  4. Repite los pasos 1 al 3 con el modo de latencia inhabilitado.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Compara los resultados de la prueba para asegurarte de que el valor de latencia de ping promedio sea el siguiente: se reducen cuando se habilita el modo de baja latencia.

Otras pruebas

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