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 de tipo C para sistemas con controladores insertados

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

Diagrama de los componentes de software USB Type-C.

En el ejemplo anterior, el cambio de roles USB se gestiona en el firmware del sistema y no se carga la pila de controladores del conmutador de roles USB. En otro sistema, es posible que la pila de controladores no se cargue porque no se admite el rol doble.

En la imagen anterior,

  • 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 MTP (Protocolo de transferencia de medios) y 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. Puede implementar su propio controlador de filtro si está utilizando el controlador de cliente USB 3.0 de Synopsys o el controlador de cliente USB 2.0 de ChipIdea incluidos en el sistema.

  • Controladores de lado de 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 que cambia de rol enumera el rol de anfitrión. Si el controlador de host no cumple con las especificaciones, puede escribir un controlador personalizado mediante la interfaz de programación de la extensión de controlador ed 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 conector 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 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 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 información sobre las tareas necesarias para implementar UCSI en el BIOS, 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: Revision ID = 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 es una nueva función 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 indicados en 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 del USB Type-C detecta un evento de conexión de un dispositivo, y el sistema DRP de Windows 10 asume inicialmente 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 tipo de partner 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 partner del conector = DFP, y Estado de carga de la batería = Lenta.
  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 MUTT Software Pack. 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. Requiere que el controlador se cargue y ejecute y que también tenga habilitada la interfaz de prueba. 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 a instancia del dispositivo en el menú desplegable y anote 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. Reinicie el dispositivo seleccionando la opción Deshabilitar en el nodo de dispositivo del Administrador de dispositivos 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 Send 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 Send 0 6
Funcionalidad del conector Get UcsiControl.exe Send 0 10007
Establecer UOM DFP: UcsiControl.exe Send 0 810008

UFP: UcsiControl.exe Send 0 1010008

DRP: UcsiControl.exe Send 0 2010008
Establecer UOR DFP: UcsiControl.exe Send 0 810009

UFP: UcsiControl.exe Send 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 Send 0 13