Wi-Fi 低延遲模式

Android 10 擴充了 Wi-Fi 鎖定 API,可讓延遲時間敏感型應用程式將 Wi-Fi 設定為低延遲模式。符合下列所有條件時,系統就會啟動低延遲模式:

  • Wi-Fi 已啟用,且裝置可連上網際網路。
  • 應用程式已建立並取得 Wi-Fi 鎖定,且正在前景執行。
  • 螢幕已開啟。

如要在裝置上支援低延遲模式,裝置製造商必須更新 WLAN 驅動程式和供應商 HAL。在低延遲模式下,架構會明確停用省電功能 (也稱為 IEEE 802.11 標準中的打盹狀態)。驅動程式和韌體層中的掃描和漫遊參數可以最佳化,進一步縮短 Wi-Fi 延遲時間。確切的最佳化作業取決於實作方式。

Android 具有高效能 Wi-Fi 鎖定模式 (API 級別 12 中導入),與低延遲模式不同。

實作

如要支援 Wi-Fi 低延遲模式功能,請為下列 IWifiChip 函式提供實作項目。

在 AIDL HAL 中:

  • int getFeatureSet()
  • void setLatencyMode(in LatencyMode mode)

在 HIDL HAL (1.3 以上版本) 中:

  • getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)
  • setLatencyMode(LatencyMode mode) generates (WifiStatus status)

您可以在 wifi_legacy_hal.cpp 中找到參考實作項目,其中包含下列函式:

  • wifi_error wifi_get_supported_feature_set(wifi_interface_handle iface, feature_set *set)
  • wifi_error wifi_set_latency_mode(wifi_interface_handle handle, wifi_latency_mode mode)

在低延遲模式下,Android 架構會明確停用省電功能。WifiLockManager如要支援這項功能,WLAN 驅動程式必須支援 NL80211 指令 NL80211_CMD_SET_POWER_SAVE,才能啟用及停用省電模式。如果停用 Wi-Fi 省電模式,Wi-Fi 系統必須保持喚醒狀態,並準備好以最短延遲時間傳送或接收封包。

停用這項功能

如要關閉低延遲模式功能,請更新 AIDL HAL 的 getFeatureSet() 底層程式碼 (getFeatureSet()) 或 HIDL HAL 的 getCapabilities_1_3() 底層程式碼,使 capabilities & SET_LATENCY_MODE = 0,其中 SET_LATENCY_MODE 定義於 IWifiChip AIDL 或 HIDL 定義中。停用這項功能後,架構只會在低延遲模式啟用時停用省電功能。

驗證

如要測試啟用低延遲模式後是否正常運作,請執行下列自動測試和手動 Ping 延遲測試。

自動化測試

執行下列 VTS 和 CTS 測試:

手動測試

必要測試設備和環境

如要進行手動測試,請完成下列設定:

  • Wi-Fi 存取點 (AP)
  • 受測裝置 (DUT) 手機和測試電腦

    • DUT 必須透過 Wi-Fi 連線至存取點。
    • 測試電腦必須透過 Wi-Fi 或乙太網路連線至存取點。
    • 測試電腦必須透過 USB 連接至 DUT。
  1. 啟用低延遲模式。

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
  2. 確認電腦已透過 ADB 連接手機。在 ADB 殼層中,以 1 秒間隔持續對閘道執行 Ping 指令 3 小時。

  3. 將測試輸出內容儲存為文字檔,並使用試算表或 Python 指令碼,產生 Ping 延遲測試結果的直方圖。

  4. 停用延遲模式,然後重複步驟 1 到 3。

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
  5. 比較測試結果,確認啟用低延遲模式後,平均 Ping 延遲時間值是否減少。

  1. 啟用低延遲模式。

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
  2. 在測試電腦的指令列中,以 1 秒間隔持續對手機的 IP 位址執行 Ping 指令 3 小時。

  3. 將測試輸出內容儲存為文字檔,並使用試算表或 Python 指令碼,產生 Ping 延遲測試結果的直方圖。

  4. 停用延遲模式,然後重複步驟 1 到 3。

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
  5. 比較測試結果,確認啟用低延遲模式後,平均 Ping 延遲時間值是否減少。

其他測試

在不同環境中重複執行上述測試。例如在家中或辦公室。