Wi-Fi RTT (IEEE 802.11mc)

O recurso Tempo de retorno (RTT, na sigla em inglês) do Wi-Fi no Android 9 permite que os dispositivos compatíveis meçam a distância até outros dispositivos compatíveis, sejam eles pontos de acesso (APs, na sigla em inglês) ou outros pontos Wi-Fi Aware (se o Wi-Fi Aware for compatível com o dispositivo). Esse recurso, criado com base no protocolo IEEE 802.11mc, permite que os apps usem o reconhecimento e a precisão de local aprimorados.

Exemplos e origem

Para usar esse recurso, implemente a interface HAL do fornecedor. No Android 14 e versões mais recentes, a interface da HAL de fornecedor é definida usando AIDL. No Android 13 e versões anteriores, a interface da HAL do fornecedor é definida usando o HIDL. No Android 8.0, o HIDL substituiu a estrutura anterior da HAL, que era usada para simplificar as implementações, especificando tipos e chamadas de método coletadas em interfaces e pacotes.

Siga a interface do Wi-Fi para utilizar o recurso Wi-Fi RTT. Dependendo da interface implementada, isso pode ser:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.0 ou mais recente.

Você pode consultar a HAL de Wi-Fi legada para ver como ela se correlaciona com as interfaces AIDL e HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/rtt.h.

Implementação

Para implementar o Wi-Fi RTT, você precisa oferecer suporte a framework e HAL/firmware:

  • Estrutura:

    • Código AOSP
    • Ativar Wi-Fi RTT: exige uma sinalização de recurso
  • Suporte a HAL para Wi-Fi RTT (IEEE 802.11mc), o que implica suporte a firmware

Para implementar esse recurso, implemente a interface Wi-Fi AIDL ou HIDL e ative a flag de recurso:

  • No device.mk, localizado em device/<oem>/<device>, modifique a variável de ambiente PRODUCT_COPY_FILES para incluir suporte ao recurso 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
    

Caso contrário, tudo o que for necessário para esse recurso será incluído no AOSP.

Ordem aleatória de MAC

Para aumentar a privacidade, o endereço MAC usado durante as transações de Wi-Fi RTT precisa ser aleatório, ou seja, não pode corresponder ao endereço MAC nativo da interface Wi-Fi. No entanto, como exceção, quando um dispositivo está associado a um AP, ele pode usar o endereço MAC associado a ele para qualquer transação RTT com esse ou com outros APs.

Validação

Existem testes do conjunto de teste de compatibilidade (CTS) do Android para esse recurso. O CTS detecta quando o recurso está ativado e inclui automaticamente os testes associados. Esse recurso também pode ser testado usando o conjunto de teste de fornecedor (VTS, na sigla em inglês).

Testes de unidades

Os testes do pacote Wi-Fi RTT são executados usando:

Testes de serviço:

atest com.android.server.wifi.rtt

Testes do gerenciador:

atest android.net.wifi.rtt

CTS

Existem testes do conjunto de teste de compatibilidade (CTS) do Android para esse recurso. O CTS detecta quando o recurso está ativado e inclui automaticamente os testes associados. Um ponto de acesso compatível com Wi-Fi RTT (IEEE 802.11mc) precisa estar dentro do alcance do dispositivo em teste.

Os testes de CTS podem ser acionados usando:

atest WifiRttTest

Calibração

Para que o Wi-Fi RTT tenha uma boa performance, os intervalos retornados no protocolo 802.11mc precisam ser precisos no indicador principal de desempenho (KPI, na sigla em inglês). Para o erro de CDF de 90%, nas larguras de banda listadas, o KPI recomendado para uma estimativa de intervalo tem as seguintes tolerâncias:

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

Para garantir que a implementação do recurso funcione corretamente, é necessário fazer testes de calibração.

Para isso, compare um intervalo de informações empíricas com o intervalo estimado de RTT em distâncias cada vez maiores. Para conformidade básica, valide sua solução em um dispositivo conhecido por ser calibrado de RTT. A calibração do intervalo precisa ser testada sob as seguintes condições:

  1. Um grande laboratório aberto ou um corredor que não tenha muitos objetos metálicos que podem resultar em ocorrências excepcionalmente altas de vários caminhos.
  2. Pelo menos uma trilha ou caminho com linha de visão (LOS, na sigla em inglês) com extensão de 25 m.
  3. Marcadores de incrementos de 0,5 metro de uma extremidade à outra da pista.
  4. Um local para guardar um ponto de acesso compatível com RTT em uma extremidade da faixa instalada 20 cm acima do chão e um suporte móvel para um smartphone Android (ou outro dispositivo móvel Android em teste) que possa ser movido ao longo da faixa e alinhado com os marcadores de 0,5 m, também a 20 cm acima do chão.

  5. Registre 50 resultados de alcance em cada marcador, com a distância do ponto de acesso. As estatísticas, como média e variância do intervalo, precisam ser calculadas para cada posição do marcador.

Com base nos resultados da etapa 5, é possível traçar um gráfico para as informações empíricas (eixo x) em relação ao intervalo estimado (eixo y) e uma estimativa da linha de regressão de melhor ajuste. A calibração ideal do dispositivo vai resultar em uma linha de gradiente 1,0, com deslocamento de 0,0 m no eixo Y. Os desvios desses valores são aceitáveis se estiverem dentro do KPI da largura de banda correspondente. Se os resultados estiverem fora do KPI, o recurso do dispositivo precisará ser recalibrado para trazer os resultados para a especificação do KPI.