TL;DR:
The USBC is just a connector that can support multiple functions on each device. USBC cables themselves are different depending on what functionality they support. But in a major screwup, there is no labelling cables and sometimes even on devices to know what is supported. So you cannot know if you can get function X from the first device, the cable and the second device when connected together.
Intro
Let’s say your friend gives you a free monitor and you notice there is a USBC port on the back it. You also have a laptop that has a USBC port, and you also have a bunch of USBC cables. Can you answer this simple question “Can i use this monitor with the laptop via USBC as an external display?” Well, because of the complexities of USBC and how how poorly it is labelled, your average person will learn that the answer to this is not so simple.
Let’s start with a bit of history
When the Universal serial bus or USB was invented, it’s purpose was to replace multiple types of ports the you could find at the back of the computer with a single type of port that could universally do all the functionality. Then you could have multiple ports that were both interchangeable and universal. This was a great success. After the first version we quickly got to version 2.0 and until this moment, things were simple. The ports have 4 pins and there are 4 corresponding wires in the cable: 2 for power from the computer to the peripheral, and 2 for data(D+ and D-). Now, the 2 data wires are actually sending one signal, this is called a differential signalling, and the 2 devices take turn in “speaking” on the same signal, which is called semi-duplex.
Things were really simple: you could expect that if you connect a computer to something else they would just work. Cables were also simple, because they had 2 types of connectors, the A connector which went to the “big” device like the computer and the B which went to the peripheral. There were also a few smaller versions of the B connector, like the mini and the micro for smaller devices.
Then USB 3 came along and just added 4 more wires and pins to the connectors: 1 pair for a dedicated high speed data lane in one direction (TX+ and TX-) and one pair for the other direction(RX+ and RX-). So now, besides the original communication we have 2 more lanes, and higher speed electronics, which is why USB3 is so much faster than 2. We found a way to add the connections in the big A and B connectors and we made them blue so the average user could understand. The micro B just grew in size to add those extra pins in a very ugly way. But things were super easy to understand for the average person: if you want the 3, it has to be blue all over the place: the devices connectors and the cable connectors. If any of the 3 things did not support the super speed USB3, the connection would just be downgraded to a USB2 connection. It was all pretty simple.
Then came the new connectors, the USBC, which were invented to solve a few problems: it needed to be way more durable and small for portable devices, it needed to be able to carry MOAR POWEEERRR and it needed to be more future proof. Oh, and they needed to be symmetrical to help all those unlucky people that need 3 tries to plug in a cable that could only be plugged 2 ways. Now, that while the USB A and B connectors from previous generations were used exclusively to carry USB signals and work with USB protocol, the USBC connector is expected to do more things.
So how do you make a connector symmetrical? you just duplicate the pins on top and bottom, in reverse order and connect them together via the cable, like below. On the device side, all the pins with the same name are connected together, so the cable only needs to create a contact between say the D+ on top on one device and the D+ on bottom of the other (oversimplification!).
Image source: Wikipedia.
Twist one: more pins
There are now more pins than before. USB3 needed 9, but we have 24, which is more than 2×9. First, we have 4 instead of 2 GND pins and VBUS, which allows the port to carry more current. Then, we have an extra SBU and CC pins. The CC pin is “configuration channel” pin and used for an uber function: decide what the signals going through the connector should do. This helps the port do other things with the SBU, TX and RX pins like be a headphone connector or negotiate the power delivery or alternative function.
Twist two: alternative function
Remember how I said that the USBC is just a connector? Well through the help of the CC pins, the 2 connected devices can negotiate to do something else, not just provide a simple USB port. This alternative function can be squeezing in a display port or thunderbolt port, or a headphone signal or even combinations of these. The USBC connector pulls in another trick: notice how in fact on top and bottom the pin pairs are TX1 and TX2 and RX2 and RX2 and not just TX and RX? That is because they can all 4 be used for different functions, instead of using just 2 pairs.
Let’s look at a couple of cables
If you have encountered USBC cables in you life, you might have noticed they are not all the same. On the left, a basic cable which is what you get when you buy a phone. This cable contains 5 wires: GND (the shield) and VBUS (Red) carry power, green and white (D+, D-) for USB2 data and blue for the CC pin. Such a cable is only good for 2 things: transfer data at low USB2 speed and let a phone charge (including using power delivery which is negotiated with the blue wire).
Now look at the cable on the right. This one is from a docking station, which connects to a laptop and supplies power to the laptop, while high speed usb, and a display port are carried over to the ports of the docking station. This cable is full of wires, 22 of them in fact. Each of the 24 pins in a USBC connector has a corresponding wire, with the exception of GND and VBUS, which each has 2 wires and 4 connections on the port. All these wires are needed to carry a high current to charge the laptop via power delivery, to provide a USB2, a USB3, display port and thunderbolt port connections between the laptop and the docking station.
So the conclusion is simple: what a USBC cable can do for you depends on which connections are present inside. These 2 cables above are examples of the 2 extremes: the minimalistic cable that provides just charging and slow data and the maximalist cable that provides a full functionality support. Naturally, there is a tradeoff and there is no best cable for all applications. Oh, and between the two extreme types of cables, you have multiple other combinations. And, get a hold to this: there are different speeds that ports can operate at, and cables also have different speed ratings.
Its the same on the other side of the connector
The same situation with the cable repeats inside each device on the other side of the USBC connector: different hardware is needed to provide different functions like power delivery, slower or higher data rate, DisplayPort, thunderbolt, analog audio etc. There are even multiplexer chips inside some devices to change the functionality on the fly.
Where they f*cked up
You will intuitively understand that in order to get a specific function working with USBC, like sending a monitor signal, requires that all 3 pieces of the puzzle to be in place: The source device should support display port functionality, the cable should have the wires to carry this signal and the destination device should be able to use that signal. Much like going from A to B by train requires a train station in A, a train track from A to B and a train station in B. Any of this missing and it wont work. Of course, having tradeoffs in which function is available in which device and which wires are placed in a cable might make sense.
But where the USB consortium f**ked up is that they did not develop any clear standard of labelling devices and cables so that one might know what each can do. There is no normal labelling on cables, there is nothing to tell you what is carried through the cables, so your average user has no idea what a specific cable is good for. Then, there is some basic labelling on device ports which are always optional and which have gone through multiple name and symbol changes over the years.
So one has to ask, is the screwup just because of missing labels, or did we overcomplicate the world by putting so many optional and varied functions over the same connector? History may never have an answer for this.
Pingback: USB C Cable mysteries #USB @electr_bob « Adafruit Industries – Makers, hackers, artists, designers and engineers!