I have a USB arcade stick that I would like to dual mod (i.e. connect two controller encoders together) in order to make it work on Xbox 360 and PlayStation 4. I have both PCBs (specifically a MadCatz TE PCB for Xbox 360 and a PDP Mortal Kombat X controller’s guts for PS3 and PS4) ; they are both common ground and their button and joystick inputs are connected.
The traditional method of dual modding two USB controller PCBs involves connecting VCC and GND between the two boards and your USB cable so that they are powered and grounded at all times while the USB cable is plugged into a USB port (either on a console or a computer). You would then solder your USB cable’s D+ and D- wires to the center poles of a DPDT switch, with the two PCBs’ D+ and D- being connected to opposite poles of the same switch. You’d then have to drill a hole on your case somewhere and mount the switch.
What this basically accomplishes is that while both boards are being powered and grounded, only one of them is sending data through the USB cable to the console or PC’s USB port, and you’d be able to change which PCB is the one sending data with the flip of a switch.
The other method involves simply giving each PCB its own USB cable and connecting their inputs, VCC and GND, but that again requires drilling of a hole to thread a second cable. In addition, accidentally plugging in two cables simultaneously with both boards’ VCC being connected will supply too much power and fry them, and that’s another precaution I don’t want to worry about.
While I have done this before, drilling a hole permanently into an arcade stick is very scary, and so I’ve been looking for a way to make it so that I would be able to not have to mount an external switch (because I don’t want to repeatedly unscrew and open up my stick to flip the switch when I want to change consoles either).
There was a device in the arcade stick enthusiast community called the Imp board by one Marcus “Toodles” Post. It was a tiny circuit board with some ICs and a capacitor where you would solder your outgoing cable’s USB lines, as well as the USB lines on the two PCBs you were dual modding. This basically acted as a DPDT switch without the actual switch component and worked by holding down a button on your arcade stick while plugging it in. By doing this it would swap which set of data lines would be going out to the cable. It would also save that selection so that unplugging and replugging with the button held down swaps to the other PCB’s data lines.
The issue with simply purchasing an Imp is that Toodles is no longer selling anything through his online store, so I figured I’d just make my own replica of the Imp board.
I asked some buddies on the forum I frequent, and one of them suggested coding an Arduino to act as a USB data switch.
And that’s ultimately why I’ve come here.
Being a bit in the dark about Arduinos and with about 3 high school semesters knowledge of programming (Turing, then Python and Java, then more Python and some Assembly), I’m here to ask for guidance from experts in creating a micro controller that simply swaps between two sets of PCB data lines if I hold a button while plugging the cable in. I don’t need it to remember my selection like the Imp did, i.e. I’m okay with it not swapping to the other PCB unless I hold down the button and plug it in each time I want to do so.
All input is appreciated. Thanks!
- (Not) Justin Wong