Konkurensi STA/STA Wi-Fi

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

  • Make-before-break : Perangkat membuat koneksi ke jaringan Wi-Fi baru sebelum memutus koneksi yang ada. Hal ini menghasilkan transisi yang lebih mulus saat beralih antar jaringan Wi-Fi
  • Koneksi lokal dan internet secara bersamaan : Perangkat terhubung ke jaringan lokal saja tanpa mengganggu koneksi penyedia internet utama perangkat.
  • Koneksi terbatas dan internet secara bersamaan : Perangkat terhubung ke jaringan terbatas (hanya tersedia untuk aplikasi dengan hak istimewa tertentu) tanpa mengganggu koneksi penyedia internet utama perangkat.
  • (Android 13 atau lebih tinggi) Beberapa jaringan secara bersamaan dengan koneksi internet : Perangkat terhubung ke dua jaringan yang keduanya tidak dibatasi dan tersedia untuk semua aplikasi, dan menyediakan konektivitas internet.

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

Penerapan

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

  • Chip atau firmware Wi-Fi harus mendukung dua koneksi STA secara bersamaan. Firmware harus mendukung semua kombinasi saluran dan pita untuk kedua koneksi. Untuk menghindari masalah kinerja, sebaiknya gunakan chip Wi-Fi berkemampuan 2x2+2x2 DBS.

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

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

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

  1. Aktifkan satu atau beberapa fungsi satu per satu menggunakan hamparan sumber daya runtime (dinonaktifkan secara default).

    • Make-before-break : config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Koneksi lokal dan internet secara bersamaan : config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Koneksi internet dan pembatasan bersamaan : config_wifiMultiStaRestrictedConcurrencyEnabled
    • Beberapa jaringan bersamaan dengan koneksi internet : config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. Validasi setiap implementasi seperti yang dijelaskan pada masing-masing bagian di bawah ini.

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

Make-for-break

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

Kasus penggunaan make-before-break mengatasi masalah berikut di Android 11 atau lebih rendah, yang mana perangkat harus memutuskan sambungan dari jaringan Wi-Fi yang ada sebelum menyambung ke jaringan baru (break-before-make).

  • Saat menyambung ke jaringan baru, perangkat mungkin menemukan bahwa kata sandi Wi-Fi yang disimpan salah atau jaringan baru tidak memiliki akses internet. Hal ini memaksa perangkat untuk beralih kembali ke jaringan lama, sehingga memerlukan banyak waktu tanpa konektivitas Wi-Fi.

  • Jaringan lama terputus secara tiba-tiba, yang berarti semua soket ditutup. Aplikasi sering kali tidak bereaksi dengan baik terhadap hilangnya konektivitas secara tiba-tiba dan hal ini dapat menyebabkan pengguna mengalami beberapa detik tanpa konektivitas internet hingga koneksi baru benar-benar terjalin.

  • Jaringan default berubah dua kali, dari jaringan Wi-Fi lama ke seluler, lalu dari seluler ke jaringan Wi-Fi baru. Hal ini menyebabkan aplikasi bereaksi terhadap perubahan jaringan dua kali. Perangkat juga harus menghabiskan sedikit waktu menggunakan data seluler.

Aliran make-before-break hanya digunakan untuk peralihan jaringan Wi-Fi otomatis yang dimulai oleh OS. Sakelar jaringan yang dimulai oleh pengguna menggunakan aliran break-before-make yang lama, yang mana jaringan sebelumnya terputus sepenuhnya sebelum jaringan baru tersambung. Dalam kasus tertentu, aliran break-before-make digunakan bahkan dalam peralihan otomatis yang dimulai oleh OS, misalnya, saat berpindah antara dua jaringan, keduanya dikonfigurasi untuk menggunakan alamat MAC pabrik.

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

Memvalidasi make-befor-break

Untuk memvalidasi penerapan Anda, picu peralihan jaringan Wi-Fi otomatis (dengan memastikan tersedianya jaringan dengan kekuatan sinyal yang lebih kuat daripada jaringan yang tersambung saat ini) dan verifikasi bahwa perangkat mempertahankan sambungan yang ada saat tersambung 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 akan mencoba menyambung ke jaringan tersebut, sambil mempertahankan koneksi dengan jaringan yang ada, dan membatalkan upaya tersebut ketika mendeteksi jaringan baru tidak memiliki internet. Perangkat kemudian terus menggunakan koneksi yang ada sebagai jaringan Wi-Fi utama.

Koneksi lokal dan internet secara bersamaan

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

Di Android 11 dan yang lebih rendah, perangkat terputus dari jaringan Wi-Fi utama saat terhubung ke perangkat IoT, sehingga mengakibatkan hilangnya konektivitas internet (kecuali perangkat tersebut memiliki jenis transportasi lain yang tersedia, seperti data seluler).

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

Untuk informasi lebih lanjut tentang perubahan pada fungsi koneksi lokal dan internet secara bersamaan di Android 12, lihat API Permintaan Jaringan Wi-Fi untuk konektivitas peer-to-peer .

Memvalidasi koneksi lokal dan internet saja

Untuk memvalidasi fungsi ini, gunakan tes CTS dan ACTS berikut:

  • CTS: MultiStaConcurrencyWifiNetworkSpecifierTest
  • TINDAKAN: WifiStaConcurrencyNetworkRequestTest

Koneksi terbatas dan internet secara bersamaan

Fungsi koneksi terbatas dan internet secara bersamaan memungkinkan perangkat terhubung secara bersamaan 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() .

Untuk mengaktifkan perangkat agar terhubung ke jaringan Wi-Fi terbatas sekunder, ikuti langkah-langkah berikut:

  1. Tambahkan saran jaringan Wi-Fi dengan setOemPaid atau setOemPrivate disetel ke true.

  2. Di ConnectivityManager , ajukan NetworkRequest dengan kemampuan yang sesuai:

Ketika perangkat mendeteksi hasil pemindaian dengan jaringan yang cocok dengan saran OEM berbayar atau pribadi OEM, perangkat secara otomatis terhubung ke jaringan tersebut sebagai jaringan sekunder.

Memvalidasi koneksi terbatas dan internet secara bersamaan

Untuk memvalidasi fungsi ini, gunakan tes CTS dan ACTS berikut:

  • CTS: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
  • TINDAKAN: WifiStaConcurrencyNetworkRequestTest

Beberapa jaringan secara bersamaan dengan koneksi internet

Tersedia untuk Android 13 atau lebih tinggi, fitur beberapa jaringan bersamaan dengan koneksi internet memungkinkan perangkat terhubung secara bersamaan 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 metode WifiManager#isStaConcurrencyForMultiInternetSupported() .

Jika fitur ini didukung, aplikasi yang memiliki hak istimewa dapat mengaktifkan fitur tersebut menggunakan metode WifiManager#setStaConcurrencyForMultiInternetMode(int mode) . Fitur ini memiliki mode berikut:

Untuk menanyakan mode fitur yang sedang aktif, gunakan metode WifiManager#getStaConcurrencyForMultiInternetMode() .

Saat fitur ini diaktifkan, gunakan langkah-langkah berikut untuk meminta jaringan Wi-Fi penyedia internet tambahan.

  1. Buat penentu jaringan Wi-Fi menggunakan WifiNetworkSpecifier.Builder . Pilih pita untuk penentu menggunakan metode setBand() . Jangan tentukan SSID atau BSSID karena jaringan tambahan untuk pita tertentu dipilih oleh kerangka Wi-Fi.

  2. Menggunakan ConnectivityManager , buat NetworkRequest dengan kemampuan NET_CAPABILITY_INTERNET .

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

Memvalidasi beberapa jaringan secara bersamaan dengan koneksi internet

Untuk memvalidasi fungsi ini, gunakan tes CTS berikut:

  • CTS: MultiStaConcurrencyMultiInternetWifiNetworkTest

Pedoman 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 bersamaan. Ini berarti mendukung hal berikut:

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

Fitur penting harus beroperasi pada basis per antarmuka dan harus tersedia pada antarmuka utama. Berikut ini adalah daftar fitur-fitur penting ini:

  • Roaming harus didukung setidaknya pada antarmuka utama (diatur menggunakan IWifiChip.setMultiStaPrimaryConnection() ). Jika roaming didukung pada kedua antarmuka, keputusan pada satu koneksi tidak boleh berbenturan dengan koneksi kedua secara bersamaan. Misalnya, satu antarmuka tidak boleh menjelajah ke BSSID koneksi lainnya.

  • APF (dan offload lainnya seperti ARP dan NS) harus didukung setidaknya pada antarmuka utama (disetel menggunakan IWifiChip.setMultiStaPrimaryConnection() ).

  • Statistik lapisan tautan harus beroperasi pada basis per antarmuka.

Berikut ini adalah implementasi chip Wi-Fi yang direkomendasikan untuk skenario konkurensi berbeda:

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

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY : Menentukan fungsi Make-Before-Break. Kualitas sambungan primer harus diutamakan daripada sambungan sekunder.
    • DUAL_STA_NON_TRANSIENT_UNBIASED : Menentukan koneksi lokal dan internet secara bersamaan atau fungsi koneksi internet dan terbatas secara bersamaan . Kualitas kedua koneksi harus diutamakan secara setara.
  • Karena STA ganda bersamaan dapat mengarah ke mode operasi MCC, SCC, dan DBS, implementasi vendor harus memilih konfigurasi radio terbaik ketika kerangka kerja memanggil IWifiChip.setMultiStaUseCase() untuk menunjukkan fungsinya. Berikut ini adalah pedoman umum:

    • 2x2+2x2 DBS lebih disukai jika tersedia.
    • Hindari 1x1+1x1 DBS jika memungkinkan karena dampaknya yang berlebihan pada kualitas koneksi. Sebaliknya, pilih PKS.
    • Siklus kerja MCC harus dapat dikonfigurasi oleh driver atau firmware untuk berbagai fungsi. Kerangka kerja ini tidak menetapkan siklus tugas MCC secara langsung, namun menanyakan informasi ini menggunakan StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent .
    • Jika menggunakan MCC, kami merekomendasikan siklus kerja berikut antara koneksi primer dan sekunder:

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