2

I plug an unknown USB-C cable into my computer.
Theoretically, could a program read information about that cable? In particular:

  1. What version of USB it supports: 2.0, 3.1, etc.
  2. Whether it supports Thunderbolt, etc.
  3. Whether it supports Power Delivery, Quick Charge, VOOC, SuperCharge, Pump Express, Super FlashCharge, etc.
  4. Up to what speed it can transfer data.
  5. Up to what wattage/amperage it can charge a high-spec device.

Notes:

  • I am on Linux, but answers for other OSes are fine too.
  • Let's say nothing is connected at the other end of the cable. But if really necessary, we can say a recent rooted Android phone is connected and can run whatever code is needed.
  • 1
    cables are dumb so they cannot provide any information, the OS can sense which of the 24 pins are connected which tells it some of it's capabilities>>>>>>>allaboutcircuits.com/technical-articles/… – Moab May 27 at 14:04
  • 2
    @Moab - more recently, cables are starting to come with an "E-marker" (e.g: RT1731) that can help to identify what the specific cable supports... It uses the CC pin(s) and USB PD... I have no idea how this data would be exposed to the system, and I expect that the OS would be very relevant. If a cable does not have an "E-marker", then as you say, there is no way to interrogate the cable. – Attie May 27 at 14:07
  • @Attie Probably not the OS but a specialized piece of hardware>>>>elinfor.com/market/… – Moab May 27 at 14:10
  • 1
    @Moab - special tools can certainly read details from electronically marked cables, I would also imagine that this information should / could be available to the drivers (and if so, why wouldn't it be exposed to user-space)... Markers will be quite important for safe and reliable high-power and high-speed uses. – Attie May 27 at 14:11
  • 1
    To answer the question, Theoretically, Yes someone could code a program to extract this information from the e-marker firmware if the cable has this feature. – Moab May 27 at 14:18
3

All answers of what Type-C connector can do and can't are given in its specifications.

In brief, Type-C cable specs are nearly independent from USB data and USB Power Delivery (Type-C can support anything).

By specs, Type-C connector/cable provides two methods of self-identification.

First one is by combination of resistor pulls-up and pulls-down on both sides of CC wires. Since there are two CC pins in Type-C connectors, and several analog levels, many combinations are available. Other than connect function itself and basic determination of source-sink roles and power capacity, several "alternate" functions are defined, as Display Port, Audio, and Debug mode.

The second amendment to Type-C is the mandatory embedding of e-markers into every C-C cable. The information in e-marker contains name of manufacturer and current carrying capability of particular cable.

The state of CC1/CC2 pins is usually acquired by a special CC-controller chip. The CC-controller communicates with main system by I2C interface. The register-based interface is standardized in Intel document USB Type-C Connector System Software Interface Specification

Microsoft provides a special UCSI driver to communicate the state of Type-C connector to Windows. I am certain that Linux does have the corresponding driver as well, take a look at this article.

So, partial answer your set of questions can be found in the following EE article. #1 and #5 is supported. #4 is the same as #1. Regarding #3, Type-C connector supports only one "charging signature", which is Power Delivery specification. Regarding the second part of your notes, if nothing is connected on the other end of CC cable, I am not sure if presence of Ra alone will trigger any detection of the cable, need to check on this.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.