Estado da Rádio MB
Visão geral
Este tópico descreve as operações usadas para definir e ler os estados de energia de rádio de um dispositivo MB. Esses estados podem ser controlados por meio de software (modo avião) ou hardware (se a opção apropriada estiver presente). Este tópico explica como os estados de energia de rádio são controlados, como testar a funcionalidade de estado de energia de rádio e como investigar problemas de estado de energia de rádio.
Terminologia
Estado da Rádio do Sistema – O Estado de Rádio do Sistema é um estado em todo o sistema. É o indicador mais evidente do estado do modo avião. O Estado da Rádio do Sistema é gerenciado pelo RmSvc (Serviço de Gerenciamento de Rádio).
Radio Manager – O RmSvc itera vários RadioManagers (MediaManagers) no sistema, como WlanRadioManager, BlueTooth e WwanRadioManager. WwanRadioManager(.lib) é hospedado em RmSvc.dll e gerencia o lado wwan da lógica de rádio. WwanRadioManager usa o RPC do WWAN Service (WwanSvc) para:
- Consultar e definir o rádio celular.
- Controlar o fluxo antes e depois do modo avião.
Instância de Rádio – cada RadioManager pode incluir várias instâncias de rádio. Por exemplo, WwanRadioManager poderá ter duas instâncias de rádio se houver dois modems celulares no sistema. Cada instância de rádio é um objeto abstrato e deve ser mapeada para um módulo de rádio de hardware. Na maioria dos casos, cada instância de rádio é mapeada para um modem celular.
Serviços e drivers relevantes
RmSvc.dll – gerencia eventos de rádio em todo o sistema, como o modo avião. Ele também hospeda todos os gerentes de rádio, incluindo WwanRadioManager.
WwanSvc.dll – os modems celulares são gerenciados pelo WwanSvc. Portanto, os comandos (OID/CID) são emitidos por meio do WwanSvc. Solicitações externas do RmSvc ou de outros componentes (interface do usuário) passam pelo RPC WwanSvc para consultar ou definir o estado de rádio celular.
MbbCx.sys – o driver de modo kernel que gerencia o estado de energia do dispositivo, especialmente entre a transição D0 e Dx. Em algumas configurações do sistema, o dispositivo tem permissão para fazer a transição para o estado Dx e se recuperar para D0 somente quando necessário. MbbCx.sys gerencia a lógica e o controle da recuperação de estado de rádio antes de D0 e Dx.
Arquitetura/fluxos
Controle de rádio do WwanSvc para o Modem Hardware
SET Radio via WwanSvc API
Estado de rádio inicial na chegada do dispositivo
MBIM_CID_RADIO_STATE
Conforme visto nos diagramas acima, o CID usado em operações de modo avião é MBIM_CID_RADIO_STATE. Esse CID define ou retorna informações sobre o estado de energia de rádio de um dispositivo MB.
Consulta
O InformationBuffer no MBIM_COMMAND_MSG não é usado. MBIM_RADIO_STATE_INFO é retornado no InformationBuffer do MBIM_COMMAND_DONE.
Definir
O InformationBuffer no MBIM_COMMAND_MSG contém MBIM_SET_RADIO_STATE. MBIM_RADIO_STATE_INFO é retornado no InformationBuffer do MBIM_COMMAND_DONE.
Evento não solicitado
O InformationBuffer do Evento contém uma estrutura MBIM_RADIO_STATE_INFO.
Parâmetros
Definir | Consulta | Notificação | |
---|---|---|---|
Comando | MBIM_SET_RADIO_STATE | Vazio | N/D |
Resposta | MBIM_RADIO_STATE_INFO | MBIM_RADIO_STATE_INFO | MBIM_RADIO_STATE_INFO |
estruturas de dados
Definir
Deslocamento | Tamanho | Campo | Type | Descrição |
---|---|---|---|---|
0 | 4 | RadioState | MBIM_RADIO_SWITCH_STATE | Define o estado de rádio controlado pelo software. Consulte a tabela abaixo. |
MBIM_RADIO_SWITCH_STATE
Tipos | Valor |
---|---|
MBIMRadioOff | 0 |
MBIMRadioOn | 1 |
Consulta
O InformationBuffer será nulo e InformationBufferLength será zero.
Resposta
MBIM_RADIO_STATE_INFO
Deslocamento | Tamanho | Campo | Type | Descrição |
---|---|---|---|---|
0 | 4 | HwRadioState | MBIM_RADIO_SWITCH_STATE | O estado da opção W_DISABLE. Se o dispositivo não tiver uma opção W_DISABLE, a função deverá retornar MBIMRadioOn nesse campo. |
4 | 4 | SwRadioState | MBIM_RADIO_SWITCH_STATE | Estado de rádio configurado pelo software. |
Notificação
Consulte a tabela MBIM_RADIO_STATE_INFO acima.
Códigos de status
Esse CID usa apenas códigos de status genéricos.
Testando
Testes de rádio celular
Nome da função | Description |
---|---|
CellularRadioWinrtTest::VerifyCellularModemExistence | Assert winrt api can query cellular modem and radio state |
CellularRadioWinrtTest::VerifyCellularRadioToggle | Assert winrt api can toggle radio state on each wwan adapter |
CellularRadioRecoveryTest::VerifyCellularRadioRecoveryToOnAfterAPM | Os estados de rádio da rede celular assert são recuperados para Ativado ao sair do Modo Avião |
CellularRadioRecoveryTest::VerifyCellularRadioRecoveryToOffAfterAPM | Estados de rádio da rede celular Assert permanecem desativados ao sair do Modo Avião |
CellularRadioRecoveryTest::VerifyCellularRadioAcrossSvcRestart | Declarar estados de rádio celular permanecem consistentes na reinicialização do WwanSvc |
CellularRadioRecoveryTest::VerifyCellularRadioAcrossDevNodePnp | Afirmar que os estados de rádio celular permanecem consistentes durante a chegada/remoção do dispositivo |
CellularRadioTest.dll contém esses testes.
Testes do HLK (Hardware Lab Kit)
Consulte Etapas para instalar o HLK.
No HLK Studio, conecte-se ao driver de modem celular do dispositivo e execute estes testes:
Como alternativa, você pode executar a lista de testes TestRadioStateHardware e TestRadioStateSoftware HLK por 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"
Os dois arquivos que mostram os resultados do teste HLK devem ter sido gerados no diretório do qual o comando 'netsh mbn test' foi executado: TestRadioStateSoftware.htm
e TestRadioStateHardware.htm
.
Os logs podem ser coletados e decodificados usando estas instruções: MB Coletando logs.
Analisando logs
Palavras-chave/regexp úteis para filtrar rastreamentos
OID_WWAN_RADIO_STATE
CWwanRadioInstance::OnSysRadioChange
Inserindo CUIRadioManager::_SetSysRadio
Saindo de CUIRadioManager::_SetSysRadio
CWwanRadioInstance::_SetSoftwareRadioState
[WwanRadioManager]
PostD0Entry: previousPowerState
CWwanRadioManager::OnSystemRadioStateChange(.) +sysradiostate
RMAPI(.) +OnSystemRadioStateChange
RMAPI(.) +OnSystemRadioStateChange
Wwan-svc(.) +rádio
mbbcx(.) +rádio
Dicas de investigação
- Identifique se esse é um problema de rádio global (em todo o sistema) ou local (somente celular).
- Diferenciar o estado de energia do dispositivo (D0-Dx) do estado de rádio. São conceitos diferentes, mas altamente correlacionados.
- Verifique se os provedores ETW necessários estão incluídos no log.
- Restrinja a área usando o cenário . Por exemplo:
- Se estiver relacionado ao modo avião, concentre-se em RmSvc e WwanRadioManager.
- Se estiver relacionado a D0-Dx<, hibernação ou transições de suspensão, concentre-se> em MBBCx.
- Se estiver relacionado a exibições de interface do usuário ou estado fora de sincronização, comece com WwanSvc.
API do WinRT
Windows.Devices.Radios
Windows.Devices.Radios pertence ao Serviço de Gerenciamento de Rádio que gerencia todos os gerenciadores de rádio e instâncias. Para o lado WWAN, o RadioKind é RadioKind::MobileBroadband.
- GetRadiosAsync( )
- SetStateAsync( )
{1>{2>Windows.Networking.NetworkOperators<2}<1}
Página de documentação do Windows.Networking.NetworkOperators
O único utilitário útil nesse namespace para gerenciamento de rádio é MobileBroadbandDeviceInformation.CurrentRadioState.