Raspberry Pi SNES – console in a controller

About half a year ago I found an interesting article on a Raspberry Pi zero built into a custom printed back of an NES controller. I absolutely loved the idea, however, I had a few questions around it.

How does it feel to play with a (half) 3D printed controller, why not use the original back? Why an NES controller, wouldn’t it make more sense to use a SNES? 

So it was clear, I had a goal in mind: I need to build a Raspberry Pi zero into a SNES controller. Originally I wanted to utilise petRockBlog’s GPIO adapter to connect the controller bits and I also had one available, however, my soldering game was not that strong and I ended up destroying it. That was a sad day.

I did not touch the project build for half a year as I was trying to get hold of another GPIO adapter. At some point, however, I started to look into alternatives, it seemed clear that the adapter would not come back in stock. When you start to look for DIY alternatives there is one thing that I both like and dislike at the same time. There are sooooooo many different possibilities to do the same thing. And once you settled for one and start to implement, you do find an easier one.

Well, complicated version, here we go. 

So all you need for this build is listed here:

  • SNES controller
  • Raspberry Pi zero
  • micro SD card
  • Mini-HDMI to HDMI adapter
  • Micro USB connector
  • Cable
  • Soldering equipment

For my build, I used a micro-USB connector from a broken power bank, an “older” Pi zero without WiFi capabilities and an old ethernet cable to strip clean and reuse the wires, bringing the total build costs to just the controller. However, even if you order everything from scratch, you’ll probably only spend around €25.

I was inspired by how the Pigrrl was wired, as it is essentially a SNES controller broken into pieces. Unfortunately, I found out, that it was missing two important keys, L + R.  These are included with the Pigrrl 2 however, so I merged both ideas into one. Use the SNES controller pads to wire following the Pigrrl 2 pinout. This also makes it easier to set it up on the software side later on.

a clean stripped SNES Controller board
The clean stripped SNES Controller board

I first deconstructed the SNES controller and also cleaned the board of all unnecessary components. I had hoped to cleanly desolder the controller chip, but my soldering game was not well that day. Instead, I followed the traces to identify a well-exposed area where I can scrape off the coating and soldered to these instead.

Then I needed to solder the cables directly to the Pi’s GPIO ports. Again, I followed the Pinout layout from Adafruit’s Pigrrl 2 as it was containing the shoulder buttons that are missing on the original Pigrrl. Then, I wired the new micro-USB power port to GPIO 2 for +5V and GPIO6 for ground. I considered to have the original ports exposed but ultimately decided against it.

Soldered Raspberry Pi and SNES controller board
Both RPi and SNES controller board soldered together

Now, it was time to get everything into the original back housing! I cut away a lot of the support structures on the inside. Otherwise, there would have been no space for the Pi. When I implemented the HDMI port adapter, I wanted it to be wedged in tight so it wouldn’t move. This allowed it to provide structural support to the Pi as well.

I carefully carved my way into the original housing and slotted the adapter’s rubber exterior as well. Now it is wedged in and provides all the support to the Pi, while being sturdy enough to plug in an HDMI cable without being moved around. The micro-USB port was a little easier to deal with, all I needed to do here was to find a place on the top that was a little out of the way. There, I drilled a hole and extended it to slot the micro-USB port nicely. 

The finished RPi SNES controller, showing the top side with HDMI and micro-USB port
The finished RPi SNES controller

As for software, I used RetroPie, a nice emulation platform with access to all kinds of emulators. They have pre-made images available for both single and multi-core RPi variants. As stated earlier, the design is based on the Pigrrl 2 Pinout also for ease of software. Adafruit has devised a script that you simply need to run in order to activate the buttons.

SNES controller with HDMI port on the top, housing a Raspberry Pi
The finished product

It was an interesting project to build, I have learned quite a lot. I still make some mistakes, like soldering first, then think and resolder, but I am getting better at it. The main thing to take away is preparation, preparation, preparation. Make a plan, revise the plan, redo until you’re happy, then build.  And, of coruse, enjoy your finished product!

Leave a Reply

Your email address will not be published. Required fields are marked *