© 2020 Pyotek
This site has amplified superpowers.

Mod a SNES Gamepad

Ever wanted to make a SNES gamepad wireless? Read on!


Introduction

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 …

Yes, I added a nice RGB LED.

Before we start, I have to say that the project was not that easy: One does not have much space in the SNES controller. :-)

Used Parts

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 nameCommentExamplePrice [~]
SNES GamepadI needed a SNES controller (obviously).(i)Buffalo Classic USB Gamepad10€
Wireless Keyboard with USB ReceiverThe wireless sender inside it will be married with the SNES controllerRandom & cheap wireless keyboard, 2.4 GHz10€
Lithium Polymer BatteryThe battery powers the 2.4 GHz sender and all other componentsA small one (with 200 mAh capacity)5€
Lithium Polymer ChargerCharges the LiPo. The charger I took was originally for the Trinket but also works standaloneAdafruit Pro Trinket LiIon/LiPoly Backpack Add-On5€
USB Micro-B BreakoutWill be connected to the charger and can later be accessed from a small slotAdafruit USB Micro-B Breakout Board1.50€
SPDT Slide SwitchTo power it on and shut it down. Saves energy.0.80€
LEDIndicates power status. I found a fancy slowly RGB cycling LED.Sparkfun LED - 5mm Cycling RGB (slow)0.80€
CablesNeed to be thin and flexibleSilicon Cover 30 AWG1€
Silicon DiodeI used it because of the 0.6 V drop for a more safer use of the 2.4 GHz senderSilicon Rectifier Diode0.20€
ResistorUsed for the LED680 Ω Resistor0.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!

Unfortunately, I did not make any pictures of the build process itsself. All pictures were made after finishing the project. That's one of the reasons why the following is not intended as a step-by-step tutorial!

The Keyboard

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 …

Key Mapping

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:

Advanced destruction ahead!

Mounting

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.

Bottom line

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!