I’m a bit of a nerd (apparently it’s a job requirement here), so I sometimes dive deeply into a topic. Not that long ago, I took a very nerdy dive into USB-C and USB-PD (Power Delivery) by reading the specification document provided by the USB Implementers Forum. It was great to read right before going to sleep! Since then I’ve been looking for various devices for hacking on USB-PD and seeing how different devices respond. So when I saw the Altmode Friend I was immediately intrigued!
Essentially, this board intercepts all the important USB-C signals, and taps into them using an RP2040 and a FUSB302B USB-PD front end. This gives you the ability to simply sniff the bus to see if a device is compliant with the specification, actively modify what is being sent back and forth, or even add USB-PD to something that doesn’t support it at all. The RP2040 can be connected to either USB-C port; it’s configurable just by moving two jumpers. There are even open-source USB-PD stacks available, so you can get started very quickly!
For those who haven’t read the USB-PD spec, it’s a relatively new protocol that allows USB devices to communicate with chargers and other power supplies. They can negotiate higher voltages and current limits, allowing faster charging or the ability to power more devices. My smartphone communicates with my wall charger; it starts at 5V with a 100mA current limit for a very brief time. Then it communicates and asks for a list of power profiles supported by the charger; it then selects the 9V @ 3A profile and starts charging at 18W! My Nintendo Switch talks to the exact same charger, but instead asks for 15V @ 2A, charging at about 20W. It’s a really neat way to have the same charger adapt to different devices, while still being able to fall back on 5V for devices which don’t support USB-PD.
The Altmode Friend can help you tap into the power of USB-PD; so if you’re interested in hacking on USB, pick one up and check out the specification, and see what you can come up with!