Chế độ độ trễ thấp trên Wi-Fi

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

  • Wi-Fi được bật và thiết bị có quyền truy cập Internet.
  • Ứng dụng đã tạo và có được 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, tính năng tiết kiệm pin (còn gọi là trạng thái ngủ gật trong tiêu chuẩn IEEE 802.11) sẽ bị tắt rõ ràng theo khung. Bạn có thể tối ưu hoá các tham số quét và chuyển vùng trong các lớp trình điều khiển và phần sụn để giảm thêm độ trễ của Wi-Fi. Các chế độ tối ưu hoá chính xác là dành riêng cho việc triển khai.

Android có chế độ khoá Wi-Fi hiệu suất cao (ra mắt trong cấp độ API 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 cách 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 sẽ bị WifiLockManager tắt rõ ràng 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 tính năng tiết kiệm pin. Khi tính năng tiết kiệm pin của 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, sao cho capabilities & SET_LATENCY_MODE = 0, trong đó SET_LATENCY_MODE được xác định trong định nghĩa AIDL hoặc HIDL IWifiChip. Khi tính năng này bị tắt, khung sẽ chỉ tắt tính năng tiết kiệm pin khi chế độ độ trễ thấp đang hoạt động.

Xác nhận kết quả

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

Kiểm thử tự động

Thực hiện kiểm thử tự động bằng cách chạy các bài kiểm thử Bộ kiểm thử nhà cung cấp (VTS) và Bộ kiểm tra tính tương thích (CTS) sau:

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

Thiết bị và môi trường kiểm thử bắt buộc

Để kiểm thử theo cách 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 thiết bị đang 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 kiểm thử 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ủa bạn được kết nối với điện thoại thông qua Cầu gỡ lỗi Android (ADB). Trong shell ADB, hãy liên tục ping cổng 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 rồi dùng bảng tính hoặc tập lệnh Python để tạo biểu đồ tần suất 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ử để xác minh 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 liên tục ping địa chỉ IP của điện thoại 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 rồi dùng bảng tính hoặc tập lệnh Python để tạo biểu đồ tần suất 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ử để xác minh 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ước đó trong các môi trường khác nhau. Ví dụ: ở nhà hoặc tại văn phòng.