Hotspot Wi-Fi (AP Lunak)

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
  • Pita dan saluran pengoperasian (termasuk ACS)
  • Jumlah maksimum klien yang diizinkan
  • Nilai batas waktu mati otomatis
  • Daftar yang diizinkan dan daftar blokir untuk memungkinkan kontrol pengguna atas perangkat terkait
  • Tingkat pengacakan MAC untuk AP BSSID
  • 802.11ax dan 802.11be

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

Perhatikan bahwa beberapa API adalah API sistem dan dibatasi melalui izin sehingga hanya aplikasi Pengaturan sistem yang dapat mengaksesnya.

Mengembangkan aplikasi dengan API hotspot

Implementasi default hotspot Wi-Fi tertambat disediakan oleh aplikasi Pengaturan AOSP, namun 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 tertambat 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 sedang berjalan (hanya valid setelah dimulai), termasuk informasi pita dan frekuensi.
    • SoftApCallback#onConnectedClientsChanged : Menyediakan daftar klien yang terhubung. Untuk setiap klien, Anda bisa mendapatkan alamat MAC. Untuk mendapatkan informasi IP, gunakan panggilan balik TetheringEventCallback#onClientsChanged .
    • SoftApCallback#onStateChanged : Memberikan pembaruan pada 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 didukungnya atau klien tidak secara eksplisit diizinkan untuk terhubung.

Untuk hotspot tertambat:

  1. Konfigurasikan konfigurasi soft AP untuk tethering dengan memanggil metode WifiManager#setSoftApConfiguration dan menyediakan instance SoftApConfiguration . Bangun SoftApConfiguration menggunakan kelas SoftApConfiguration.Builder .
  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 metode WifiManager#startLocalOnlyHotspot .

Menerapkan daftar izin dan blokir

Persyaratan umum operator adalah memberi pengguna kontrol atas perangkat yang diizinkan untuk dikaitkan ke Soft AP. Ada beberapa mekanisme untuk melakukan hal ini:

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

    • Konfigurasi default Soft AP memungkinkan semua perangkat untuk dikaitkan ke 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 diblokir dari pengaitan.
      • Semua perangkat yang alamat MAC-nya ada di SoftApConfiguration.Builder#setAllowedClientList diperbolehkan dikaitkan.
      • Semua perangkat lain (yaitu, perangkat yang alamat MAC-nya tidak ada dalam daftar izin atau blokir) diblokir dari pengaitan tetapi SoftApCallback#onBlockedClientConnecting dipanggil, sehingga aplikasi pengontrol (yaitu, aplikasi Pengaturan) dapat mengambil tindakan, misalnya misalnya, meminta konfirmasi pengguna dan kemudian menambahkan perangkat ke daftar yang diizinkan atau ke daftar blokir tergantung pada perilaku pengguna.

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

Penerapan

Untuk mendukung tethering melalui hotspot atau untuk mendukung hotspot lokal saja, produsen perangkat harus menyediakan aplikasi Pengaturan, kerangka kerja, dan dukungan HAL/firmware:

Kustomisasi

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

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds : Interval batas waktu pematian default. Hanya valid jika SoftApConfiguration#setAutoShutdownEnabled diaktifkan. Dapat diganti menggunakan SoftApConfiguration#setShutdownTimeoutMillis .
  • config_wifiHardwareSoftapMaxClientCount : Batasan perangkat keras untuk jumlah maksimum klien yang didukung. Jumlah maksimum klien yang didukung perangkat adalah batasan minimum perangkat keras dan operator (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 sambungan klien secara paksa. Diperlukan untuk mengaktifkan daftar izinkan dan blokir. Dikomunikasikan ke aplikasi pengontrol (aplikasi Pengaturan) melalui SoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) .
  • (Tersedia mulai 13) config_wifiSoftapPassphraseAsciiEncodableCheck : Apakah frasa sandi AP lunak harus dapat dikodekan ASCII atau tidak.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported : Apakah akan secara otomatis meningkatkan konfigurasi pengaturan pita ke pita ganda selama pemulihan konfigurasi cloud ketika perangkat baru didukung.
  • (Tersedia mulai 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled : Apakah kerangka kerja secara otomatis menambahkan pita yang lebih rendah ke konfigurasi pita untuk menghindari penanganan koeksistensi.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported : Apakah pembaruan kode negara dinamis dalam mode AP didukung pada perangkat atau tidak
  • Dukungan saluran: config_wifiSoftap2gChannelList , config_wifiSoftap5gChannelList , config_wifiSoftap6gChannelList dan config_wifiSoftap60gChannelList .
  • Pulihkan dukungan yang menentukan apakah entri terkait disetel ulang ke default saat memulihkan konfigurasi hotspot ke perangkat baru: config_wifiSoftapResetChannelConfig , config_wifiSoftapResetHiddenConfig , config_wifiSoftapResetUserControlConfig , config_wifiSoftapResetAutoShutdownTimerConfig , config_wifiSoftapResetMaxClientSettingConfig . Perhatikan bahwa ini disetel ke true secara default, artinya nilainya disetel ulang. Ini penting jika perangkat baru tidak mendukung konfigurasi tersebut.
  • Kemampuan perangkat keras:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Tersedia mulai 13) config_wifiSoftapOweTransitionSupported
    • (Tersedia mulai 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Tersedia mulai 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, pengujian integrasi (Android Connectivity Test Suite, atau ACTS), dan pengujian Compatibility Test Suite (CTS) untuk memvalidasi fitur hotspot. Fitur hotspot juga dapat diuji menggunakan Vendor Test Suite (VTS).

Tes satuan

Verifikasi paket hotspot menggunakan tes berikut.

  • Tes layanan:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Tes manajer:

    atest packages/modules/Wifi/framework/tests/
    

Tes integrasi (ACTS)

Rangkaian pengujian hotspot ACTS , yang terletak di tools/test/connectivity/acts_tests/tests/google/wifi/WifiSoftApTest.py , mengimplementasikan pengujian fungsional fitur hotspot.

Tes Rangkaian Tes Kompatibilitas (CTS).

Gunakan tes CTS untuk memvalidasi fitur hotspot. CTS mendeteksi ketika fitur ini diaktifkan dan secara otomatis menyertakan pengujian terkait.

Untuk memicu tes CTS, jalankan:

atest android.net.wifi.cts.WifiManagerTest

Rangkaian Uji Vendor (VTS)

Jika antarmuka HIDL diimplementasikan, jalankan:

atest VtsHalWifiHostapdV1_2Target

Jika antarmuka AIDL diimplementasikan, jalankan:

atest VtsHalHostapdTargetTest