Condividi tramite


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:

  1. Eseguire query e impostare la radio cellulare.
  2. 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

Diagramma di flusso che mostra il controllo radio da WwanSvc all'hardware modem.

SET Radio tramite l'API WwanSvc

Diagramma di flusso che illustra il processo di radio SET tramite l'API WwanSvc.

Stato radio iniziale all'arrivo del dispositivo

Diagramma di flusso che illustra lo stato di 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.

Vedere anche

OID_WWAN_RADIO_STATE