Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
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)
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.
- El firmware envía una notificación que indica un cambio en el conector.
- El controlador UCSI envía una solicitud GET_CONNECTOR_STATUS.
- El firmware responde que su Estado de Conexión =
1y el Tipo de Socio del Conector =DFP.
Los controladores de la pila de funciones USB responden a la enumeración.
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.
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
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.
El hardware/firmware del USB tipo C configura el bit de carga lenta.
- El firmware envía una notificación que indica un cambio en el conector.
- El controlador UCSI envía una solicitud GET_CONNECTOR_STATUS.
- El firmware responde con estado de conexión =
1, tipo de asociado del conector =DFPy estado de carga de batería =Slow/Trickle.
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.
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.
Seleccione y mantenga presionado o haga clic con el botón derecho en el dispositivo. Seleccione Propiedades y abra la pestaña Detalles .
Seleccione Ruta de acceso de instancia de dispositivo en la lista desplegable y registre el valor de la propiedad.
Abra el Editor del Registro (regedit.exe).
Vaya a la ruta de acceso de la instancia del dispositivo en esta clave.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\<device-instance-path>\Device ParametersCree un valor DWORD denominado testInterfaceEnabled y establezca el valor en 0x1.
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 |