Wi-Fi RTT (IEEE 802.11mc)

La función Tiempo de ida y vuelta (RTT) de Wi-Fi en Android 9 permite que los dispositivos compatibles midan la distancia a otros dispositivos compatibles, ya sean puntos de acceso (PA) o pares de reconocimiento de Wi-Fi (si el dispositivo admite Wi-Fi Aware). Esta función, compilada con el protocolo IEEE 802.11mc, permite que las apps usen el reconocimiento y la precisión de la ubicación mejoradas.

Ejemplos y fuente

Para usar esta función, implementa la interfaz de la HAL del proveedor. En Android 14 y versiones posteriores, la interfaz de la HAL del proveedor se define con el AIDL. En Android 13 y versiones anteriores, la interfaz de la HAL del proveedor se define con HIDL. En Android 8.0, el HIDL reemplazó la estructura anterior de la capa de abstracción de hardware (HAL) utilizada para optimizar las implementaciones especificando tipos y llamadas de método recopilados en interfaces y paquetes.

Sigue la interfaz Wi-Fi para emplear la función Wi-Fi RTT. Según la interfaz que se implemente, sucederá lo siguiente:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.0 o posterior.

Puedes consultar la HAL de Wi-Fi heredada para ver cómo se correlaciona con las interfaces AIDL y HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/rtt.h.

Implementación

Para implementar Wi-Fi RTT, debes proporcionar compatibilidad con el framework y con HAL/firmware:

  • Marco de trabajo:

    • Código del AOSP
    • Habilitar Wi-Fi RTT: Requiere una marca de función.
  • Compatibilidad con HAL de Wi-Fi RTT (IEEE 802.11mc), lo que implica compatibilidad con firmware

Para implementar esta función, implementa la interfaz de AIDL o HIDL de Wi-Fi y habilita la marca de función:

  • En device.mk, ubicado en device/<oem>/<device>, modifica la variable de entorno PRODUCT_COPY_FILES para incluir compatibilidad con la función Wi-Fi RTT:

    PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml
    

De lo contrario, todo lo necesario para esta función se incluye en el AOSP.

Aleatorización de MAC

Para mejorar la privacidad, la dirección MAC que se usa durante las transacciones de Wi-Fi RTT debe ser aleatoria, es decir, no debe coincidir con la dirección MAC nativa de la interfaz Wi-Fi. Sin embargo, como excepción, cuando un dispositivo está asociado a un PA, puede usar la dirección MAC con la que está asociado para cualquier transacción de RTT con ese PA o con otros PA.

Validación

Existen pruebas del Conjunto de pruebas de compatibilidad (CTS) de Android para esta función. El CTS detecta cuándo la función está habilitada y, luego, incluye automáticamente las pruebas asociadas. Esta función también se puede probar con el Conjunto de pruebas de proveedores (VTS).

Pruebas de unidades

Las pruebas del paquete Wi-Fi RTT se ejecutan con lo siguiente:

Pruebas de servicio:

atest com.android.server.wifi.rtt

Pruebas del administrador:

atest android.net.wifi.rtt

CTS

Existen pruebas del Conjunto de pruebas de compatibilidad (CTS) de Android para esta función. El CTS detecta cuándo la función está habilitada y, luego, incluye automáticamente las pruebas asociadas. Un punto de acceso compatible con Wi-Fi RTT (IEEE 802.11mc) debe estar dentro del alcance del dispositivo que está a prueba.

Las pruebas del CTS se pueden activar usando lo siguiente:

atest WifiRttTest

Calibración

Para que Wi-Fi RTT tenga un buen rendimiento, lo ideal es que los rangos que se muestran en el protocolo 802.11mc sean precisos dentro del indicador clave de rendimiento (KPI). Para el error de CDF del 90%, en los anchos de banda enumerados, se espera que el KPI recomendado para una estimación de rango tenga las siguientes tolerancias:

  • 80 MHz: 2 metros
  • 40 MHz: 4 metros
  • 20 MHz: 8 metros

Para garantizar que la implementación de la función funcione correctamente, se necesitan pruebas de calibración.

Esto se puede lograr comparando un rango de verdad fundamental con el rango estimado de RTT a distancias crecientes. Para un cumplimiento básico, debes validar tu solución en relación con un dispositivo que se sepa que se calibró con RTT. La calibración de rango se debe probar en las siguientes condiciones:

  1. Un laboratorio abierto grande o un pasillo sin muchos objetos metálicos que puede provocar casos inusualmente altos de rutas múltiples.
  2. Al menos una ruta de línea de visión (LOS) o una ruta de 25 m de extensión.
  3. Marcadores con incrementos de 0,5 metros de un extremo al otro de la pista.
  4. Un lugar para asegurar un punto de acceso compatible con RTT en un extremo de la vía, montado a 20 cm por encima del suelo, y un soporte móvil para un teléfono Android (o cualquier otro dispositivo móvil Android bajo prueba) que se puede mover por la pista y alineado con los marcadores de 0.5 m, también a 20 cm por encima del piso.

  5. Se deben registrar 50 resultados de rango en cada marcador, junto con la distancia desde el punto de acceso. Las estadísticas, como la media y la varianza del rango, deben calcularse para cada posición del marcador.

A partir de los resultados del paso 5, se puede dibujar un gráfico de la verdad fundamental (eje x) según el rango estimado (eje y) y la línea de regresión de mejor ajuste estimada. La calibración ideal del dispositivo dará como resultado una línea de gradiente de 1.0, con un desplazamiento de 0.0 m en el eje Y. Las desviaciones de estos valores son aceptables si se encuentran dentro del KPI para el ancho de banda correspondiente. Si los resultados están fuera del KPI, se debe volver a calibrar la característica del dispositivo para que los resultados estén dentro de la especificación del KPI.