É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 :
- Interroger et définir la radio cellulaire.
- 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
SET Radio via l’API WwanSvc
É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.