USB-C Connector System Software Interface (UCSI) Driver - Windows drivers (2024)

  • Article

Microsoft provides a USB Type-C® connector system software interface (UCSI) specification-compliant driver for ACPI transport. If your design includes an embedded controller with ACPI transport, implement UCSI in your system's BIOS/EC and load the in-box UCSI driver (UcmUcsiCx.sys and UcmUcsiAcpiClient.sys).

If your UCSI-compliant hardware uses a transport other than ACPI, you need to write a UCSI client driver.

Drivers for supporting USB Type-C components for systems with embedded controllers

Here's an example of a system with an embedded controller.

USB-C Connector System Software Interface (UCSI) Driver - Windows drivers (1)

In the preceding example, USB role switching is handled in the firmware of the system and USB Role Switch driver stack isn't loaded. In another system, the driver stack may not get loaded because dual role isn't supported.

In the preceding image,

  • USB device-side drivers

    The USB device-side drivers service the function/device/peripheral. The USB function controller class extension supports MTP (Media Transfer Protocol) and charging using BC 1.2 chargers. Microsoft provides in-box client drivers for Synopsys USB 3.0 and ChipIdea USB 2.0 controllers. You can write a custom client driver for your function controller by using USB function controller client driver programming interfaces. For more information, see Developing Windows drivers for USB function controllers.

    The SoC vendor might provide you with the USB function lower filter driver for charger detection. You can implement your own filter driver if you're using the in-box Synopsys USB 3.0 or ChipIdea USB 2.0 client driver.

  • USB host-side drivers

    The USB host-side drivers are a set of drivers that work with EHCI or XHCI compliant USB host controllers. The drivers are loaded if the role-switch driver enumerates the host role. If your host controller isn't specification-compliant, then you can write a custom driver by using USB host controller extension (UCX) programming interface. For information, see Developing Windows drivers for USB host controllers.

    Not all USB devices classes are supported on Windows10 Mobile.

  • USB connector manager

    Microsoft provides a UCSI in-box driver with Windows (UcmUcsiCx.sys) that implements the features defined in the USB Type-C Connector System Software Interface Specification. The specification describes the capabilities of UCSI and explains the registers and data structures, for hardware component designers, system builders, and device driver developers.

    This driver is intended for systems with embedded controllers. This driver is a client to the Microsoft-provided USB connector manager class extension driver (Ucmcx.sys). The driver handles tasks such as initiating a request to the firmware to change the data or power roles and getting information needed to provide troubleshooting messages to the user.

UCSI commands required by Windows

See the UCSI specification for commands that are required in all UCSI implementations.

In addition to the commands marked as Required, Windows requires these commands:

  • GET_ALTERNATE_MODES
  • GET_CAM_SUPPORTED
  • GET_PDOS
  • SET_NOTIFICATION_ENABLE: The system or controller must support the following notifications within SET_NOTIFICATION_ENABLE:
    • Supported Provider Capabilities Change
    • Negotiated Power Level Change
  • GET_CONNECTOR_STATUS: The system or controller must support these connector status changes within GET_CONNECTOR_STATUS:
    • Supported Provider Capabilities Change
    • Negotiated Power Level Change

For information about the tasks required to implement UCSI in the BIOS, see Intel BIOS Implementation of UCSI.

UCM-UCSI ACPI device for UCSI 2.0 and greater

Starting in Windows 11, version 22H2 September Update, the Windows UCM-UCSI ACPI device drivers support UCSI specification version 2.0 and 2.1. The UCSI specification 2.0 has breaking changes in the memory mapping of its data structures as defined in UCSI specification Table 3-1 Data Structures. To maintain backward compatibility, Windows requires the UCSI PPM of specification version 2.0 or greater to implement the following _DSM function under the UCM-UCSI ACPI device in ACPI firmware and return a nonzero value to indicate that UCSI OPM should follow the reported UCSI specification version.

  • Arg0: UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
  • Arg1: Revision ID = 0
  • Arg2: Function index = 5
  • Arg3: Empty package (not used)

Return value:

ElementObject typeDescription
UsePpmReportedUcsiVersionInteger (32-bit)0x00000000 (Default): If the VERSION structure, as defined in UCSI specification Table 3-1 Data Structures, has the value 2.0 or greater, UCSI OPM still follows UCSI specification 1.2. Otherwise, UCSI OPM follows the UCSI specification as per the value in the VERSION structure.

Note

For UCM-UCSI ACPI devices, this is a new function in an existing _DSM method. Other functions of this _DSM method should have been implemented per the Intel BIOS implementation of UCSI document. Function 0, which returns a bitmask of all the supported functions, should be updated accordingly, as well.

Example flow for UCSI

The examples given in this section describe interaction between the USB Type-C hardware/firmware, UCSI driver, and the operating system.

DRP role detection

  1. USB Type-C hardware/firmware detects a device-attach event and the Windows10 system DRP system initially becomes the UFP role.
    1. The firmware sends a notification indicating a change in the connector.
    2. The UCSI driver sends a ​ GET_CONNECTOR_STATUS request.
    3. The firmware responds that its Connect Status = 1​ and Connector Partner Type = DFP. ​
  2. The drivers in the USB function stack respond to the enumeration.
  3. The USB connector manager class extension recognizes that the USB function stack has loaded and hence the system is in the wrong state. It tells the UCSI driver to send Set USB Operation Role and Set Power Direction Role requests to the firmware.
  4. USB Type-C hardware/firmware initiates the role-swap operation with the DFP​.

Detecting a charger mismatch error​ condition

  1. USB Type-C hardware/firmware detects that a charger is connected and negotiates a default power contract. It also observes that the charger isn't providing sufficient power to the system.

  2. USB Type-C hardware/firmware sets the slow charging bit.

    1. The firmware sends a notification indicating a change in the connector.
    2. The UCSI driver sends a ​ GET_CONNECTOR_STATUS request.
    3. The firmware responds with Connect Status = 1​, Connector Partner Type=DFP, and Battery Charging Status = Slow/Trickle.
  3. The USB connector manager class extension sends notification to the UI to display the charger mismatch troubleshoot message.

How to test UCSI

There are many ways to test your UCSI implementation. To test individual commands in your UCSI BIOS/EC implementation, use UCSIControl.exe, which is provided in the MUTT Software Pack. To test your complete UCSI implementation, use both the UCSI tests that can be found in the Windows Hardware Lab Kit (HLK) and the steps in the Type-C Manual Interop Procedures.

UCSIControl.exe

You can test individual commands in your UCSI BIOS/EC implementation by using UCSIControl.exe. This tool enables you to send UCSI commands to the firmware through the UCSI driver. It requires the driver to be loaded and running, and also have the test interface to the driver enabled. By default, this interface isn't enabled so as to prevent it from being accessible to unauthorized users on a retail system.

  1. Locate the device node in Device Manager (devmgmt.msc) named UCSI USB Connector Manager. The node is under the Universal Serial Bus controllers category.

  2. Select and hold (or right-click) on the device, and select Properties and open the Details tab.

  3. Select Device Instance Path from the drop-down and note the property value.

  4. Open Registry Editor (regedit.exe).

  5. Navigate to the device instance path under this key.

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

  6. Create a DWORD value named TestInterfaceEnabled and set the value to 0x1.

  7. Restart the device by selecting the Disable option on the device node in Device Manager, and then selecting Enable. Alternatively, you can restart the PC.

You can view the help by running UcsiControl.exe /?.

Here are the common commands:

UCSI commandUcsiControl.exe command
PPM ResetUcsiControl.exe Send 0 1
Connector ResetSoft reset: UcsiControl.exe Send 0 10003

Hard reset: UcsiControl.exe Send 0 810003

Set Notification EnableAll notifications: UcsiControl.exe Send 0 ffff0005

Only command completion: UcsiControl.exe Send 0 00010005

No notification: UcsiControl.exe Send 0 00000005

Get CapabilityUcsiControl.exe Send 0 6
Get Connector CapabilityUcsiControl.exe Send 0 10007
Set UOMDFP: UcsiControl.exe Send 0 810008

UFP: UcsiControl.exe Send 0 1010008

DRP: UcsiControl.exe Send 0 2010008

Set UORDFP: UcsiControl.exe Send 0 810009

UFP: UcsiControl.exe Send 0 1010009

Accept: UcsiControl.exe Send 0 2010009

Set PDRProvider: UcsiControl.exe Send 0 81000B

Consumer: UcsiControl.exe Send 0 101000B

Accept: UcsiControl.exe Send 0 201000B

Get PDOsLocal Source: UcsiControl.exe Send 7 00010010

Local Sink: UcsiControl.exe Send 3 00010010

Remote Source: UcsiControl.exe Send 7 00810010

Remote Sink: UcsiControl.exe Send 3 00810010

Get Connector StatusUcsiControl.exe Send 0 010012
Get Error StatusUcsiControl.exe Send 0 13
USB-C Connector System Software Interface (UCSI) Driver - Windows drivers (2024)

FAQs

How to fix ucm ucsi acpi device error? ›

Expand the "System devices" category, right-click on "UCSI ACPI Device" and select "Update driver". Reset the UCSI driver: In the Device Manager, right-click on "UCSI ACPI Device" and select "Uninstall device". Then restart your computer. Windows should automatically reinstall the driver.

What is UCSI in BIOS? ›

Microsoft provides a USB Type-C® connector system software interface (UCSI) specification-compliant driver for ACPI transport. If your design includes an embedded controller with ACPI transport, implement UCSI in your system's BIOS/EC and load the in-box UCSI driver (UcmUcsiCx.

What driver controls USB C port? ›

A USB Connector Manager Driver is required for Windows to manage the USB Type-C ports on a system.

How do I reset my UCM UCSI ACPI device? ›

Press and hold the power button for about 20~30 seconds, then reboot the computer and check whether UCM-UCSI ACPI device is back to normal.

What causes ACPI error? ›

This can happen because of a failed BIOS update or other software/hardware issue. Hardware conflict: In some cases, hardware conflicts can cause ACPI BIOS errors.

What is USB-C UCSI? ›

Describes the specifications and capabilities of the USB Type-C Connector System software Interface (UCSI), and explains the registers and data structures, for hardware component designers, system builders, and device driver developers.

What is BIOS linked to? ›

BIOS (basic input/output system) is the program a computer's microprocessor uses to start the computer system after it is powered on. It also manages data flow between the computer's operating system (OS) and attached devices, such as the hard disk, video adapter, keyboard, mouse and printer.

Which driver is required for USB port? ›

USB device classes

Microsoft provides in-box drivers for several of those device classes, called USB device class drivers. If a device that belongs to a supported device class is connected to a system, Windows automatically loads the class driver, and the device functions with no other driver required.

Why isn't my USB-C port working? ›

The charger isn't powerful enough to charge your PC. The charger isn't connected to a charging port on your PC. The charging cable doesn't meet the power requirements for the charger or PC. Dust or dirt inside the USB port on your device might be preventing the charger from being inserted correctly.

How do I reset my ACPI? ›

Resetting API keys for all users

In the admin menu, click Administration, and then click the Security settings link. Scroll to API keys and click Regenerate keys. Site Factory will create tasks to regenerate the keys for all users.

How do I fix my ACPI driver? ›

How Do I Fix the ACPI BIOS Error In Windows
  1. Update BIOS. ...
  2. Update The BIOS Driver. ...
  3. Disable Ahci From the System BIOS. ...
  4. Disable JPME1 and Reflash BIOS. ...
  5. Update All System Drivers. ...
  6. Uninstall Microsoft ACPI-Compliant Control Method Battery Driver. ...
  7. Set ACPI Mode to S1. ...
  8. Utilize Windows Startup Repair.
Feb 16, 2023

How to reinstall Microsoft ACPI compliant battery control method? ›

Uninstall and reinstall the battery driver. Open Device Manager >>Batteries >> right-click Microsoft ACPI Compliant Control Method Battery >> click Uninstall device >> Then restart your PC, Windows will automatically reinstall it. Open Settings => Update & Security => Troubleshoot =>Power => Run the Troubleshooter. 4.

How to fix error code 43 Windows has stopped this device? ›

Uninstall and reinstall the device driver

Then press and hold (or right-click) the device and select Uninstall > OK. After the driver uninstalls, press and hold (or right-click) the name of your PC (found at the top of the device list) and select Scan for hardware changes. This reinstalls the device driver.

Top Articles
Latest Posts
Recommended Articles
Article information

Author: Clemencia Bogisich Ret

Last Updated:

Views: 5265

Rating: 5 / 5 (60 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Clemencia Bogisich Ret

Birthday: 2001-07-17

Address: Suite 794 53887 Geri Spring, West Cristentown, KY 54855

Phone: +5934435460663

Job: Central Hospitality Director

Hobby: Yoga, Electronics, Rafting, Lockpicking, Inline skating, Puzzles, scrapbook

Introduction: My name is Clemencia Bogisich Ret, I am a super, outstanding, graceful, friendly, vast, comfortable, agreeable person who loves writing and wants to share my knowledge and understanding with you.