WLAN-Hotspot (Soft-AP)

Android unterstützt WLAN-Hotspots (Soft-AP), einschließlich Tethering über einen WLAN-Hotspot und lokal begrenzte WLAN-Hotspots.

Mit der Soft-AP-Funktion können Sie Folgendes konfigurieren:

  • SSID und BSSID
  • Sicherheitstyp (einschließlich WPA3)
  • Ausgeblendete SSID
  • Betriebsband und -kanal (einschließlich ACS)
  • Maximale Anzahl zulässiger Clients
  • Wert für die Zeitüberschreitung beim automatischen Herunterfahren
  • Zulassungs- und Sperrlisten, um Nutzern die Kontrolle über zugehörige Geräte zu ermöglichen
  • MAC-Zufallsmix für die BSSID des ZP
  • 802.11ax und 802.11be

Die Verfügbarkeit dieser Steuerelemente hängt von den Gerätefunktionen ab. Android 11 bietet APIs, mit denen Sie diese Funktionen nutzen können. Gerätehersteller können auch Basisgerätefunktionen mithilfe von Overlays angeben.

Einige der APIs sind System-APIs und werden durch Berechtigungen eingeschränkt, sodass nur die Einstellungen-App des Systems darauf zugreifen kann.

Apps mit Hotspot-APIs entwickeln

Die AOSP-Einstellungen-App bietet eine Standardimplementierung eines Tethered-WLAN-Hotspots. Allerdings werden dabei nicht alle APIs für die Soft-AP-Konfiguration verwendet.

Damit Tethering über einen Hotspot oder einen lokal begrenzten Hotspot unterstützt wird, muss die App die folgenden Funktionen ausführen:

  1. Registriere einen Rückruf, um die Gerätefunktionen zu erhalten. Verwende dazu WifiManager#registerSoftApCallback für einen Hotspot mit Tethering oder WifiManager#registerLocalOnlyHotspotSoftApCallback für einen lokalen Hotspot.

    Der SoftApCallback-Callback bietet die folgenden Methoden:

    • SoftApCallback#onCapabilityChanged: Bietet Informationen zu den Gerätefunktionen, einschließlich der maximalen Anzahl unterstützter Clients und ob SAE oder ACS unterstützt werden.
    • SoftApCallback#onInfoChanged: Bietet Informationen zum laufenden Soft-AP (nur gültig, wenn es gestartet wurde), einschließlich Band- und Frequenzinformationen.
    • SoftApCallback#onConnectedClientsChanged: Liste der verbundenen Clients. Sie können für jeden Client die MAC-Adresse abrufen. Verwende den TetheringEventCallback#onClientsChanged-Callback, um die IP-Informationen abzurufen.
    • SoftApCallback#onStateChanged: Gibt Informationen zum Status des Soft-APs an, wenn es aktiviert oder deaktiviert wird.
    • SoftApCallback#onBlockedClientConnecting: Gibt einen der folgenden Gründe für die Blockierung des Clients an: Auf dem Gerät wurde die maximale Anzahl von Clients erreicht, die es unterstützen kann, oder der Client ist nicht ausdrücklich für die Verbindung autorisiert.

Für einen Hotspot mit Tethering:

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

Nur für lokalen Hotspot:

  1. Starten Sie den lokalen Hotspot mit einer bestimmten Soft-AP-Konfiguration, indem Sie die Methode WifiManager#startLocalOnlyHotspot aufrufen.

Zulassungs- und Sperrlisten implementieren

Eine typische Anforderung von Mobilfunkanbietern besteht darin, dass Nutzer die Geräte steuern können, die mit dem Soft-AP verbunden werden dürfen. Dazu gibt es mehrere Mechanismen:

  • Begrenzen Sie mit SoftApConfiguration.Builder#setMaxNumberOfClients die maximale Anzahl der Geräte, die mit dem Soft-Zugangspunkt verknüpft werden können. Geben Sie eine Zahl an, die kleiner als die vom Gerät unterstützte maximale Anzahl von Clients ist. Die maximale Anzahl erhalten Sie von SoftApCapability#getMaxSupportedClients.
  • Dynamische Steuerung mit Zulassungs- und Sperrlisten:

    • Bei der Standardkonfiguration eines Soft-AP können sich alle Geräte mit dem Soft-AP verbinden, mit Ausnahme von Geräten, deren MAC-Adressen SoftApConfiguration.Builder#setBlockedClientList hinzugefügt wurden.
    • Wenn das Soft-AP mit SoftApConfiguration.Builder#setClientControlByUserEnabled(true) konfiguriert ist, wird die Zulassungsliste verwendet.

      • Die Verknüpfung aller Geräte, deren MAC-Adressen in SoftApConfiguration.Builder#setBlockedClientList enthalten sind, wird blockiert.
      • Alle Geräte, deren MAC-Adressen in SoftApConfiguration.Builder#setAllowedClientList enthalten sind, können zugeordnet werden.
      • Alle anderen Geräte (d. h. Geräte, deren MAC-Adressen nicht in der Zulassungs- oder Sperrliste stehen) können nicht zugeordnet werden, aber SoftApCallback#onBlockedClientConnecting wird aufgerufen. So kann die steuernde App (d. h. die Einstellungen App) eine Aktion ausführen, z. B. den Nutzer um Bestätigung bitten und das Gerät dann je nach Nutzerverhalten der Zulassungs- oder Sperrliste hinzufügen.

    Die Funktion „Zulassungsliste“ kann nur auf Geräten verwendet werden, auf denen sie 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 lokal begrenzten Hotspot zu unterstützen, müssen Gerätehersteller die Einstellungen-App, das Framework und die HAL/Firmware unterstützen:

  • Einstellungen-App:Die AOSP-Einstellungen-App bietet eine Baseline für die Konfiguration eines Tethering-Hotspots mit SSID und Sicherheitsanmeldedaten. Dieser Code kann unverändert verwendet oder so modifiziert werden, dass zusätzliche Funktionen zur Verfügung stehen, wie im Artikel Apps mit Hotspot-APIs entwickeln beschrieben.

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

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

Personalisierung

Zur Anpassung der Implementierung sollten Gerätehersteller die folgenden Overlays und Mobilfunkanbieterkonfigurationen konfigurieren, die in packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml dokumentiert sind:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: Das Standard-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, ist das Minimum der Hardware- und Mobilfunkanbietereinschränkungen (durch CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT angegeben). Das Endergebnis wird der App mit SoftApCapabilities#getMaxSupportedClients zur Verfügung gestellt.
  • config_wifiSofapClientForceDisconnectSupported: Gibt an, ob das Gerät die Möglichkeit hat, die Verbindung eines Clients zu trennen. Erforderlich, um Zulassungs- und Sperrlisten zu aktivieren. Wird über SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) an die steuernde App (Einstellungen) gesendet.
  • (Verfügbar ab Version 13) config_wifiSoftapPassphraseAsciiEncodableCheck: Gibt an, ob die Passphrase des Soft-APs in ASCII codiert werden muss.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Gibt an, ob die Bandeinstellung während der Wiederherstellung der Cloud-Konfiguration automatisch auf Dualband umgestellt werden soll, wenn ein neues Gerät unterstützt wird.
  • (Verfügbar ab Version 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: ob das Framework automatisch niedrigere Bänder an die Bandkonfiguration anhängt, um die gemeinsame Nutzung zu vermeiden.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: Ob die dynamische Aktualisierung des Landescodes im AP-Modus auf dem Gerät unterstützt wird
  • Kanalunterstützung: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList und config_wifiSoftap60gChannelList
  • Unterstützung für die Wiederherstellung aktivieren und angeben, ob die entsprechenden Einträge bei der Wiederherstellung der Hotspot-Konfiguration auf einem neuen Gerät auf die Standardwerte zurückgesetzt werden sollen: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. Standardmäßig sind diese auf true festgelegt, d. h., die Werte werden zurückgesetzt. Das ist wichtig, wenn das neue Gerät die Konfiguration nicht unterstützt.
  • Hardwarefunktionen:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Verfügbar ab 13 Jahren) config_wifiSoftapOweTransitionSupported
    • (Verfügbar ab 13 Jahren) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Verfügbar ab 13 Jahren) 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-Tests und CTS-Tests (Compatibility Test Suite), um die Hotspot-Funktion zu validieren. Die Hotspot-Funktion kann auch mit der Vendor Test Suite (VTS) getestet werden.

Unit tests

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

  • Diensttests:

    atest packages/modules/Wifi/service/tests/wifitests/
  • Manager tests:

    atest packages/modules/Wifi/framework/tests/

Compatibility Test Suite (CTS)-Tests

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

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

atest android.net.wifi.cts.WifiManagerTest

Vendor Test Suite (VTS)

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

atest VtsHalWifiHostapdV1_2Target

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

atest VtsHalHostapdTargetTest