Blast from the past!
This particular project I’ve created quite a few years ago and posted it online on a different blog. The post ended up being featured on Hack-A-Day, Engadget, Gizmodo and a few other places which was great. I had hundreds (thousands? I stopped checking that email a long time ago) of requests to make them and sell them. Instead I posted a complete DIY guide on how to do it.
That didn’t stop other businesses from running with the idea. Not long after my DIY page was complete a few websites began making and selling the controller. One of the sites even linked to my video displaying how it works as their own video of their own product! Ha!
The first USB NES controller was made in 2002 (or thereabouts). The below pics are taken from the controller I made around 2008. A SNES controller was also made around 2003, but I never made a Howto for it.
Well anyway, for posterity, ive decided to port the contents of the DIY to this page. Hope it comes in handy for you!
Original (edited) blog post below.
I really like the idea of DIY and so far this blog has brought about plenty of ideas that enhance the USB NES Controller or make it easier/cheaper to build. So please, lets all share these ideas.
For those of you who have emailed me and I haven’t replied. I apologise. Please post your questions as a comment to this article and I’ll do my best to reply.
Ok guys, I’ve gotten quite a number of requests to make a tutorial on this to ignore. Sorry it took so long. I recently made 3 more controller, each a little different from the other. I may make tutorials on those later. Next NES controller I make will need to be wireless, if someone does this before I do please let me know.
No video tutorial. Sorry, I’m not too good with video editing just yet. If any of this tutorial is unclear comment on this and I’ll try and fix it up.
If you find this DIY/Howto useful please leave some feedback! Thanks!
Ok, let’s start:
EDIT: I’ve added this basic diagram. Hope it helps. There are 3 USB devices inside the controller. The USB HUB (which is the only device with a USB plug on it), a USB thumb drive (2GB in this case) and a USB keyboard controller (which controls the button presses on the controller).
The board between the clamps is a keyboard controller. This one I took out of an older model SNES controller I had made many years ago, so its been cut down from its original size. Further cutting down is needed now to fit it into the NES controller cavity.
The long rectangular contacts on the board are the keypress contacts (for when you press a button on the keyboard). A keypress shorts the circuit between one of the contracts on the left of the hole in the middle and another contact on the right of the hole. So if you want to emulate a keypress you need the correct combination of a contact from the left (if you have a look at the sheet of paper, you can see these are labelled A to M) and right (labelled 1 – 13 on the paper).
I made a grid (the sheet at the top) with the X axis A to M and the Y axis 1 – 13. This way I could easily identify which two contacts would give me what output keypress.
The wire coming off the bottom of the board is just a standard USB cable. +5V (usually red), ground (usually black), Data+ and Data- (green and white). Some USB cables have an additional 5th wire for ground or shield, you can safely ignore this if your controller has one.
I tested the keyboard controller out by plugging it into my computer and manually shorting the board contacts to see what output it would give me on notepad.exe and writing it down. It takes long doing it this way but I had no choice as I didnt have the actual keyboard with me to trace the tracks I needed. If you are opening up a keyboard from scratch, then it may be easier for you to just identify the keys you want to use and trace the tracks and test using a multimeter.
The untouched NES controller board. We will be cutting this down later on to make it as small as possible.
Using soldering wick, you will need to remove the IC, 2 resisters and the cable to make working on the board easier.
Board with removed IC, cable and resisters.
Each button on the board has two contacts. That’s a total of 8 buttons and 16 contacts. The NES board is made in such a way that each button has one contact to earth and the 2nd contact is for signal. So that’s 8 signal tracks for 8 signal contacts and 1 earth track for 8 earth contacts.
The keyboard you mapped up earlier will have a few common contacts also (the same contact on one side to different contacts on the other side, bringing different results). You need to write down and map out these contacts on the new layout. Make sure you include the common contacts too as this will reduce the amount of wires needed later on.
Ok its getting a little harder now.
The paper underneath the board shows the tracks I need. You will need to cut existing tracks here, bridge tracks together or make new ones. Every keyboard controller is different so its up to you how you do this. Just keep in mind that you need to be 100% on your layout before you go cutting or making new tracks. Also when making new contact points on the board make sure they are out of the way of the buttons that will sit on top of the board. The buttons take up a considerable amount of the surface of the board. If you are bridging tracks use a pair of pliers to squash the solder down to make it as flat as possible. For any extended bridges run your wires behind the board.
You can see in this pic that I’ve cut up a few existing tracks and bridged other ones. I have also run a couple of wires behind the board. Using a hack saw I cut down the board as much as I could (make sure you don’t cut away the hole for the guide, top left to the right of the ‘up’ button). At this point if you haven’t made any mistakes with your board modification youre doing well. Using a multimeter test your work and check for shorts.
Final result is 10 wires for my keyboard controller. The ribbon cable I got from an old computer (the IDE cable inside). They are perfect for this sort of work and very easy to find one of these cables).
Soldering the cables to the keyboard controller for a quick test. This is only for testing. Once everything tests fine I pull off the keyboard controller. The final solder required the wires between the two board to be much shorter.
Soldered on a new USB cable. This new cable will be soldered directly onto the USB hub which will be housed inside the controller.
Fitting it together and testing again. Wires much shorter this time and the keyboard controller is glued down to the NES board. The bottom, middle screw that holds the NES case together will go through the hole in the keyboard controller also, making it nice and solid. In this pic you can see the USB wires I’ve soldered on and also the existing USB cable that ive left in its place for testing, eventually they will be cut off.
These are both USB hubs. The one above is still in one piece. The one below is the one I used many years ago in the SNES controller. Ill be re-using this one. I had butchered the board many years ago but still managed to somehow make 2 of the 4 ports work for this project. The capacitor on the board stands too tall so it has been put on the end of a couple of wires. Depending on the USB hub you buy, you may need to cut it back to make it fit in the controller case. The bottom USB hub in this pic was modified to fit (it looked like the top USB hub before modification). The board is split almost symmetrically with the one IC controlling both sides of the board. Each side has 2 ports to it. You only need two ports for this project so the top half of the board has been cut down (and the capacitor removed) and those two ports won’t be useable.
You need to cut away parts of the controller case to make the hub fit. Do what you need to do here.
Removed the keyboard controller USB cable and soldered the new wires to the USB hub and test.
Retro-fitting to make sure all sits well.
2GB USB drive. You need to take the USB connector off. BE CAREFUL!!! I’ve broken a few of these damn things. It’s very difficult to remove all solder without the proper tools, so in this case I just used my knife to cut across the 4 USB contacts and then used pliers to break of the end pins holding it down. This made it easy to remove by simply bending up the connector.
2GB drive soldered onto the HUB and test.
The silver USB hub cable removed and replaced with a black one for more of a classic NES controller look. Everything screwed together and tested.