Compartir a través de


Controlador de interfaz de software del sistema del conector USB tipo C®

Microsoft proporciona un controlador compatible con la especificación Interfaz de software del sistema del conector USB tipo C® (UCSI) para un transporte de Interfaz avanzada de configuración y energía (ACPI). Si el diseño incluye un controlador insertado con transporte ACPI, implemente UCSI en el BIOS/EC del sistema y cargue el controlador UCSI integrado (UcmUcsiCx.sys y UcmUcsiAcpiClient.sys).

Si el hardware compatible con UCSI usa un transporte distinto de ACPI, debe escribir un controlador de cliente UCSI.

Controladores para admitir componentes USB Tipo-C para sistemas con controladores integrados

Este es un ejemplo de un sistema con un controlador incrustado.

Diagrama de los componentes de software USB Type-C.

El cambio de rol USB se controla en el firmware del sistema. No se carga la pila de controladores del conmutador de rol USB. En otro sistema, es posible que la pila de controladores no se cargue porque no se admite el rol doble.

  • Controladores del lado del dispositivo USB

    Los controladores del lado del dispositivo USB prestan servicio a la función, dispositivo o periférico. La extensión de clase del controlador de funciones USB admite el Protocolo de transferencia de medios (MTP) y la carga mediante cargadores BC 1.2. Microsoft proporciona controladores de cliente integrados para los controladores USB 3.0 de Synopsys y USB 2.0 de ChipIdea. Puede escribir un controlador de cliente personalizado para el controlador de funciones mediante interfaces de programación de controladores de cliente del controlador de función USB. Para obtener más información, consulte Desarrollo de controladores de Windows para controladores de funciones USB.

    El proveedor de SoC puede proporcionarle el controlador de filtro inferior de función USB para la detección del cargador. Si utiliza los controladores de cliente USB 3.0 de Synopsys o USB 2.0 de ChipIdea incluidos, puede implementar su propio controlador de filtro.

  • Controladores USB del lado del anfitrión

    Los controladores del lado host USB son un conjunto de controladores que funcionan con controladores de host USB compatibles con EHCI o XHCI. Si el controlador de cambio de rol enumera el rol de host, se cargan los controladores. Si el controlador de host no es compatible con la especificación, puede escribir un controlador personalizado mediante la interfaz de programación de la extensión del controlador de host USB. Para obtener más información, consulte Desarrollo de controladores de Windows para controladores de host USB.

  • Administrador de conectores USB

    Microsoft proporciona un controlador integrado UCSI con Windows (UcmUcsiCx.sys) que implementa las características definidas en la Especificación de interfaz de software del sistema del conector USB tipo C. La especificación describe las funcionalidades de UCSI. Explica los registros y las estructuras de datos, para diseñadores de componentes de hardware, generadores de sistemas y desarrolladores de controladores de dispositivos.

    Este controlador está diseñado para sistemas con controladores insertados. Este controlador es un cliente del controlador de extensión de clase del administrador de conectores USB, proporcionado por Microsoft (Ucmcx.sys). El controlador controla tareas como iniciar una solicitud al firmware para cambiar los datos o los roles de energía y obtener información necesaria para proporcionar mensajes de solución de problemas al usuario.

Comandos UCSI requeridos por Windows

Consulte la especificación UCSI para ver los comandos necesarios en todas las implementaciones de UCSI.

Además de los comandos marcados como Obligatorio, Windows requiere estos comandos:

  • GET_ALTERNATE_MODES
  • GET_CAM_SUPPORTED
  • GET_PDOS
  • SET_NOTIFICATION_ENABLE: el sistema o controlador debe admitir las siguientes notificaciones en SET_NOTIFICATION_ENABLE:
    • Cambio de las funcionalidades del proveedor compatibles
    • Cambio de nivel de energía negociado
  • GET_CONNECTOR_STATUS: el sistema o controlador debe admitir estos cambios de estado del conector en GET_CONNECTOR_STATUS:
    • Cambio de las funcionalidades del proveedor compatibles
    • Cambio de nivel de energía negociado

Para obtener más información, consulte Implementación de UCSI en el BIOS de Intel.

UCM-UCSI dispositivo ACPI para UCSI 2.0 y versiones posteriores

A partir de Windows 11, versión 22H2, actualización de septiembre, los controladores de dispositivos ACPI de Windows UCM-UCSI admiten la especificación UCSI versión 2.0 y 2.1. La especificación UCSI 2.0 tiene cambios importantes en la asignación de memoria de sus estructuras de datos, tal como se define en la Tabla 3-1 Estructuras de datos de la especificación UCSI.

Para mantener la compatibilidad con versiones anteriores, Windows requiere que el PPM de especificación UCSI versión 2.0 o posterior implemente la siguiente función _DSM en el dispositivo ACPI UCM-UCSI en el firmware ACPI y devuelva un valor distinto de cero para indicar que el OPM de UCSI debe seguir la versión de la especificación UCSI reportada.

  • Arg0: UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
  • Arg1: Id. de revisión = 0
  • Arg2: Índice de función = 5
  • Arg3: paquete vacío (no usado)

Valor devuelto:

Elemento Tipo de objeto Descripción
UsePpmReportedUcsiVersion Entero (32 bits) 0x00000000 (valor predeterminado): si la estructura VERSION tal como se define en especificación UCSI Tabla 3-1 Estructuras de datos tiene el valor 2.0 o superior, UCSI OPM sigue la especificación UCSI 1.2. De lo contrario, UCSI OPM sigue la especificación de UCSI según el valor indicado en la estructura VERSION.

Nota

Para los dispositivos ACPI UCM-UCSI, esta función es nueva en un método _DSM existente. Otras funciones de este método _DSM deberían haberse implementado según el documento de implementación del BIOS de Intel de UCSI. La función 0, que devuelve una máscara de bits de todas las funciones admitidas, también debe actualizarse en consecuencia.

Flujo de ejemplo para UCSI

En los ejemplos de esta sección se describe la interacción entre el hardware y el firmware del Type-C USB, el controlador UCSI y el sistema operativo.

Detección de roles en planes de recuperación ante desastres (DRP)

  1. El hardware/firmware USB Tipo-C detecta un evento de conexión de dispositivo. El sistema DRP de Windows 10 inicialmente asume el rol de UFP.

    1. El firmware envía una notificación que indica un cambio en el conector.
    2. El controlador UCSI envía una solicitud GET_CONNECTOR_STATUS.
    3. El firmware responde que su Estado de Conexión = 1 y el Tipo de Socio del Conector = DFP.
  2. Los controladores de la pila de funciones USB responden a la enumeración.

  3. La extensión de clase del administrador de conectores USB reconoce que la pila de funciones USB está cargada, por lo que el sistema está en un estado incorrecto. Indica al controlador UCSI que envíe las solicitudes de Establecer el Rol de Operación USB y Establecer el Rol de Dirección de Energía al firmware.

  4. El hardware/firmware de USB tipo C inicia la operación de cambio de roles con el DFP.

Detección de una condición de error de discrepancia del cargador

  1. El hardware y el firmware de USB Type-C detectan que un cargador está conectado y negocian un contrato de energía predeterminado. También observa que el cargador no proporciona suficiente potencia al sistema.

  2. El hardware/firmware del USB tipo C configura el bit de carga lenta.

    1. El firmware envía una notificación que indica un cambio en el conector.
    2. El controlador UCSI envía una solicitud GET_CONNECTOR_STATUS.
    3. El firmware responde con estado de conexión = 1, tipo de asociado del conector = DFPy estado de carga de batería = Slow/Trickle.
  3. La extensión de clase del administrador de conectores USB envía una notificación a la interfaz de usuario para mostrar el mensaje de solución de problemas de incompatibilidad del cargador.

Cómo probar UCSI

Hay muchas maneras de probar la implementación de UCSI. Para probar comandos individuales en la implementación de BIOS/EC de UCSI, use UCSIControl.exe, que se proporciona en el paquete de programas de Microsoft USB Test Tool (MUTT). Para probar la implementación completa de UCSI, use las pruebas UCSI que se pueden encontrar en el Windows Hardware Lab Kit (HLK) y los pasos de Procedimientos manuales de interoperabilidad de tipo C.

UCSIControl.exe

Puede probar comandos individuales en la implementación de BIOS/EC de UCSI mediante UCSIControl.exe. Esta herramienta le permite enviar comandos UCSI al firmware a través del controlador UCSI. Se requiere que el controlador esté cargado y en ejecución. Tienes habilitada también la interfaz de prueba para el controlador. De forma predeterminada, esta interfaz no está habilitada para evitar que se pueda acceder a usuarios no autorizados en un sistema minorista.

  1. Busque el nodo de dispositivo en device Manager (devmgmt.msc) denominado UCSI USB Connector Manager. El nodo está bajo la categoría controladores de bus serie universal.

  2. Seleccione y mantenga presionado o haga clic con el botón derecho en el dispositivo. Seleccione Propiedades y abra la pestaña Detalles .

  3. Seleccione Ruta de acceso de instancia de dispositivo en la lista desplegable y registre el valor de la propiedad.

  4. Abra el Editor del Registro (regedit.exe).

  5. Vaya a la ruta de acceso de la instancia del dispositivo en esta clave.

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\<device-instance-path>\Device Parameters

  6. Cree un valor DWORD denominado testInterfaceEnabled y establezca el valor en 0x1.

  7. Para reiniciar el dispositivo, en el nodo del dispositivo en el Administrador de dispositivos, seleccione Deshabilitar y, a continuación, seleccione Habilitar. Como alternativa, puede reiniciar el equipo.

Puede ver la ayuda ejecutando UcsiControl.exe /?.

Estos son los comandos comunes:

Comando UCSI comando UcsiControl.exe
Restablecimiento de PPM UcsiControl.exe Enviar 0 1
Restablecimiento del conector Reinicio suave: UcsiControl.exe Enviar 0 10003

Reinicio forzado: UcsiControl.exe Enviar 0 810003
Establecer habilitación de notificaciones Todas las notificaciones: UcsiControl.exe Send 0 ffff0005

Finalización solo de comandos: UcsiControl.exe Send 0 00010005

Sin notificación: UcsiControl.exe Enviar 0 00000005
Funcionalidad de Get UcsiControl.exe Enviar 0 6
Funcionalidad del conector Get UcsiControl.exe Enviar 0 10007
Establecer UOM DFP: UcsiControl.exe enviar 0 810008

UFP: UcsiControl.exe Enviar 0 1010008

DRP: UcsiControl.exe Enviar 0 2010008
Establecer UOR DFP: UcsiControl.exe enviar 0 810009

UFP: UcsiControl.exe enviar 0 1010009

Aceptar: UcsiControl.exe Enviar 0 2010009
Establecer PDR Proveedor: UcsiControl.exe Send 0 81000B

Consumidor: UcsiControl.exe Send 0 101000B

Aceptar: UcsiControl.exe Enviar 0 201000B
PDO de Get Origen local: UcsiControl.exe enviar 7 00010010

Receptor local: UcsiControl.exe Send 3 00010010

Origen remoto: UcsiControl.exe enviar 7 00810010

Receptor remoto: UcsiControl.exe Send 3 00810010
Obtención del estado del conector UcsiControl.exe Send 0 010012
Obtener el estado del error UcsiControl.exe Enviar 0 13