Stato radio MB
Panoramica
In questo argomento vengono descritte le operazioni usate per impostare e leggere gli stati di alimentazione radio di un dispositivo MB. Questi stati possono essere controllati tramite software (modalità aereo) o hardware (se è presente il commutatore appropriato). Questo argomento illustra come gli stati di alimentazione radio sono controllati, come testare la funzionalità dello stato di alimentazione radio e come analizzare i problemi di stato di alimentazione radio.
Terminologia
System Radio State - System Radio State è uno stato a livello di sistema. È l'indicatore più evidente dello stato della modalità aereo. Lo stato radio del sistema è gestito dal servizio di gestione radio (RmSvc).
Radio Manager - RmSvc esegue l'iterazione di diverse RadioManager (MediaManagers) nel sistema come WlanRadioManager, BlueTooth e WwanRadioManager. WwanRadioManager(.lib) è ospitato in RmSvc.dll e gestisce il lato wwan della logica radio. WwanRadioManager usa il servizio WWAN (WwanSvc) RPC per:
- Eseguire query e impostare la radio cellulare.
- Controllare il flusso prima e dopo la modalità aereo.
Istanza radio : ogni RadioManager può includere più istanze radio. Ad esempio, WwanRadioManager può avere due istanze radio se nel sistema sono presenti due modem cellulari. Ogni istanza di radio è un oggetto astratto e deve eseguire il mapping a un modulo di radio hardware. Nella maggior parte dei casi, ogni istanza di radio esegue il mapping a un modem cellulare.
Servizi e driver pertinenti
RmSvc.dll - Gestisce eventi radio a livello di sistema come la modalità aereo. Ospita anche tutti i radio manager, tra cui WwanRadioManager.
WwanSvc.dll - I modem cellulari sono gestiti da WwanSvc. Pertanto, i comandi (OID/CID) vengono emessi tramite WwanSvc. Le richieste esterne da RmSvc o altri componenti (INTERFACCIA utente) passano tramite WwanSvc RPC per eseguire query o impostare lo stato di radio cellulare.
MbbCx.sys : driver in modalità kernel che gestisce lo stato di alimentazione del dispositivo soprattutto tra la transizione D0 e Dx. In alcune configurazioni di sistema, il dispositivo può passare allo stato Dx e ripristinare in D0 solo quando necessario. MbbCx.sys gestisce la logica e il controllo del ripristino dello stato radio prima di D0 e Dx.
Architettura/flussi
Controllo radio da WwanSvc all'hardware modem
SET Radio tramite l'API WwanSvc
Stato radio iniziale all'arrivo del dispositivo
MBIM_CID_RADIO_STATE
Come illustrato nei diagrammi precedenti, il CID usato nelle operazioni in modalità aereo è MBIM_CID_RADIO_STATE. Questo CID imposta o restituisce informazioni sullo stato di alimentazione radio di un dispositivo MB.
Query
InformationBuffer su MBIM_COMMAND_MSG non viene usato. MBIM_RADIO_STATE_INFO viene restituito nel MBIM_COMMAND_DONE InformationBuffer.
Set
InformationBuffer in MBIM_COMMAND_MSG contiene MBIM_SET_RADIO_STATE. MBIM_RADIO_STATE_INFO viene restituito nel MBIM_COMMAND_DONE InformationBuffer.
Evento non richiesto
Event InformationBuffer contiene una struttura MBIM_RADIO_STATE_INFO.
Parametri
Set | Query | Notifica | |
---|---|---|---|
Comando | MBIM_SET_RADIO_STATE | Empty | N/D |
Response. | MBIM_RADIO_STATE_INFO | MBIM_RADIO_STATE_INFO | MBIM_RADIO_STATE_INFO |
strutture di dati
Set
Offset | Dimensione | Campo | Tipo | Descrizione |
---|---|---|---|---|
0 | 4 | RadioState | MBIM_RADIO_SWITCH_STATE | Imposta lo stato di radio controllato dal software. Vedere la tabella seguente. |
MBIM_RADIO_SWITCH_STATE
Tipi | Valore |
---|---|
MBIMRadioOff | 0 |
MBIMRadioOn | 1 |
Query
InformationBuffer sarà null e InformationBufferLength sarà zero.
Risposta
MBIM_RADIO_STATE_INFO
Offset | Dimensione | Campo | Tipo | Descrizione |
---|---|---|---|---|
0 | 4 | HwRadioState | MBIM_RADIO_SWITCH_STATE | Stato dell'opzione di W_DISABLE. Se il dispositivo non ha un commutatore W_DISABLE, la funzione deve restituire MBIMRadioOn in questo campo. |
4 | 4 | SwRadioState | MBIM_RADIO_SWITCH_STATE | Stato radio configurato dal software. |
Notifica
Vedere la tabella MBIM_RADIO_STATE_INFO precedente.
Codici di stato
Questo CID usa solo codici di stato generici.
Test
Test radio cellulare
Nome funzione | Descrizione |
---|---|
CellularRadioWinrtTest::VerifyCellularModemExistence | Assert winrt API può eseguire query su modem cellulare e stato radio |
CellularRadioWinrtTest::VerifyCellularRadioToggle | L'API Winrt assert può attivare/disattivare lo stato di radio in ogni scheda wwan |
CellularRadioRecoveryTest::VerifyCellRadioRecoveryToOnAfterAPM | Asserire gli stati di radio cellulare vengono ripristinati su Attivato quando si esce dalla modalità aereo |
CellularRadioRecoveryTest::VerifyCellRadioRecoveryToOffAfterAPM | Asserire gli stati di radio cellulare rimangono disattivati quando si lascia la modalità aereo |
CellularRadioRecoveryTest::VerifyCellRadioAcrossSvcRestart | Asserire gli stati di radio cellulare rimangono coerenti nel riavvio di WwanSvc |
CellularRadioRecoveryTest::VerifyCellRadioAcrossDevNodePnp | Asserire gli stati di radio cellulare rimangono coerenti con l'arrivo/rimozione del dispositivo |
CellularRadioTest.dll contiene questi test.
Test di Hardware Lab Kit (HLK)
Vedere Passaggi per l'installazione di HLK.
In HLK Studio connettersi al driver modem cellulare del dispositivo ed eseguire questi test:
In alternativa, è possibile eseguire l'elenco di test TestRadioStateHardware e TestRadioStateSoftware HLK da netsh-mbn e netsh-mbn-test-installation.
netsh mbn test feature=radio testpath="C:\data\test\bin" taefpath="C:\data\test\bin" param="AccessString=internet"
I due file che mostrano i risultati del test HLK dovrebbero essere stati generati nella directory da cui è stato eseguito il comando 'netsh mbn test': TestRadioStateSoftware.htm
e TestRadioStateHardware.htm
.
I log possono essere raccolti e decodificati seguendo queste istruzioni: MB Raccolta di log.
Analisi dei log
Parole chiave/regexp utili per filtrare le tracce
OID_WWAN_RADIO_STATE
CWwanRadioInstance::OnSysRadioChange
Immissione di CUIRadioManager::_SetSysRadio
Uscita da CUIRadioManager::_SetSysRadio
CWwanRadioInstance::_SetSoftwareRadioState
[WwanRadioManager]
PostD0Entry: previousPowerState
CWwanRadioManager::OnSystemRadioStateChange(.) +sysradiostate
RMAPI(.) +OnSystemRadioStateChange
RMAPI(.) +OnSystemRadioStateChange
Wwan-svc(.) +radio
mbbcx(.) +radio
Suggerimenti per l'indagine
- Identificare se si tratta di un problema radio globale (a livello di sistema) o locale (solo cellulare).
- Differenziare lo stato di alimentazione del dispositivo (D0-Dx) dallo stato radio. Sono concetti diversi, ma altamente correlati.
- Assicurarsi che i provider ETW necessari siano inclusi nel log.
- Restringere l'area usando lo scenario . Ad esempio:
- Se è correlata alla modalità aereo, concentrarsi su RmSvc e WwanRadioManager.
- Se è correlato alle transizioni D0-Dx<>, ibernazione o sospensione, concentrarsi su MBBCx.
- Se è correlato alla visualizzazione dell'interfaccia utente o allo stato non sincronizzato, iniziare con WwanSvc.
WinRT API
Windows.Devices.Radios
Windows.Devices.Radios è di proprietà del servizio di gestione radio che gestisce tutti i gestori radio e le istanze. Per il lato WWAN, RadioKind è RadioKind::MobileBroadband.
- GetRadiosAsync( )
- SetStateAsync( )
Windows.Networking.NetworkOperators
Pagina della documentazione di Windows.Networking.NetworkOperators
L'unica utilità utile in questo spazio dei nomi per la gestione della radio è MobileBroadbandDeviceInformation.CurrentRadioState.