Introduction au RTT WLAN (IEEE 802.11mc)
La fonctionnalité de Temps d'Aller-Retour (RTT) WLAN, conforme à la norme IEEE 802.11mc, introduite avec Android 9, permet aux appareils de déterminer avec précision leur distance par rapport à d'autres équipements compatibles. Ces équipements peuvent être des points d'accès (AP) ou des appareils pairs prenant en charge le Wi-Fi Aware. En exploitant ce protocole avancé, les applications peuvent bénéficier de capacités de géolocalisation intérieures améliorées et d'une meilleure conscience spatiale, ouvrant la voie à des services de localisation plus performants.
Interface Matérielle et Sources
L'intégration de cette fonctionnalité s'appuie sur la Langue de Description de l'Interface Matérielle (HIDL) WLAN, standardisée dans l'Android Open Source Project (AOSP). HIDL, apparue avec Android 8.0, remplace les structures HAL précédentes en simplifiant l'implémentation grâce à des définitions claires des types et appels de méthodes regroupés en interfaces et paquets.
Pour exploiter le RTT WLAN via HIDL, il convient d'utiliser les interfaces situées dans : hardware/interfaces/wifi/1.0 ou une version ultérieure.
À titre de référence historique et pour comprendre l'évolution, l'ancienne structure HAL du RTT WLAN était consultable via : hardware/libhardware_legacy/+/master/include/hardware_legacy/rtt.h.
Détails d'Implémentation
L'activation du RTT WLAN nécessite un support conjoint au niveau du framework système et de la couche d'abstraction matérielle (HAL) avec le firmware associé :
- Support du Framework : Les composants logiciels AOSP de base doivent être présents et actifs.
- Activation de la Fonctionnalité : Un drapeau de fonctionnalité spécifique est requis pour activer le RTT WLAN.
- Support HAL/Firmware : Le matériel sous-jacent et son firmware doivent être compatibles avec le protocole IEEE 802.11mc.
Pour activer cette capacité, outre l'implémentation de la HIDL WLAN, il est nécessaire d'ajouter un fichier de configuration dans la configuration de construction du périphérique. Cela s'effectue en modifiant la variable d'environnement PRODUCT_COPY_FILES dans le fichier device.mk, situé à device/<oem>/<device> :
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/wlan_rtt_support.xml
En dehors de cette configuration, la plupart des éléments nécessaires à l'implémentation sont déjà inclus dans l'AOSP.
Adresses MAC Aléatoires
Afin de renforcer la confidentialité des utilisateurs, l'adresse MAC employée lors des transactions RTT WLAN doit être une adresse aléatoire, distincte de l'adresse MAC native de l'interface WLAN. Une seule exception est permise : si un appareil est déjà associé à un point d'accès, il peut utiliser son adresse MAC associée pour toutes les transactions RTT effectuées avec ce point d'accès ou d'autres points d'accès.
Procédure de Validation
Cette fonctionnalité est couverte par des tests exhaustifs au sein de la suite de tests de compatibilité Android (CTS), qui détecte automatiquement l'activation de la fonction et inclut les tests pertinents. La Validation du RTT WLAN peut également être effectuée à l'aide de la Vendor Test Suite (VTS) et des scripts ACTS/SL4A pour des tests d'intégration étendus.
Tests Unitaires
Pour la validation des paquets RTT WLAN, les tests unitaires peuvent être exécutés via les commandes suivantes :
# Pour les tests du service RTT sur le serveur
adb shell am instrument -w -e class com.android.server.wifi.rtt.RttServiceTest com.android.server.wifi.test/androidx.test.runner.AndroidJUnitRunner
# Pour les tests du gestionnaire RTT
adb shell am instrument -w -e package android.net.wifi.rtt.manager com.android.wifi.tests/androidx.test.runner.AndroidJUnitRunner
Tests d'Intégration (ACTS)
La suite de tests acts/sl4a, documentée dans /tools/test/connectivity/acts/tests/google/wifi/rtt/README.md, offre une couverture pour les tests fonctionnels, de performance et de stress.
Tests de Compatibilité (CTS)
Les tests CTS pour le RTT WLAN détectent l'activation de la fonctionnalité et incluent automatiquement les scénarios de test appropriés. Un point d'accès compatible avec le RTT WLAN (IEEE 802.11mc) doit être à portée du périphérique en test pour que ces vérifications soient valides.
La commande pour déclencher spécifiquement les tests CTS liés au Wi-Fi RTT est :
atest WifiRttCompatibilityTests
Calibration de la Précision
Pour garantir une performance optimale du RTT WLAN, la précision des mesures de distance fournies par le protocole 802.11mc doit rester dans les limites des indicateurs clés de performence (KPI) établis. Les tolérances de précision recommandées, exprimées en erreur cumulée de 90% (CDF), sont les suivantes :
- Bande passante de 80 MHz : 2 mètres
- Bande passante de 40 MHz : 4 mètres
- Bande passante de 20 MHz : 8 mètres
Une procédure de calibration rigoureuse est essentielle pour s'assurer de la bonne implémentation de ces fonctions.
La calibration s'effectue en comparant la distance réelle (vérité terrain) à la distance estimée par le RTT, en augmentant progressivement la distance. Si les valeurs sont en concordance, la solution est considérée comme validée. Les tests de calibration doivent être réalisés dans des conditions contrôlées :
- Un vaste espace ouvert ou un couloir sans objets métalliques proéminents qui pourraient engendrer des phénomènes de trajets multiples.
- Un chemin en visibilité directe (LOS) d'au moins 25 mètres.
- Des marquages du chemin tous les 0,5 mètre, d'un bout à l'autre.
- Installation d'un point d'accès compatible RTT à une extrémité du chemin (à 20 cm du sol), et d'un support mobile (également à 20 cm du sol) pour déplacer le téléphone Android le long du chemin, aligné sur chaque marque de 0,5 mètre. Cette tâche peut être automatisée ou effectuée manuellement.
- À chaque marque, 50 résultats de mesure de distance doivent être enregisrtés, ainsi que la distance réelle par rapport au point d'accès. Des statistiques comme la moyenne et la variance des distances doivent être calculées pour chaque position.
Les résultats de l'étape 5 peuvent être représentés graphiquement, avec la distance réelle sur l'axe des X et la distance estimée sur l'axe des Y, en traçant une ligne de régression. Une calibration idéale se traduit par une ligne de pente 1.0 et un décalage nul (0.0 mètre) sur l'axe des Y. Des écarts sont acceptables s'ils se situent dans les limites des KPI pour la bande passante correspondante. Si les résultats dépassent ces limites, une recalibration de la fonctionnalité de l'appareil est nécessaire pour se conformer aux spécifications des KPI.