Hotspot Wi-Fi (Soft AP)

Android menyediakan dukungan untuk hotspot Wi-Fi (Soft AP), termasuk tethering melalui hotspot Wi-Fi dan hotspot Wi-Fi khusus lokal.

Fitur soft AP memungkinkan konfigurasi berikut:

  • SSID dan BSSID
  • Jenis keamanan (termasuk WPA3)
  • SSID tersembunyi
  • Band dan saluran operasi (termasuk ACS)
  • Jumlah maksimum klien yang diizinkan
  • Nilai waktu tunggu penonaktifan otomatis
  • Daftar yang diizinkan dan daftar yang diblokir untuk mengizinkan kontrol pengguna atas perangkat terkait
  • Tingkat pengacakan MAC untuk BSSID AP
  • 802.11ax dan 802.11be

Kemampuan perangkat menentukan ketersediaan kontrol ini. Android 11 memperkenalkan API untuk mendapatkan kemampuan ini. Produsen perangkat juga dapat menentukan kemampuan perangkat dasar menggunakan overlay.

Mengembangkan aplikasi dengan API hotspot

Implementasi default hotspot Wi-Fi yang ditambatkan disediakan oleh aplikasi Setelan Project Open Source Android (AOSP), tetapi tidak menggunakan semua API untuk konfigurasi Soft AP.

Untuk mendukung tethering melalui hotspot atau hotspot khusus lokal, aplikasi harus menjalankan fungsi berikut:

  1. Daftarkan callback untuk mendapatkan kemampuan perangkat menggunakan WifiManager#registerSoftApCallback untuk hotspot yang ditambatkan atau WifiManager#registerLocalOnlyHotspotSoftApCallback untuk hotspot khusus lokal.

    Callback SoftApCallback menyediakan metode berikut:

    • SoftApCallback#onCapabilityChanged: Memberikan informasi tentang kemampuan perangkat, termasuk jumlah maksimum klien yang didukung, dan apakah SAE atau ACS didukung.
    • SoftApCallback#onInfoChanged: Memberikan informasi tentang Soft AP yang berjalan (hanya valid setelah dimulai), termasuk informasi band dan frekuensi.
    • SoftApCallback#onConnectedClientsChanged: Menyediakan daftar klien yang terhubung. Untuk setiap klien, Anda dapat memperoleh alamat MAC. Untuk mendapatkan informasi IP, gunakan callback TetheringEventCallback#onClientsChanged.
    • SoftApCallback#onStateChanged: Memberikan update tentang status Soft AP saat diaktifkan dan dinonaktifkan.
    • SoftApCallback#onBlockedClientConnecting: Memberikan informasi klien yang diblokir dengan salah satu alasan pemblokiran berikut: perangkat mencapai jumlah maksimum klien yang dapat didukung atau klien tidak secara eksplisit diizinkan untuk terhubung.
    • SoftApCallback#onClientsDisconnected: Menyediakan daftar klien yang terputus. Untuk setiap klien, Anda dapat memperoleh alasan pemutusan koneksi.

Untuk hotspot yang ditambatkan:

  1. Konfigurasi soft AP untuk tethering dengan memanggil metode WifiManager#setSoftApConfiguration dan menyediakan instance SoftApConfiguration. Buat SoftApConfiguration menggunakan SoftApConfiguration.Builder class.
  2. Mulai tethering dengan memanggil metode tethering di TetheringManager#startTethering.

Untuk hotspot khusus lokal:

  1. Mulai hotspot khusus lokal dengan konfigurasi soft AP tertentu dengan memanggil WifiManager#startLocalOnlyHotspot metode.

Mengimplementasikan daftar yang diizinkan dan daftar yang diblokir

Persyaratan operator umum adalah memberikan kontrol kepada pengguna atas perangkat yang diizinkan untuk dikaitkan dengan Soft AP. Ada beberapa mekanisme untuk melakukannya:

  • Batasi jumlah maksimum perangkat yang dapat dikaitkan dengan soft AP menggunakan SoftApConfiguration.Builder#setMaxNumberOfClients. Pastikan untuk menentukan angka yang lebih rendah dari jumlah maksimum klien yang didukung oleh perangkat. Anda dapat memperoleh jumlah maksimum dari SoftApCapability#getMaxSupportedClients.
  • Berikan kontrol dinamis menggunakan daftar yang diizinkan dan daftar yang diblokir:

    • Konfigurasi default Soft AP memungkinkan semua perangkat dikaitkan dengan soft AP, kecuali perangkat yang alamat MAC-nya ditambahkan ke SoftApConfiguration.Builder#setBlockedClientList.
    • Jika Soft AP dikonfigurasi dengan SoftApConfiguration.Builder#setClientControlByUserEnabled(true), daftar yang diizinkan akan digunakan.
      • Semua perangkat yang alamat MAC-nya ada di SoftApConfiguration.Builder#setBlockedClientList akan diblokir dari pengaitan.
      • Semua perangkat yang alamat MAC-nya ada di SoftApConfiguration.Builder#setAllowedClientList diizinkan untuk dikaitkan.
      • Semua perangkat lainnya (yaitu, perangkat yang alamat MAC-nya tidak ada dalam daftar yang diizinkan atau daftar yang diblokir) diblokir dari pengaitan, tetapi SoftApCallback#onBlockedClientConnecting dipanggil, sehingga memungkinkan aplikasi pengontrol (yaitu, aplikasi Setelan) untuk mengambil tindakan, misalnya, meminta konfirmasi pengguna, lalu menambahkan perangkat ke daftar yang diizinkan atau ke daftar yang diblokir, bergantung pada perilaku pengguna.

    Perhatikan bahwa perangkat hanya dapat menggunakan fungsi daftar yang diizinkan jika didukung di perangkat. Anda dapat memverifikasi dukungan perangkat menggunakan SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).

Penerapan

Untuk mendukung tethering melalui hotspot atau mendukung hotspot khusus lokal, produsen perangkat harus menyediakan aplikasi setelan, framework, dan dukungan HAL/firmware:

  • Aplikasi setelan: Aplikasi Setelan Android Open Source Project (AOSP) menyediakan dasar untuk mengonfigurasi hotspot tethering dengan SSID dan kredensial keamanan. Kode ini dapat digunakan sebagaimana adanya atau diubah untuk memberikan kemampuan tambahan seperti yang dijelaskan dalam Mengembangkan aplikasi dengan API hotspot.

  • Framework: Kode framework AOSP mendukung semua fungsi yang dijelaskan dalam Mengembangkan aplikasi dengan API hotspot.

  • HAL/firmware untuk hotspot: HIDL IHostapd.hal versi 1.2 atau yang lebih baru, atau AIDL IHostapd.aidl.

Penyesuaian

Untuk menyesuaikan implementasi, sebaiknya produsen perangkat mengonfigurasi overlay dan konfigurasi operator berikut, yang didokumentasikan di packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: Interval waktu tunggu penonaktifan default. Hanya valid jika SoftApConfiguration#setAutoShutdownEnabled diaktifkan. Dapat diganti menggunakan SoftApConfiguration#setShutdownTimeoutMillis.
  • config_wifiHardwareSoftapMaxClientCount: Batasan hardware untuk jumlah maksimum klien yang didukung. Jumlah maksimum klien yang didukung perangkat adalah batasan hardware dan operator minimum (ditentukan oleh CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Hasil akhir diberikan ke aplikasi dengan SoftApCapabilities#getMaxSupportedClients.
  • config_wifiSofapClientForceDisconnectSupported: Apakah perangkat memiliki kemampuan untuk memutuskan koneksi klien secara paksa. Diperlukan untuk mengaktifkan daftar yang diizinkan dan daftar yang diblokir. Dikirim ke aplikasi pengontrol (aplikasi Setelan) melalui SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).
  • (Tersedia mulai dari 13) config_wifiSoftapPassphraseAsciiEncodableCheck: Apakah sandi soft AP harus dapat dienkode ASCII atau tidak.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Apakah akan mengupgrade konfigurasi setelan band secara otomatis ke band ganda selama pemulihan konfigurasi cloud saat perangkat baru didukung.
  • (Tersedia mulai dari 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Apakah framework otomatis menambahkan band yang lebih rendah ke konfigurasi band untuk menghindari penanganan koeksistensi.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: Apakah update kode negara dinamis dalam mode AP didukung di perangkat atau tidak
  • Dukungan saluran: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList, dan config_wifiSoftap60gChannelList.
  • Dukungan pemulihan yang menentukan apakah entri yang sesuai direset ke default saat memulihkan konfigurasi hotspot ke perangkat baru: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. Perhatikan bahwa setelan ini ditetapkan ke true secara default, yang berarti nilai akan direset. Hal ini sangat penting jika perangkat baru tidak mendukung konfigurasi.
  • Kemampuan hardware:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Tersedia mulai dari 13) config_wifiSoftapOweTransitionSupported
    • (Tersedia mulai dari 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Tersedia mulai dari 13) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Validasi

Android menyediakan serangkaian pengujian unit dan pengujian Compatibility Test Suite (CTS) untuk memvalidasi fitur hotspot. Fitur hotspot juga dapat diuji menggunakan Vendor Test Suite (VTS).

Pengujian unit

Verifikasi paket hotspot menggunakan pengujian berikut.

  • Pengujian layanan:

    atest packages/modules/Wifi/service/tests/wifitests/
  • Pengujian pengelola:

    atest packages/modules/Wifi/framework/tests/

Pengujian Compatibility Test Suite (CTS)

Gunakan pengujian CTS untuk memvalidasi fitur hotspot. CTS mendeteksi saat fitur diaktifkan dan otomatis menyertakan pengujian terkait.

Untuk memicu pengujian CTS, jalankan:

atest android.net.wifi.cts.WifiManagerTest

Vendor Test Suite (VTS)

Jika antarmuka HIDL diimplementasikan, jalankan:

atest VtsHalWifiHostapdV1_2Target

Jika antarmuka AIDL diimplementasikan, jalankan:

atest VtsHalHostapdTargetTest