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 低延遲模式功能位於android.hardware.wifi@1.3中。要支持此功能,請在IWifiChip.hal中提供以下功能的實現:

  • 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 系統必須保持喚醒狀態並準備好以最小延遲發送或接收數據包。

禁用該功能

要關閉低延遲模式功能,請更新getCapabilities_1_3()的底層代碼,使capabilities & SET_LATENCY_MODE = 0 ,其中SET_LATENCY_MODEIWifiChip.hal中定義。禁用此功能時,框架僅在低延遲模式處於活動狀態時禁用省電。

驗證

要測試啟用後的低延遲模式是否有效,請運行以下自動測試和手動 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延遲值會降低。

其他測試

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