Hey! This thing is still a Work in Progress. Files, instructions, and other stuff might change!

SNES Raspberry Pi 3 with functional switches, LED, and USB ports

by xfcrowman, published

SNES Raspberry Pi 3 with functional switches, LED, and USB ports by xfcrowman Aug 31, 2017

Design Tools

Autodesk Fusion 360

Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

1551Views 196Downloads Found in Video Games


This is my case for a Raspberry Pi 3, designed like a mini SNES and with functional front USB ports, power/reset switches, front LED, and fan.

After the NES Classic was released last year, I've been wanting to make my own SNES mini console with a Raspberry Pi 3. This case used carjo3000's Pi Zero case as a starting point, and I made several modifications to make it work with the Pi 3. The case has many small details that match the specs of an original SNES, and it's about 50% smaller than an SNES case.

I have plans to add a functioning lid that is compatible with Steven Chan's mini SNES cart, so more files will be added. However, if you don't care about the lid then all the files listed below are complete and sufficient for making your own mini SNES.

Please see the parts list and guide below to make your own mini SNES!

Print Settings

Printer Brand:



Wanhao Duplicator i3 V2






200 microns




See guide for details on printing.

Parts List and Build Guide

Parts List

1 x Raspberry Pi 3

1 x SD card

1 x 2.5 Amp micro USB power supply

1 x HDMI cable

1 x Tactile Switch

1 x SPDT Switch

2 x USB Female Ports

1 x Custom USB extender board

1 x Fan


1 x 10 kOhm Resistor

1 x Red 3.0 mm LED with 270 Ohm resistor
(available at microcenter or any online electronics store)

GPIO Jumper Cables
(available at microcenter or any online electronics store)

1 x Perfboard

6 x screws (4 x 3/8"). Shorter screws should also work, but this was what I used in the initial build.

1 x Spring from a "clicky" pen. I tried out a few and I think that most springs from these pens should work fine.

Other smaller accessories like cables, heat shrink wrap, solder, wire stripper, hot glue gun, and a helping hands. I used an old USB cable for most of my wire. Some soldering skills are required here, so purchase some cheap perf board, find a good youtube soldering tutorial, and practice if you're new to soldering.

---------------------------------Build Guide----------------------------------------------------------------

3D Print Your SNES Case!

I have a Monoprice Maker select, and I used the following filaments for printing the case:

-Segaden Gray 1.75mm PLA - this stuff is a perfect color match for the SNES. No painting required!

-Inland Silver 1.75mm PLA for the eject button
Available on Amazon or Microcenter. A solid color match for the eject button

-Inland Purple 1.75mm PLA for the Power/Reset buttons and Keys.
Available on Amazon or Microcenter. A decent color match to the buttons, but I'm still searching for a better match.

I printed everything with 200 C for the extruder and 60 C for heating the bed. In Cura, I used the "Supports Everywhere" option and then removed the supports with a pair of pliers and a razor blade afterwards.

The top case, power, and reset buttons should be printed facing up (like how you see it in the thingiverse diagram). This will give you a smoother, more professional look to these parts once the print is complete.

EDIT 9/20/2017: I made some minor changes to the design and uploaded a new fan mount that slides into a slot on the top of the SNES case. The older files that were once posted here will still work, but the new design is easier to set up and provides better airflow than the original design.

I also made a version of the bottom half of the case that has an SD card slot. If you want to have access to the SD card, then print this version instead!

Solder the USB Extender and female USB cables.

Solder together the USB extender PCB (thanks Dustin Westaby) to the two female USB ports, using about 6 inches of USB cable.

On the USB extender, the through holes labeled M (M1, M2) use a white cable, whereas the holes labeled P (P1, P2) will use a green cable. The 5V (Red) and Ground (Black) cables for both USB ports were twisted together and soldered to the 5V and G through holes on the USB extender, respectively.

See image below for the wiring of the USB female ports. Going from left to right, Ground is a black cable, D+ is a green cable, D- is a white cable, and 5V is a red cable. M1 and P1 should go to one USB port, whereas M2 and P2 should go to the second port. I used heat shrink wrap to protect the solder points on the female USB cables, and to prevent any accidental soldering between the pins.

Connect USB extender, Pi3, and USB ports to the case

I inserted the USB extender into the bottom two ports of the Pi 3, and I also flashed an image of retropie to the SD card. Make sure that you connect your Retropie image to the internet, as the SD card will no longer be accessible once the build is finished.

The case has a cutout for the USB extender and SD card, so carefully angle the Pi in so that it sits as depicted in the photo. The two female USB ports should slide right into their slots, and I use a bit of hot glue on the tops and sides of the ports to lock everything in. Before gluing, make sure that you test both ports with a game pad or a keyboard to make sure that they are working properly.

Wire the Power and Reset Cables

Next, I put together the cables for the power and reset buttons. I needed about 8 inches of cable, and unfortunately the GPIO jumper cables that I purchased were just a little too short. To solve this problem, I soldered on some extra wire from the USB cable that I took apart, and then I used heat shrink wrap to protect the soldering site. Ideally, you can skip this step if you find some longer cables than I did :-)

Once you have cables that are the proper length, you can solder them to the switches as seen above.

Install the Power Switch

The SDPT switch fits into a notch on top of the case, and then it can be secured in place when you insert the 3D printed Power switch. The GPIO cables need to be lined up as seen in the photo, with the unused pin facing the front of the SNES case. From there, use a small amount of hot glue to secure the SPDT switch. Be careful when applying the glue so that it doesn't stick to the power switch.

Secure the Power Switch in place

Once the glue has dried, secure everything in place with the power switch key. Use one of the #4 screws to lock everything in place, ensuring that the SPDT switch is still connected to the 3D printed power switch.

You can't tighten the power key on too tightly, otherwise the power switch won't move. Loosen it just enough so that the power switch moves smoothly. It's also important to have all the scaffolding removed from the print of the SNES case top, and you may want to sand it a little before adding the power key.

Set Up the Reset Switch

Use the spring from the "clicky" pen and insert it in the reset button shaft, along with the reset button as seen in the photo.

Secure the Reset Button

Use a #4 screw to lock in the reset button. As before, you can't tighten the reset key on too tightly, otherwise the switch won't move. Loosen it just enough so that the reset switch moves smoothly. It's also important to have all the scaffolding removed from the print of the SNES case top, and you may want to sand it a little before adding the power key.

When you're finished it should have a nice springy action just like the original SNES reset switch.

Glue on the Reset Switch

Position the reset switch in the same location as seen in the photo, and very carefully add some hot glue to the back and to the side of the switch.

You have to be very careful here - too much glue can reach the front of the switch and prevent it from working, or you can accidentally glue the reset key to the top of the SNES case. It may be helpful to remove the reset key during this step - it will give you a little more room to work.

Once you're finished, the arm on the reset key should consistently hit the switch, and you'll hear the click of the tactile switch every time you push the reset button.

Connect the Switches to the Pi

Time to connect the two halves of the case together! Plug the power switch GPIO pins into pins 5 & 6. Using the photo, the red cable connects to pin 5 and the black cable connects to pin 6.

For the reset button, the green cable connects to pin 3 and the white cable connects to pin 39.

For reference, the GPIO Pin layout on the Pi 3 can be found here:

To make the buttons functional, we need to add some python scripts and edit /etc/rc.local so that they are loaded at startup.

To do this, first download and extract the python scripts folder that I made (thanks Evan Wright for putting these scripts together!):

From there, use Filezilla or WinSCP to connect to your Pi3. Transfer the scripts folder into the /home/pi/RetroPie/BIOS folder. There are numerous tutorials on youtube for using Filezilla to connect to your Pi3, if needed.

Next, connect a keyboard to your Pi3 and exit EmulationStation. Type:

sudo nano /etc/rc.local

A text editor will pop up. Type the following three lines of code before the line that says "exit 0":

sudo python /home/pi/RetroPie/BIOS/scripts/shutdown.py &
sudo python /home/pi/RetroPie/BIOS/scripts/reboot.py &
sudo python /home/pi/RetroPie/BIOS/scripts/fan_1.py &

Hit CTRL and X to exit, type Y to save, and enter to overwrite the original rc.local. Now type sudo reboot and your Pi 3 will restart. Test out the functionality of your buttons, and everything should work!

After testing, use the remaining #4 screws to secure the Pi to the case. You don't have to go all the way down with the screws or you may go through the bottom of the case! I went down about halfway with the screws and they mainly hold the pi in place when the HDMI or power cable is inserted.

Set up the power LED

Here, we need to solder the 270 Ohm resistor to the positive side of the LED (the positive side on the LED is longer than ground). Next, you will need to solder on two GPIO jumper cables so that the cable length is approximately 6 - 7 inches. As before, my cables were a little short, so I lengthened them by adding some wire from the USB cable that I tore apart. I used heat shrink wrap to cover the 270 Ohm resistor and all the soldering points (in green in the photo).

Lastly, I took a larger diameter heat shrink wrap to cover the entire LED. Make sure that it's black, otherwise light will escape out and make the corner of your SNES console glow red :-)

Finishing up the LED

Use a scissor to cut the front of the heat shrink wrap so that only the tip of the LED is visible. This will allow light to escape from only the front of the LED.

Mounting the LED

The LED will fit snugly in the mounting bracket as seen in the photo. The positive end connects to pin 8, and ground connects to pin 9. Here's the Pi 3 GPIO layout image again:


To activate the LED at startup, we need to edit the boot process so that the serial port is enabled.

Turn on your Pi 3, connect it to a keyboard, and exit EmulationStation. Next type:

sudo nano /boot/config.txt

Go to the end of the text and enter the following line to enable the serial port:


As before, type CTRL and X to exit, type Y to save, and type enter to overwrite the config.txt file. Turn on your Pi 3, and now the LED should turn on at startup!

Setting up the fan

The final step is to set up and mount the fan. Cut a small piece of perfboard (5 x 3 holes should work) and solder the MOSFET in the center as seen in the first pic. Next, solder the 10 kOhm resistor on the row beneath the MOSFET (seen in both pics).

After shortening the legs on the MOSFET and the resistors, I then used some solder to connect each leg of the resistor to the closest leg of the MOSFET (seen in the second pic). The legs are all close together, so be careful and make sure the the middle leg on the MOSFET is not accidentally soldered to the left or right legs.

Next, I took two short (2 inch) GPIO jumper cables and soldered them to the left and right sides as seen in the second photo. For the middle MOSFET leg, I clipped the ground wire off the fan, and then soldered it to the middle leg. As before, be careful and make sure that all 3 MOSFET legs are isolated from each other.

Lastly, on the power cable for the fan (red cable), I clipped off 1/2 of the connector so that only the red line remained (see top photo)

Mounting the Fan

I used a small amount of hot glue to attach the fan circuit to the bottom of the case, with the MOSFET facing up. As you can see in the photo, the GPIO to the right of the MOSFET is plugged into pin 12(GPIO 18), and the GPIO to the left of the MOSFET is connected to pin 14 (GND). I plugged the 5V for the fan in GPIO pin 2.

Attach the fan to the fan mount, and place the nuts on the front of the fan (the side that has the logo). This will allow the fan mount to easily slide into the notches on the top of the SNES. In this photo, I set it up the wrong way with the nuts on the fan mount and it was too tight of a fit. Once it's mounted, add some hot glue to lock the fan in place.

The code for the fan was already added in a previous step, so the fan should kick in whenever the pi temp reaches 60 degrees Celsius.

Snap the case closed and test it out!

The case will snap together after all the components have been installed. Give everything a final test, and you're done!

I am working on some other case mods, and I will add these parts and update the guide accordingly. Current plans are to make a functional lid so that you can insert a mini cartridge (seen in the photo, designed by Steven Chan).

Special thanks again to Carjo3000, Dustin Westaby, and Evan Wright for their contributions and assistance. Let me know what you think in the comments below!

More from Video Games

view more

All Apps

Upgrade this Thing with Thingiverse Apps

Tools and Utilities

Repair, slice, or enhance this Thing

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App