Mode Wi-Fi à faible latence

Android 10 étend l'API Wi-Fi Lock pour permettre sensibles à la latence pour configurer le Wi-Fi sur faible latence mode. Le mode à faible latence démarre lorsque toutes les conditions suivantes sont remplies:

  • Le Wi-Fi est activé et l'appareil dispose d'un accès à Internet.
  • L'application a créé et acquis un verrouillage Wi-Fi, et s'exécute dans le au premier plan.
  • L'écran est allumé.

Pour prendre en charge le mode à faible latence sur les appareils, les fabricants doivent mettre à jour le Pilote WLAN et fournisseur HAL. En mode à faible latence, le mode Économie d'énergie l'état Sommeil de la norme IEEE 802.11) est explicitement désactivé par le framework. Les paramètres d'analyse et d'itinérance des couches du pilote et du micrologiciel optimisés pour réduire davantage la latence Wi-Fi. Les optimisations exactes sont spécifiques à la mise en œuvre.

Android a un mode verrouillé Wi-Fi hautes performances (introduit au niveau d'API 12), qui est distinct du mode à faible latence.

Implémentation

Pour prendre en charge le mode Wi-Fi à faible latence, fournissez des implémentations pour les fonctions IWifiChip suivantes.

Dans AIDL HAL:

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

Dans HIDL HAL (version 1.3 ou ultérieure):

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

Vous trouverez une implémentation de référence dans wifi_legacy_hal.cpp avec les fonctions suivantes:

  • 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 mode à faible latence, l'économiseur d'énergie est explicitement désactivé par WifiLockManager dans le framework Android. Pour prendre en charge cela, le pilote WLAN doit prendre en charge la commande NL80211, NL80211_CMD_SET_POWER_SAVE, pour activer et désactiver le mode Économie d'énergie. Lorsque l'alimentation Wi-Fi l'enregistrement est désactivé, le système Wi-Fi doit rester activé et prêt à d'envoyer ou de recevoir des paquets avec un délai minimal.

Désactiver la fonctionnalité

Pour désactiver le mode à faible latence, mettez à jour le code sous-jacent de getFeatureSet() pour le HAL AIDL ou getCapabilities_1_3() pour le HIDL HAL, de sorte que capabilities & SET_LATENCY_MODE = 0, où SET_LATENCY_MODE est défini dans la définition IWifiChipAIDL ou HIDL. Lorsque cette fonctionnalité est désactivée, le framework ne désactive l'économie d'énergie que lorsque le mode à faible latence est actif.

Validation

Pour tester le fonctionnement du mode à faible latence lorsqu'il est activé, exécutez la commande et les tests manuels de latence ping.

Tests automatiques

Exécutez les tests VTS et CTS suivants:

Tests manuels

Équipement et environnement de test requis

Pour les tests manuels, la configuration suivante est requise:

  • Point d'accès Wi-Fi (PA)
  • Appareil sous test (DUT) et ordinateur de test

    • L'appareil testé doit être connecté au point d'accès via le Wi-Fi.
    • L'ordinateur de test doit être connecté au point d'accès via le Wi-Fi ou Ethernet.
    • L'ordinateur de test doit être connecté à l'appareil testé via USB.
  1. Activez le mode à faible latence.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Assurez-vous que votre ordinateur est connecté au téléphone via ADB. De le shell ADB, pinguez la passerelle en continu pendant 3 heures à 1 seconde. à intervalles réguliers.

  3. Enregistrez le résultat du test dans un fichier texte et utilisez une feuille de calcul pour générer un histogramme des résultats du test de latence ping.

  4. Répétez les étapes 1 à 3 avec le mode de latence désactivé.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Comparez les résultats des tests pour vous assurer que la valeur de latence moyenne des pings est réduit lorsque le mode à faible latence est activé.

  1. Activez le mode à faible latence.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. À partir de la ligne de commande de l'ordinateur de test, pinguez l'adresse IP du téléphone. pendant trois heures à intervalles d'une seconde.

  3. Enregistrez le résultat du test dans un fichier texte et utilisez une feuille de calcul pour générer un histogramme des résultats du test de latence ping.

  4. Répétez les étapes 1 à 3 avec le mode de latence désactivé.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Comparez les résultats des tests pour vous assurer que la valeur de latence moyenne des pings est réduit lorsque le mode à faible latence est activé.

Autres tests

Répétez les tests ci-dessus dans différents environnements. Par exemple, à l'adresse à la maison ou au bureau.