Partager via


État de la radio mb

Vue d’ensemble

Cette rubrique décrit les opérations utilisées pour définir et lire l’état d’alimentation radio d’un appareil Mo. Ces états peuvent être contrôlés par le biais d’un logiciel (mode avion) ou d’un matériel (si le commutateur approprié est présent). Cette rubrique explique comment les états d’alimentation radio sont contrôlés, comment tester la fonctionnalité d’état de l’alimentation radio et comment examiner les problèmes d’état d’alimentation radio.

Terminologie

État de la radio système : l’état de la radio système est un état à l’échelle du système. Il s’agit de l’indicateur le plus évident de l’état du mode avion. L’état radio du système est géré par le service de gestion des radios (RmSvc).

Radio Manager - RmSvc itère plusieurs RadioManagers (MediaManagers) dans le système, comme WlanRadioManager, BlueTooth et WwanRadioManager. WwanRadioManager(.lib) est hébergé dans RmSvc.dll et gère le côté wwan de la logique radio. WwanRadioManager utilise le service WWAN (WwanSvc) RPC pour :

  1. Interroger et définir la radio cellulaire.
  2. Contrôlez le flux avant et après le mode avion.

Instance radio : chaque RadioManager peut inclure plusieurs instances radio. Par exemple, WwanRadioManager peut avoir deux instances radio s’il existe deux modems cellulaires dans le système. Chaque instance radio est un objet abstrait qui doit être mappé à un module radio matériel. Dans la plupart des cas, chaque instance radio correspond à un modem cellulaire.

Services et pilotes pertinents

RmSvc.dll : gère les événements radio à l’échelle du système, comme le mode avion. Il héberge également tous les gestionnaires de radio, y compris WwanRadioManager.

WwanSvc.dll : les modems cellulaires sont gérés par WwanSvc. Par conséquent, les commandes (OID/CID) sont émises via WwanSvc. Les demandes externes de RmSvc ou d’autres composants passent par le RPC WwanSvc pour interroger ou définir l’état radio cellulaire.

MbbCx.sys : pilote en mode noyau qui gère l’état d’alimentation du périphérique, en particulier entre la transition D0 et Dx. Dans certaines configurations système, l’appareil est autorisé à passer à l’état Dx et à effectuer une récupération vers D0 uniquement si nécessaire. MbbCx.sys gère la logique et le contrôle de la récupération d’état radio avant D0 et Dx.

Architecture/Flux

Contrôle radio de WwanSvc vers le matériel modem

Organigramme montrant le contrôle radio de WwanSvc vers le matériel modem.

SET Radio via l’API WwanSvc

Organigramme illustrant le processus SET Radio via l’API WwanSvc.

État radio initial à l’arrivée de l’appareil

Organigramme illustrant l’état radio initial à l’arrivée de l’appareil.

MBIM_CID_RADIO_STATE

Comme indiqué dans les diagrammes ci-dessus, le CID utilisé dans les opérations en mode avion est MBIM_CID_RADIO_STATE. Ce CID définit ou retourne des informations sur l’état d’alimentation radio d’un appareil Mo.

Requête

L’objet InformationBuffer sur MBIM_COMMAND_MSG n’est pas utilisé. MBIM_RADIO_STATE_INFO est retourné dans l’objet InformationBuffer de MBIM_COMMAND_DONE.

Définissez

InformationBuffer sur MBIM_COMMAND_MSG contient MBIM_SET_RADIO_STATE. MBIM_RADIO_STATE_INFO est retourné dans l’objet InformationBuffer de MBIM_COMMAND_DONE.

Événement non sollicité

Event InformationBuffer contient une structure MBIM_RADIO_STATE_INFO.

Paramètres

Définissez Requête Notification
Commande MBIM_SET_RADIO_STATE Vide N/A
Réponse MBIM_RADIO_STATE_INFO MBIM_RADIO_STATE_INFO MBIM_RADIO_STATE_INFO

Structures de données

Définissez

Offset Taille Champ Type Description
0 4 RadioState MBIM_RADIO_SWITCH_STATE Définit l’état radio contrôlé par le logiciel. Consultez le tableau ci-dessous.

MBIM_RADIO_SWITCH_STATE

Types Valeur
MBIMRadioOff 0
MBIMRadioOn 1

Requête

InformationBuffer est null et InformationBufferLength est égal à zéro.

response

MBIM_RADIO_STATE_INFO

Offset Taille Champ Type Description
0 4 HwRadioState MBIM_RADIO_SWITCH_STATE État du commutateur W_DISABLE. Si l’appareil n’a pas de commutateur W_DISABLE, la fonction doit retourner MBIMRadioOn dans ce champ.
4 4 SwRadioState MBIM_RADIO_SWITCH_STATE État radio configuré par logiciel.

Notification

Consultez le tableau MBIM_RADIO_STATE_INFO ci-dessus.

Codes d’état

Ce CID utilise uniquement des codes d’état génériques.

Test

Tests radio cellulaires

Nom de fonction Description
CellularRadioWinrtTest::Verify CellularModemExistence Assert winrt API peut interroger le modem cellulaire et l’état radio
CellularRadioWinrtTest::Verify CellularRadioToggle Assert winrt API peut activer/désactiver l’état radio sur chaque adaptateur wwan
CellularRadioRecoveryTest::Verify CellularRadioRecoveryToOnAfterAPM Les états de la radio cellulaire sont récupérés sur Activé lors de la sortie du mode Avion
CellularRadioRecoveryTest::Verify CellularRadioRecoveryToOffAfterAPM Affirmer que les états radio cellulaires restent désactivés lors de la sortie du mode Avion
CellularRadioRecoveryTest::Verify CellularRadioAcrossSvcRestart Affirmer que les états radio cellulaires restent cohérents pendant le redémarrage de WwanSvc
CellularRadioRecoveryTest::Verify CellularRadioAcrossDevNodePnp Affirmer que les états de la radio cellulaire restent cohérents lors de l’arrivée/suppression de l’appareil

CellularRadioTest.dll contient ces tests.

Tests HLK (Hardware Lab Kit)

Consultez Étapes d’installation de HLK.

Dans HLK Studio, connectez-vous au pilote de modem cellulaire de l’appareil et exécutez les tests suivants :

Vous pouvez également exécuter les listes de test TestRadioStateHardware et TestRadioStateSoftware HLK par netsh-mbn et netsh-mbn-test-installation.

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

Les deux fichiers montrant les résultats du test HLK doivent avoir été générés dans le répertoire à partir duquel la commande « netsh mbn test » a été exécutée : TestRadioStateSoftware.htm et TestRadioStateHardware.htm.

Les journaux peuvent être collectés et décodés à l’aide des instructions suivantes : Journaux de collecte en Mo.

Analyse des journaux

Mots clés/regexp utiles pour le filtrage des traces

  • OID_WWAN_RADIO_STATE

  • CWwanRadioInstance::OnSysRadioChange

  • Entrée de CUIRadioManager::_SetSysRadio

  • Quitter CUIRadioManager::_SetSysRadio

  • CWwanRadioInstance::_SetSoftwareRadioState

  • [WwanRadioManager]

  • PostD0Entry : previousPowerState

  • CWwanRadioManager::OnSystemRadioStateChange(.) +sysradiostate

  • RMAPI(.) +OnSystemRadioStateChange

  • RMAPI(.) +OnSystemRadioStateChange

  • Wwan-svc(.) +radio

  • mbbcx(.) +radio

Conseils d’investigation

  • Déterminez s’il s’agit d’un problème radio global (à l’échelle du système) ou local (cellulaire uniquement).
  • Différencier l’état d’alimentation de l’appareil (D0-Dx) de l’état radio. Il s’agit de concepts différents, mais fortement corrélés.
  • Vérifiez que les fournisseurs ETW nécessaires sont inclus dans le journal.
  • Réduisez la zone à l’aide du scénario. Par exemple :
    • S’il est lié au mode avion, concentrez-vous sur RmSvc et WwanRadioManager.
    • S’il est lié à D0-Dx<, à l’hibernation ou aux transitions de veille, concentrez-vous> sur MBBCx.
    • S’il s’agit d’affichages d’interface utilisateur ou d’état désynchronisée, commencez par WwanSvc.

WinRT API

Windows.Devices.Radios

Windows.Devices.Radios appartient au service de gestion des radios qui gère tous les gestionnaires et instances de radio. Pour le côté WWAN, radioKind est RadioKind::MobileBroadband.

  • GetRadiosAsync( )
  • SetStateAsync( )

Windows.Networking.NetworkOperators

Page de documentation Windows.Networking.NetworkOperators

Le seul utilitaire utile sous cet espace de noms pour la gestion des radios est MobileBroadbandDeviceInformation.CurrentRadioState.

Voir aussi

OID_WWAN_RADIO_STATE