Mode latensi rendah Wi-Fi

Android 10 memperluas API penguncian Wi-Fi untuk memungkinkan aplikasi yang sensitif terhadap latensi mengonfigurasi Wi-Fi ke mode latensi rendah. Mode latensi rendah dimulai saat semua kondisi berikut terpenuhi:

  • Wi-Fi diaktifkan dan perangkat memiliki akses internet.
  • Aplikasi telah membuat dan memperoleh kunci Wi-Fi, dan berjalan di latar depan.
  • Layar aktif.

Untuk mendukung mode latensi rendah di perangkat, produsen perangkat harus mengupdate driver WLAN dan HAL vendor. Dalam mode latensi rendah, penghematan daya (juga dikenal sebagai status tidur dalam standar IEEE 802.11) dinonaktifkan secara eksplisit oleh framework. Parameter pemindaian dan roaming di lapisan driver dan firmware dapat dioptimalkan untuk lebih mengurangi latensi Wi-Fi. Pengoptimalan yang tepat bersifat khusus implementasi.

Android memiliki mode penguncian Wi-Fi berperforma tinggi (diperkenalkan di API level 12) yang terpisah dari mode latensi rendah.

Implementasi

Untuk mendukung fitur mode latensi rendah Wi-Fi, berikan implementasi untuk fungsi IWifiChip berikut.

Di AIDL HAL:

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

Di HIDL HAL (1.3 atau yang lebih baru):

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

Implementasi referensi dapat ditemukan di wifi_legacy_hal.cpp dengan fungsi berikut:

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

Dalam mode latensi rendah, penghematan daya dinonaktifkan secara eksplisit oleh WifiLockManager dalam framework Android. Untuk mendukung hal ini, driver WLAN harus mendukung perintah NL80211, NL80211_CMD_SET_POWER_SAVE, untuk mengaktifkan dan menonaktifkan penghematan daya. Jika penyimpanan daya Wi-Fi dinonaktifkan, sistem Wi-Fi harus tetap dalam status aktif dan siap untuk mengirim atau menerima paket dengan penundaan minimum.

Nonaktifkan fitur

Untuk menonaktifkan fitur mode latensi rendah, perbarui kode dasar getFeatureSet() untuk AIDL HAL atau getCapabilities_1_3() untuk HIDL HAL, sehingga capabilities & SET_LATENCY_MODE = 0, dengan SET_LATENCY_MODE ditentukan dalam definisi IWifiChip AIDL atau HIDL. Jika fitur ini dinonaktifkan, framework akan menonaktifkan penghematan daya hanya saat mode latensi rendah aktif.

Validasi

Untuk menguji apakah mode latensi rendah berfungsi saat diaktifkan, jalankan pengujian otomatis berikut dan pengujian latensi ping manual.

Pengujian otomatis

Jalankan uji VTS dan CTS berikut:

Pengujian manual

Peralatan dan lingkungan pengujian yang diperlukan

Untuk pengujian manual, penyiapan berikut diperlukan:

  • Titik akses (AP) Wi-Fi
  • Ponsel perangkat yang sedang diuji (DUT) dan komputer pengujian

    • DUT harus terhubung ke titik akses melalui Wi-Fi.
    • Komputer pengujian harus terhubung ke titik akses melalui Wi-Fi atau Ethernet.
    • Komputer pengujian harus terhubung ke DUT melalui USB.
  1. Aktifkan mode latensi rendah.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Pastikan komputer Anda terhubung dengan ponsel melalui ADB. Dari shell ADB, lakukan ping ke gateway secara terus-menerus selama 3 jam pada interval 1 detik.

  3. Simpan output pengujian dalam file teks dan gunakan spreadsheet atau skrip Python untuk membuat histogram hasil pengujian latensi ping.

  4. Ulangi langkah 1 hingga 3 dengan mode latensi dinonaktifkan.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Bandingkan hasil pengujian untuk memastikan bahwa nilai latensi ping rata-rata dikurangi saat mode latensi rendah diaktifkan.

  1. Aktifkan mode latensi rendah.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Dari command line komputer pengujian, lakukan ping ke alamat IP ponsel secara terus-menerus selama 3 jam dengan interval 1 detik.

  3. Simpan output pengujian dalam file teks dan gunakan spreadsheet atau skrip Python untuk membuat histogram hasil pengujian latensi ping.

  4. Ulangi langkah 1 hingga 3 dengan mode latensi dinonaktifkan.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Bandingkan hasil pengujian untuk memastikan bahwa nilai latensi ping rata-rata dikurangi saat mode latensi rendah diaktifkan.

Pengujian lainnya

Ulangi pengujian di atas di lingkungan yang berbeda. Misalnya, di rumah atau di kantor.