Chế độ độ trễ thấp của Wi-Fi

Android 10 mở rộng API khoá Wi-Fi để cho phép các ứng dụng nhạy cảm về độ trễ định cấu hình Wi-Fi ở chế độ độ trễ thấp. Chế độ độ trễ thấp sẽ bắt đầu khi đáp ứng tất cả các điều kiện sau:

  • Wi-Fi đang bật và thiết bị có quyền truy cập Internet.
  • Ứng dụng đã tạo và mua khoá Wi-Fi, đồng thời đang chạy ở nền trước.
  • Màn hình đang bật.

Để hỗ trợ chế độ độ trễ thấp trên thiết bị, nhà sản xuất thiết bị phải cập nhật trình điều khiển WLAN và HAL của nhà cung cấp. Ở chế độ độ trễ thấp, khung tiết kiệm pin (còn gọi là trạng thái ngủ trong tiêu chuẩn IEEE 802.11) bị tắt một cách rõ ràng. Bạn có thể tối ưu hoá các tham số quét và chuyển vùng trong trình điều khiển và lớp firmware để giảm thêm độ trễ Wi-Fi. Các biện pháp tối ưu hoá chính xác là dành riêng cho quá trình triển khai.

Android có chế độ khoá Wi-Fi hiệu suất cao (được ra mắt trong API cấp 12) tách biệt với chế độ độ trễ thấp.

Triển khai

Để hỗ trợ tính năng chế độ độ trễ thấp của Wi-Fi, hãy cung cấp các phương thức triển khai cho các hàm IWifiChip sau.

Trong AIDL HAL:

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

Trong HIDL HAL (1.3 trở lên):

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

Bạn có thể tìm thấy cách triển khai tham chiếu trong wifi_legacy_hal.cpp với các hàm sau:

  • 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)

Ở chế độ độ trễ thấp, tính năng tiết kiệm pin bị tắt một cách rõ ràng bởi WifiLockManager trong khung Android. Để hỗ trợ tính năng này, trình điều khiển WLAN phải hỗ trợ lệnh NL80211, NL80211_CMD_SET_POWER_SAVE, để bật và tắt chế độ tiết kiệm pin. Khi chế độ tiết kiệm pin Wi-Fi bị tắt, hệ thống Wi-Fi phải ở trạng thái thức và sẵn sàng gửi hoặc nhận gói với độ trễ tối thiểu.

Tắt tính năng này

Để tắt tính năng chế độ độ trễ thấp, hãy cập nhật mã cơ bản của getFeatureSet() cho AIDL HAL hoặc getCapabilities_1_3() cho HIDL HAL, chẳng hạn như capabilities & SET_LATENCY_MODE = 0, trong đó SET_LATENCY_MODE được xác định trong định nghĩa IWifiChip AIDL hoặc HIDL. Khi tính năng này bị tắt, khung sẽ chỉ tắt chế độ tiết kiệm pin khi chế độ độ trễ thấp đang hoạt động.

Xác nhận kết quả

Để kiểm tra xem chế độ độ trễ thấp có hoạt động khi được bật hay không, hãy chạy các bài kiểm thử tự động sau và kiểm thử độ trễ ping theo cách thủ công.

Kiểm thử tự động

Chạy các bài kiểm thử VTS và CTS sau:

Kiểm thử theo cách thủ công

Thiết bị và môi trường thử nghiệm cần có

Để kiểm thử thủ công, bạn cần thiết lập như sau:

  • Điểm truy cập Wi-Fi (AP)
  • Điện thoại đang được kiểm thử (DUT) và máy tính kiểm thử

    • DUT phải được kết nối với điểm truy cập qua Wi-Fi.
    • Máy tính thử nghiệm phải được kết nối với điểm truy cập qua Wi-Fi hoặc Ethernet.
    • Máy tính kiểm thử phải được kết nối với DUT qua USB.
  1. Bật chế độ độ trễ thấp.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Đảm bảo máy tính được kết nối với điện thoại qua ADB. Từ shell ADB, ping cổng vào liên tục trong 3 giờ với mỗi lần ngắt quãng 1 giây.

  3. Lưu kết quả kiểm thử dưới dạng tệp văn bản và sử dụng bảng tính hoặc tập lệnh Python để tạo biểu đồ của kết quả kiểm thử độ trễ ping.

  4. Lặp lại các bước từ 1 đến 3 khi tắt chế độ độ trễ.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. So sánh kết quả kiểm thử để đảm bảo rằng giá trị độ trễ ping trung bình giảm khi bật chế độ độ trễ thấp.

  1. Bật chế độ độ trễ thấp.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Từ dòng lệnh của máy tính kiểm thử, hãy ping địa chỉ IP của điện thoại liên tục trong 3 giờ với khoảng thời gian 1 giây.

  3. Lưu kết quả kiểm thử vào một tệp văn bản và sử dụng bảng tính hoặc tập lệnh Python để tạo biểu đồ về kết quả kiểm thử độ trễ ping.

  4. Lặp lại các bước từ 1 đến 3 khi tắt chế độ độ trễ.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. So sánh kết quả kiểm thử để đảm bảo rằng giá trị độ trễ ping trung bình giảm khi bật chế độ độ trễ thấp.

Các cảnh báo thử nghiệm khác

Lặp lại các bài kiểm thử trên trong nhiều môi trường. Ví dụ: ở nhà hoặc ở văn phòng.