What is the USB Type-C Connector Class?

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.

USB Type-C plugged into USB Type-C port on Macbook

Image by Maurizio Pesce on Flikr.

The Various Configurations of USB Type-C

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

  • Receptacle or Captive Cable

Power

  • PD2.0 or PD3.0 FRS ask or give
  • Source, Sink, or DRP Unconstrained Power
  • Sources any power output from 2.5W ~ 100W
  • Sinks any power input from 0.0W ~ 100W

USB Data

  • UFP or DFP or DRD
  • USB 2.0 host or device or both
  • USB 3.2 Gen 1 or Gen 2 host or device or both
  • USB4™ PCIe and/or USB 3.x and/or DP

Alternate Modes

  • VESA DisplayPort™ Alternate Mode
  • Intel Thunderbolt™ 3
  • (Others)

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.

Understanding the Capabilities Between USB Type-C Devices

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

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

USB Power Delivery Cables

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.

Alternate Modes

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

Configurations

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.

Tools for Developing USB Type-C

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.