WLAN-Hotspot (Soft AP)

Android bietet Unterstützung für Wi-Fi-Hotspots (Soft AP), einschließlich Tethering über einen WLAN-Hotspot und ausschließlich lokalen WLAN-Hotspots.

Mit der weichen ZP-Funktion kann Folgendes konfiguriert werden:

  • SSID und BSSID
  • Sicherheitstyp (einschließlich WPA3)
  • Ausgeblendete SSID
  • Betriebssystem und Kanal (einschließlich ACS)
  • Maximale Anzahl der zulässigen Clients
  • Wert für das Zeitlimit für das automatische Herunterfahren
  • Mit einer Zulassungsliste und einer Sperrliste können Nutzer verbundene Geräte steuern
  • Ebene der MAC-Randomisierung für die AP-BSSID
  • 802.11ax und 802.11be

Ob diese Steuerelemente verfügbar sind, hängt von den Gerätefunktionen ab. In Android 11 werden APIs eingeführt, um diese Funktionen zu erhalten. Gerätehersteller können auch grundlegende Gerätefunktionen mithilfe von Overlays festlegen.

Beachten Sie, dass einige der APIs System-APIs sind und durch Berechtigungen eingeschränkt sind, sodass nur die Anwendung „Einstellungen“ des Systems darauf zugreifen kann.

Anwendungen mit Hotspot-APIs entwickeln

Eine Standardimplementierung eines per Tethering angeschlossenen WLAN-Hotspots wird von der App AOSP-Einstellungen bereitgestellt. Sie verwendet jedoch nicht alle APIs für die Soft-AP-Konfiguration.

Die Anwendung muss die folgenden Funktionen ausführen, um Tethering über einen Hotspot oder einen nur lokalen Hotspot zu unterstützen:

  1. Registrieren Sie einen Callback, um die Gerätefunktionen zu erhalten. Verwenden Sie dazu WifiManager#registerSoftApCallback für einen Tethering-Hotspot oder WifiManager#registerLocalOnlyHotspotSoftApCallback für einen nur lokalen Hotspot.

    Der SoftApCallback-Callback bietet die folgenden Methoden:

    • SoftApCallback#onCapabilityChanged: Liefert Informationen zu Gerätefunktionen, einschließlich der maximalen Anzahl von unterstützten Clients und ob SAE oder ACS unterstützt werden.
    • SoftApCallback#onInfoChanged: Liefert Informationen zum ausgeführten weichen ZP (nur nach dem Start gültig), einschließlich Informationen zum Band und zur Frequenz.
    • SoftApCallback#onConnectedClientsChanged: stellt eine Liste der verbundenen Clients bereit. Für jeden Client können Sie die MAC-Adresse abrufen. Verwenden Sie den Callback TetheringEventCallback#onClientsChanged, um die IP-Informationen abzurufen.
    • SoftApCallback#onStateChanged: Liefert aktuelle Informationen zum Status des weichen ZPs, sobald er aktiviert und deaktiviert wird.
    • SoftApCallback#onBlockedClientConnecting: Gibt die Informationen zum blockierten Client mit einem der folgenden Gründe für die Blockierung an: Das Gerät hat die maximale Anzahl von Clients erreicht, die unterstützt werden können, oder der Client ist nicht explizit autorisiert, eine Verbindung herzustellen.

Für einen Tethering-Hotspot:

  1. Konfigurieren Sie die Soft-AP-Konfiguration für Tethering. Rufen Sie dazu die Methode WifiManager#setSoftApConfiguration auf und geben Sie eine SoftApConfiguration-Instanz an. Erstellen Sie SoftApConfiguration mit der Klasse SoftApConfiguration.Builder.
  2. Starten Sie das Tethering, indem Sie die Tethering-Methode unter TetheringManager#startTethering aufrufen.

Für reinen lokalen Hotspot:

  1. Starten Sie den nur lokalen Hotspot mit einer bestimmten weichen ZP-Konfiguration. Rufen Sie dazu die Methode WifiManager#startLocalOnlyHotspot auf.

Zulassungs- und Sperrlisten implementieren

Eine typische Anforderung des Mobilfunkanbieters besteht darin, dem Nutzer die Kontrolle über die Geräte zu geben, die mit dem Soft-Zugangspunkt verknüpft werden dürfen. Dafür gibt es mehrere Methoden:

  • Begrenzen Sie die maximale Anzahl von Geräten, die mit dem Soft-AP verknüpft werden können, mit SoftApConfiguration.Builder#setMaxNumberOfClients. Die Anzahl muss niedriger sein als die maximale Anzahl der vom Gerät unterstützten Clients. Die maximale Anzahl erhalten Sie unter SoftApCapability#getMaxSupportedClients.
  • Dynamische Kontrolle über Zulassungs- und Sperrlisten ermöglichen:

    • Die Standardkonfiguration eines Soft-AP ermöglicht es allen Geräten, mit dem Soft-AP eine Verbindung herzustellen, mit Ausnahme von Geräten, deren MAC-Adressen zu SoftApConfiguration.Builder#setBlockedClientList hinzugefügt werden.
    • Wenn der Soft-Zugangspunkt mit SoftApConfiguration.Builder#setClientControlByUserEnabled(true) konfiguriert ist, wird die Zulassungsliste verwendet.

      • Die Verknüpfung aller Geräte mit der MAC-Adresse SoftApConfiguration.Builder#setBlockedClientList wird blockiert.
      • Die Verknüpfung ist für alle Geräte zulässig, deren MAC-Adressen sich in SoftApConfiguration.Builder#setAllowedClientList befinden.
      • Alle anderen Geräte (d. h. Geräte, deren MAC-Adressen nicht auf der Zulassungs- oder Sperrliste stehen) werden nicht verknüpft, aber SoftApCallback#onBlockedClientConnecting wird aufgerufen. Dadurch kann die steuernde App (d. h. die App „Einstellungen“) eine Aktion ausführen, z. B. den Nutzer um Bestätigung bitten und das Gerät dann je nach Verhalten des Nutzers der Zulassungsliste oder Sperrliste hinzufügen.

    Hinweis: Die Zulassungsliste kann nur verwendet werden, wenn sie auf dem Gerät unterstützt wird. Sie können die Geräteunterstützung mit SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) prüfen.

Implementierung

Um Tethering über einen Hotspot oder einen nur lokalen Hotspot zu unterstützen, müssen Gerätehersteller die App „Einstellungen“, das Framework und die HAL/Firmware unterstützen:

  • App „Einstellungen“: Die App „AOSP Settings“ bietet eine Grundlage für die Konfiguration eines Tethering-Hotspots mit SSID und Sicherheitsanmeldedaten. Dieser Code kann unverändert verwendet oder geändert werden, um zusätzliche Funktionen bereitzustellen, wie unter Anwendungen mit Hotspot-APIs entwickeln beschrieben.

  • Framework:Der AOSP-Frameworkcode unterstützt alle Funktionen, die unter Apps mit Hotspot-APIs entwickeln beschrieben werden.

  • HAL/Firmware für Hotspot:Entspricht HIDL IHostapd.hal Version 1.2 oder höher oder AIDL IHostapd.aidl.

Personalisierung

Um die Implementierung anzupassen, sollten Gerätehersteller die folgenden Overlays und Mobilfunkanbieter-Konfigurationen konfigurieren, die in packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml dokumentiert sind:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: Das standardmäßige Zeitlimit für das Herunterfahren. Nur gültig, wenn SoftApConfiguration#setAutoShutdownEnabled aktiviert ist. Kann mit SoftApConfiguration#setShutdownTimeoutMillis überschrieben werden.
  • config_wifiHardwareSoftapMaxClientCount: Die Hardwarebeschränkung für die maximale Anzahl unterstützter Clients. Die maximale Anzahl von Clients, die das Gerät unterstützt, entspricht der Mindestanzahl der Hardware- und Mobilfunkanbieter-Einschränkungen (angegeben durch CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Das Endergebnis wird der App mit SoftApCapabilities#getMaxSupportedClients bereitgestellt.
  • config_wifiSofapClientForceDisconnectSupported: Gibt an, ob das Gerät das Trennen eines Clients erzwingen kann. Erforderlich, um Zulassungs- und Sperrlisten zu aktivieren. Wird über SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) an die steuernde App (App „Einstellungen“) kommuniziert.
  • (Verfügbar ab 13) config_wifiSoftapPassphraseAsciiEncodableCheck: Gibt an, ob die weiche AP-Passphrase in ASCII codieren kann.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Gibt an, ob während der Wiederherstellung der Cloud-Konfiguration die Bandeinstellungskonfiguration automatisch auf Dualband aktualisiert werden soll, wenn ein neues Gerät unterstützt wird.
  • (Verfügbar ab 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Gibt an, ob das Framework automatisch niedrigere Bänder an die Bandkonfiguration anfügt, um die Koexistenz zu vermeiden.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: Gibt an, ob die dynamische Aktualisierung des Ländercodes im AP-Modus auf dem Gerät unterstützt wird
  • Kanalunterstützung: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList und config_wifiSoftap60gChannelList.
  • Unterstützung beim Wiederherstellen der Angabe, ob die entsprechenden Einträge auf die Standardeinstellungen zurückgesetzt werden, wenn die Hotspot-Konfiguration auf einem neuen Gerät wiederhergestellt wird: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. Diese sind standardmäßig auf true gesetzt, d. h., die Werte werden zurückgesetzt. Das ist wichtig, wenn das neue Gerät diese Konfiguration nicht unterstützt.
  • Hardwarefunktionen:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Erhältlich ab 13) config_wifiSoftapOweTransitionSupported
    • (Erhältlich ab 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Erhältlich ab 13) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Zertifizierungsstufe

Android bietet eine Reihe von Unit- und CTS-Tests (Compatibility Test Suite), um das Hotspot-Feature zu validieren. Die Hotspot-Funktion kann auch mit der Vendor Test Suite (VTS) getestet werden.

Einheitentests

Prüfen Sie das Hotspot-Paket mit den folgenden Tests.

  • Diensttests:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Tests für Manager:

    atest packages/modules/Wifi/framework/tests/
    

CTS-Tests (Compatibility Test Suite)

Verwenden Sie CTS-Tests, um die Hotspot-Funktion zu prüfen. CTS erkennt, wann die Funktion aktiviert ist, und schließt die zugehörigen Tests automatisch ein.

Führen Sie folgenden Befehl aus, um die CTS-Tests auszulösen:

atest android.net.wifi.cts.WifiManagerTest

Anbieter-Test-Suite (VTS)

Wenn die HIDL-Schnittstelle implementiert ist, führe folgenden Befehl aus:

atest VtsHalWifiHostapdV1_2Target

Wenn die AIDL-Schnittstelle implementiert ist, führen Sie Folgendes aus:

atest VtsHalHostapdTargetTest