USB stands for Universal Serial Bus and ever since its formation, the USB Implementers Forum have been working hard on the “Universal” part of the equation. USB Type-C, which is commonly called USB-C, is a connector standard that signals a significant new chapter in their epic quest to unify all wired connectivity in a single specification.

Many of us were introduced to this wonder plug in 2015 when Apple launched the 12-inch Retina MacBook. Apple’s decision to put everything on a single precious type-C port had its critics, but it was an effective showcase for a connector that could handle it all: from charging, to data transfer, to video output. Since then, it has gradually spread to more devices. But as the recent story on the Raspberry Pi 4’s flawed implementation of USB-C showed, the quest for a universal connector is a journey with frequent setbacks.

The Incredible Promise of One Plug To Rule Them All

It doesn’t take an electrical engineer to feel a draw to USB-C. Many consumers fell under its spell as soon as they saw it was reversible. No more annoyances with a USB plug that mysteriously manages to be upside-down both ways! But it had even more to offer.

The new connector was slim enough for the latest lightweight gadgets like tablets and smartphones, doing away with thick barrel connectors while carrying enough power to charge laptops. With a greatly increased number of signal wires compared to prior versions, USB-C has enough throughput to feed multiple 4K screens yet it retains backward compatibility by using a cheap adapter. And the specification offers flexibility to go beyond USB with Alternate Mode support for Thunderbolt, MHL, and for protocols that don’t even exist yet.

A single universal port is appealing to product designers who are always working to tame a hodgepodge of ports, each with different size, shape, and mechanical strain requirements. Replacing them all with a single neat row of USB-C ports sounds like paradise. All of this made the rollout of USB-C an eagerly anticipated event across the industry, including here at Hackaday. It seemed like things were off to a good start as the standard launched on premium laptops like Retina MacBook, Chromebook Pixel, and on high end cell phones.

Why Doesn’t My USB Cable Work?

Those early products had the benefit of connecting mostly to peripherals that came in the same box with the purchase — chargers, headphones, etc. We didn’t detect a sour taste with USB-C until third party accessories start coming onto the market. That’s when ambitious plans from USB-IF meetings finally met that perilous land we call the real world.

A promise of USB-C is that we would no longer need to dig through a big tangle of cables, we’d just have USB-C cables and everything will just work. In essence, this removes the need for the user to have any knowledge at all about USB — even which end of the cable to plug into which device becomes moot.

Except it didn’t. The lowest point came when a USB-C cable manufacturer managed to mix up power and ground wires to destroy Benson Leung’s Chromebook Pixel. Hopefully we have left those horror stories in the past, but even when cables are made correctly to specifications, there’s still no guarantee things will “just work”. USB-C is a cable and connector specification, but those cables may be expected to service numerous standards, from USB 2.0/3.1/3.2, to Power Delivery (USB-PD), and alternative modes which encompasses numerous other standards. Trying to be all things to all devices through these multiple valid data speeds and power levels makes for a total combination of six different ways to build a spec compliant cable. This complicates the testing matrix of developing a USB-C device. Not only because lower-spec cables may not work when a higher-spec is required, but also because of situations where non-compliant implementations mean a higher-spec cable would not work even though a lower-spec cable did. (Such as with the initial faulty batch of Raspberry Pi 4.)

These confusing cables and ports present a poor user experience. Just because USB-C could do it all doesn’t mean a particular USB-C port would. Does it supply power? Does it accept power? Does it carry video? There’s no way to tell just by looking. It gets worse as we move away from mainstream devices. For example, Google’s Coral development board has two USB Type-C ports. One is used to supply power, the other communicates USB data, and the only way to tell which is which is to look at PCB silkscreen. Compare this to a barrell jack or other legacy power cord. They certainly weren’t universal, but users didn’t confuse them with data connectors like USB, Firewire, or Ethernet.

Getting There Will Take Practice

On the bright side, the situation is still better than the bad old days. When USB 1.0 launched, one of the ports it aimed to replace were PS/2 ports. Mice and keyboard had mechanically identical PS/2 plugs but would not work if plugged into the wrong one. Even worse, the port had no provision for hot-swapping and some systems protected themselves from voltage spikes by blowing a non-user-replaceable fuse. In contrast making a mistake connecting or disconnecting USB-C devices will not be destructive (ignoring cables of gross incompetence). Sometimes they may not “just work” but at least they fail gracefully.

We’re seeing more and more products designed around advantages of USB-C, and the hardware hacking community is diving in. “Convert it to USB-C power” is quickly becoming a common project theme. You can add it to an old laptop, or use it to charge your wireless mouse. It’s even been added to an easy-bake oven. This category might eventually reach “Put a Raspberry Pi in it” level of popularity.

High profile episodes like Raspberry Pi 4 power circuit design serve as a community-wide lesson so that hopefully the same mistakes will not be made again. Key to this will be a helping hand in understanding the specification and how to test news designs. We also expect proven reference designs like, a proper USB-C power sink, to quickly become a standardized pattern that people can just drag and drop whole into their EDA software of choice. As we all learn and get better at it together, hopefully USB-C will actually become that one plug to connect them all.