Introduction: SNES USB Controller and Flash Drive
This instructable will detail how I went about modifying an SNES controller into a USB controller with built-in flash drive. This is not a very fancy method, just pulling together bare hardware bits to get the job done.
Full credit for the general idea goes to this howto for a similar project with an NES controller. My brother inherited my NES from me, so all I had to work with was an SNES controller... and since it lets me play a wider variety of games it seemed like a perfect thing to do. The project ended up being a bit more difficult than I expected, and I tried to document as much of the process as I could.
Soldering/desoldering work is required for this, and I'm assuming you have some general knowledge of working with a soldering iron and continuity tester. I'm a software/networking person, though, and not an expert with a soldering iron by any means. A steady hand and a lot of patience can be a big help.
This is my first instructable, suggestions are definitely welcome. I apologize in advance for some horribly bland photography.
Step 1: Collecting Parts
It's probably possible to find cheaper parts than I used, especially if you shop it around online. Just be aware that there's always the possibility that a part may not fit the available space, and try to evaluate what you're buying as much as possible ahead of time. Smaller is better, though your soldering skill may factor into it as well. If you use different parts or have a different controller (see below) then you'll have to improvise your own methods, but the general ideas I used should cross over.
I'd suggest taking a look at the next step (with the controller apart) before getting any parts.
Once you have parts that you know will work, considering getting a backup set in case you mangle something. Naturally, the only part I did not get a spare for (the keyboard) was the only one I ended up breaking in the process.
Parts used:
1 x SNES controller - I used an old one lying around from my younger years.
1 x USB hub - I found a tiny four-port hub that even had a clear casing so I could see the shape/size of the board inside. Roughly $12.
1 x USB keyboard - I used an "Alaska" keyboard. $12 from the local computer store. This is a bit harder than the hub, since there's no way to tell what the inside components look like. The cheaper the better, since you may end up needing to try a different model.
1 x thumb drive - a 4G Sandisk Cruzer I had lying around since I upgraded to an 8G drive recently
Equipment used:
soldering iron - a cheap one from Radio Shack worked for me. Check the wattage, you want the cooler ones for electronics work... but you can make do with a hotter one if you're careful.
solder - basic rosin-core electronics solder
multimeter - A simple continuity tester will work, I just used it to check for shorts.
dremel - I did need to modify some of the circuit boards. There's a lot of possible substitutes for this, but you'll need something you can make precise cuts with.
A note about SNES controllers: when I started this project I had only one old controller that I got with my original console, so I ordered two online to use as spares. When they arrived, I noticed that the area around the buttons was greenish (almost a pale lime green) and the "Super Nintendo" logo was different, so I set them aside as last-ditch spares. Towards the end of the project I pulled one of these spares apart to test something and found out that they were a completely different design, with the controller board pushed almost flush with the backside of the controller rather than close to the front (among other changes). This would have made it impossible to use the layout method I used, so be sure to check the controller insides and plan your parts accordingly!
Step 2: Initial Controller Work
The first thing to do is to open the controller up and take it apart. There are five screws on the back, and then everything just lifts apart. I suggest leaving the controller button-side down and lifting off the back, the buttons can easily fall out and go bouncing all over the place if you tilt the front. Also, be very careful with the screws on the back, and remove them completely before flipping the back over.
Take a while to get a good look at how the controller fits together, and where the empty space is. This is all you have to work with (unless you drastically modify the controller board), so get familiar with the spaces that form when you put the controller board in place against the back or front of the controller. If you'll be using different parts, this is where you get an idea of how large they can be and how you might fit them in.
In my case, the controller board sits fairly flush with the buttons on the front, and there are plastic posts and platforms on the back that push the board up and form the space I'll work with. Aside from a few posts in the center there is a nice rectangular space between the two round platforms that support the d-pad and buttons.
Once I had my parts and had figured out a possible layout for them, I removed several of those posts in the middle of the controller with my dremel and flattened out the rounded bump in the center.
Step 3: USB Hub
This is where the actual work begins.
Taking the hub apart:
The case of the hub I used was held together with a single screw, the case lifted apart to reveal a single board.
I then carefully removed the USB connectors. They're hard to remove because of the soldered tabs on either side, when I tried to heat those tabs up while lifting up on the connector the whole pad underneath the tab delaminated from the board and broke off. After that, it was just a matter of either desoldering the connector's pins from the board or snapping them off, I recommend keeping the pins on at least one connector so you can use it in later steps to map the pinout of your usb cables.
If you snap pins off, you can clean the remaining bit off the board by lightly dragging the soldering iron tip with a small blob of solder along the length of the pad, the pin should come off on the iron. It's a good idea to do this on the rest of the pads as well to clean them up and make a nice, shiny pad for later soldering.
Modifications:
In order to make the hub fit into the controller I opted for a diagonal placement, but this put one end into the bottom of the controller with much less empty space. To deal with this I carefully desoldered the two capacitors on that end and soldered them to short lengths of wire so they could be repositioned (taking care to keep the pins connected the same way they were on the board). I also desoldered the LED and connected it to a length of wire since it stood much higher than the other components. The capacitors had very small leads on them, I had to be extremely careful when soldering the wire on to make sure it had a good connection and that stray strands of wire wouldn't cause a short.
Finally, to fit the board in diagonally on the controller I had to trim off one corner of the board (being very careful not to cut through circuitry on the reverse side). I could have taken off a good portion of the end of the board, but this was actually my first attempt at using a dremel so I kept modifications simple.
Step 4: Keyboard Controller
Next we get to tear apart the USB keyboard.
Taking the keyboard apart:
The keyboard was held together with a lot of tiny screws in the back, including one hidden behind a quality control sticker. Once all the screws are removed the back lifts easily off.
Inside the keyboard is a little circuit board, and a sandwich of two transparent plastic sheets with printed circuitry on them. The pressure from the buttons in front completes a circuit between the two sheets, and the pair of contacts that this connects together on the circuit board tells the controller which button was pushed.
You'll want to map out the circuitry for the buttons you want to use and make notes of the contacts on the circuit board that they match up to. Alternatively you can get a keyboard mapping software and see what keys are pressed as you short each of the contacts that connect to one of the plastic sheets to each of the contacts that connects to the other sheet, but that can sometimes give confusing results.
I labeled the contacts on my controller as A through Z because there were 27 of them, and mapped out the contacts I wanted. Once I was sure of the contacts, I carefully scraped the black coating off the (nice, thick, easy-to-solder) contacts and put beads of solder on each contact.
Modifications:
I desoldered the LEDs from the controller and removed them completely. In order to fit this into the controller case I cut off the end of the board with the last two contacts (y and z) and angled the corner at the top of the controller, this let it fit in perfectly on top of the hub. The side at the top of the case just barely fit flush with the support platform on the right-hand side of the case, inside the space allowed by the SNES controller board. I had to carefully push the capacitors on the top of the keyboard controller to angle them outwards and clear the USB hub.
Finally, I connected one of the USB hub's connectors to the keyboard controller's usb cable, and using the multimeter mapped out which pins of the keyboard controller connected to which pins on the connector. I then removed the cable and soldered a short piece of ribbon cable between the keyboard controller and the first port on the hub, matching with the pins that the usb connector would have been connected to.
Mapping:
The key mapping I used was:
arrowu = h + v
arrowl = h + x
arrowd = k + x
arrowr = j + x
enter (start) = h + u
'/' (select) = b + v
'z' (B) = a + w
'x' (A) = b + w
'a' (Y) = a + u
's' (X) = b + u
'c' (R) = c + w
'd' (L) = c + u
There's a small problem with the "select" mapping. On Windows systems, this shows up as a '/', but on Linux it shows up as '<'... and on a Mac it showed up as ' §' (a section symbol). I may have mis-mapped this one. It doesn't seem to cause any problems on Windows, at least.
Step 5: Connecting the Buttons
If you've gotten this far and everything fits, you're doing well. Make sure to try test-fitting the keyboard controller and hub into the controller casing with the SNES controller board on top and check that everything sits where it is supposed to sit without the extra parts underneath. Also, this is a good point to plug the USB hub in (taking care that it's on a non-conductive surface) and short the keyboard controller pairs with a short piece of wire to make sure you get the key presses you want.
Modifying the SNES controller:
I tried to keep the controller board as unmodified as possible, so this is just a matter of cleaning off traces that you want to solder to and cutting traces that you do not want connected together. Make a map of the traces, and try to find points close to the outside edges that can be used to connect the buttons to the correct keyboard connectors. Make sure you have everything laid out before you cut any traces, once you cut these it's possible to repair but not easy.
When you start cutting traces, make sure to cut any connection between the buttons and the chip at the top of the board. Otherwise you'll end up with weird issues where one button press can fire off multiple buttons because a circuit gets completed through the chip. It would be a good idea to remove the chip altogether but I didn't have a soldering tip for this and couldn't find another good way to do it.
I removed the socket for the original controller cable in order to give some additional room for everything else.
I used a short piece of ribbon cable to make the final connections. The idea is for it to be just long enough for the controller board to go in the front of the controller while the hub and keyboard controller are put in place in the back, and then the whole thing is carefully clamshelled together with the connecting cable short enough to curve and not get in the way.
While making connections I stopped at several points (after connecting pairs of wires) to test the buttons that should be enabled. This will prevent you from getting everything connected up before realizing there is a problem. One of the rubber button pieces from the shoulder buttons worked to complete the button connections for testing.
If you get this all together and all the buttons work, you could stop there and have a working USB controller. This would have been a MUCH simpler instructable if I'd left out the hub and stopped here. But since we went through the trouble of putting the hub in there, we may as well add a drive..
Step 6: Flash Drive
The flash drive will make our controller into a storage device as well as a keyboard.
Opening the drive:
The drive I used was a simple plastic casing with a row of tabs along the sides on one half of the case, and a long segmented slot for the tabs on the other half. I got a small screwdriver between the halves and carefully levered them open. Since I wasn't going to do anything with the case afterwards I wasn't concerned when I broke a bit of the slot while opening it.
Modifying the drive:
With the drive naked, the first thing to do is plug it into one of the hub's connectors and map out the pins. On mine, the pins went straight through, which made the connection very easy.. since I was putting the drive on the opposite side of the hub from where the connectors normally would be I had to put it upside down, but otherwise the connection was straightforward.
Removing the USB connector from the drive was rather more difficult. After several unsuccessful attempts to desolder the tabs on the sides, I finally went for a brute force method. With a dremel I very carefully cut away the metal tab right at the board, and then snapped off the connector pins. After cleaning the solder pads, I then connected this to the hub with a short piece of ribbon cable.
Step 7: Final Steps
A few minor details, and then closing the whole thing up.
USB cable:
The cable on the hub was silver, which doesn't look at all like the SNES cable. To fix this, I used the nice black cable from the keyboard controller. I mapped out the wires on both cables using one of the connectors from the hub, and then removed the hub's cable and soldered the keyboard's cable in its place.
Power LED:
Since I already had the hub's LED fed to a long piece of wire, I decided to put it on the front of the controller. I don't have a drill press or anything similar I could use as a replacement, so I ended up very carefully using the dremel to drill out progressively larger holes until the LED fit. I ended up stopping at a size smaller than the LED and carefully pulling the bit around in a circle to widen the hole, so I wouldn't be left trying to prevent a larger bit from making an even larger and misshapen hole.
Short prevention:
I put a drop of hot glue on the repositioned capacitors for the USB hub to prevent them from shorting out, and some clear nail polish in the cut traces on the controller board to guard against anything causing them to short together.
Putting it all together:
It may help to grow an extra hand to finish this last step, please check other instructables for that howto. Every time I thought I had everything held together, something else slipped out of place. You have hopefully been doing test-fits up to this point, so you know everything fits into place with no wires pinched and no squeezing.
The buttons and power LED all need to go into the front of the controller, followed by the controller board. You need to keep this part of the controller as flat as possible, as the shoulder buttons are prone to slipping out of place and falling out at the worst possible moments.
The hub goes into place in the back, and the keyboard controller and flash drive follow. You will probably need to hold the two pieces in a 'V' shape to put the keyboard controller in place. Make sure to also route the USB cable around the shoulder button hinge and out the top of the controller.
Once everything looks like it is in place, you can bring the back of the controller parallel to the front and slowly fit them together. The hinges for the shoulder buttons and the posts that sit behind the small shoulder button circuit boards were the biggest source of trouble for me, getting them lined up while keeping the hub and keyboard controller pressed against the back was a challenge. Make sure not to force it, if you feel hard resistance back off and try to figure out where it is coming from before proceeding.
Whatever you do, don't rush it. It took about an hour of fiddling with this before it all came together for me.
I apologize that I don't have more explanatory pictures of this part, but this would probably have required growing a fourth hand as well.
Step 8: Possible Improvements
Things I might do differently on a second attempt.
USB hub:
It would have been nice to find a smaller USB hub board, although it might be tricky to find one with the right dimensions. I also could have cut more off the end of the board I had, though it wouldn't have made much difference in the final assembly.
I've also seen mention of being able to wire two usb devices together as a "passive hub", but haven't found any information on doing it. If it's possible, it would allow the hub to be left out altogether and a lot of space would be saved.
Keyboard controller:
Ditto on finding a smaller one. It would also be possible to cut off a strip from the bottom of the connectors to shrink it, and depending on how brave one is with the soldering iron it could be cut all the way down to the white line leaving only the thin traces to connect to. There might be a danger of connections snapping off from tension when putting the controller together if you went to the extreme with that, however.
SNES controller:
It would definitely be possible to make more changes to the controller board. Removing the chip from the upper part of the board would be a big start, and could even be used to give a connection point (albeit a small, tough-to-solder one) for each button and cut down on the need to spiderweb connections across the board.
Going a little more extreme, it's easy to imagine cutting an entire rectangle out of the top of the board, removing the chip area completely and giving a lot more vertical breathing room for parts to fit in. This would make for a lot more smaller traces to solder, however, and you would need to be careful how much of the board was removed above the select and start buttons.
Flash drive:
It's interesting to consider putting the drive access LED for the flash drive in the front of the controller rather than just the hub's power indicator. This would probably be rather tricky to do, however.
13 Comments
7 years ago
Nice mod. There are some small and cheap hubs now. If you find one with ports off the board it fits easier. Check out step 5. https://www.instructables.com/id/Dell-SK-8135-Keyboard-USB-upgrade-Mod/
8 years ago on Introduction
so, what you're telling me, is that I can save space on my phone (as I am an emulator geek XD), and the screen, with one hack! rock on dude!
10 years ago
Was at the thrift store a couple days after reading this and saw a usb keyboard with 2 usb ports already built into it for $3. I said to myself, "now I HAVE to build that controller." Will let u know how it turns out.
11 years ago on Introduction
I don't actually want to instal the flash drive so could i basicly only connect the keyboard card toe the controller and leave the usb connection attached?
and thanks for all you help =3
Reply 11 years ago on Introduction
You certainly could.
It might be easier at that point to go with a conversion kit (like the retrousb.com one JJiGz mentioned), though, since the only thing you'd be messing with would be the keyboard controller. Of course, you don't get to play with multimeters and chop up the controller's circuitry to do your bidding if you use the kit route, so it depends on what you're going for. ;)
11 years ago on Introduction
you can do this much easier now than ruining a usb keyboard.. http://www.retrousb.com/product_info.php?ref=11&products_id=44&affiliate_banner_id=1 makes ur job 1000x easier making it usb, the trick now is adding the hub/flash drive.
Reply 11 years ago on Introduction
Absolutely, I've been looking at similar ones for a while. It looks like that wouldn't cost much more than my keyboard did, and be easier to cram into the case due to size.
This would basically replace steps 4 and 5. Since the wiring diagram they provide is based on wire colors, you'd have to keep track of the controller's wire colors when desoldering the old controller cable in order to wire it to the chip properly. Then use the USB cable they provide and a continuity meter to work out which contacts on their chip should connect to which contacts on the hub.
Reply 11 years ago on Introduction
*cough* It's been too long since I wrote this instructable, I completely blanked on the fact that the snes controller has a handy plug connector for its cable rather than needing desoldering. You could probably cut those wires off short to solder to the retrousb chip, unless you wanted to remove the plug and solder replacement wires to the controller board in order to leave more room for placement.
12 years ago on Introduction
sry to comment again i forgot to say good job and i found out u could use a bluetooth keyboard and there are some out there with a usb with it so u could make it bluetooth
Reply 11 years ago on Introduction
Making the controller bluetooth would probably be possible... and since bluetooth keyboards are usually a lot smaller, it's possible the hardware would use less space as well (though I've never had a chance to take apart a bluetooth keyboard, so I'm not sure on that).
The issues would probably be:
- you would need to provide power to the bluetooth hardware, and the needed batteries probably wouldn't fit into the controller case without major modifications
- adding a bluetooth USB hub would increase the power and space requirements further, to the point that you would be adding significant weight and bulk to the contoller to carry it.
Of course, that's just initial thoughts without looking at specific hardware possibilities, so I could be wrong.
12 years ago on Introduction
hey can you add bluetooth to this so we can hook it up to phones like a android phone
13 years ago on Introduction
nice tutorial. i used a program called keytest.exe (a keyboard tester) to map my buttons as i touch the contacts. i couldnt figure out the traces on the flexiplastic. i took great time and care to trim down all my circuit boards to the smallest needed sizes. , then spent almost 2 days carefully planning out how i would run the traces from the original controller. i also removed the chip on the board and used tiny tiny 32 guage wire to make all my connections. that stuff is nice and flexi, so it makes it a bit easier to route once its connected.i left an extra usb spot open in case i decide to add a usb port for expandability. i dremmelled the case a teeny bit to get things to fit, but the usb stick fit underneath the board,and the hub and keycontroller nicely one over the other. my only regret, no pics to show :( i might also add the LED an a tiny switch mapped to ESC in the future. Thanks for the instructable!!!
Reply 13 years ago on Introduction
Great, I'm glad it was useful. I may need to add some additional detail to the section about mapping out the keyboard portion. It is sometimes possible to use a multimeter in continuity mode to nail down which traces lead to which points on the controller, the parts under the keys are conductive so that they can make a connection when you press a key. Congratulations on using the space where the controller's chip was, that is a small space to work in and the chip (at least on the controller I used) is secured rather solidly!