Mode Wi-Fi à faible latence

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

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

Pour que le mode à faible latence soit compatible avec les appareils, les fabricants d'appareils doivent mettre à jour le pilote WLAN et le HAL du fournisseur. En mode faible latence, l'économie d'énergie (également appelée état de veille dans la norme IEEE 802.11) est explicitement désactivée par le framework. Les paramètres d'analyse et d'itinérance dans les couches du pilote et du micrologiciel peuvent être optimisés pour réduire davantage la latence du Wi-Fi. Les optimisations exactes sont spécifiques à l'implémentation.

Android dispose d'un mode de verrouillage Wi-Fi haute performance (introduit au niveau d'API 12) qui est distinct du mode à faible latence.

Implémentation

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

Dans l'AIDL HAL :

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

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

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

Une implémentation de référence est disponible 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'économie d'énergie est explicitement désactivée par WifiLockManager dans le framework Android. Pour ce faire, le pilote WLAN doit être compatible avec la commande NL80211, NL80211_CMD_SET_POWER_SAVE, pour activer et désactiver l'économiseur d'énergie. Lorsque l'économie d'énergie Wi-Fi est désactivée, le système Wi-Fi doit rester en mode actif et être prêt à envoyer ou recevoir des paquets avec un délai minimal.

Désactiver la fonctionnalité

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

Validation

Pour vérifier que le mode à faible latence fonctionne lorsqu'il est activé, exécutez les tests automatisés et les tests de latence ping manuels suivants.

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
  • Téléphone de l'appareil testé et ordinateur de test

    • Le DUT 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 à tester via un câble 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. Depuis l'interface système ADB, envoyez un ping à la passerelle en continu pendant trois heures à des intervalles d'une seconde.

  3. Enregistrez la sortie du test dans un fichier texte, puis utilisez une feuille de calcul ou un script Python 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 Latence désactivé.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
  5. Comparez les résultats du test pour vous assurer que la valeur de latence ping moyenne est réduite 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, envoyez une requête ping à l'adresse IP du téléphone en continu pendant trois heures à intervalles d'une seconde.

  3. Enregistrez la sortie du test dans un fichier texte, puis utilisez une feuille de calcul ou un script Python 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 Latence désactivé.

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

Autres tests

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