Compartir a través de


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.

Diagrama de componentes de software usb de tipo C.

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

  1. 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.
    1. El firmware envía una notificación que indica un cambio en el conector.
    2. El controlador UCSI envía una solicitud de GET_CONNECTOR_STATUS.
    3. El firmware responde que su estado de conexión = 1 y tipo de asociado 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 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.
  4. 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

  1. 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.

  2. El hardware/firmware usb type-C establece 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 de GET_CONNECTOR_STATUS.
    3. 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.
  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 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.

  1. 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 .

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

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

  4. Abre 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, 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