Registro de modem MB com DSS

Observação

Se você está planejando para o seu modem para suportar MBIM_CID_MODEM_LOGGING_CONFIG, por favor, forneça comentários nesta página para que possamos melhor apoiá-lo. Este CID é atualmente experimental e ainda não foi testado com um modem, pois nenhum o suporta.

Este tópico descreve uma nova interface de log de banda larga móvel (MBB) padrão do Windows por meio de extensões da Microsoft para a especificação USB MBIM 1.0, disponível no Windows 10, versão 1903 e posterior.

Com essa nova interface de registro, o sistema operacional pode informar o dispositivo MBB para iniciar, parar e liberar os logs para o sistema de arquivos do sistema operacional por meio de comandos CID do MBIM. Dada a natureza não-IP da carga de log do modem, o canal de dados que o serviço MBB usa para transmitir cargas de log para o sistema operacional usa o MBB Data Service Stream (DSS). O DSS é definido na especificação Mobile Broadband Interface Model (MBIM) 1.0 .

O sistema operacional abstrai as funcionalidades e configurações de diagnóstico do modem em todo o ecossistema MBB com um conjunto de configurações de log MBB específicas do Windows. Essas configurações de log do MBB permitem que o fornecedor de um modem mapeie os requisitos de log do MBB do sistema operacional para as configurações de log internas apropriadas. As configurações de log abstraídas e definidas pelo sistema operacional incluem os níveis de detalhamento de log MBB e o tempo máximo de liberação.

Um modem continua preenchendo seu buffer de log, até o tamanho máximo do buffer, até que o segmento seja preenchido e a estrutura MBIM transmita o segmento para o sistema operacional, ou libere o conteúdo de seu buffer quando o tempo máximo de liberação for atingido (mesmo que o segmento não seja preenchido). O sistema operacional define um conjunto de níveis de configuração de log MBB padrão do Windows, descritos posteriormente neste tópico. Cada nível de configuração especifica uma abstração do sistema operacional de detalhes e detalhamento de log do MBB.

A abstração do sistema operacional dos níveis de configuração do MBB é mapeada para a configuração interna apropriada do modem por modems. O sistema operacional não fornece cargas úteis de configuração adicionais, como filtros ou máscaras de log, para modems diferentes do nível de configuração MBB do sistema operacional.

Para modems que oferecem suporte ao log MBB, todos os níveis de configuração de log MBB, exceto MBIMLoggingLevelOem, devem estar presentes em todas as variantes BSP. Em outras palavras, o IHV ou OEM deve suportar os níveis PROD ou LAB de registro MBB nas versões de produção e P&D do BSP. Os níveis de LAB do registro em log do MBB só podem ser desabilitados do sistema operacional.

O design dessa nova interface de log usa o canal de controle para definir os parâmetros de log e usa o canal de dados para receber logs de modem porque o canal de dados foi projetado para transferir dados de modem em massa. A vantagem desse design é que os dados em massa não precisam ser transferidos pelo canal de controle, mantendo o desempenho do dispositivo consistente. Ele também é bem dimensionado para maior rendimento. O canal de dados é operado por comandos DSS. Um exemplo de fluxo para um modem pode ter esta aparência:

  1. O sistema operacional envia o CID MBIM_CID_MODEM_LOGGING_CONFIG para o modem para configurar parâmetros de log como MaxSegmentSize, MaxFlushTime e LoggingLevel.
  2. Depois que o sistema operacional recebe uma resposta bem-sucedida do modem, ele envia o comando DSS do MBIM_CID_DSS_CONNECT para o modem com um GUID específico para log do modem, o estado MBIMDssLinkActivate e uma ID de sessão DSS exclusiva.
  3. Depois de receber um código de status de sucesso, o sistema operacional se prepara para receber fragmentos do modem. Esses fragmentos são chamados de pacotes DataServiceSessionRead.
  4. Os pacotes DataServiceSessionRead continuam a chegar até que o sistema operacional emita outro comando MBIM_CID_DSS_CONNECT com a mesma ID de sessão DSS e um estado MBIMDSSLinkDeactivate.

Depois que o modem grava todos os logs no canal de dados recém-criado, o modem chama MbbDeviceReceiveDeviceServiceSessionData, cujos dados estão disponíveis para aplicativos por meio da camada WinRT: MobileBroadbandDeviceService. Os logs do modem devem ser formatados como dados de cadeia de caracteres imprimíveis que podem ser redirecionados para uma sessão ETW.

Caminho de dados de log do modem

O log do modem usa o MBIM Data Service Stream (DSS) para transferir os dados para registrar cargas úteis. Para obter mais informações sobre o DSS, consulte a Seção 10.5.38 da especificação do MBIM 1.0.

Ao se conectar ou desconectar do DSS, o seguinte GUID é usado para log de modem:

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

O diagrama de fluxo a seguir ilustra o processo de configuração e desmontagem do DSS.

Configuração de log de modem DSS e diagrama de fluxo de desmontagem.

Extensão de interface NDIS

O seguinte OID foi definido no Windows 10, versão 1903, para oferecer suporte ao log de modem.

Serviço MBIM e valores CID

Nome do serviço UUID Valor UUID
Extensões básicas de conectividade IP da Microsoft UUID_BASIC_CONNECT_EXTENSIONS 3D01DCC5-FEF5-4D05-9D3A-BEF7058E9AAF

A tabela a seguir especifica o UUID e o código de comando para cada CID, bem como se o CID oferece suporte a solicitações Set, Query ou Event (notification). Consulte a seção individual de cada CID neste tópico para obter mais informações sobre seus parâmetros, estruturas de dados e notificações.

CID UUID Código de comando Definir Consulta Notify
MBIM_CID_MODEM_LOGGING_CONFIG UUID_BASIC_CONNECT_EXTENSIONS TBD N N S

MBIM_CID_MODEM_LOGGING_CONFIG

Esse CID é usado para configurar os logs coletados pelo modem e com que frequência eles serão enviados do modem para o host pelo DSS. O registro em log deve ser configurado antes que uma sessão de log seja iniciada. Como esse CID faz parte das extensões de conexão, é opcional para IHVs oferecer suporte a esse CID. Se um IHV oferecer suporte ao log de modem por meio do canal de dados DSS, ele deverá especificar isso como um recurso. O recurso pode ser anunciado usando o MBIM_BASIC_CID_DEVICE_SERVICES CID.

Parâmetros

Operação Definir Consulta Notificação
Comando MBIM_MODEM_LOGGING_CONFIG Não Aplicável Não aplicável
Resposta MBIM_MODEM_LOGGING_CONFIG MBIM_MODEM_LOGGING_CONFIG MBIM_MODEM_LOGGING_CONFIG

Consulta

Consulta a configuração atual de log do modem. O InformationBuffer de MBIM_COMMAND_MSG não é usado. A estrutura MBIM_MODEM_LOGGING_CONFIG a seguir é usada no InformationBuffer de MBIM_COMMAND_DONE.

MBIM_MODEM_LOGGING_CONFIG

Contrapartida Tamanho Campo Type Descrição
0 4 Versão UINT32 O número da versão dessa estrutura. Esse campo deve ser definido como 1 para a versão 1 dessa estrutura.
4 4 MaxSegmentSize UINT32 Especifica o tamanho do segmento, em quilobytes, para cada fragmento enviado pelo modem. Se o tamanho máximo de fragmento suportado pelo modem para o Comando de Serviço de Dispositivo exceder o valor definido, esse valor será definido como o tamanho máximo de segmento com suporte.
8 4 MaxFlushTime UINT32 O tempo, em milissegundos, que indica o tempo máximo que o modem aguarda antes de enviar um fragmento de log. Se os logs coletados não atingirem MaxSegmentSize dentro da duração MaxFlushTime desde o último fragmento de log enviado, um fragmento de log será enviado independentemente de seu tamanho. Se não houver dados de registro, nenhuma notificação será enviada. Se o dispositivo não puder lidar com tempos de descarga menores, o dispositivo retornará o tempo que ele pode lidar na resposta. A resposta a uma consulta ou conjunto contém o MaxFlushTime configurado no momento.
12 4 LevelConfig MBIM_LOGGING_LEVEL_CONFIG Configura o nível para o qual os logs são coletados. A resposta a uma consulta ou conjunto contém o LevelConfig configurado no momento.

Observação

Se o modem não for capaz de fornecer dados de log para o sistema operacional no MaxSegmentSize e MaxFlushTimer solicitados, ele poderá escolher seus próprios valores para esses parâmetros e atualizar o sistema operacional como uma resposta definida ou um evento não solicitado. O comportamento do sistema operacional não será alterado se MaxSegmentSize ou MaxFlushTimer forem alterados, pois ele recebe os pacotes de dados independentemente e os despeja em um arquivo.

A enumeração MBIM_LOGGING_LEVEL_CONFIG a seguir é usada na estrutura MBIM_MODEM_LOGGING_CONFIG anterior.

Tipo Valor Descrição
MBIMLoggingLevelProd 0 Destinado à coleta de telemetria de uma população de varejo ou produção. O log resultante deve ter o tamanho de uma cápsula e conter apenas informações de falha ou estado de MBB ou modem-chave.
MBIMLoggingLevelLabVerbose 1 Destinado ao desenvolvimento de produtos MBB com baixa maturidade. Captura detalhada de full-stack de modems. A captura de modem resultante deve permitir que o IHV reproduza e recupere totalmente a captura durante o log.
MBIMLoggingLevelLabMedium 2 Destinado à verificação e testes de campo de produtos MBB com relativa maturidade e estabilidade. O nível de detalhe e detalhamento fornece pontos de dados suficientes para que os engenheiros do IHV triem a maioria das falhas de MBB.
MBIMLoggingLevelLabLow 3 Destinado ao registro em log no nível do host automático. Captura em nível de resumo de modems de captura de pilha completa. Permite uma compreensão em nível de destaque do estado do modem e das interações do sistema operacional.
MBIMLoggingLevelOem 4 Reservado para uso interno OEM e IHV.

Definir

Um comando set é usado para definir para configurar o nível, o tamanho do segmento e o tempo máximo de liberação para o log do modem. Uma estrutura MBIM_MODEM_LOGGING_CONFIG é usada no InformationBuffer.

Resposta

O InformationBuffer no MBIM_COMMAND_DONE contém uma estrutura MBIM_MODEM_LOGGING_CONFIG.

Eventos não solicitados

Há suporte para eventos não solicitados para cenários em que o modem precisa informar o sistema operacional sobre alterações internas. Atualmente, no Windows 10, versão 1903, esses cenários não ocorrem.

Códigos de status

Este CID utiliza apenas códigos de estatuto genéricos definidos na Secção 9.4.5 da revisão 1.0 da especificação MBIM.

Comportamento da sessão DSS durante a inatividade

A tabela a seguir descreve como a sessão DSS se comporta durante vários estágios de inatividade:

Cenário Estado da sessão DSS
Suspensão do sistema, suspensão somente modem, reinicialização e recuperação Sessão DSS mantida aberta
Desligamento, reinicialização, hibernação do sistema Sessão DSS encerrada