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()或 HIDL HAL 的getCapabilities_1_3()的底層代碼,以使capabilities & SET_LATENCY_MODE = 0 ,其中SET_LATENCY_MODE在IWifiChipNCY_MODE = 0 ,其中SET_LATENCY_MODEIWifiChip或 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 shell 中,以 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 秒的間隔連續 ping 電話的 IP 位址 3 小時。

  3. 將測試輸出儲存在文字檔案中,並使用電子表格或 Python 腳本產生 ping 延遲測試結果的直方圖。

  4. 在停用延遲模式的情況下重複步驟 1 到 3。

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. 比較測試結果,確保開啟低延遲模式後,平均 ping 延遲值會降低。

其他測試

在不同環境下重複上述測試。例如,在家裡或在辦公室。