Wi-Fi 테스트, 디버깅 및 미세 조정

이 페이지에서는 AOSP에서 제공한 도구를 사용하여 Wi-Fi 구현을 테스트, 디버그 및 미세 조정하는 방법을 설명합니다.

테스트

Wi-Fi 프레임워크를 테스트할 수 있도록 AOSP에서는 단위 테스트, 통합 테스트(ACTS) 및 CTS 테스트를 혼합하여 제공합니다.

단위 테스트

AOSP에는 기본 Wi-Fi 프레임워크, 즉 Wi-Fi 관리자(앱 측 코드)와 Wi-Fi 서비스의 기능 및 단위 테스트가 포함되어 있습니다.

Wi-Fi 관리자 테스트:

  • frameworks/base/wifi/tests에 있습니다.
  • 다음 셸 실행 파일을 사용하여 실행합니다(자세한 실행 옵션은 파일 참조).

    % ./frameworks/base/wifi/tests/runtest.sh
        

Wi-Fi 서비스 테스트:

  • frameworks/opt/net/wifi/tests/wifitest에 있습니다.
  • 다음 셸 실행 파일을 사용하여 실행합니다(자세한 실행 옵션은 파일 참조).

    % ./frameworks/opt/net/wifi/tests/wifitests/runtest.sh
        

Android 커뮤니케이션 테스트 도구 모음

Android 커뮤니케이션 테스트 도구 모음(ACTS)은 Wi-Fi, 블루투스 및 이동통신 서비스와 같은 연결 스택의 자동 테스트를 실행합니다. 테스트 도구는 adb 및 Python이 필요하며 tools/test/connectivity/acts에서 찾을 수 있습니다.

Wi-Fi용 ACTS 테스트는 tools/test/connectivity/acts/tests/google/wifi에 있으며 동일한 디렉터리에 테스트 구성 예(example_config.json)가 있습니다.

CTS 테스트

호환성 테스트 도구 모음(CTS)에는 Wi-Fi 프레임워크 테스트가 포함되어 있습니다. 이러한 테스트는 cts/tests/tests/net/src/android/net/wifi에 있습니다. Wi-Fi CTS 테스트에서는 테스트 실행이 시작될 때 테스트 대상 기기를 액세스 포인트와 연결해야 합니다.

디버깅을 위한 향상된 로깅 옵션

Android 9는 Wi-Fi 로깅을 개선하였습니다. 이에 따라 Wi-Fi 문제를 더 쉽게 디버깅할 수 있습니다. Android 9에서는 드라이버/펌웨어 링 버퍼가 항상 켜져 있을 수 있습니다. 잘못된 상태가 감지되면 버그 신고가 자동으로 트리거될 수 있습니다(userdebug 및 eng 빌드에서만). 최신 Wi-Fi HAL(버전 1.2)을 사용하면 펌웨어 디버그 버퍼가 프레임워크 대신 HAL에 저장되어 IPC 비용을 절감할 수 있습니다.

구현

참조 구현은 공급업체 HAL의 기본 구현을 참조하세요.

리소스 config_wifi_enable_wifi_firmware_debugging을 false로 설정하여 펌웨어 로깅을 사용 중지할 수 있습니다.

통합 테스트(ACTS)

통합 테스트는 /tools/test/connectivity/acts/tests/google/wifi/WifiDiagnosticsTest.py에서 찾을 수 있습니다.

확인된 펌웨어 덤프는 userdebug 빌드용 플래시의 적절한 tombstone 디렉터리에 유지됩니다. dumpstate는 버그 신고를 생성할 때 이 디렉터리에서 수집합니다.

수동 테스트

이 수동 테스트를 실행하여 Tombstone 디렉터리의 이전 파일이 삭제되어 있는지 확인합니다.

  1. Wi-Fi를 사용 설정합니다.
  2. 네트워크에 연결합니다.
  3. 버그 신고를 생성합니다.
  4. bugreport ZIP 파일을 검사하여 /lshal-debug/android.hardware.wifi@1.2__IWifi_default.txt가 보관처리된 펌웨어 로그를 보유하고 있는지 확인합니다.

구성 미세 조정

Wi-Fi 프레임워크는 기기가 네트워크와 연결되거나 연결 해제되는 신호 강도를 제어하기 위해 entryexit RSSI 임계값을 사용합니다.

entryexit 임계값은 다음 이름이 포함된 오버로드 가능한 구성 매개변수로 저장됩니다(여기서 bad 매개변수는 exit RSSI 임계값을 나타냄).

  • 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

매개변수는 <root>/frameworks/base/core/res/res/values/config.xml에 저장되며 오버레이 파일 <root>/device/<dev_dir>/overlay/frameworks/base/core/res/res/values/config.xml을 사용하여 오버로드될 수 있습니다.

adb 명령어를 사용해 기기를 구성하여 새 임계값을 테스트할 수 있습니다. (또는 새 오버레이를 사용하여 빌드를 생성할 수도 있습니다. 하지만 adb 명령어를 사용하면 테스트 처리 시간이 단축됩니다.)

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

예를 들어 다음 명령어는 새 임계값 매개변수를 구성합니다(이 샘플 명령어에 사용된 값은 AOSP 코드베이스에서 구성된 기본값임).

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

내장 매개변수 값을 복원(즉, 재정의를 삭제)하려면 다음 adb 명령어를 사용합니다.

% adb shell settings delete global wifi_score_params