MB 无线电状态

概述

本主题介绍用于设置和读取 MB 设备的无线电电源状态的操作 () 。 如果) 存在相应的开关,则可以通过软件 (飞行模式) 或硬件 (控制这些状态。 本主题说明如何控制无线电电源状态、如何测试无线电电源状态功能以及如何调查无线电电源状态问题。

术语

系统无线电状态 - 系统无线电状态是系统范围的状态。 它是飞行模式状态的最明显指标。 系统无线电状态由无线电管理服务 (RmSvc) 进行管理。

无线电管理器 - RmSvc 在 WlanRadioManager、BlueTooth 和 WwanRadioManager 等系统中) 循环访问多个 RadioManagers (MediaManagers。 WwanRadioManager (.lib) 托管在 RmSvc.dll 中,并管理无线电逻辑的 wwan 端。 WwanRadioManager 使用 WWAN 服务 (WwanSvc) RPC 来:

  1. 查询和设置手机网络无线电。
  2. 控制飞行模式前后的流。

单选实例 - 每个 RadioManager 可以包含多个单选实例。 例如,如果系统中有两个手机网络调制解调器,WwanRadioManager 可以有两个无线电实例。 每个无线电实例都是一个抽象对象,应映射到一个硬件无线电模块。 在大多数情况下,每个无线电实例映射到一个手机网络调制解调器。

相关服务和驱动程序

RmSvc.dll - 管理系统范围的无线电事件,如飞行模式。 它还托管所有无线电管理器,包括WwanRadioManager。

WwanSvc.dll - 手机网络调制解调器由 WwanSvc 管理。 因此, (OID/CID) 的命令通过 WwanSvc 发出。 来自 RmSvc 或其他组件 (UI 的外部请求) 通过 WwanSvc RPC 进行查询或设置手机网络无线电状态。

MbbCx.sys - 内核模式驱动程序,用于管理设备电源状态,尤其是在 D0 和 Dx 转换之间。 在某些系统设置中,允许设备转换到 Dx 状态,并仅在需要时恢复到 D0。 MbbCx.sys 在 D0 和 Dx 之前管理无线电状态恢复的逻辑和控制。

体系结构/流

从 WwanSvc 到调制解调器硬件的无线电控制

显示从 WwanSvc 到调制解调器硬件的无线电控制的流程图。

通过 WwanSvc API 设置无线电

通过 WwanSvc API 说明 SET 无线电过程的流程图。

设备到达时的初始无线电状态

描述设备到达时的初始无线电状态的流程图。

MBIM_CID_RADIO_STATE

如上图所示,飞行模式操作中使用的 CID MBIM_CID_RADIO_STATE。 此 CID 设置或返回有关 MB 设备的无线电电源状态的信息。

查询

不使用MBIM_COMMAND_MSG上的 InformationBuffer。 MBIM_RADIO_STATE_INFO在 MBIM_COMMAND_DONE 的 InformationBuffer 中返回。

设置

MBIM_COMMAND_MSG 上的 InformationBuffer 包含MBIM_SET_RADIO_STATE。 MBIM_RADIO_STATE_INFO在 MBIM_COMMAND_DONE 的 InformationBuffer 中返回。

未经请求的事件

事件信息缓冲区包含MBIM_RADIO_STATE_INFO结构。

参数

设置 查询 通知
命令 MBIM_SET_RADIO_STATE Empty 不可用
响应 MBIM_RADIO_STATE_INFO MBIM_RADIO_STATE_INFO MBIM_RADIO_STATE_INFO

数据结构

设置

Offset 大小 字段 类型 说明
0 4 RadioState MBIM_RADIO_SWITCH_STATE 设置软件控制的无线电状态。 请参阅下表。

MBIM_RADIO_SWITCH_STATE

类型
MBIMRadioOff 0
MBIMRadioOn 1

查询

InformationBuffer 将为 null ,InformationBufferLength 将为

响应

MBIM_RADIO_STATE_INFO

Offset 大小 字段 类型 说明
0 4 HwRadioState MBIM_RADIO_SWITCH_STATE W_DISABLE开关的状态。 如果设备没有W_DISABLE开关,则函数必须在此字段中返回 MBIMRadioOn。
4 4 SwRadioState MBIM_RADIO_SWITCH_STATE 软件配置的无线电状态。

通知

请参阅上 表MBIM_RADIO_STATE_INFO

状态代码

此 CID 仅使用泛型状态代码。

测试

手机网络无线电测试

函数名称 说明
CellularRadioWinrtTest::VerifyCellularModemExistence 断言 winrt API 可以查询手机网络调制解调器和无线电状态
CellularRadioWinrtTest::VerifyCellularRadioToggle 断言 winrt api 可以在每个 wwan 适配器上切换单选状态
CellularRadioRecoveryTest::VerifyCellularRadioRecoveryToOnAfterAPM 断言手机无线电状态在离开飞行模式时恢复到“开”
CellularRadioRecoveryTest::VerifyCellularRadioRecoveryToOffAfterAPM 断言手机无线电状态在离开飞行模式时保持关闭
CellularRadioRecoveryTest::VerifyCellularRadioAcrossSvcRestart 断言手机无线电状态在 WwanSvc 重启中保持一致
CellularRadioRecoveryTest::VerifyCellularRadioAcrossDevNodePnp 断言手机无线电状态在设备到达/删除期间保持一致

CellularRadioTest.dll 包含这些测试。

硬件实验室工具包 (HLK) 测试

请参阅 安装 HLK 的步骤

在 HLK Studio 中,连接到设备手机网络调制解调器驱动程序并运行以下测试:

或者,可以通过 netsh-mbn 和 netsh-mbn-test-installation 运行 TestRadioStateHardwareTestRadioStateSoftware HLK 测试列表。

netsh mbn test feature=radio testpath="C:\data\test\bin" taefpath="C:\data\test\bin" param="AccessString=internet"

显示 HLK 测试结果的两个文件应在运行“netsh mbn 测试”命令的目录中生成: TestRadioStateSoftware.htmTestRadioStateHardware.htm

可以使用以下说明收集和解码日志: MB 收集日志

分析日志

用于筛选跟踪的有用关键字/正则表达式

  • OID_WWAN_RADIO_STATE

  • CWwanRadioInstance::OnSysRadioChange

  • 输入 CUIRadioManager::_SetSysRadio

  • 离开 CUIRadioManager::_SetSysRadio

  • CWwanRadioInstance::_SetSoftwareRadioState

  • [WwanRadioManager]

  • PostD0Entry:previousPowerState

  • CWwanRadioManager::OnSystemRadioStateChange (.) +sysradiostate

  • RMAPI (.) +OnSystemRadioStateChange

  • RMAPI (.) +OnSystemRadioStateChange

  • Wwan-svc (.) +radio

  • mbbcx (.) +radio

调查提示

  • 确定这是全局 (系统范围的) 还是本地 (仅限手机网络) 无线电问题。
  • 将设备电源状态 (D0-Dx) 与无线电状态区分开来。 它们是不同的概念,但高度相关。
  • 确保日志中包含必要的 ETW 提供程序。
  • 使用 方案缩小区域范围。 例如:
    • 如果它与飞行模式相关,请关注 RmSvc 和 WwanRadioManager。
    • 如果它与 D0-Dx<>、休眠或睡眠转换相关,请关注 MBBCx。
    • 如果它与 UI 显示或状态不同步相关,请从 WwanSvc 开始。

WinRT API

Windows.Devices.Radios

Windows.Devices.Radios 归无线电管理服务所有,该服务管理所有无线电管理器和实例。 对于 WWAN 端,RadioKind 为 RadioKind::MobileBroadband。

  • GetRadiosAsync ( )
  • SetStateAsync ( )

Windows.Networking.NetworkOperators

Windows.Networking.NetworkOperators 文档页

此命名空间下用于无线电管理的唯一有用实用工具是 MobileBroadbandDeviceInformation.CurrentRadioState。

另请参阅

OID_WWAN_RADIO_STATE