다음을 통해 공유


MB 라디오 상태

개요

이 항목에서는 MB 디바이스의 무선 전원 상태를 설정하고 읽는 데 사용되는 작업에 대해 설명합니다. 이러한 상태는 소프트웨어(비행기 모드) 또는 하드웨어를 통해 제어할 수 있습니다(적절한 스위치가 있는 경우). 이 항목에서는 무선 전원 상태를 제어하는 방법, 무선 전원 상태 기능을 테스트하는 방법 및 무선 전원 상태 문제를 조사하는 방법을 설명합니다.

용어

시스템 라디오 상태 - 시스템 라디오 상태는 시스템 전체 상태입니다. 그것은 비행기 모드 상태의 가장 명백한 지표입니다. 시스템 라디오 상태는 RmSvc(라디오 관리 서비스)에서 관리됩니다.

라디오 관리자 - RmSvc는 WlanRadioManager, BlueTooth 및 WwanRadioManager와 같은 시스템에서 여러 RadioManagers(MediaManagers)를 반복합니다. WwanRadioManager(.lib)는 RmSvc.dll 호스트되며 라디오 논리의 wwan 쪽을 관리합니다. WwanRadioManager는 WWAN 서비스(WwanSvc) RPC를 사용하여 다음을 수행합니다.

  1. 셀룰러 라디오를 쿼리하고 설정합니다.
  2. 비행기 모드 전후 흐름을 제어합니다.

라디오 인스턴스 - 각 RadioManager는 여러 라디오 인스턴스를 포함할 수 있습니다. 예를 들어 WwanRadioManager는 시스템에 두 개의 셀룰러 모뎀이 있는 경우 두 개의 라디오 인스턴스를 가질 수 있습니다. 각 라디오 instance 추상 개체이며 하나의 하드웨어 라디오 모듈에 매핑되어야 합니다. 대부분의 경우 각 라디오 instance 하나의 셀룰러 모뎀에 매핑됩니다.

관련 서비스 및 드라이버

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를 통한 SET 라디오

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 구조체가 포함되어 있습니다.

매개 변수

설정 쿼리 알림
Command MBIM_SET_RADIO_STATE Empty 해당 없음
응답 MBIM_RADIO_STATE_INFO MBIM_RADIO_STATE_INFO MBIM_RADIO_STATE_INFO

데이터 구조

설정

Offset 크기 필드 형식 Description
0 4 RadioState MBIM_RADIO_SWITCH_STATE 소프트웨어 제어 라디오 상태를 설정합니다. 아래 표를 참조하세요.

MBIM_RADIO_SWITCH_STATE

형식
MBIMRadioOff 0
MBIMRadioOn 1

쿼리

InformationBuffer는 null 이고 InformationBufferLength는 0입니다.

응답

MBIM_RADIO_STATE_INFO

Offset 크기 필드 형식 Description
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 Assert 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 test' 명령이 실행된 및 에서 TestRadioStateSoftware.htmTestRadioStateHardware.htm생성되어야 합니다.

로그 수집 지침인 MB 로그를 사용하여 로그를 수집하고 디코딩할 수 있습니다.

로그 분석

추적 필터링에 유용한 키워드/regexp

  • OID_WWAN_RADIO_STATE

  • CWwanRadioInstance::OnSysRadioChange

  • CUIRadioManager::_SetSysRadio 입력

  • Leaving CUIRadioManager::_SetSysRadio

  • CWwanRadioInstance::_SetSoftwareRadioState

  • [WwanRadioManager]

  • PostD0Entry: previousPowerState

  • CWwanRadioManager::OnSystemRadioStateChange(.) +sysradiostate

  • RMAPI(.) +OnSystemRadioStateChange

  • RMAPI(.) +OnSystemRadioStateChange

  • Wwan-svc(.) +라디오

  • mbbcx(.) +라디오

조사 팁

  • 전역(시스템 전체) 또는 로컬(셀룰러 전용) 라디오 문제인지 식별합니다.
  • 디바이스 전원 상태(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