Journalisation du modem mo avec DSS

Notes

Si vous envisagez de prendre en charge MBIM_CID_MODEM_LOGGING_CONFIGvotre modem, veuillez fournir des commentaires sur cette page afin que nous puissions vous aider au mieux. Ce CID est actuellement expérimental et n’a pas encore été testé avec un modem, car aucun ne le prend en charge.

Cette rubrique décrit une nouvelle interface de journalisation MBB (Windows Mobile Broadband) standard via les extensions Microsoft de la spécification USB MBIM 1.0, disponible dans Windows 10, version 1903 et ultérieure.

Avec cette nouvelle interface de journalisation, le système d’exploitation peut informer l’appareil MBB de démarrer, d’arrêter et de vider les journaux dans le système de fichiers du système d’exploitation via les commandes CID MBIM. Étant donné la nature non IP de la charge utile de journalisation du modem, le canal de données utilisé par le service MBB pour transmettre les charges utiles de journalisation au système d’exploitation utilise le flux de service de données (DSS) MBB. DSS est défini dans la spécification MBIM (Mobile Broadband Interface Model) 1.0 .

Le système d’exploitation extrait les fonctionnalités et configurations de diagnostic du modem dans l’ensemble de l’écosystème MBB avec un ensemble de configurations de journalisation MBB spécifiques à Windows. Ces configurations de journalisation MBB permettent au fournisseur d’un modem de mapper les exigences de journalisation MBB du système d’exploitation aux configurations de journalisation internes appropriées. Les configurations de journalisation abstraites et définies par le système d’exploitation incluent les niveaux de détail de journalisation MBB et la durée maximale de vidage.

Un modem continue de remplir sa mémoire tampon de journalisation, jusqu’à ce que le segment soit rempli et que l’infrastructure MBIM transmette le segment au système d’exploitation, ou qu’il vide le contenu de sa mémoire tampon lorsque la durée maximale de vidage est atteinte (même si le segment n’est pas rempli). Le système d’exploitation définit un ensemble de niveaux de configuration de journalisation Windows MBB standard, décrits plus loin dans cette rubrique. Chaque niveau de configuration spécifie une abstraction du système d’exploitation des détails et du détail de la journalisation MBB.

L’abstraction du système d’exploitation des niveaux de configuration MBB est mappée à la configuration de modem interne appropriée par les modems. Le système d’exploitation ne fournit pas de charges utiles de configuration supplémentaires, telles que la journalisation des filtres ou des masques, aux modems autres que le niveau de configuration MBB du système d’exploitation.

Pour les modems qui prennent en charge la journalisation MBB, tous les niveaux de configuration de journalisation MBB à l’exception de MBIMLoggingLevelOem doivent être présents sur toutes les variantes BSP. En d’autres termes, l’IHV ou OEM doit prendre en charge les niveaux PROD ou LAB de la journalisation MBB dans les versions de production et R&D du BSP. Les niveaux LAB de journalisation MBB ne peuvent être désactivés qu’à partir du système d’exploitation.

La conception de cette nouvelle interface de journalisation utilise le canal de contrôle pour définir les paramètres de journalisation et utilise le canal de données pour recevoir les journaux de modem, car le canal de données est conçu pour transférer des données de modem en bloc. L’avantage de cette conception est que les données en bloc n’ont pas besoin d’être transférées sur le canal de contrôle, ce qui maintient la cohérence des performances des appareils. Il est également bien mis à l’échelle pour un débit plus élevé. Le canal de données est géré par des commandes DSS. Un exemple de flux pour un modem peut ressembler à ceci :

  1. Le système d’exploitation envoie l’MBIM_CID_MODEM_LOGGING_CONFIG CID au modem pour configurer des paramètres de journalisation tels que MaxSegmentSize, MaxFlushTime et LoggingLevel.
  2. Une fois que le système d’exploitation reçoit une réponse réussie du modem, il envoie la commande DSS MBIM_CID_DSS_CONNECT au modem avec un GUID spécifique pour la journalisation du modem, l’état MBIMDssLinkActivate et un ID de session DSS unique.
  3. Une fois qu’il a reçu un code status réussi, le système d’exploitation se prépare à recevoir des fragments du modem. Ces fragments sont appelés paquets DataServiceSessionRead.
  4. Les paquets DataServiceSessionRead continuent d’arriver jusqu’à ce que le système d’exploitation émet une autre commande MBIM_CID_DSS_CONNECT avec le même ID de session DSS et un état MBIMDSSLinkDeactivate.

Une fois que le modem écrit des journaux dans le canal de données nouvellement créé, le modem appelle MbbDeviceReceiveDeviceServiceSessionData, dont les données sont disponibles pour les applications via la couche WinRT : MobileBroadbandDeviceService. Les journaux du modem doivent être mis en forme en tant que données de chaîne imprimables qui peuvent être redirigées vers une session ETW.

Chemin des données de journalisation du modem

La journalisation Moddem utilise le flux de service de données MBIM (DSS) pour transférer les données pour la journalisation des charges utiles. Pour plus d’informations sur DSS, consultez la section 10.5.38 de la spécification MBIM 1.0.

Lors de la connexion ou de la déconnexion de DSS, le GUID suivant est utilisé pour la journalisation des modems :

GUID Valeur
ModemFileTransfer GUID 0EBB1CEB-AF2D-484D-8DF3-53BC51FD162C

Le diagramme de flux suivant illustre le processus de configuration et de destruction de DSS.

Diagramme de flux de configuration et de destruction de la journalisation du modem DSS.

Extension d’interface NDIS

L’OID suivant a été défini dans Windows 10, version 1903, pour prendre en charge la journalisation des modems.

Services MBIM et valeurs CID

Nom du service UUID Valeur UUID
Extensions de connectivité IP de base Microsoft UUID_BASIC_CONNECT_EXTENSIONS 3d01dcc5-fef5-4d05-9d3a-bef7058e9aaf

Le tableau suivant spécifie l’UUID et le code de commande pour chaque CID, ainsi que si le CID prend en charge les demandes Set, Query ou Event (notification). Consultez la section individuelle de chaque CID dans cette rubrique pour plus d’informations sur ses paramètres, structures de données et notifications.

CID UUID Code de commande Set Requête Notifier
MBIM_CID_MODEM_LOGGING_CONFIG UUID_BASIC_CONNECT_EXTENSIONS TBD O O O

MBIM_CID_MODEM_LOGGING_CONFIG

Ce CID est utilisé pour configurer les journaux collectés par le modem et la fréquence à laquelle ils seront envoyés du modem à l’hôte via DSS. La journalisation doit être configurée avant le démarrage d’une session de journalisation. Étant donné que ce CID fait partie des extensions de connexion, il est facultatif pour les IHVs de prendre en charge ce CID. Si un IHV prend en charge la journalisation des modems via le canal de données DSS, il doit le spécifier en tant que fonctionnalité. La fonctionnalité peut être annoncée à l’aide du CID MBIM_BASIC_CID_DEVICE_SERVICES.

Paramètres

Opération Set Requête Notification
Commande MBIM_MODEM_LOGGING_CONFIG Non applicable Non applicable
response MBIM_MODEM_LOGGING_CONFIG MBIM_MODEM_LOGGING_CONFIG MBIM_MODEM_LOGGING_CONFIG

Requête

Interroge la configuration actuelle de journalisation du modem. L’objet InformationBuffer de MBIM_COMMAND_MSG n’est pas utilisé. La structure de MBIM_MODEM_LOGGING_CONFIG suivante est utilisée dans l’objet InformationBuffer de MBIM_COMMAND_DONE.

MBIM_MODEM_LOGGING_CONFIG

Offset Taille Champ Type Description
0 4 Version UINT32 Numéro de version de cette structure. Ce champ doit avoir la valeur 1 pour la version 1 de cette structure.
4 4 MaxSegmentSize UINT32 Spécifie la taille du segment, en kilo-octets, pour chaque fragment envoyé par le modem. Si la taille maximale de fragment prise en charge par le modem pour Device Service Command dépasse la valeur définie, cette valeur est définie sur la taille de segment maximale prise en charge.
8 4 MaxFlushTime UINT32 Durée, en millisecondes, indiquant la durée maximale pendant laquelle le modem attend avant d’envoyer un fragment de journal. Si les journaux collectés n’atteignent pas MaxSegmentSize dans la durée MaxFlushTime depuis le dernier fragment de journal envoyé, un fragment de journal est envoyé quelle que soit sa taille. S’il n’existe aucune donnée de journalisation, aucune notification n’est envoyée. Si l’appareil ne peut pas gérer les temps de vidage plus petits, l’appareil retourne le temps qu’il peut gérer dans la réponse. La réponse à une requête ou à un ensemble contient le MaxFlushTime actuellement configuré.
12 4 LevelConfig MBIM_LOGGING_LEVEL_CONFIG Configure le niveau pour lequel les journaux sont collectés. La réponse à une requête ou à un ensemble contient le LevelConfig actuellement configuré.

Notes

Si le modem n’est pas en mesure de fournir des données de journal au système d’exploitation au niveau de MaxSegmentSize et MaxFlushTimer demandés, il peut choisir ses propres valeurs pour ces paramètres et mettre à jour le système d’exploitation en tant que réponse définie ou événement non sollicité. Le comportement du système d’exploitation ne change pas si MaxSegmentSize ou MaxFlushTimer change, car il reçoit les paquets de données indépendamment et les vide dans un fichier.

L’énumération MBIM_LOGGING_LEVEL_CONFIG suivante est utilisée dans la structure MBIM_MODEM_LOGGING_CONFIG précédente.

Type Valeur Description
MBIMLoggingLevelProd 0 Destiné à la collecte de données de télémétrie à partir d’une population de vente au détail ou de production. Le journal résultant doit être de la taille de la capsule et contient uniquement des informations sur l’état ou l’échec du modem clé ou MBB.
MBIMLoggingLevelLabVerbose 1 Destiné au développement de produits MBB à faible maturité. Capture détaillée de la pile complète des modems. La capture de modem résultante doit permettre à l’IHV de relire et de récupérer entièrement la capture pendant le journal.
MBIMLoggingLevelLabMedium 2 Destiné à la vérification et aux tests sur le terrain des produits MBB avec une maturité et une stabilité relatives. Le niveau de détail et de détail fournit suffisamment de points de données pour que les ingénieurs IHV trient la plupart des défaillances MBB.
MBIMLoggingLevelLabLow 3 Destiné à la journalisation au niveau de l’hôte automatique. Capture au niveau résumé des modems de capture de pile complète. Permet une compréhension au niveau de la mise en évidence de l’état et des interactions du système d’exploitation du modem.
MBIMLoggingLevelOem 4 Réservé à l’utilisation interne OEM et IHV.

Set

Une commande set est utilisée pour configurer le niveau, la taille du segment et la durée maximale de vidage pour la journalisation du modem. Une structure MBIM_MODEM_LOGGING_CONFIG est utilisée dans InformationBuffer.

response

InformationBuffer dans MBIM_COMMAND_DONE contient une structure de MBIM_MODEM_LOGGING_CONFIG.

Événements non sollicités

Les événements non sollicités sont pris en charge pour les scénarios où le modem doit informer le système d’exploitation des modifications internes. Actuellement, dans Windows 10 version 1903, ces scénarios ne se produisent pas.

Codes d’état

Ce CID utilise uniquement des codes de status génériques définis dans la section 9.4.5 de la révision de la spécification MBIM 1.0.

Comportement de la session DSS pendant l’inactivité

Le tableau suivant décrit le comportement de la session DSS pendant les différentes phases d’inactivité :

Scénario État de la session DSS
Veille du système, veille par modem uniquement, réinitialisation et récupération Session DSS maintenue ouverte
Arrêt, redémarrage, mise en veille prolongée du système Session DSS fermée