測試、偵錯和調整 Wi-Fi

本頁說明如何使用 Android 開放原始碼計畫提供的工具,測試、偵錯及調整 Wi-Fi 實作項目。

測試

為測試 Wi-Fi 架構,Android 開放原始碼計畫提供單元測試、整合測試 (ACTS) 和 CTS 測試。

單元測試

Android 開放原始碼計畫包含預設 Wi-Fi 架構的功能和單元測試:Wi-Fi Manager (應用程式端程式碼) 和 Wi-Fi 服務。

Wi-Fi 管理員測試:

  • 位於packages/modules/Wifi/framework/tests/
  • 請使用下列殼層執行檔執行 (讀取檔案,瞭解其他執行選項):

    atest FrameworksWifiApiTests
    

Wi-Fi 服務測試:

  • 位於packages/modules/Wifi/service/tests/wifitests/
  • 請使用下列殼層執行檔執行 (讀取檔案,瞭解其他執行選項):

    atest FrameworksWifiTests
    

Android 通訊測試套件

Android 通訊端測試套件 (ACTS) 會自動測試連線堆疊 (例如 Wi-Fi、藍牙和行動服務)。測試工具需要使用 ADB 和 Python,您可以在 tools/test/connectivity/acts 中找到這項工具。

您可以在 tools/test/connectivity/acts_tests/tests/google/wifi 中找到 Wi-FI 的 ACTS 測試,測試設定範例位於同一個目錄:example_config.json

CTS 測試

Compatibility Test Suite (CTS) 包含 Wi-Fi 架構的測試。這些指令碼位於 cts/tests/tests/net/src/android/net/wifi。如要進行 Wi-Fi CTS 測試,您必須在測試執行時,將受測裝置與存取點建立關聯。

強化版記錄選項,用於偵錯

Android 9 改善了 Wi-Fi 記錄功能,方便您對 Wi-Fi 問題進行偵錯。在 Android 9 以上版本中,驅動程式/韌體環緩衝區可隨時開啟。系統僅會在使用者偵錯和工程版本偵測到錯誤狀態時,自動觸發錯誤報告。使用 Wi-Fi HAL (AIDL 或 HIDL 1.2 以上版本) 時,韌體偵錯緩衝區會儲存在 HAL 中,而非儲存處理處理序間通訊 (IPC) 費用的架構。

導入作業

如需參考實作,請參閱供應商 HAL 中的預設實作

只要將資源 config_wifi_enable_wifi_firmware_debugging 設為 false,即可停用韌體記錄。

整合測試 (ACTS)

您可以在 /tools/test/connectivity/acts_tests/tests/google/wifi/WifiDiagnosticsTest.py 找到整合測試。

已驗證的韌體傾印會保留在適當的 Flash 目錄中,以便用於使用者偵錯版本。建立錯誤報告時,Dumpstate 會從這個目錄收集資料。

手動測試

執行這項手動測試,確認系統正在刪除 tombstone 目錄中的舊檔案。

  1. 開啟 Wi-Fi。
  2. 連線至網路。
  3. 產生錯誤報告
  4. 檢查錯誤報告 ZIP 檔案,確認封存的韌體記錄是否存在。記錄位於下列位置:

    • AIDL HAL:主要錯誤報告檔案的 dumpsys 部分
    • HIDL HAL:/lshal-debug/android.hardware.wifi@1.x::IWifi_default.txt

設定調整

為了控管裝置與網路建立關聯或解除關聯的訊號強度,Wi-Fi 架構會使用「entry」和「exit」 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>

舉例來說,下列指令會設定新的門檻參數 (此範例指令中使用的值即為 Android 開放原始碼計畫程式碼集中設定的預設值):

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