Android 12 memperkenalkan konkurensi Wi-Fi STA/STA yang memungkinkan perangkat terhubung ke dua jaringan Wi-Fi secara serentak. 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 lancar saat beralih antarjaringan Wi-Fi
- Koneksi khusus lokal dan internet serentak: Perangkat terhubung ke jaringan khusus lokal tanpa mengganggu koneksi penyedia internet utama perangkat.
- Koneksi internet dan terbatas serentak: Perangkat terhubung ke jaringan yang dibatasi (hanya tersedia untuk aplikasi dengan hak istimewa tertentu) tanpa mengganggu koneksi penyedia internet utama perangkat.
- (Android 13 atau yang lebih tinggi) Beberapa jaringan serentak dengan koneksi internet: Perangkat terhubung ke dua jaringan yang tidak dibatasi dan tersedia untuk semua aplikasi, dan menyediakan konektivitas internet.
Halaman ini menjelaskan perilaku perangkat saat fitur ini diaktifkan serta detail implementasi untuk produsen dan vendor perangkat.
Penerapan
Perangkat harus mendukung hal berikut untuk menerapkan serentak STA/STA Wi-Fi:
Chip atau firmware Wi-Fi harus mendukung dua koneksi STA secara serentak. Firmware harus mendukung semua kombinasi saluran dan band untuk kedua koneksi. Untuk menghindari masalah performa, 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 serentak yang terekspos menggunakan format spesifikasi seperti
[{STA} <= 2, ...]
. Untuk mengetahui informasi selengkapnya, 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 overlay resource runtime (dinonaktifkan secara 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
- Buat sebelum jeda:
Validasi setiap penerapan seperti yang dijelaskan di bagiannya masing-masing.
Untuk lebih mendukung konkurensi Wi-Fi STA/STA, 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 mengetahui informasi selengkapnya, lihat Wi-Fi Network Request API untuk konektivitas peer-to-peer.
Buat sebelum jeda
Fungsi make-before-break memungkinkan perangkat untuk terhubung ke jaringan Wi-Fi baru sekaligus mempertahankan koneksi jaringan Wi-Fi yang ada, dan hanya memutuskan koneksi 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 yang lebih rendah, saat perangkat harus terputus dari jaringan Wi-Fi yang ada sebelum terhubung ke jaringan baru (break-before-make).
Saat terhubung ke jaringan baru, perangkat mungkin mendapati bahwa sandi Wi-Fi tersimpan salah atau jaringan baru tersebut tidak memiliki akses internet. Hal ini memaksa perangkat untuk beralih kembali ke jaringan lama, yang menyebabkan banyak waktu tanpa konektivitas Wi-Fi.
Jaringan lama terputus 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 sepenuhnya dibuat.
Jaringan default berubah dua kali, dari jaringan Wi-Fi lama ke seluler, lalu dari jaringan seluler ke jaringan Wi-Fi baru. Hal ini menyebabkan aplikasi bereaksi terhadap perubahan jaringan dua kali. Perangkat juga harus menghabiskan waktu singkat untuk menggunakan data seluler.
Alur buat sebelum jeda hanya digunakan untuk peralihan jaringan Wi-Fi otomatis yang dimulai oleh OS. Peralihan jaringan yang dimulai pengguna menggunakan alur jeda sebelum pembuatan versi lama, dengan jaringan sebelumnya sepenuhnya terputus sebelum jaringan baru terhubung. Dalam kasus tertentu, alur jeda sebelum membuat digunakan bahkan dalam tombol otomatis yang dimulai oleh OS, misalnya, saat beralih di antara dua jaringan yang keduanya dikonfigurasi untuk menggunakan alamat MAC pabrik.
Aplikasi dapat memeriksa apakah kasus penggunaan ini didukung di perangkat menggunakan
WifiManager#isMakeBeforeBreakWifiSwitchingSupported()
API.
Validasi pembuatan sebelum jeda
Untuk memvalidasi penerapan, picu tombol 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 memastikan 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 terhubung ke jaringan sambil mempertahankan koneksi dengan jaringan yang ada, dan membatalkan upaya tersebut saat mendeteksi bahwa jaringan baru tidak memiliki internet. Perangkat kemudian terus 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, 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, koneksi perangkat terputus dari jaringan Wi-Fi utama saat terhubung ke perangkat IoT, yang mengakibatkan hilangnya konektivitas internet (kecuali jika perangkat memiliki jenis transportasi lain, seperti data seluler).
Aplikasi dapat memeriksa apakah fungsi ini didukung di perangkat menggunakan
WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported()
API.
Untuk mengetahui informasi selengkapnya tentang perubahan pada fungsi koneksi khusus lokal dan koneksi 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 konkurensi dibatasi dan internet koneksi memungkinkan perangkat untuk 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
WifiManager#isStaConcurrencyForRestrictedConnectionsSupported()
API.
Agar perangkat dapat terhubung ke jaringan Wi-Fi terbatas sekunder, ikuti langkah-langkah berikut:
Tambahkan saran jaringan Wi-Fi dengan
setOemPaid
atausetOemPrivate
ditetapkan ke benar (true).Di
ConnectivityManager
, ajukanNetworkRequest
dengan kemampuan yang sesuai:NET_CAPABILITY_OEM_PAID
untuksetOemPaid
NET_CAPABILITY_OEM_PRIVATE
untuksetOemPrivate
Saat mendeteksi hasil pemindaian dengan jaringan yang cocok dengan saran berbayar OEM atau saran pribadi OEM, perangkat akan otomatis terhubung ke jaringan 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 tinggi, fitur beberapa jaringan secara 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 pada perangkat menggunakan
metode
WifiManager#isStaConcurrencyForMultiInternetSupported()
.
Jika fitur ini didukung, aplikasi dengan hak istimewa dapat mengaktifkan fitur tersebut menggunakan
metode WifiManager#setStaConcurrencyForMultiInternetMode(int mode)
. Fitur
ini memiliki mode berikut:
WifiManager#WIFI_MULTI_INTERNET_MODE_DBS_AP
: Membatasi koneksi ganda ke band ganda DBS AP.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 saat ini aktif, gunakan metode WifiManager#getStaConcurrencyForMultiInternetMode()
.
Jika fitur ini diaktifkan, lakukan langkah-langkah berikut untuk meminta jaringan Wi-Fi penyedia internet tambahan.
Buat penentu jaringan Wi-Fi menggunakan
WifiNetworkSpecifier.Builder
. Pilih band untuk penentu menggunakan metodesetBand()
. Jangan tentukan SSID atau BSSID sebagai jaringan tambahan untuk band yang ditentukan yang dipilih oleh framework Wi-Fi.Dengan
ConnectivityManager
, buatNetworkRequest
dengan kemampuanNET_CAPABILITY_INTERNET
.Tambahkan penentu ke permintaan jaringan bersama dengan instance
NetworkCallback
untuk melacak status permintaan, dan kirimkan 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 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. Artinya, class ini 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 dalam pita yang sama atau pita yang berbeda).
- Setiap STA dapat dihubungkan ke SSID yang sama (baik dalam band yang sama maupun yang berbeda). Kedua STA ini tidak boleh terhubung ke BSSID yang sama.
Fitur penting harus beroperasi per antarmuka dan harus tersedia di antarmuka utama. Berikut adalah daftar fitur penting tersebut:
Roaming harus didukung setidaknya pada antarmuka utama (yang 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 pada antarmuka utama (yang ditetapkan menggunakan
IWifiChip.setMultiStaPrimaryConnection()
).Statistik lapisan link harus beroperasi per antarmuka.
Berikut adalah penerapan chip Wi-Fi yang direkomendasikan untuk berbagai skenario serentak:
Chip Wi-Fi harus mengizinkan framework 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 koneksi utama harus diprioritaskan daripada koneksi sekunder.DUAL_STA_NON_TRANSIENT_UNBIASED
: Menentukan koneksi khusus lokal dan internet serentak atau fungsi koneksi terbatas dan koneksi internet serentak. Kualitas kedua koneksi harus diprioritaskan secara setara.
Karena dua STA serentak dapat menyebabkan mode operasi MCC, SCC, dan DBS, implementasi vendor harus memilih konfigurasi radio terbaik saat framework memanggil
IWifiChip.setMultiStaUseCase()
untuk menunjukkan fungsi. 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 driver atau firmware untuk
berbagai fungsi. Framework ini tidak menetapkan siklus tugas MCC
secara langsung, tetapi membuat kueri informasi ini menggunakan
StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
. Jika menggunakan MCC, sebaiknya lakukan siklus tugas berikut antara koneksi utama dan sekunder:
DUAL_STA_TRANSIENT_PREFER_PRIMARY
: 70% primer, 30% sekunder.DUAL_STA_NON_TRANSIENT_UNBIASED
: 50% primer, 50% sekunder.