Freigeben über


MB-Funkzustand

Übersicht

In diesem Thema werden die Vorgänge beschrieben, die zum Festlegen und Lesen des Funkleistungszustands eines MB-Geräts verwendet werden. Diese Zustände können über Software (Flugzeugmodus) oder Hardware (wenn der entsprechende Schalter vorhanden ist) gesteuert werden. In diesem Thema wird erläutert, wie die Funkleistungszustände gesteuert werden, wie die Funkleistungszustandsfunktionen getestet und Probleme mit dem Funkstromzustand untersucht werden.

Begriff

Systemfunkzustand : Der Systemfunkzustand ist ein systemweiter Zustand. Es ist der offensichtlichste Indikator für den Zustand des Flugzeugmodus. Der Systemfunkstatus wird vom Funkverwaltungsdienst (RmSvc) verwaltet.

Radio Manager - RmSvc durchläuft mehrere RadioManager (MediaManagers) im System wie WlanRadioManager, BlueTooth und WwanRadioManager. WwanRadioManager(.lib) wird in RmSvc.dll gehostet und verwaltet die wwan-Seite der Funklogik. WwanRadioManager verwendet den WWAN-Dienst (WwanSvc) RPC für Folgendes:

  1. Abfragen und Festlegen des Mobilfunks.
  2. Steuern Sie den Fluss vor und nach dem Flugzeugmodus.

Radio-Instanz : Jeder RadioManager kann mehrere Funkinstanzen enthalten. Beispielsweise kann WwanRadioManager über zwei Funkinstanzen verfügen, wenn zwei Mobilfunkmodems im System vorhanden sind. Jedes Funkgerät instance ist ein abstraktes Objekt und sollte einem Hardwarefunkmodul zugeordnet werden. In den meisten Fällen wird jedes Funkgerät instance einem Mobilfunkmodem zugeordnet.

Relevante Dienste und Treiber

RmSvc.dll : Verwaltet systemweite Funkereignisse wie den Flugzeugmodus. Es beherbergt auch alle Radiomanager, einschließlich WwanRadioManager.

WwanSvc.dll : Mobilfunkmodems werden von WwanSvc verwaltet. Daher werden Befehle (OID/CID) über WwanSvc ausgegeben. Externe Anforderungen von RmSvc oder anderen Komponenten (UI) werden über den WwanSvc-RPC gesendet, um den Funkstatus abzufragen oder festzulegen.

MbbCx.sys : Der Kernelmodustreiber, der den Energiezustand des Geräts vor allem zwischen D0 und Dx verwaltet. Bei einigen Systemsetups kann das Gerät nur bei Bedarf in den Dx-Zustand wechseln und in D0 wiederherstellen. MbbCx.sys verwaltet die Logik und Steuerung der Wiederherstellung des Funkzustands vor D0 und Dx.

Architektur/Flows

Funksteuerung von WwanSvc zu Modemhardware

Flussdiagramm mit Funksteuerung von WwanSvc zu Modemhardware.

SET-Funk über WwanSvc-API

Flussdiagramm zur Veranschaulichung des SET-Funkprozesses über die WwanSvc-API.

Anfänglicher Funkzustand bei Der Geräteeinkunft

Flussdiagramm, das den anfänglichen Funkzustand bei der Geräteeinkunft darstellt.

MBIM_CID_RADIO_STATE

Wie in den obigen Diagrammen gezeigt, ist die CID, die im Flugzeugmodus verwendet wird , MBIM_CID_RADIO_STATE. Diese CID legt Informationen über den Funkleistungszustand eines MB-Geräts fest oder gibt diese zurück.

Abfrage

Der InformationBuffer auf MBIM_COMMAND_MSG wird nicht verwendet. MBIM_RADIO_STATE_INFO wird im InformationBuffer von MBIM_COMMAND_DONE zurückgegeben.

Set

Der InformationBuffer auf MBIM_COMMAND_MSG enthält MBIM_SET_RADIO_STATE. MBIM_RADIO_STATE_INFO wird im InformationBuffer von MBIM_COMMAND_DONE zurückgegeben.

Nicht angefordertes Ereignis

Der Event InformationBuffer enthält eine MBIM_RADIO_STATE_INFO-Struktur.

Parameter

Set Abfrage Benachrichtigung
Befehl MBIM_SET_RADIO_STATE Empty
Antwort MBIM_RADIO_STATE_INFO MBIM_RADIO_STATE_INFO MBIM_RADIO_STATE_INFO

Datenstrukturen

Set

Offset Size Feld type Beschreibung
0 4 RadioState MBIM_RADIO_SWITCH_STATE Legt den softwaregesteuerten Funkzustand fest. Siehe dazu die folgende Tabelle.

MBIM_RADIO_SWITCH_STATE

Typen Wert
MBIMRadioOff 0
MBIMRadioOn 1

Abfrage

Der InformationBuffer ist NULL und InformationBufferLength ist null.

Antwort

MBIM_RADIO_STATE_INFO

Offset Size Feld type Beschreibung
0 4 HwRadioState MBIM_RADIO_SWITCH_STATE Der Zustand des W_DISABLE Schalters. Wenn das Gerät keinen W_DISABLE Schalter hat, muss die Funktion MBIMRadioOn in diesem Feld zurückgeben.
4 4 SwRadioState MBIM_RADIO_SWITCH_STATE Softwarekonfiguriertes Funkzustand.

Benachrichtigung

Siehe MBIM_RADIO_STATE_INFO Tabelle oben.

Statuscodes

Diese CID verwendet nur generische Statuscodes.

Testen

Mobilfunktests

Funktionsname Beschreibung
CellularRadioWinrtTest::VerifyCellularModemExistence Assert winrt API kann Mobilfunkmodem und Funkzustand abfragen
CellularRadioWinrtTest::VerifyCellularRadioToggle Assert winrt api can umschalt radio state on each wwan adapter
CellularRadioRecoveryTest::VerifyCellularRadioRecoveryToOnAfterAPM Behaupten von Mobilfunkzuständen werden auf Ein wiederhergestellt, wenn sie den Flugzeugmodus verlassen
CellularRadioRecoveryTest::VerifyCellularRadioRecoveryToOffAfterAPM Bestätigen von Mobilfunkzuständen bleiben deaktiviert, wenn sie den Flugzeugmodus verlassen
CellularRadioRecoveryTest::VerifyCellularRadioAcrossSvcRestart Sicherstellen, dass Mobilfunkzustände über den WwanSvc-Neustart konsistent bleiben
CellularRadioRecoveryTest::VerifyCellularRadioAcrossDevNodePnp Sicherstellen, dass Mobilfunkzustände über die Geräteein- bzw. -entfernung hinweg konsistent bleiben

CellularRadioTest.dll enthält diese Tests.

HlK-Tests (Hardware Lab Kit)

Weitere Informationen finden Sie unter Schritte zum Installieren von HLK.

Stellen Sie in HLK Studio eine Verbindung mit dem Mobilfunkmodemtreiber des Geräts her, und führen Sie die folgenden Tests aus:

Alternativ können Sie die TestRadioStateHardware - und TestRadioStateSoftwareHLK-Testlist von netsh-mbn und netsh-mbn-test-installation ausführen.

netsh mbn test feature=radio testpath="C:\data\test\bin" taefpath="C:\data\test\bin" param="AccessString=internet"

Die beiden Dateien mit den HLK-Testergebnissen sollten in dem Verzeichnis generiert werden, in dem der Befehl "netsh mbn test" ausgeführt wurde: TestRadioStateSoftware.htm und TestRadioStateHardware.htm.

Protokolle können mithilfe der folgenden Anweisungen gesammelt und decodiert werden: MB-Sammlungsprotokolle.

Analysieren von Protokollen

Nützliche Schlüsselwörter/regexp zum Filtern von Ablaufverfolgungen

  • OID_WWAN_RADIO_STATE

  • CWwanRadioInstance::OnSysRadioChange

  • Eingeben von CUIRadioManager::_SetSysRadio

  • CuIRadioManager verlassen::_SetSysRadio

  • CWwanRadioInstance::_SetSoftwareRadioState

  • [WwanRadioManager]

  • PostD0Entry: previousPowerState

  • CWwanRadioManager::OnSystemRadioStateChange(.) +sysradiostate

  • RMAPI(.) +OnSystemRadioStateChange

  • RMAPI(.) +OnSystemRadioStateChange

  • Wwan-svc(.) +Radio

  • mbbcx(.) +Radio

Tipps zur Untersuchung

  • Ermitteln Sie, ob es sich um ein globales (systemweites) oder lokales (nur mobilfunkbasiertes) Funkproblem handelt.
  • Unterscheiden Sie den Geräteleistungszustand (D0-Dx) vom Funkzustand. Sie sind unterschiedliche Konzepte, aber stark korreliert.
  • Stellen Sie sicher, dass die erforderlichen ETW-Anbieter im Protokoll enthalten sind.
  • Schränken Sie den Bereich mithilfe des Szenarios ein. Beispiel:
    • Wenn es sich um den Flugzeugmodus handelt, konzentrieren Sie sich auf RmSvc und WwanRadioManager.
    • Wenn es sich auf D0-Dx<>, Ruhezustand oder Ruhezustandsübergänge bezieht, konzentrieren Sie sich auf MBBCx.
    • Wenn es sich auf Benutzeroberflächenanzeigen oder nicht synchronisierten Zustand bezieht, beginnen Sie mit WwanSvc.

WinRT-API

Windows.Devices.Radios

Windows.Devices.Radios ist im Besitz des Funkverwaltungsdiensts, der alle Funkmanager und -instanzen verwaltet. Für die WWAN-Seite ist radioKind::MobileBroadband.

  • GetRadiosAsync( )
  • SetStateAsync( )

Windows.Networking.NetworkOperators

Dokumentationsseite für Windows.Networking.NetworkOperators

Das einzige nützliche Hilfsprogramm unter diesem Namespace für die Funkverwaltung ist MobileBroadbandDeviceInformation.CurrentRadioState.

Weitere Informationen

OID_WWAN_RADIO_STATE