Konkurensi Wi-Fi STA/STA

Android 12 memperkenalkan konkurensi Wi-Fi STA/STA, yang memungkinkan perangkat untuk terhubung ke dua jaringan Wi-Fi secara bersamaan. Fitur opsional ini mengaktifkan fungsi berikut.

  • Buat sebelum jeda: Perangkat membuat koneksi ke jaringan Wi-Fi baru sebelum memutuskan koneksi yang ada. Hal ini menghasilkan transisi yang lebih halus saat beralih antarjaringan Wi-Fi
  • Koneksi khusus lokal dan internet serentak: Perangkat yang terhubung ke jaringan khusus-lokal tanpa mengganggu menyediakan koneksi internet utama.
  • Koneksi internet dan terbatas serentak: Perangkat terhubung ke jaringan terbatas (hanya tersedia untuk aplikasi dengan hak istimewa tertentu) tanpa mengganggu koneksi penyedia internet utama perangkat.
  • (Android 13 atau yang lebih tinggi) Beberapa serentak jaringan dengan koneksi internet: Perangkat terhubung ke dua jaringan yang keduanya tidak dibatasi dan tersedia untuk semua aplikasi, serta menyediakan konektivitas internet.

Halaman ini menjelaskan perilaku perangkat saat fitur ini diaktifkan dan detail implementasi untuk produsen dan vendor perangkat.

Implementasi

Perangkat harus mendukung hal berikut agar dapat menerapkan Wi-Fi STA/STA konkurensi:

  • Chip atau firmware Wi-Fi harus mendukung dua STA serentak koneksi jarak jauh. Firmware harus mendukung semua kombinasi saluran dan band untuk kedua koneksi. Untuk menghindari masalah performa, sebaiknya gunakan menggunakan {i>chip<i} Wi-Fi 2x2 + 2x2 DBS.

  • Perangkat harus mendukung API berikut di dalam AIDL atau HIDL implementasi IWifiChip.

    • IWifiChip.setMultiStaPrimaryConnection(String ifName)
    • IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
  • Kombinasi antarmuka Wi-Fi HAL harus memiliki dua antarmuka STA serentak diekspos menggunakan format spesifikasi seperti [{STA} <= 2, ...]. Sebagai informasi selengkapnya, lihat Konkurensi multi-antarmuka Wi-Fi.

Jika prasyarat tersebut terpenuhi, terapkan konkurensi Wi-Fi STA/STA dengan melakukan hal berikut:

  1. Mengaktifkan satu atau beberapa fungsi satu per satu menggunakan overlay resource runtime (dinonaktifkan oleh default).

    • Buat sebelum jeda: config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Koneksi khusus lokal dan internet serentak: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Koneksi internet dan dibatasi serentak: config_wifiMultiStaRestrictedConcurrencyEnabled
    • Beberapa jaringan serentak dengan koneksi internet: config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. Validasi setiap penerapan seperti yang dijelaskan di bagiannya masing-masing.

Untuk lebih mendukung konkurensi Wi-Fi STA/STA, sebaiknya sesuaikan OEM framework dan aplikasi menggunakan metode NetworkCallback#onCapabilitiesChanged() bukan WifiManager#getConnectionInfo(), yang hanya menampilkan WifiInfo untuk satu jaringan dan tidak digunakan lagi di Android 12. Sebagai informasi selengkapnya, lihat Wi-Fi Network Request API untuk konektivitas peer-to-peer.

Buat sebelum jeda

Fungsi make-before-break memungkinkan perangkat terhubung ke Wi-Fi baru jaringan sambil mempertahankan koneksi jaringan Wi-Fi yang ada, hanya memutuskan sambungan dari jaringan lama ketika berhasil tersambung ke jaringan baru Jaringan Wi-Fi dan memiliki akses internet.

Kasus penggunaan make-before-break mengatasi masalah-masalah berikut dalam Android 11 atau yang lebih lama, yang koneksi perangkat harus terputus dari jaringan Wi-Fi yang ada sebelum terhubung ke jaringan baru (istirahat sebelum membuat).

  • Saat tersambung ke jaringan baru, perangkat mungkin menemukan bahwa ia memiliki {i>password<i} Wi-Fi yang disimpan salah atau jaringan baru tidak memiliki akses internet. Tindakan ini memaksa perangkat untuk beralih kembali ke jaringan, yang menyebabkan banyak waktu tanpa konektivitas Wi-Fi.

  • Jaringan lama terputus tiba-tiba, yang berarti bahwa semua soket tertutup. Aplikasi sering tidak bereaksi dengan baik terhadap kehilangan konektivitas dan ini dapat menyebabkan pengguna mengalami beberapa detik tanpa konektivitas internet sampai terhubung sepenuhnya.

  • Jaringan {i>default<i} berubah dua kali, dari jaringan Wi-Fi lama ke seluler, kemudian dari seluler ke jaringan Wi-Fi baru. Hal ini menyebabkan aplikasi bereaksi terhadap jaringan berubah dua kali. Perangkat juga harus menghabiskan menggunakan data seluler.

Alur buat sebelum jeda hanya digunakan untuk jaringan Wi-Fi otomatis {i>switch<i} yang dimulai oleh OS. Pengalihan jaringan yang dimulai pengguna menggunakan alur jeda sebelum-membuat, di mana jaringan sebelumnya terputus sepenuhnya sebelum jaringan baru terhubung. Dalam kasus tertentu, alur jeda sebelum-maket digunakan bahkan dalam pengalihan otomatis yang dimulai oleh Misalnya, ketika beralih di antara dua jaringan yang keduanya dikonfigurasi untuk menggunakan alamat MAC pabrik.

Aplikasi dapat memeriksa apakah kasus penggunaan ini didukung pada perangkat menggunakan API WifiManager#isMakeBeforeBreakWifiSwitchingSupported().

Validasi pembuatan sebelum jeda

Untuk memvalidasi implementasi Anda, picu pengalihan jaringan Wi-Fi otomatis (dengan memastikan jaringan yang memiliki kekuatan sinyal yang lebih kuat dari jaringan yang terhubung tersedia) dan verifikasi bahwa perangkat mempertahankan koneksi yang ada saat terhubung ke jaringan baru. Untuk melihat status kedua antarmuka Wi-Fi dan memverifikasi bahwa keduanya terhubung, gunakan perintah berikut.

adb shell wpa_cli -i wlan0 status ; echo ; adb shell wpa_cli -i wlan1 status

Jika jaringan baru tidak memiliki konektivitas, perangkat mencoba untuk terhubung ke jaringan, sambil tetap koneksi dengan jaringan yang ada, dan membatalkan upaya ketika mendeteksi jaringan baru ini tidak memiliki internet. Perangkat kemudian melanjutkan menggunakan koneksi yang ada sebagai jaringan Wi-Fi utama.

Koneksi khusus lokal dan internet serentak

Fungsi koneksi khusus lokal dan internet serentak memungkinkan perangkat untuk terhubung ke koneksi khusus lokal, seperti koneksi ke perangkat IoT, bersamaan dengan jaringan penyedia internet utama. Fungsi ini meningkatkan pengalaman pengguna saat terhubung langsung ke perangkat IoT, seperti kamera, yang dapat dilakukan melalui API WifiNetworkSpecifier yang ditambahkan di Android 10.

Di Android 11 dan yang lebih rendah, koneksi perangkat terputus dari jaringan Wi-Fi utama saat terhubung ke perangkat IoT, yang menyebabkan hilangnya konektivitas internet (kecuali jika perangkat memiliki jenis {i>transport<i} lain yang tersedia, seperti data seluler).

Aplikasi dapat memeriksa apakah fungsi ini didukung pada perangkat menggunakan API WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported().

Untuk mengetahui informasi selengkapnya tentang perubahan pada paket khusus lokal dan internet serentak di Android 12. Lihat Wi-Fi Network Request API untuk konektivitas peer-to-peer.

Validasi koneksi internet dan khusus lokal

Untuk memvalidasi fungsi ini, gunakan Uji CTS MultiStaConcurrencyWifiNetworkSpecifierTest.

Koneksi internet dan dibatasi serentak

Fungsi koneksi terbatas dan internet serentak memungkinkan perangkat secara serentak terhubung ke jaringan Wi-Fi utama untuk pengguna dan jaringan Wi-Fi terbatas yang hanya tersedia untuk aplikasi tertentu.

Aplikasi dapat memeriksa apakah fungsi ini didukung pada perangkat menggunakan API WifiManager#isStaConcurrencyForRestrictedConnectionsSupported().

Agar perangkat dapat terhubung ke jaringan Wi-Fi terbatas sekunder, ikuti langkah-langkah berikut:

  1. Tambah Saran jaringan Wi-Fi dengan setOemPaid atau setOemPrivate tetapkan ke true.

  2. Di ConnectivityManager, ajukan NetworkRequest dengan kemampuan:

Saat perangkat mendeteksi hasil pemindaian dengan jaringan yang cocok dengan OEM berbayar atau Saran pribadi OEM, sistem ini akan otomatis terhubung sebagai jaringan sekunder.

Validasi koneksi internet dan koneksi terbatas serentak

Untuk memvalidasi fungsi ini, gunakan Uji CTS MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest.

Beberapa jaringan serentak dengan koneksi internet

Tersedia untuk Android 13 atau yang lebih baru, paket beberapa jaringan dengan koneksi internet memungkinkan perangkat secara serentak terhubung ke dua jaringan (AP) yang keduanya tidak dibatasi (semua aplikasi memiliki akses) dan menyediakan akses internet.

Aplikasi dapat memeriksa apakah fitur ini didukung pada perangkat menggunakan WifiManager#isStaConcurrencyForMultiInternetSupported() .

Jika fitur ini didukung, aplikasi dengan hak istimewa dapat mengaktifkan fitur tersebut menggunakan Metode WifiManager#setStaConcurrencyForMultiInternetMode(int mode). Tujuan memiliki mode berikut:

Untuk mengkueri mode fitur yang saat ini aktif, gunakan WifiManager#getStaConcurrencyForMultiInternetMode() .

Saat fitur ini diaktifkan, gunakan langkah-langkah berikut untuk meminta permintaan jaringan Wi-Fi yang menyediakan internet.

  1. Buat penentu jaringan Wi-Fi menggunakan WifiNetworkSpecifier.Builder Pilih pita untuk penentu menggunakan setBand() . Jangan menetapkan SSID atau BSSID sebagai jaringan tambahan untuk band yang ditentukan dipilih oleh kerangka kerja Wi-Fi.

  2. Menggunakan ConnectivityManager, buat NetworkRequest dengan NET_CAPABILITY_INTERNET kemampuan IT mereka.

  3. Tambahkan penentu ke permintaan jaringan bersama dengan NetworkCallback instance untuk melacak status permintaan, dan mengeluarkan permintaan untuk ConnectivityManager. Jika jaringan tersimpan dengan pita yang diminta adalah yang tersedia dalam hasil pemindaian, dan koneksi ke jaringan berhasil, NetworkCallback.onAvailable() dipanggil pada objek callback.

Memvalidasi beberapa jaringan serentak dengan koneksi internet

Untuk memvalidasi fungsi ini, gunakan uji CTS berikut:

  • CTS: MultiStaConcurrencyMultiInternetWifiNetworkTest

Panduan chip Wi-Fi vendor

Untuk vendor chip Wi-Fi, gunakan panduan berikut untuk mendukung Konkurensi Wi-Fi STA/STA.

Chip Wi-Fi harus mendukung koneksi STA ganda secara serentak. Ini berarti mendukung hal berikut:

  • Setiap antarmuka STA memiliki MAC unik yang dapat diprogram oleh kerangka kerja.
  • Antarmuka STA sekunder dapat dibuat dan dihancurkan secara dinamis.
  • Setiap STA dapat dihubungkan ke SSID yang berbeda (baik di dalam atau band yang berbeda).
  • Setiap STA dapat dihubungkan ke SSID yang sama (baik dalam jaringan atau band yang berbeda). Kedua STA tidak boleh terhubung ke BSSID yang sama.

Fitur penting harus beroperasi per antarmuka dan harus yang tersedia di antarmuka utama. Berikut adalah daftar tugas-tugas penting fitur:

  • Roaming harus didukung setidaknya pada antarmuka utama (disetel menggunakan IWifiChip.setMultiStaPrimaryConnection()). Jika roaming didukung di kedua antarmuka, keputusan pada satu koneksi tidak boleh bertentangan dengan koneksi serentak kedua. Misalnya, satu antarmuka tidak boleh berkeliaran ke BSSID koneksi lainnya.

  • APF (dan pengalihan lainnya seperti ARP dan NS) harus didukung setidaknya antarmuka utama (diatur menggunakan IWifiChip.setMultiStaPrimaryConnection()).

  • Statistik lapisan link harus beroperasi per antarmuka.

Berikut ini adalah penerapan chip Wi-Fi yang direkomendasikan untuk berbagai skenario konkurensi:

  • Chip Wi-Fi harus mengizinkan framework untuk memanggil IWifiChip.setMultiStaUseCase() dengan salah satu konstanta berikut untuk tetapkan fungsi saat ini:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY: Menentukan atribut Fungsi Make-Before-Break. Kualitas koneksi utama harus diprioritaskan daripada koneksi sekunder.
    • DUAL_STA_NON_TRANSIENT_UNBIASED: Menentukan atribut koneksi khusus lokal dan internet serentak atau koneksi serentak fungsi terbatas dan koneksi internet. Kualitas keduanya koneksi harus diprioritaskan dengan setara.
  • Karena STA ganda yang bersamaan dapat menyebabkan mode MCC, SCC, dan DBS implementasi vendor harus memilih radio terbaik konfigurasi saat framework memanggil IWifiChip.setMultiStaUseCase() ke menunjukkan fungsinya. Berikut ini adalah pedoman umum:

    • DBS 2x2 + 2x2 lebih disukai jika tersedia.
    • Hindari DBS 1x1 + 1x1 jika memungkinkan karena dampak yang berlebihan pada kualitas koneksi. Sebaliknya, pilih MCC.
    • Siklus tugas MCC harus dapat dikonfigurasi oleh {i>driver<i} atau firmware untuk berbagai fungsi. Framework tidak menetapkan siklus tugas MCC secara langsung, tetapi kueri informasi ini menggunakan StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent.
    • Jika menggunakan MCC, sebaiknya gunakan siklus tugas berikut antara dan koneksi sekunder:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY: 70% primer, 30% sekunder.
      • DUAL_STA_NON_TRANSIENT_UNBIASED: 50% primer, 50% sekunder.