Kablosuz hotspot (Soft AP)

Android, kablosuz hotspot (Soft AP) için destek sunar. Bu destek, kablosuz hotspot üzerinden tethering ve yalnızca yerel kablosuz hotspot'ları içerir.

Yazılımsal AP özelliği, aşağıdakilerin yapılandırılmasına olanak tanır:

  • SSID ve BSSID
  • Güvenlik türü (WPA3 dahil)
  • Gizli SSID
  • Çalışma bandı ve kanalı (ACS dahil)
  • İzin verilen maksimum istemci sayısı
  • Otomatik kapatma zaman aşımı değeri
  • İlişkili cihazların kullanıcı kontrolüne izin vermek için izin verilenler listesi ve engellenenler listesi
  • AP BSSID'si için MAC rastgele seçimi düzeyi
  • 802.11ax ve 802.11be

Bu kontrollerin kullanılabilirliği cihaz özelliklerine bağlıdır. Android 11, bu özellikleri elde etmek için API'ler sunar. Cihaz üreticileri, yer paylaşımlarını kullanarak temel cihaz özelliklerini de belirtebilir.

API'lerin bazılarının sistem API'leri olduğunu ve yalnızca sistemin Ayarlar uygulaması erişebilsin diye izinler aracılığıyla kısıtlandığını unutmayın.

Hotspot API'leriyle uygulama geliştirme

AOSP Ayarlar uygulaması, bağlı Wi-Fi hotspot'un varsayılan bir uygulamasını sağlar ancak bu uygulama, Soft AP yapılandırması için tüm API'leri kullanmaz.

Hotspot veya yalnızca yerel hotspot üzerinden tethering'i desteklemek için uygulamanın aşağıdaki işlevleri yerine getirmesi gerekir:

  1. Bağlı hotspot için WifiManager#registerSoftApCallback, yalnızca yerel hotspot için WifiManager#registerLocalOnlyHotspotSoftApCallback kullanarak cihaz özelliklerini almak üzere geri arama kaydettirin.

    SoftApCallback geri çağırma işlevi aşağıdaki yöntemleri sağlar:

    • SoftApCallback#onCapabilityChanged: Maksimum sayıda desteklenen istemci ve SAE veya ACS'nin desteklenip desteklenmediği dahil olmak üzere cihaz özellikleri hakkında bilgi sağlar.
    • SoftApCallback#onInfoChanged: Bant ve frekans bilgileri de dahil olmak üzere çalışan Soft AP hakkında bilgi sağlar (yalnızca başlatıldıktan sonra geçerlidir).
    • SoftApCallback#onConnectedClientsChanged: Bağlı istemcilerin listesini sağlar. Her istemci için MAC adresini alabilirsiniz. IP bilgilerini almak için TetheringEventCallback#onClientsChanged geri çağırmasını kullanın.
    • SoftApCallback#onStateChanged: Etkinleştirilip devre dışı bırakıldığında Soft AP'nin durumuyla ilgili güncellemeler sağlar.
    • SoftApCallback#onBlockedClientConnecting: Engellenen istemci bilgilerini, engelleme için aşağıdaki nedenlerden biriyle birlikte sağlar: Cihaz, destekleyebileceği maksimum istemci sayısına ulaştı veya istemcinin bağlanmak için açıkça yetkisi yok.
    • SoftApCallback#onClientsDisconnected: Bağlantısı kesilen istemcilerin listesini sağlar. Her istemci için bağlantı kesilme nedenini öğrenebilirsiniz.

Tethering ile bağlantı noktası için:

  1. WifiManager#setSoftApConfiguration yöntemini çağırıp SoftApConfiguration örneği sağlayarak tethering için geçici erişim noktası yapılandırmasını ayarlayın. SoftApConfiguration.Builder sınıfını kullanarak SoftApConfiguration oluşturun.
  2. TetheringManager#startTethering adresinde tethering yöntemini çağırarak tethering'i başlatın.

Yalnızca yerel hotspot için:

  1. WifiManager#startLocalOnlyHotspot yöntemini çağırarak yalnızca yerel hotspot'u belirli bir yazılım AP yapılandırmasıyla başlatın.

İzin verilenler ve engellenenler listelerini uygulama

Tipik bir operatör şartı, kullanıcıya Soft AP'ye bağlanmasına izin verilen cihazların kontrollerini sağlamaktır. Bunu yapmanın birkaç yolu vardır:

  • SoftApConfiguration.Builder#setMaxNumberOfClients kullanarak geçici AP'ye ilişkilendirilebilecek maksimum cihaz sayısını sınırlayın. Cihaz tarafından desteklenen maksimum istemci sayısından daha düşük bir sayı belirttiğinizden emin olun. Maksimum sayıyı SoftApCapability#getMaxSupportedClients adresinden alabilirsiniz.
  • İzin verilenler ve engellenenler listelerini kullanarak dinamik kontrol sağlayın:

    • Yazılımsal erişim noktasının varsayılan yapılandırması, MAC adresleri SoftApConfiguration.Builder#setBlockedClientList'ya eklenen cihazlar hariç tüm cihazların yazılımsal erişim noktasıyla ilişkilendirilmesine olanak tanır.
    • Yazılım erişim noktası SoftApConfiguration.Builder#setClientControlByUserEnabled(true) ile yapılandırılmışsa izin verilenler listesi kullanılır.

      • MAC adresleri SoftApConfiguration.Builder#setBlockedClientList içinde olan tüm cihazların ilişkilendirilmesi engellenir.
      • MAC adresleri SoftApConfiguration.Builder#setAllowedClientList içinde olan tüm cihazların ilişkilendirilmesine izin verilir.
      • Diğer tüm cihazların (yani MAC adresleri izin verilenler veya engellenenler listesinde olmayan cihazlar) ilişkilendirilmesi engellenir ancak SoftApCallback#onBlockedClientConnecting çağrılır. Bu sayede, kontrol eden uygulamanın (yani Ayarlar uygulaması) bir işlem yapmasına (ör. kullanıcıdan onay isteme ve ardından kullanıcının davranışına bağlı olarak cihazı izin verilenler listesine veya engellenenler listesine ekleme) izin verilir.

    Cihazlar, yalnızca cihazda destekleniyorsa izin verilenler listesi işlevini kullanabilir. Cihaz desteğini SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) kullanarak doğrulayabilirsiniz.

Uygulama

Cihaz üreticileri, hotspot üzerinden tethering'i veya yalnızca yerel hotspot'u desteklemek için Ayarlar uygulaması, çerçeve ve HAL/donanım yazılımı desteği sağlamalıdır:

  • Ayarlar uygulaması: AOSP Ayarlar uygulaması, SSID ve güvenlik kimlik bilgileriyle tethering hotspot'u yapılandırmak için temel bir yapı sağlar. Bu kod, olduğu gibi kullanılabilir veya Hotspot API'leri ile uygulama geliştirme başlıklı makalede açıklandığı gibi ek özellikler sağlamak için değiştirilebilir.

  • Çerçeve: AOSP çerçeve kodu, Hotspot API'leriyle uygulama geliştirme bölümünde açıklanan tüm işlevleri destekler.

  • Hotspot için HAL/donanım yazılımı: HIDL IHostapd.hal 1.2 veya sonraki bir sürümü ya da AIDL IHostapd.aidl.

Özelleştirme

Uygulamayı özelleştirmek için cihaz üreticileri, packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml dokümanında açıklanan aşağıdaki katmanları ve operatör yapılandırmalarını yapılandırmalıdır:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: Varsayılan kapatma zaman aşımı aralığı. Yalnızca SoftApConfiguration#setAutoShutdownEnabled etkinse geçerlidir. SoftApConfiguration#setShutdownTimeoutMillis kullanılarak geçersiz kılınabilir.
  • config_wifiHardwareSoftapMaxClientCount: Desteklenen maksimum istemci sayısıyla ilgili donanım sınırlaması. Cihazın desteklediği maksimum istemci sayısı, donanım ve operatör kısıtlamalarının (CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT ile belirtilir) minimum değeridir. Sonuç, SoftApCapabilities#getMaxSupportedClients ile uygulamaya sağlanır.
  • config_wifiSofapClientForceDisconnectSupported: Cihazın, istemcinin bağlantısını zorla kesme özelliği olup olmadığı. İzin verilenler ve engellenenler listelerinin etkinleştirilmesi için gereklidir. SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) aracılığıyla kontrol eden uygulamaya (Ayarlar uygulaması) iletilir.
  • (13'ten itibaren kullanılabilir) config_wifiSoftapPassphraseAsciiEncodableCheck: Yazılım AP parolası için ASCII kodlaması gerekip gerekmediği.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Yeni bir cihaz desteklendiğinde bulut yapılandırması geri yükleme sırasında bant ayarı yapılandırmasının otomatik olarak çift banda yükseltilip yükseltilmeyeceği.
  • (13 yaşından itibaren kullanılabilir) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Çerçevenin, birlikte var olma işleminden kaçınmak için bant yapılandırmasına otomatik olarak daha düşük bantlar ekleyip eklemediği.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: AP modunda dinamik ülke kodu güncellemesinin cihazda desteklenip desteklenmediği
  • Kanal desteği: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList ve config_wifiSoftap60gChannelList.
  • Hotspot yapılandırması yeni bir cihaza geri yüklenirken ilgili girişlerin varsayılana sıfırlanıp sıfırlanmayacağını belirten geri yükleme desteği: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. Bunların varsayılan olarak true olarak ayarlandığını, yani değerlerin sıfırlandığını unutmayın. Yeni cihaz yapılandırmayı desteklemiyorsa bu işlem çok önemlidir.
  • Donanım özellikleri:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (13 yaşından itibaren kullanılabilir) config_wifiSoftapOweTransitionSupported
    • (13 yaşından itibaren kullanılabilir) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (13 yaşından itibaren kullanılabilir) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Doğrulama

Android, hotspot özelliğini doğrulamak için bir dizi birim testi ve Uyumluluk Test Paketi (CTS) testi sağlar. Hotspot özelliği, Vendor Test Suite (VTS) kullanılarak da test edilebilir.

Birim testleri

Aşağıdaki testleri kullanarak hotspot paketini doğrulayın.

  • Hizmet testleri:

    atest packages/modules/Wifi/service/tests/wifitests/
  • Yönetici testleri:

    atest packages/modules/Wifi/framework/tests/

Compatibility Test Suite (CTS) testleri

Hotspot özelliğini doğrulamak için CTS testlerini kullanın. CTS, özelliğin etkinleştirildiğini algıladığında ilişkili testleri otomatik olarak dahil eder.

CTS testlerini tetiklemek için şunu çalıştırın:

atest android.net.wifi.cts.WifiManagerTest

Tedarikçi Test Paketi (VTS)

HIDL arayüzü uygulanmışsa şunu çalıştırın:

atest VtsHalWifiHostapdV1_2Target

AIDL arayüzü uygulanmışsa şunu çalıştırın:

atest VtsHalHostapdTargetTest