Android 12 memperkenalkan konkurensi Wi-Fi STA/STA, yang memungkinkan perangkat terhubung ke dua jaringan Wi-Fi secara bersamaan. Fitur opsional ini mengaktifkan fungsi berikut.
- Make-before-break : Perangkat membuat koneksi ke jaringan Wi-Fi baru sebelum memutuskan koneksi yang ada. Ini menghasilkan transisi yang lebih mulus saat beralih di antara jaringan Wi-Fi
- Koneksi hanya lokal dan internet serentak : Perangkat terhubung ke jaringan lokal saja tanpa mengganggu koneksi penyedia internet utama perangkat.
- Koneksi internet dan terbatas secara bersamaan : Perangkat terhubung ke jaringan terbatas (hanya tersedia untuk aplikasi istimewa tertentu) tanpa mengganggu koneksi penyedia internet utama perangkat.
Halaman ini menjelaskan perilaku perangkat saat fitur ini diaktifkan dan detail implementasi 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 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 di vendor HAL versi 1.5
-
IWifiChip.setMultiStaPrimaryConnection()
-
IWifiChip.setMultiStaUseCase()
-
Kombinasi antarmuka Wi-Fi HAL harus memiliki dua antarmuka STA bersamaan yang diekspos menggunakan format spesifikasi seperti
[{STA} <= 2, ...]
. Untuk informasi lebih lanjut, lihat Konkurensi multi-antarmuka Wi-Fi .
Jika prasyarat tersebut terpenuhi, terapkan konkurensi Wi-Fi STA/STA dengan melakukan hal berikut:
Aktifkan satu atau beberapa fungsi satu per satu menggunakan hamparan sumber daya waktu proses (dinonaktifkan secara default).
- Make-before-break :
config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
- Koneksi hanya lokal dan internet bersamaan:
config_wifiMultiStaLocalOnlyConcurrencyEnabled
- Pembatasan bersamaan dan koneksi internet :
config_wifiMultiStaRestrictedConcurrencyEnabled
- Make-before-break :
Validasi setiap implementasi seperti yang dijelaskan di bagian masing-masing di bawah ini.
Untuk mendukung konkurensi Wi-Fi STA/STA dengan lebih baik, kami menyarankan agar kerangka kerja dan aplikasi yang disesuaikan OEM menggunakan metode NetworkCallback#onCapabilitiesChanged()
alih-alih WifiManager#getConnectionInfo()
, yang hanya mengembalikan WifiInfo
untuk satu jaringan dan tidak digunakan lagi di Android 12 Untuk informasi lebih lanjut, lihat API Permintaan Jaringan Wi-Fi untuk konektivitas peer-to-peer .
Buat-sebelum-istirahat
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, di mana perangkat harus memutuskan sambungan dari jaringan Wi-Fi yang ada sebelum menghubungkan ke jaringan baru (break-before-make).
Saat menyambung ke jaringan baru, perangkat mungkin menemukan bahwa sandi Wi-Fi tersimpan salah atau jaringan baru tidak memiliki akses internet. Ini memaksa perangkat untuk beralih kembali ke jaringan lama, yang menyebabkan sejumlah besar 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 ini dapat menyebabkan pengguna mengalami beberapa detik tanpa konektivitas internet hingga koneksi baru sepenuhnya tersambung.
Jaringan default berubah dua kali, dari jaringan Wi-Fi lama ke seluler, lalu dari seluler ke jaringan Wi-Fi baru. Ini menyebabkan aplikasi bereaksi terhadap perubahan jaringan dua kali. Perangkat juga harus menghabiskan sedikit waktu menggunakan data seluler.
Alur make-before-break hanya digunakan untuk sakelar jaringan Wi-Fi otomatis yang dimulai oleh OS. Sakelar jaringan yang diprakarsai pengguna menggunakan aliran break-before-make lama, di mana jaringan sebelumnya sepenuhnya terputus sebelum jaringan baru terhubung. Dalam kasus tertentu, aliran break-before-make digunakan bahkan dalam sakelar otomatis yang dimulai oleh OS, 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 WifiManager#isMakeBeforeBreakWifiSwitchingSupported()
API.
Memvalidasi make-before-break
Untuk memvalidasi penerapan Anda, picu sakelar jaringan Wi-Fi otomatis (dengan memastikan jaringan dengan kekuatan sinyal yang lebih kuat dari jaringan yang terhubung saat ini tersedia) dan verifikasi bahwa perangkat mempertahankan koneksi yang ada saat menghubungkan 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 menyambung ke jaringan, sambil mempertahankan koneksi dengan jaringan yang ada, dan membatalkan upaya saat mendeteksi jaringan baru tidak memiliki internet. Perangkat kemudian melanjutkan menggunakan koneksi yang ada sebagai jaringan Wi-Fi utama.
Hanya koneksi lokal dan internet secara bersamaan
Fungsi koneksi hanya lokal dan koneksi internet bersamaan 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 API WifiNetworkSpecifier
yang ditambahkan di Android 10.
Di Android 11 dan yang lebih rendah, perangkat terputus dari jaringan Wi-Fi utama saat tersambung ke perangkat IoT, yang mengakibatkan hilangnya konektivitas internet (kecuali perangkat memiliki jenis transportasi lain yang tersedia, seperti data seluler).
Aplikasi dapat memeriksa apakah fungsi ini didukung pada perangkat menggunakan WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported()
API.
Untuk informasi selengkapnya tentang perubahan pada fungsi koneksi internet dan hanya lokal 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
Dibatasi dan koneksi internet secara bersamaan
Fungsi koneksi internet dan terbatas 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 WifiManager#isStaConcurrencyForRestrictedConnectionsSupported()
API.
Untuk mengaktifkan perangkat agar terhubung ke jaringan Wi-Fi terbatas sekunder, ikuti langkah-langkah berikut:
Tambahkan saran jaringan Wi-Fi dengan
setOemPaid
atausetOemPrivate
disetel ke true.Di
ConnectivityManager
, ajukanNetworkRequest
dengan kemampuan yang sesuai:-
NET_CAPABILITY_OEM_PAID
untuksetOemPaid
-
NET_CAPABILITY_OEM_PRIVATE
untuksetOemPrivate
-
Saat perangkat mendeteksi hasil pemindaian dengan jaringan yang cocok dengan OEM berbayar atau saran pribadi OEM, perangkat akan secara otomatis menyambungkannya sebagai jaringan sekunder.
Memvalidasi koneksi terbatas dan internet bersamaan
Untuk memvalidasi fungsi ini, gunakan tes CTS dan ACTS berikut:
- CTS:
MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
- TINDAKAN:
WifiStaConcurrencyNetworkRequestTest
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 bersamaan. Ini berarti mendukung hal-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 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 penting tersebut:
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 bersamaan kedua. Misalnya, satu antarmuka tidak boleh menjelajah ke BSSID koneksi lainnya.APF (dan offload lainnya seperti ARP dan NS) harus didukung setidaknya pada antarmuka utama (diatur menggunakan
IWifiChip.setMultiStaPrimaryConnection()
).Statistik lapisan tautan harus beroperasi pada basis per antarmuka.
Berikut ini adalah implementasi chip Wi-Fi yang direkomendasikan untuk skenario konkurensi yang berbeda:
Chip Wi-Fi harus mengizinkan kerangka kerja untuk 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 diprioritaskan daripada sambungan sekunder. -
DUAL_STA_NON_TRANSIENT_UNBIASED
: Menentukan koneksi internet dan lokal saja secara bersamaan atau fungsi koneksi internet dan terbatas secara bersamaan . Kualitas kedua koneksi harus diprioritaskan secara seimbang.
-
Karena STA bersamaan ganda dapat mengarah ke mode operasi MCC, SCC, dan DBS, implementasi vendor harus memilih konfigurasi radio terbaik saat kerangka kerja memanggil
IWifiChip.setMultiStaUseCase()
untuk menunjukkan fungsi. Berikut ini adalah pedoman umum:- 2x2+2x2 DBS lebih disukai jika tersedia.
- Hindari 1x1+1x1 DBS jika memungkinkan karena dampak yang berlebihan pada kualitas koneksi. Sebaliknya, lebih suka PKS.
- Siklus tugas MCC harus dapat dikonfigurasi oleh driver atau firmware untuk berbagai fungsi. Kerangka kerja tidak menyetel siklus tugas MCC secara langsung, tetapi menanyakan informasi ini menggunakan
StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
. Jika menggunakan MCC, kami merekomendasikan siklus tugas berikut antara koneksi primer dan sekunder:
-
DUAL_STA_TRANSIENT_PREFER_PRIMARY
: 70% primer, 30% sekunder. -
DUAL_STA_NON_TRANSIENT_UNBIASED
: 50% primer, 50% sekunder.
-