Mod a SNES GamepadAug 10, 2016 · 8 minute read · by kdevo
Documentation Hardware Mod
Ever wanted to make a SNES gamepad wireless? Read on!
This project description shows how I modified a SNES USB Gamepad/Controller to make it work wirelessly (frequency: 2.4 GHz) by combining it with a wireless keyboard.
I mostly used XodusTech’s site as a starting point. The site helped me with understanding how to marry the gamepad with the keyboard’s 2.4 GHz transmitter, so you probably want to visit it, too. But instead of a Logitech keyboard I used a cheap no-name keyboard and power the gamepad with a small LiPo battery, rechargeable over a Micro-USB port - and …
Before we start, I have to say that the project was not that easy: One does not have much space in the SNES controller. :-)
This table shows the parts I needed for this project. The “Example” column contains the exact product name I used, but the parts you (can) use may vary. There are many possibilities to realize such a project.
|Part name||Comment||Example||Price [~]|
|SNES Gamepad||I needed a SNES controller (obviously).||(i)Buffalo Classic USB Gamepad||10€|
|Wireless Keyboard with USB Receiver||The wireless sender inside it will be married with the SNES controller||Random & cheap wireless keyboard, 2.4 GHz||10€|
|Lithium Polymer Battery||The battery powers the 2.4 GHz sender and all other components||A small one (with 200 mAh capacity)||5€|
|Lithium Polymer Charger||Charges the LiPo. The charger I took was originally for the Trinket but also works standalone||Adafruit Pro Trinket LiIon/LiPoly Backpack Add-On||5€|
|USB Micro-B Breakout||Will be connected to the charger and can later be accessed from a small slot||Adafruit USB Micro-B Breakout Board||1.50€|
|SPDT Slide Switch||To power it on and shut it down. Saves energy.||0.80€|
|LED||Indicates power status. I found a fancy slowly RGB cycling LED.||Sparkfun LED - 5mm Cycling RGB (slow)||0.80€|
|Cables||Need to be thin and flexible||Silicon Cover 30 AWG||1€|
|Silicon Diode||I used it because of the 0.6 V drop for a more safer use of the 2.4 GHz sender||Silicon Rectifier Diode||0.20€|
|Resistor||Used for the LED||680 Ω Resistor||0.20€|
This makes something around 35€ which seems to be much at first (prices are generally rounded up). However, the keyboard was lying around anyway, so I personally just needed to buy the SNES controller and the stuff needed to charge the LiPo.
In my opinion an advantage of a self-made 2.4 GHz wireless controller is that one can easily map real keyboard keys to it and use them without the need of installing any additional driver. It works like a keyboard, making the controller usable in the Pi’s NOOBS and even in the BIOS of a PC if you map the needed keys correctly - which can be tricky though!
The 2.4GHz PCB of the keyboard was easy to get out of the case after removing many screws and located in the upper right edge in the case.
So I extracted the 2.4 GHz transmitter and started with the very experimental …
The original keyboard had 2 conductive layers with a “plastic isolator sheet” in the middle like shown here. On mine, layer #1 had 18 pins, layer #2 had 8 pins connected to the 2.4 GHz sender. This means 18 * 8 possible combinations, although some didn’t seem to function - probably they were not needed. There even were 2 pins in the middle which were not connected with either one of the layers.
For easier counting, the two layers were divided to “left” (L) and “right” (R):
L R |||||||||||||||||| ||||||| 1 -> 18 8 <- 1
I wanted to have at least the arrow keys mapped correctly and the A-button mapped to ENTER. This would let me easily control the Raspberry Pi’s NOOBS OS selection screen (and Kodi, at least partly).
I found out the arrow and the enter keys mostly by following the traces with a sharpie. The other ones were taken and found more or less randomly by using a text editor.
This means that I tested and connected one randomly chosen pin on the right side with one pin on the left side at a time with a wire (be careful not touching more than one at a time on each side). If the key was simple (like 2) or “useful” (like F10), I wrote the unique key combination down (like L8+R5 according to the scheme above) to use it later. It is also recommended to use a keymapping utility where you also can see other keys than a-z, 0-9 etc. like SHIFT or ESC. For these keys I simply used the mapper of Emulation Station in RetroPie (handy - as I already had it installed).
Soldering the wires
At first, no solder seemed to stick to the “pins” of the 2.4 GHz transmitter because of a black layer (like graphite maybe?) on them. If you are more lucky, maybe you have some nicer solder possibilities.
Using a bit of super-glue on the other side to fix the cable before made it much easier to solder the cables (which took quite a while). When soldering, it is important that the cables do not touch each other in any way. This would result into wrong/unintended key combinations or other malfunctioning.
After I tested the combinations above again by connecting one wire on the left side with a wire on the right side (to be sure that there is a connection).
The Plan - Electronic Schematic
I planned to use and let the components interact with each other like this:
The 2.4 GHz controller/transmitter from the keyboard is the green PCB on the breadboard view.
The OFF-position of the switch is left. The controller then is in “charging mode” and can be charged via the Micro-USB port (leftmost on the picture).
If the switch is slided to the right side, the keyboard controller is powered on (the LED is indicating the status - the pre-resistor used may vary in your build).
I didn’t want to power the controller with a fully charged LiPo @4.2V (as the keyboard originally ran with 2xAA batteries @3V overall). Thus, I used the diode for a voltage drop around 0.6V. Using a diode for this purpose is not optimal, however in this case it lets the controller run @3.6V (LiPo fully charged), @3.1V (half charged) and @2.6 (nearly empty) through the discharging circle (from 4.2V to 3.2V or less). In hindsight, I do not think this diode was needed… But well, it did not hurt until now.
SNES Gamepad - The Mod
The gamepad arrived directly from Japan. Note that I began soldering to the 2.4 GHz transmitter and crafting the theory before I actually got the gamepad.
After disassembling, I noticed that there was less space inside than I thought: The Buffalo controller is thinner than an original SNES controller and a bit slanted. It wasn’t possible to power it with 2 AAA batteries because of this size limitation - I used a LiPo battery as planned before in the schematic.
At first, the PCB of the controller kind of confused me and looked other than the PCB of an original SNES controller as seen on XodusTech’s site.
While testing with the voltmeter (when the controller was plugged in via USB), I recognized some little copper points which were nearly every time on the “+ side” of each button. These seemed ideal to use as little solder pads.
With those little practical solder pads at least every button could have one individual cable. BUT (referring to the mapping chapter): The 2.4GHz controller needed one cable on the left side connected with one cable of the right side to produce a unique button.
This meant I could not use the principle of common ground because this wouldn’t allow me to use the arrow keys as real keyboard arrow keys. In fact, it would limit the button combinations to 18 * 1. For me, the consequence was to remap the buttons (d’oh!).
A solution to solve this was to divide the PCB into 4 zones by making “borders” with a sharp knife/tool:
I removed the plastic holders on the inner backside of the gamepad to get more space, I really needed it. There will be more pressure than before anyways because of all the components.
After mounting all components with much hot glue fun:
I forgot to say: The gamepad’s case also needed to be modified - I cut two small slots for the Micro-USB port and the slide switch. Finally, I carefully closed it up and tested it.
It worked! I only needed to justify the case’s screws a bit to optimize the buttons’ pressure points.
All in all, I have to say that this project was a bit tricky and maybe for some persons not worth the effort (also in the end it’s maybe more expensive than simply buying one of those existing Bluetooth controllers). However, I personally had fun when realizing this project even if there were some frustrating parts; I also got some new hardware experiences.
… and hey, there also is the fancy LED!