USB Type-C is known for being a powerful yet flexible connector. It brings multiple different capabilities to the user including its ability to bidirectionally transmit both data and video protocols at rapid speeds and support up to 100W of power using the Power Delivery (PD) protocol. Essentially, USB Type-C is a connector that can support a variety of different functions, speeds, and power levels, but it’s not always clear what its capabilities are when used with other devices, as not every Type-C cable is made equal.
There are many USB-C port features that contribute to a cable’s variability including its power capabilities, USB data capabilities, if it contains Alternate Mode support, and whether it’s a receptacle or captive cable connection:
Connector
Depending on the specification and what the cable is intended to be used for, it can support a wide range of functions, from the speed it can support to the amount of power it can supply or receive. While USB specification logos provide insight into the cable’s supported speeds and charging capabilities, the cable may not be able to maximize its capabilities if another device or cable can’t support these features equally.
To make USB Type-C’s capabilities more evident to consumers, contributors to USB technology have created a new API software called “USB Type-C Connector Class” under Linux that provides an interface for the user space to get information on the USB Type-C connector and its capabilities within a system. It provides control over data role swapping, and over power role swapping and Alternate Modes if the port supports USB Power Delivery.
This API enables the operating system to provide consumers with a GUI that shows a device’s capabilities including USB speeds, power charging, or video technologies, etc. To achieve the user space interface, each Type-C port is registered as its own device as a virtual file to the Linux system and classified under sys/class/typec/. Each USB Type-C port is indicated as port0, port1, port2, etc, with a full path for port0 as /sys/class/typec/port0.
Partner devices are also registered as their own device, and the parent of the partner device, which is the port it is attached to, is represented as “port#-partner”. The partner path for port0 would be /sys/class/typec/port0/port0-partner/.
Connected cables and its two plugs may be optionally registered as their own devices. The cable will be represented as “port#-cable”, where a cable connected to port0 will be registered as “port0-cable” with a full path of /sys/class/typec/port0/port0-cable/.
If a cable is capable of USB Power Delivery, it will also register one or two plugs. For port0, the plug on the SOP’ end will be presented as “port0-plug0” and the plug on the SOP’’ will be presented as “port0-plug1”. The full path for this will be /sys/class/typec/port0/port0-cable/port0-plug0 and /sys/class/typec/port0/port0-cable/port0-plug1.
Any other alternate modes will have its own device describing it and will be classified under its own group, Alternate Mode device “mode<index>”. The alternate mode will not be attached to the Type-C class, but will be attached to the parent of the alternate mode. The full path for alternate mode can be found as /sys/class/typec/port0/<alternate mode>/mode1/.
Below are all the configurations for registering the port, partner, and cable:
/sys/class/typec//sys/class/typec/port0
/sys/class/typec/port0/port0-partner/
/sys/class/typec/port0/port0-cable/
/sys/class/typec/port0/port0-cable/port0-plug0
/sys/class/typec/port0/port0-cable/port0-plug1
/sys/class/typec/port0/<alternate mode>/mode1/
More on the USB Type-C Connector Class can be found here.
Need the right tools to help debug and develop your USB Type-C developments? Total Phase offers a variety of tools that can help expedite and quickly debug your USB systems. Our USB Power Delivery Analyzer allows developers to monitor PD protocol traffic on a Type-C cable. It connects in-line between two Type-C products and passively captures all communication between them on both the CC1 and CC2 signals. Additional features include: message decoding including power negotiation, alternate mode negotiation, VDM data display, and capturing and displaying PD 3.0 extended messages.
To verify a USB Type-C cable is within specification, our Advanced Cable Tester v2 allows cable developers a way to discover quality or safety issues by providing insight into the cable’s pin continuity, DC resistance, E-marker, and signal quality. For other USB developments, Total Phase also offers an extensive line of USB Protocol Analyzers to non-intrusively monitor USB communication on the bus in real-time.
Have questions on how Total Phase can support your USB developments? Please feel free to contact us at sales@totalphase.com.