A couple of years ago I made a cursed USB 2.0 device, which got my first hackaday mention: https://hackaday.com/2021/03/22/cursed-usb-c-when-plug-orientation-matters/ This version was based on a pair of SAMD11s, which limited the device quite a bit.
Last year a friend asked for some help designing a dev board for an electronic badge which required a main MCU and a secondary MCU to be used as some sort of crypto chip. This gave me an excuse to use this technique again, but now with two RP2040s.
So, how does this work? This is the pinout of a USB-C socket:
![]()
What you can see is that the socket has two D+ and D- pairs, but the plug has only one pair. In a USB 2.0 device you're supposed to connect the D+, and D- pins, in your PCB to create a single pair. But there is nothing really stopping you from not doing that.
So what I did was connect one D+ and D- to one RP2040, and the others to the other RP2040. A bit of code in circuitpython later, and I have a device which blinks differently depending on the plug orientation. It also exposes a completely different mass storage device.
