Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A Microsoft fornece um driver compatível com a especificação USB Type-C® Connector System Software Interface (UCSI) para um transporte ACPI (Advanced Configuration and Power Interface). Se o seu projeto incluir um controlador incorporado com transporte ACPI, implemente o UCSI no BIOS/EC do seu sistema e carregue o controlador UCSI integrado (UcmUcsiCx.sys e UcmUcsiAcpiClient.sys).
Se o hardware compatível com UCSI usa um transporte diferente de ACPI, você precisa escrever um driver de cliente UCSI.
Drivers para suportar componentes USB Tipo-C para sistemas com controladores embutidos
Aqui está um exemplo de um sistema com um controlador incorporado.
A comutação de função USB é tratada no firmware do sistema. A pilha de drivers do comutador de função USB não está carregada. Em outro sistema, o stack de drivers pode não ser carregado porque a função dupla não é suportada.
Drivers do lado do dispositivo USB
Os drivers do lado do dispositivo USB atendem a função/dispositivo/periférico. A extensão de classe do controlador de função USB suporta o Media Transfer Protocol (MTP) e o carregamento de dispositivos usando carregadores BC 1.2. A Microsoft fornece drivers de cliente embutidos para controladores Synopsys USB 3.0 e ChipIdea USB 2.0. Você pode escrever um driver de cliente personalizado para seu controlador de função usando interfaces de programação de driver de cliente de controlador de função USB. Para obter mais informações, consulte Desenvolvendo drivers do Windows para controladores de função USB.
O fornecedor de SoC pode fornecer-lhe o driver de filtro inferior da função USB para deteção de carregador. Se você estiver usando o driver de cliente Synopsys USB 3.0 ou ChipIdea USB 2.0 in-box, você pode implementar seu próprio driver de filtro.
Drivers USB do lado do host
Os drivers USB no lado do host são um conjunto de drivers que funcionam com controladores de host USB compatíveis com EHCI ou XHCI. Se o driver de comutação de funções enumerar a função de host, os drivers são carregados. Se o controlador host não estiver em conformidade com as especificações, você poderá escrever um driver personalizado usando a interface de programação da extensão do controlador host USB. Para obter mais informações, consulte Desenvolvendo drivers do Windows para controladores host USB.
Gerenciador de conectores USB
A Microsoft fornece um driver integrado UCSI no Windows (UcmUcsiCx.sys) que implementa as funcionalidades definidas na Especificação de Interface de Software do Sistema de Conectores Type-C USB. A especificação descreve as capacidades do UCSI. Ele explica os registros e estruturas de dados para designers de componentes de hardware, integradores de sistemas e desenvolvedores de drivers de dispositivo.
Este driver destina-se a sistemas com controladores incorporados. Este driver é um cliente para o driver de extensão de classe do gestor de conectores USB fornecido pela Microsoft (Ucmcx.sys). O driver lida com tarefas como iniciar uma solicitação ao firmware para alterar os dados ou funções de energia e obter as informações necessárias para fornecer mensagens de solução de problemas ao usuário.
Comandos UCSI exigidos pelo Windows
Consulte a especificação UCSI para comandos que são necessários em todas as implementações UCSI.
Além dos comandos marcados como Obrigatório, o Windows requer estes comandos:
- OBTER_MODOS_ALTERNATIVOS
- GET_CAM_SUPPORTED
- GET_PDOS
- SET_NOTIFICATION_ENABLE: O sistema ou controlador deve suportar as seguintes notificações em SET_NOTIFICATION_ENABLE:
- Alteração das Capacidades do Fornecedor Suportadas
- Mudança de nível de potência negociada
- GET_CONNECTOR_STATUS: O sistema ou controlador deve suportar estas alterações de estado do conector em GET_CONNECTOR_STATUS:
- Alteração das Capacidades do Fornecedor Suportadas
- Mudança de nível de potência negociada
Para obter mais informações, consulte Implementação UCSI do BIOS da Intel.
UCM-UCSI dispositivo ACPI para UCSI 2.0 ou superior
A partir do Windows 11, versão 22H2 September Update, os drivers de dispositivo Windows UCM-UCSI ACPI suportam a especificação UCSI versão 2.0 e 2.1. A especificação UCSI 2.0 tem alterações significativas no mapeamento de memória de suas estruturas de dados, conforme definido na especificação UCSI Tabela 3-1 Estruturas de Dados.
Para manter a compatibilidade com versões anteriores, o Windows requer que o UCSI PPM da especificação versão 2.0 ou superior implemente a seguinte função _DSM no dispositivo ACPIUCM-UCSI no firmware ACPI e retorne um valor diferente de zero para indicar que o UCSI OPM deve seguir a versão de especificação UCSI relatada.
- Arg0: UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
- Arg1: ID da revisão = 0
- Arg2: Índice de função = 5
- Arg3: Embalagem vazia (não utilizada)
Valor de retorno:
| Elemento | Tipo de objeto | Descrição |
|---|---|---|
| UsePpmReportedUcsiVersion | Inteiro (32-bit) | 0x00000000 (Padrão): Se a VERSION estrutura conforme definida na especificação UCSI Tabela 3-1 Estruturas de Dados tiver o valor 2.0 ou superior, UCSI OPM ainda segue a especificação UCSI 1.2. Caso contrário, o UCSI OPM segue a especificação UCSI de acordo com o valor na estrutura VERSION. |
Observação
Para dispositivos ACPI UCM-UCSI, esta função é nova dentro de um método _DSM existente. Outras funções deste método _DSM devem ter sido implementadas de acordo com a implementação do BIOS Intel do documento UCSI . A função 0, que retorna uma máscara de bits de todas as funções suportadas, também deve ser atualizada em conformidade.
Exemplo de fluxo para UCSI
Os exemplos nesta seção descrevem a interação entre o hardware/firmware do Type-C USB, o driver UCSI e o sistema operacional.
Deteção de função DRP
O hardware/firmware Type-C USB deteta um evento de conexão de dispositivo. O sistema DRP do Windows 10 assume inicialmente a função UFP.
- O firmware envia uma notificação indicando uma alteração no conector.
- O driver UCSI envia uma solicitação de GET_CONNECTOR_STATUS.
- O firmware responde que o seu estado de conexão é
1e o tipo de parceiro do conector éDFP.
Os drivers na pilha de funções USB respondem à enumeração.
A extensão de classe do gestor de conectores USB reconhece que a pilha de funções USB está carregada, logo, o sistema encontra-se num estado incorreto. Instruir o driver UCSI a enviar as solicitações Set USB Operation Role e Set Power Direction Role para o firmware.
O hardware/firmware USB Type-C inicia a operação de troca de função com o DFP.
Detetar uma condição de erro de incompatibilidade do carregador
O hardware/firmware USB Type-C detecta que um carregador está ligado e negoceia um contrato de energia predefinido. Ele também observa que o carregador não está fornecendo energia suficiente para o sistema.
O hardware/firmware USB Type-C define o bit de carregamento lento.
- O firmware envia uma notificação indicando uma alteração no conector.
- O driver UCSI envia uma solicitação de GET_CONNECTOR_STATUS.
- O firmware responde com Status de conexão =
1, Tipo de parceiro de conector =DFPe Status de carregamento da bateria =Slow/Trickle.
A extensão de classe do gerenciador de conectores USB envia uma notificação para a interface do usuário para exibir a mensagem de solução de problemas de incompatibilidade do carregador.
Como testar o UCSI
Há muitas maneiras de testar sua implementação UCSI. Para testar comandos individuais na implementação do UCSI BIOS/EC, use UCSIControl.exe, que é fornecido no pacote de software Microsoft USB Test Tool (MUTT). Para testar sua implementação UCSI completa, use os testes UCSI que podem ser encontrados no Windows Hardware Lab Kit (HLK) e as etapas no Type-C Manual Interop Procedures.
UCSIControl.exe
Você pode testar comandos individuais em sua implementação UCSI BIOS/EC usando UCSIControl.exe. Esta ferramenta permite enviar comandos UCSI para o firmware através do driver UCSI. Requer que o driver seja carregado e executado. Você também tem a interface de teste para o driver ativada. Por padrão, essa interface não está habilitada para impedir que seja acessível a usuários não autorizados em um sistema de varejo.
Localize o nó do dispositivo no Gestor de Dispositivos (devmgmt.msc) chamado UCSI USB Connector Manager. O nó encontra-se na categoria Controladores Universal Serial Bus.
Selecione e segure ou clique com o botão direito do mouse no dispositivo. Selecione Propriedades e abra a guia Detalhes .
Selecione Device Instance Path no menu suspenso e registe o valor desta propriedade.
Abra o Editor do Registro (regedit.exe).
Navegue até o caminho da instância do dispositivo sob essa chave.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\<device-instance-path>\Device ParametersCrie um valor DWORD chamado TestInterfaceEnabled e defina o valor como 0x1.
Para reiniciar o dispositivo, no nó do dispositivo no Gestor de dispositivos, selecione Desativar e, em seguida, selecione Ativar. Como alternativa, você pode reiniciar o PC.
Você pode visualizar a ajuda executando UcsiControl.exe /?.
Aqui estão os comandos comuns:
| Comando UCSI | UcsiControl.exe comando |
|---|---|
| Redefinição do PPM | UcsiControl.exe Enviar 0 1 |
| Redefinição do conector | Soft reset: UcsiControl.exe Enviar 0 10003 Hard reset: UcsiControl.exe Enviar 0 810003 |
| Definir Ativação de Notificação | Todas as notificações: UcsiControl.exe Enviar 0 ffff0005 Somente conclusão do comando: UcsiControl.exe Enviar 0 00010005 Sem notificação: UcsiControl.exe Enviar 0 00000005 |
| Obter capacidade | UcsiControl.exe Enviar 0 6 |
| Obter funcionalidades do conector | UcsiControl.exe Enviar 0 10007 |
| Definir UOM | DFP: UcsiControl.exe Enviar 0 810008 UFP: UcsiControl.exe Enviar 0 1010008 DRP: UcsiControl.exe Enviar 0 2010008 |
| Definir UOR | DFP: UcsiControl.exe Enviar 0 810009 UFP: UcsiControl.exe Enviar 0 1010009 Aceitar: UcsiControl.exe Enviar 0 2010009 |
| Definir PDR | Fornecedor: UcsiControl.exe Send 0 81000B Consumidor: UcsiControl.exe Enviar 0 101000B Aceitar: UcsiControl.exe Enviar 0 201000B |
| Obter PDOs | Fonte local: UcsiControl.exe Enviar 7 00010010 Pia do banheiro local: UcsiControl.exe Enviar 3 00010010 Fonte remota: UcsiControl.exe Enviar 7 00810010 Pia remota: UcsiControl.exe Enviar 3 00810010 |
| Obter estado do conector | UcsiControl.exe Enviar 0 010012 |
| Obter estado de erro | UcsiControl.exe Enviar 0 13 |