Controlador de interfaz de software del sistema del conector USB Type-C® (UCSI)
Microsoft proporciona un controlador compatible con la especificación de interfaz de software del sistema del conector USB Type-C® (UCSI) para el transporte ACPI. Si el diseño incluye un controlador incrustado con transporte ACPI, implemente UCSI en el BIOS/EC del sistema y cargue el controlador UCSI en caja (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 type-C para sistemas con controladores incrustados
Este es un ejemplo de un sistema con un controlador incrustado.
En el ejemplo anterior, el cambio de roles USB se controla en el firmware del sistema y 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 dual.
En la imagen anterior,
Controladores del lado del dispositivo USB
Los controladores del lado del dispositivo USB funcionan con la función, el dispositivo o el periférico. La extensión de clase de controlador de función USB admite MTP (Protocolo de transferencia de medios) y carga mediante cargadores BC 1.2. Microsoft proporciona controladores de cliente en caja para controladores USB 3.0 y ChipIdea USB 2.0. 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. Puede implementar su propio controlador de filtro si usa el controlador de cliente USB 3.0 o ChipIdea USB 2.0.
Controladores del lado host USB
Los controladores del lado host USB son un conjunto de controladores que funcionan con controladores de host USB compatibles con EHCI o XHCI. Los controladores se cargan si el controlador de conmutador de rol enumera el rol de host. 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 (UCX). Para obtener información, consulte Desarrollo de controladores de Windows para controladores de host USB.
No todas las clases de dispositivos USB se admiten en Windows 10 Mobile.
Administrador de conectores USB
Microsoft proporciona un controlador UCSI en la caja con Windows (UcmUcsiCx.sys) que implementa las características definidas en la Especificación de interfaz de software del sistema del sistema del conector USB Type-C. La especificación describe las funcionalidades de UCSI y 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 incrustados. Este controlador es un cliente para el 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 Obligatorios, 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 funcionalidades de proveedor admitidas
- 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 funcionalidades de proveedor admitidas
- Cambio de nivel de energía negociado
Para obtener información sobre las tareas necesarias para implementar UCSI en el BIOS, consulte Implementación de BIOS de Intel de UCSI.
Dispositivo ACPI UCM-UCSI para UCSI 2.0 y versiones posteriores
A partir de Windows 11, versión 22H2 actualización de septiembre, los controladores de dispositivo ACPI UCM-UCSI de Windows 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 y 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 el PPM ucsi de especificación versión 2.0 o posterior para implementar la siguiente función _DSM bajo el dispositivo ACPI UCM-UCSI en firmware ACPI y devolver un valor distinto de cero para indicar que UCSI OPM debe seguir la versión de especificación UCSI notificada.
- 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 VERSION estructura, tal como se define en la tabla 3-1 estructuras de datos ucsi, 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 UCSI según el valor de la VERSION estructura. |
Nota:
En el caso de los dispositivos ACPI UCM-UCSI, se trata de una nueva función en un método _DSM existente. Otras funciones de este método de _DSM deben haberse implementado según la implementación del BIOS de Intel del documento 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 indicados en esta sección se describe la interacción entre el hardware o firmware USB type-C, el controlador UCSI y el sistema operativo.
Detección de roles drp
- El hardware/firmware usb type-C detecta un evento de conexión de dispositivo y el sistema drP del sistema Windows 10 se convierte inicialmente en el rol UFP.
- El firmware envía una notificación que indica un cambio en el conector.
- El controlador UCSI envía una solicitud de GET_CONNECTOR_STATUS.
- El firmware responde que su estado de conexión = 1 y tipo de asociado 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 se ha cargado y, por tanto, el sistema está en estado incorrecto. Indica al controlador UCSI que envíe las solicitudes Set USB Operation Role (Establecer rol de operación USB) y Set Power Direction Role (Establecer rol de dirección de energía) al firmware.
- El hardware o firmware usb type-C inicia la operación de intercambio de roles con DFP.
Detección de una condición de error de falta de coincidencia del cargador
El hardware o firmware usb type-C detecta que un cargador está conectado y negocia un contrato de alimentación predeterminado. También observa que el cargador no proporciona suficiente potencia al sistema.
El hardware/firmware usb type-C establece 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 de GET_CONNECTOR_STATUS.
- El firmware responde con el estado de conexión = 1, el tipo de asociado del conector=DFP y el estado de carga de la batería = lento/complicado.
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 errores de coincidencia del cargador.
Cómo probar UCSI
Hay muchas maneras de probar la implementación de UCSI. Para probar comandos individuales en la implementación del BIOS/EC de UCSI, use UCSIControl.exe, que se proporciona en el paquete de software MUTT. Para probar la implementación completa de UCSI, usa las pruebas UCSI que se pueden encontrar en el Kit de laboratorio de hardware de Windows (HLK) y los pasos de los procedimientos de interoperabilidad manual de Type-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. Requiere que el controlador se cargue y ejecute, y también tenga habilitada 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 Administrador de dispositivos (devmgmt.msc) denominado UCSI USB Connector Manager. El nodo está en la categoría Controladores de bus serie universal .
Seleccione y mantenga presionado (o haga clic con el botón derecho) en el dispositivo y seleccione Propiedades y abra la pestaña Detalles .
Seleccione Ruta de acceso de instancia de dispositivo en la lista desplegable y anote el valor de la propiedad.
Abre 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 Parameters
Cree un valor DWORD denominado TestInterfaceEnabled y establezca el valor en 0x1.
Para reiniciar el dispositivo, seleccione la opción Deshabilitar en el nodo del dispositivo en Administrador de dispositivos y, a continuación, seleccione Habilitar. Como alternativa, puede reiniciar el equipo.
Para ver la ayuda, ejecute UcsiControl.exe /?.
Estos son los comandos comunes:
Comando UCSI | comando UcsiControl.exe |
---|---|
Restablecimiento de PPM | UcsiControl.exe Enviar 0 1 |
Restablecimiento del conector | Restablecimiento temporal: UcsiControl.exe Enviar 0 10003 Restablecimiento duro: UcsiControl.exe enviar 0 810003 |
Establecer la habilitación de notificaciones | Todas las notificaciones: UcsiControl.exe Enviar 0 ffff0005 Solo finalización de comandos: UcsiControl.exe enviar 0 00010005 Sin notificación: UcsiControl.exe Enviar 0 00000005 |
Obtención de la funcionalidad | UcsiControl.exe Enviar 0 6 |
Obtención de la funcionalidad del conector | 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 Enviar 0 81000B Consumidor: UcsiControl.exe Enviar 0 101000B Aceptar: UcsiControl.exe Enviar 0 201000B |
Obtención de PPO | Origen local: UcsiControl.exe enviar 7 00010010 Receptor local: UcsiControl.exe enviar 3 00010010 Origen remoto: UcsiControl.exe enviar 7 00810010 Receptor remoto: UcsiControl.exe enviar 3 00810010 |
Obtención del estado del conector | UcsiControl.exe enviar 0 010012 |
Obtención del estado del error | UcsiControl.exe Enviar 0 13 |
Temas relacionados
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de