Android 12 memperkenalkan konkurensi STA/STA Wi-Fi, yang memungkinkan perangkat terhubung ke dua jaringan Wi-Fi secara bersamaan. Fitur opsional ini memungkinkan fungsi berikut.
- Buat sebelum putus: Perangkat membuat koneksi ke jaringan Wi-Fi baru sebelum memutuskan koneksi yang ada. Hal ini menghasilkan transisi yang lebih lancar saat beralih antar-jaringan Wi-Fi
- Koneksi internet dan khusus lokal secara serentak: Perangkat terhubung ke jaringan khusus lokal tanpa mengganggu koneksi utama penyedia internet perangkat.
- Koneksi internet dan terbatas secara bersamaan: Perangkat terhubung ke jaringan terbatas (hanya tersedia untuk aplikasi tertentu dengan hak istimewa) tanpa mengganggu koneksi penyedia internet utama perangkat.
- (Android 13 atau yang lebih baru) Beberapa jaringan serentak dengan koneksi internet: Perangkat terhubung ke dua jaringan yang tidak dibatasi dan tersedia untuk semua aplikasi, serta menyediakan konektivitas internet.
Halaman ini menjelaskan perilaku perangkat saat fitur ini diaktifkan dan detail penerapan untuk produsen dan vendor perangkat.
Implementasi
Perangkat harus mendukung hal berikut untuk menerapkan konkurensi STA/STA Wi-Fi:
Chip atau firmware Wi-Fi harus mendukung dua koneksi STA serentak. Firmware harus mendukung semua kombinasi saluran dan band untuk kedua koneksi. Untuk menghindari masalah performa, sebaiknya gunakan chip Wi-Fi yang mendukung DBS 2x2+2x2.
Perangkat harus mendukung API berikut dalam penerapan AIDL atau HIDL
IWifiChip
.IWifiChip.setMultiStaPrimaryConnection(String ifName)
IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
Kombinasi antarmuka Wi-Fi HAL harus memiliki dua antarmuka STA serentak yang diekspos menggunakan format spesifikasi seperti
[{STA} <= 2, ...]
. Untuk informasi selengkapnya, lihat Konkurensi multi-antarmuka Wi-Fi.
Jika prasyarat tersebut terpenuhi, terapkan konkurensi STA/STA Wi-Fi dengan melakukan hal berikut:
Aktifkan satu atau beberapa fungsi secara terpisah menggunakan overlay resource runtime (dinonaktifkan secara default).
- Make-before-break:
config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
- Koneksi internet dan lokal saja secara bersamaan:
config_wifiMultiStaLocalOnlyConcurrencyEnabled
- Koneksi internet dan koneksi terbatas secara bersamaan:
config_wifiMultiStaRestrictedConcurrencyEnabled
- Beberapa jaringan serentak dengan koneksi internet:
config_wifiMultiStaMultiInternetConcurrencyEnabled
- Make-before-break:
Validasi setiap penerapan seperti yang dijelaskan di bagian masing-masing.
Untuk mendukung konkurensi STA/STA Wi-Fi dengan lebih baik, sebaiknya framework dan aplikasi yang disesuaikan OEM menggunakan metode NetworkCallback#onCapabilitiesChanged()
, bukan WifiManager#getConnectionInfo()
, yang hanya menampilkan WifiInfo
untuk satu jaringan dan tidak digunakan lagi di Android 12. Untuk
informasi selengkapnya, lihat
Wi-Fi Network Request API untuk konektivitas peer-to-peer.
Buat sebelum putus (Make-before-break)
Fungsi make-before-break memungkinkan perangkat terhubung ke jaringan Wi-Fi baru sambil mempertahankan koneksi jaringan Wi-Fi yang ada, hanya terputus dari jaringan lama saat berhasil terhubung ke jaringan Wi-Fi baru dan memiliki akses internet.
Kasus penggunaan buat-sebelum-putus mengatasi masalah berikut di Android 11 atau yang lebih lama, dengan perangkat harus memutuskan koneksi dari jaringan Wi-Fi yang ada sebelum terhubung ke jaringan baru (putus-sebelum-buat).
Saat terhubung ke jaringan baru, perangkat mungkin menemukan bahwa sandi Wi-Fi yang tersimpan salah atau jaringan baru tidak memiliki akses internet. Hal ini akan memaksa perangkat untuk beralih kembali ke jaringan lama, sehingga menyebabkan waktu yang signifikan tanpa konektivitas Wi-Fi.
Jaringan lama terputus secara tiba-tiba, yang berarti semua soket akan 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 sepenuhnya dibuat.
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 menggunakan data seluler dalam waktu singkat.
Alur buat sebelum putus hanya digunakan untuk peralihan jaringan Wi-Fi otomatis yang dimulai oleh OS. Pengalihan jaringan yang dimulai pengguna menggunakan alur break-before-make lama, di mana jaringan sebelumnya terputus sepenuhnya sebelum jaringan baru terhubung. Dalam kasus tertentu, alur break-before-make digunakan bahkan dalam peralihan otomatis yang dimulai oleh OS, misalnya, saat beralih antara dua jaringan yang keduanya dikonfigurasi untuk menggunakan alamat MAC pabrikan.
Aplikasi dapat memeriksa apakah kasus penggunaan ini didukung di perangkat menggunakan
WifiManager#isMakeBeforeBreakWifiSwitchingSupported()
API.
Memvalidasi buat-sebelum-putus
Untuk memvalidasi penerapan Anda, picu peralihan jaringan Wi-Fi otomatis (dengan memastikan jaringan dengan kekuatan sinyal yang lebih kuat daripada jaringan yang terhubung tersedia) dan pastikan 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 terhubung ke jaringan, sambil mempertahankan koneksi dengan jaringan yang ada, dan menghentikan upaya tersebut saat mendeteksi jaringan baru tidak memiliki internet. Kemudian, perangkat akan terus menggunakan koneksi yang ada sebagai jaringan Wi-Fi utama.
Koneksi internet dan lokal serentak
Fungsi koneksi internet dan lokal saja serentak memungkinkan perangkat terhubung ke koneksi lokal saja, seperti koneksi ke perangkat IoT, secara serentak dengan jaringan penyedia internet utama. Fungsi ini meningkatkan
pengalaman pengguna saat terhubung langsung ke perangkat IoT, seperti kamera,
yang dapat dilakukan melalui WifiNetworkSpecifier
API yang ditambahkan di
Android 10.
Di Android 11 dan yang lebih lama, perangkat akan berhenti terhubung dari jaringan Wi-Fi utama saat terhubung ke perangkat IoT, sehingga menyebabkan hilangnya konektivitas internet (kecuali jika perangkat memiliki jenis transportasi lain yang tersedia, seperti data seluler).
Aplikasi dapat memeriksa apakah fungsi ini didukung di perangkat menggunakan
API WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported()
.
Untuk mengetahui informasi selengkapnya tentang perubahan pada fungsi koneksi internet dan hanya lokal secara bersamaan di Android 12, lihat Wi-Fi Network Request API untuk konektivitas peer-to-peer.
Memvalidasi koneksi internet dan khusus lokal
Untuk memvalidasi fungsi ini, gunakan
uji CTS MultiStaConcurrencyWifiNetworkSpecifierTest
.
Koneksi internet dan terbatas serentak
Fungsi koneksi internet dan terbatas serentak memungkinkan perangkat terhubung secara serentak 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 di perangkat menggunakan
API WifiManager#isStaConcurrencyForRestrictedConnectionsSupported()
.
Untuk mengizinkan perangkat terhubung ke jaringan Wi-Fi sekunder yang dibatasi, ikuti langkah-langkah berikut:
Tambahkan saran jaringan Wi-Fi dengan
setOemPaid
atausetOemPrivate
disetel ke benar (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 saran berbayar OEM atau saran pribadi OEM, perangkat akan otomatis terhubung ke jaringan tersebut sebagai jaringan sekunder.
Memvalidasi koneksi internet dan batasan serentak
Untuk memvalidasi fungsi ini, gunakan
uji CTS MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
.
Beberapa jaringan serentak dengan koneksi internet
Tersedia untuk Android 13 atau yang lebih tinggi, fitur beberapa jaringan serentak dengan koneksi internet memungkinkan perangkat terhubung secara serentak ke dua jaringan (AP) yang keduanya tidak dibatasi (semua aplikasi memiliki akses) dan menyediakan akses internet.
Aplikasi dapat memeriksa apakah fitur ini didukung di perangkat menggunakan metode
WifiManager#isStaConcurrencyForMultiInternetSupported()
.
Jika fitur didukung, aplikasi istimewa dapat mengaktifkan fitur menggunakan metode
WifiManager#setStaConcurrencyForMultiInternetMode(int mode)
. Fitur
memiliki mode berikut:
WifiManager#WIFI_MULTI_INTERNET_MODE_DBS_AP
: Membatasi koneksi ganda ke band ganda AP DBS.WifiManager#WIFI_MULTI_INTERNET_MODE_MULTI_AP
: Terhubung ke AP arbitrer tempat koneksi individual menggunakan band yang berbeda.WifiManager#WIFI_MULTI_INTERNET_MODE_DISABLED
: Menonaktifkan fitur.
Untuk membuat kueri mode fitur yang aktif saat ini, gunakan metode
WifiManager#getStaConcurrencyForMultiInternetMode()
.
Jika fitur ini diaktifkan, gunakan langkah-langkah berikut untuk meminta jaringan Wi-Fi penyedia internet tambahan.
Buat specifier jaringan Wi-Fi menggunakan
WifiNetworkSpecifier.Builder
. Pilih rentang untuk penentu menggunakan metodesetBand()
. Jangan tentukan SSID atau BSSID sebagai jaringan tambahan karena jaringan untuk band yang ditentukan dipilih oleh framework Wi-Fi.Dengan menggunakan
ConnectivityManager
, buatNetworkRequest
dengan kemampuanNET_CAPABILITY_INTERNET
.Tambahkan specifier ke permintaan jaringan bersama dengan instance
NetworkCallback
untuk melacak status permintaan, dan kirim permintaan keConnectivityManager
. Jika jaringan tersimpan dengan band yang diminta tersedia dalam hasil pemindaian, dan koneksi ke jaringan berhasil,NetworkCallback.onAvailable()
akan dipanggil pada objek callback.
Memvalidasi beberapa jaringan serentak dengan koneksi internet
Untuk memvalidasi fungsi ini, gunakan pengujian CTS berikut:
- CTS:
MultiStaConcurrencyMultiInternetWifiNetworkTest
Panduan chip Wi-Fi vendor
Untuk vendor chip Wi-Fi, gunakan panduan berikut untuk mendukung konkurensi STA/STA Wi-Fi.
Chip Wi-Fi harus mendukung koneksi STA serentak ganda. Ini berarti aplikasi tersebut mendukung hal berikut:
- Setiap antarmuka STA memiliki MAC unik yang dapat diprogram oleh framework.
- Antarmuka STA sekunder dapat dibuat dan dihapus secara dinamis.
- Setiap STA dapat terhubung ke SSID yang berbeda (baik dalam band yang sama maupun band yang berbeda).
- Setiap STA dapat terhubung ke SSID yang sama (baik dalam band yang sama maupun band yang berbeda). Kedua STA tidak boleh terhubung ke BSSID yang sama.
Fitur penting harus beroperasi berdasarkan per antarmuka dan harus tersedia di antarmuka utama. Berikut adalah daftar fitur penting ini:
Roaming harus didukung setidaknya pada antarmuka utama (ditetapkan 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 berpindah-pindah ke BSSID koneksi lain.APF (dan offload lainnya seperti ARP dan NS) harus didukung setidaknya di antarmuka utama (ditetapkan menggunakan
IWifiChip.setMultiStaPrimaryConnection()
).Statistik lapisan link harus beroperasi berdasarkan per antarmuka.
Berikut adalah penerapan chip Wi-Fi yang direkomendasikan untuk berbagai skenario serentak:
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 koneksi utama harus diprioritaskan daripada koneksi sekunder.DUAL_STA_NON_TRANSIENT_UNBIASED
: Menentukan koneksi internet dan hanya lokal secara bersamaan atau fungsi koneksi internet dan terbatas secara bersamaan. Kualitas kedua koneksi harus diprioritaskan secara setara.
Karena STA serentak ganda dapat menyebabkan mode operasi MCC, SCC, dan DBS, implementasi vendor harus memilih konfigurasi radio terbaik saat framework memanggil
IWifiChip.setMultiStaUseCase()
untuk menunjukkan fungsi. Berikut adalah panduan umum:- DBS 2x2+2x2 lebih disukai jika tersedia.
- Hindari DBS 1x1+1x1 jika memungkinkan karena dampak yang berlebihan pada kualitas koneksi. Sebagai gantinya, pilih MCC.
- Siklus tugas MCC harus dapat dikonfigurasi oleh driver atau firmware untuk
berbagai fungsi. Framework tidak menetapkan siklus tugas MCC
secara langsung, tetapi mengkueri informasi ini menggunakan
StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
. Jika menggunakan MCC, sebaiknya gunakan siklus tugas berikut antara koneksi primer dan sekunder:
DUAL_STA_TRANSIENT_PREFER_PRIMARY
: 70% utama, 30% sekunder.DUAL_STA_NON_TRANSIENT_UNBIASED
: 50% utama, 50% sekunder.