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:
- Abfragen und Festlegen des Mobilfunks.
- 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
SET-Funk über WwanSvc-API
Anfänglicher Funkzustand bei Der Geräteeinkunft
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.