While USB (Universal Serial Bus) connections are in many ways a huge improvement over the parallel, serial, and specialized ports of old, “universal” is still a bit of an overstatement. With a variety of physical form factors and ever-evolving standards, there's more to making a proper connection than simply plugging any cable in.
Making things even more complicated, just looking at a USB cable's form factor isn’t always enough to tell whether it will properly power and transfer data to and from your device. Perhaps a particular Micro cable is only for charging, leaving out the data pins, and thus leaving you frustrated as to why you can’t program a certain board. Or maybe a cable is broken internally. To get to the bottom of these potential connection issues, TechKiwiGadgets has come up with the Arduino Cable Tracer.
This 3D-printed device features a 2.8” TFT screen on top, straddled by six USB ports. Most common connections are included, such as USB-A, USB-C, Micro-B, and Mini-B, allowing you to plug a cable in on one side and plug the corresponding connector into a socket on the opposite set of ports. An Arduino Mega board is used to scan each of these possible connections, and outputs the results on the Cable Tracer’s screen.
As seen in the first video below, with a USB-C to USB-C connection, it gives a nice onscreen diagram of the proper connections. In the second clip, however, a USB-A to USB-C connector is first analyzed as properly connected, then shows a few problems as the cable is purposely stressed. More info is available in TechKiwiGadget's project write-up, along with a wiring chart and Arduino code.