Mode Wi-Fi à faible latence

Android 10 étend l'API de verrouillage 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 prendre en charge le mode à faible latence sur 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 de pilote et de micrologiciel peuvent être optimisés pour réduire davantage la latence Wi-Fi. Les optimisations exactes sont spécifiques à l’implémentation.

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

Mise en œuvre

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

Dans le HAL AIDL :

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

Dans le HIDL HAL (1.3 ou plus récent) :

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

Une implémentation de référence peut être trouvée 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 prendre en charge cela, le pilote WLAN doit prendre en charge la commande NL80211, NL80211_CMD_SET_POWER_SAVE , pour activer et désactiver l'économie d'énergie. Lorsque l'économie d'énergie Wi-Fi est désactivée, le système Wi-Fi doit rester en état de veille et être prêt à envoyer ou à recevoir des paquets dans un délai minimum.

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 telle sorte que capabilities & SET_LATENCY_MODE = 0 , où SET_LATENCY_MODE est défini dans la définition IWifiChip AIDL ou HIDL. . 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 tester que le mode à faible latence fonctionne lorsqu'il est activé, exécutez les tests automatisés et les tests de latence de ping manuels suivants.

Tests automatisés

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 (AP)
  • Téléphone d'appareil sous test (DUT) et ordinateur de test

    • Le DUT doit être connecté au point d’accès via Wi-Fi.
    • L'ordinateur de test doit être connecté au point d'accès via Wi-Fi ou Ethernet.
    • L'ordinateur de test doit être connecté au DUT 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. À partir du shell ADB, pingez la passerelle en continu pendant 3 heures à intervalles de 1 seconde.

  3. Enregistrez la sortie du test dans un fichier texte et 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 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 moyenne de latence ping 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 3 heures à 1 seconde d'intervalle.

  3. Enregistrez la sortie du test dans un fichier texte et 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 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 moyenne de latence ping 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.