Compartilhar via


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:

  1. Consultar e definir o rádio celular.
  2. 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

Fluxograma mostrando o controle de rádio do WwanSvc para o hardware de modem.

SET Radio via WwanSvc API

Fluxograma ilustrando o processo de rádio SET por meio da API WwanSvc.

Estado de rádio inicial na chegada do dispositivo

Fluxograma ilustrando o 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.

Consulte Também

OID_WWAN_RADIO_STATE