Testar, depurar e ajustar o Wi-Fi

Esta página descreve como testar, depurar e ajustar a implementação de Wi-Fi usando as ferramentas fornecidas no AOSP.

Teste

Para testar o framework de Wi-Fi, o AOSP oferece uma combinação de testes de unidade e CTS.

Testes de unidade

O AOSP inclui testes funcionais e de unidade para o framework de Wi-Fi padrão: tanto para o gerenciador de Wi-Fi (código do lado do app) quanto para o serviço de Wi-Fi.

Testes do Wi-Fi Manager:

  • Localizado em packages/modules/Wifi/framework/tests/
  • Execute usando o executável de shell a seguir (leia o arquivo para conferir mais opções de execução):

    atest FrameworksWifiApiTests
    

Testes do serviço de Wi-Fi:

  • Localizado em packages/modules/Wifi/service/tests/wifitests/
  • Execute usando o executável de shell a seguir (leia o arquivo para conferir mais opções de execução):

    atest FrameworksWifiTests
    

Testes CTS

O conjunto de teste de compatibilidade (CTS) inclui testes para a estrutura Wi-Fi. Eles estão localizados em cts/tests/tests/net/src/android/net/wifi. Os testes de Wi-Fi CTS exigem que o dispositivo em teste esteja associado a um ponto de acesso no início da execução do teste.

Opções de registro aprimoradas para depuração

O Android 9 melhorou a geração de registros de Wi-Fi para facilitar a depuração de problemas de Wi-Fi. No Android 9 ou versões mais recentes, os buffers de anel de drivers ou firmware podem estar sempre ativados. Os relatórios de bugs podem ser acionados automaticamente quando um estado inadequado é detectado (somente em builds userdebug e eng). Quando a HAL do Wi-Fi (AIDL ou HIDL versão 1.2 ou mais recente) é usada, os buffers de depuração do firmware são armazenados na HAL em vez do framework para economizar custos de IPC.

Implementação

Para conferir uma implementação de referência, consulte a implementação padrão na HAL do fornecedor.

É possível desativar o registro de firmware definindo o recurso config_wifi_enable_wifi_firmware_debugging como falso.

Teste manual

Execute este teste manual para verificar se os arquivos antigos no diretório de tombstone estão sendo excluídos.

  1. Ative o Wi-Fi.
  2. Conecte-se a uma rede.
  3. Gere um relatório do bug.
  4. Inspecione o arquivo ZIP do relatório do bug e verifique se os registros de firmware arquivados existem. Os registros estão nos seguintes locais:

    • HAL do AIDL: seção dumpsys do arquivo principal de bugreport
    • HAL do HIDL: /lshal-debug/android.hardware.wifi@1.x::IWifi_default.txt

Ajuste de configuração

Para controlar a intensidade do sinal em que um dispositivo se associa ou se separa de uma rede, o framework de Wi-Fi usa os limites RSSI de entrada e saída.

Os limites de entrada e saída são armazenados como parâmetros de configuração sobrecarregados com os seguintes nomes (em que o parâmetro bad se refere ao limite de RSSI de saída):

  • config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz
  • config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz
  • config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz
  • config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz

Os parâmetros são armazenados em <root>/frameworks/base/core/res/res/values/config.xml e podem ser sobrecarregados usando o arquivo de sobreposição <root>/device/<dev_dir>/overlay/frameworks/base/core/res/res/values/config.xml.

Para testar novos limites, configure o dispositivo usando comandos adb. Como alternativa, é possível criar um build com novas sobreposições, mas o uso de comandos adb oferece uma resposta de teste mais rápida.

adb shell settings put global wifi_score_params \
                             [rssi2|rssi5]=<bad>:<entry>:<low>:<good>

Por exemplo, o comando a seguir configura novos parâmetros de limite (os valores usados neste comando de exemplo são os padrões configurados no repositório de códigos do AOSP):

adb shell settings put global wifi_score_params \
                       rssi2=-85:-85:-73:-60,rssi5=-82:-82:-70:-57

Para restaurar os valores de parâmetros integrados (ou seja, remover as substituições), use este comando adb:

adb shell settings delete global wifi_score_params