It’s finally done! Helder received all the final custom parts not long ago (and says all his pre-orders have shipped out), and I’m almost done shipping out pre-orders for my 3d-printed parts, so I can finally put together a guide for building the mintyPi. This is long overdue, I know, but it wasn’t for lack of hustling to get everything ready, I promise. 🙂
The full list of parts used in this build can be found on the wiki (I’m keeping it there so it only needs to be updated in one spot): http://www.sudomod.com/wiki/index.php?title=MintyPi
A pre-setup RetroPie image, as well STL files for printing your own parts are linked to at the end.
This guide will cover the custom parts build. There will be a followup guide soon showing how to do the 2.2″ build, using a hand-made button PCB and a cheap 2.2″ screen from ebay. Less than 1% of the 3d-printed parts sets I sold were for the 2.2″ version, so I thought it made sense to prioritize the custom part build and do the 2.2″ version separately (soon!). The only real differences are hooking up the screen and making the button PCB, so it shouldn’t take long.
Starting with the tin itself, we’re going to drill pilot holes for the L/R buttons, as well as the power switch and charging port. This part may take a few tries, so get a few tins (and if you’re using a special tin, like a discontinued flavor or something, you might want to practice on a plain ol’ peppermint tin first). Thankfully the mints are still good even if you mess up a tin. 🙂
Put some masking tape over the top so you don’t scratch up your tin, and also put some tape around the inner lip so that metal shavings and dust don’t get stuck (and potentially come loose later on and short out something):
The pilot holes for the L/R buttons need to be 19mm in from the sides, and 4mm up from the bottom. Use as small of a drill bit as you can for the pilot hole, and before you even do that, use a nail or something hard and sharp to make an indentation (even a tiny hole) where you’ll be drilling so the bit doesn’t slide around. Keep stepping your way up in drill bit sizes until the holes are about 3.6mm in diameter (if you start out with a drill bit that size, you’ll likely tear up your tin). Another tip for getting your holes nice and clean: don’t press very hard at all on your drill. Just let it sort of rest there and shave away at the tin until it eventually gets all the way through.
The charging port pilot hole needs to be 20mm in from the side, ~4.3mm up from the bottom, and the power switch will be 26mm in from the right side, ~2.8mm up from the bottom. The shapes for those are a little harder to get right, but for the charging port you want it roughly micro USB port-sized, and if you’re using the same power switch as I am, you’re aiming for a nice rectangular hole 6mm wide and 2.5mm tall.
Getting the placement and shape of the holes can be hard, so I made a drill guide that you can set the tin inside of and mark exactly where you need to drill (as well as the shapes for the charging port and power switch). It’s available on the market: http://market.sudomod.com/mintypi-mint-tin-hole-guide/, and an STL file is further down in this post. Check out the video guide to see it in use – it makes it much easier!
As for actually expanding your pilot holes to the correct size/shape, you can either use a dremel with some small bits, or if you’re willing to spend a little more time on it, the cleanest way I’ve found to make perfectly-shaped holes is to hand-file using a set like this one:
You can keep sticking the bottom plate in the tin and putting your charging board, power switch and L/R buttons in the tin as you file it down to make sure you’re headed the right direction both location and shape-wise. Or if you’re using the hole guide (seriously it’s so much easier) you can just keep putting it on to check your progress. How ever you go about it, after a while hopefully you end up some nice, clean holes:
The reason it’s so important to get the shape/location correct is because the holes need to line up with various parts of the 3d-printed base plate.
To mount the screen backing, I’ll be using VHB tape from 3M (easy to find on Amazon). It’s very, VERY strong, and if you try to remove the part once it’s attached to the tin, there’s a good chance you’ll either break it or bend up your tin or both. So positioning it correctly the first time is important (and if that scares you you may want to opt for something less permanent like a weaker type of double-sided tape, or some glue). The easiest way I’ve found to position it correctly on the first try, though, is to put the part in the bottom half of the tin, apply whatever you’re using to attach it, position it and close the tin slowly (check out the video to see me do it):
Before we can attach the base piece in the bottom of the tin we need to get our L/R buttons ready. We’re going to attach a few wires to them, like so:
L button is on the left. The black wires are ground (so we’ll use a shared ground connection, L button will have the actual ground wire), and the two white wires are the actual L/R wires that will attach to the button PCB.
After doing that, position the buttons in the tin and slide the base plate into place:
Press the plate up against the L/R buttons so that they poke out the back, and put a couple blobs of glue in each corner:
I opted for glue to hold the base plate in since that allows it to sit completely flat within the tin, making it a bit thinner. If you’re against hot glue for whatever reason, use something nice and strong (I haven’t had any issues with gorilla-brand hot glue, though).
Next we’ll attach the custom button PCB to the Raspberry Pi. Before you do this, it would be smart to load up an SD card with Raspbian or RetroPie, and boot it up to make sure it works (so you know you had a working one to begin with).
We’ll basically be fusing the two boards together by sticking solder down into the GPIO pinholes, which will melt onto the pads below, connecting them. It needs to be lined up just right for this, though, and the easiest way to do that is put the two pieces in the 3d-printed faceplate:
Use the m2x3mm screws to attach the button PCB (the smallest of the 3 sizes) and the next size up, m2x4mm, to attach the Pi. I found it very helpful to put a couple small clamps on either side to press the Pi firmly against the PCB while I work on it.
There are some labels above the GPIO pins telling you which pins you need to connect, and what they do. Those labels correspond with test pads all around the back of the PCB. This is so that as you go along you can use a multimeter to test continuity between the GPIO pinholes and the test pads, to make sure you got a good solid connection.
Just melt a little solder into the pinhole (not too much or it’ll ooze onto neighboring pads, which could ruin it), and stick the tip of your soldering iron into the pinhole for a moment, and pull it out quickly (check the video to see a demonstration):
Use a multimeter to test continuity between the GPIO pins on the Pi, and the test pads on the back of the button PCB. There are some labels on the button PCB just above where the Pi’s GPIO pins are, which tell you what GPIO pin goes to which test pad.
I like to do several extra GPIO pinholes on the left and right side that don’t actually get used, just to make sure it has a good solid connection and won’t break if the PCB flexes a bit while you play. Try not to have too much solder sticking out of the pinholes. It should be as smooth of a surface as you can manage (so if you have big blobs sticking out, try to remove them as best you can). Also make sure there are no sharp pieces of solder poking out. The Pi will be pretty close against the battery, so that’s why we want it as smooth as possible.
Next we’ll get the screen ready for use. The ribbon cable on it is a bit too wide (it’s actually intended to be soldered directly to the surface of a board, but Helder put a ribbon connector on there to make it easier). Just very carefully remove a bit from both sides using a razor. Make sure you remove the same amount from both sides so you don’t line the pins up incorrectly. Take off a tiny bit at a time until it fits in the ribbon connector nicely:
We also need to make the ribbon a little thicker so it stays in the connector securely. A layer or two of masking tape works great for this. The ribbon cable goes into the connector as shown below (and in the video):
There are a couple of strips of thin double-sided tape on the back of the screen that you may need to carefully peel off to get it all to fit nicely in the screen enclosure.
Once you’re done with that, now would be a great time to make sure you didn’t break anything/everything. 😀 Hook up the screen, and connect your USB sound card (via an OTG USB cable), along with some headphones, and boot it up (see further down for instructions on setting up your SD card, and a download link for the pre-setup RetroPie image):
Hopefully it all works! You can use the rubber membranes from your buttons to navigate around a bit (which will play some navigation sounds you can hear in your headphones). If all you get is a white screen (give it a minute to make sure it’s not just still booting up), then you may have a bad connection on either the GPIO pins, or your ribbon cable may not be thick enough or lined up properly.
Now would be a good time to transfer your games. I prefer to do this before I get everything put inside the tin. It would also be a good idea to make a backup of your SD card after you get your games on there (lots of tutorials on google for this).
Once you’ve gotten all that (hopefully) working, we’re going to strip down the sound card a bit. We’re going to remove the USB plug, the headphone jack, and the crystal (we’ll re-attach the crystal with some wires, so we can move the crystal off to the side).
To remove the USB plug, first very carefully clip off the two metal legs on either side. Then, put a bit of solder on the 4 USB pins, heat the all up at once with the side of your soldering iron tip, and it should slide right off. Be careful not to pull, or you could lift a USB pad. Again, check out the video to see this in practice.
Remove the crystal similarly:
Re-attach the crystal with a couple wires that will go from the pinholes it used to occupy, to the pins on the crystal itself. The wires don’t need to be very long, an inch or so should do. Also attach 4 wires to the exposed USB pads (these should be a little longer). From top to bottom we have: ground, Data +, Data -, and + (power). Colored wire helps to keep track of your wires here. Remove the headphone jack by very carefully snipping each of the legs attaching it to the board. This is what it should look like when you’re done:
Set the sound card aside for the moment — now we’ll get our power-related components set up. I’m using the microLipo from Adafruit, but you can still use the Powerboost 500 if you already ran out and bought that (the microLipo will give you a little better battery life, though. First we need to remove the JST connector. Carefully snip the sides of the black JST jack:
The rest of it should slide off pretty easily after you do that. Then use your soldering iron to carefully remove the two pins. Again, don’t pull on anything, it should come off on its own (and if you pull you could lift a pad and ruin it).
Attach a couple wires (26-ish gauge) to the BAT and GND pins. It should look about like this when you’re done:
Side note: I’ve started using silicone-coated wire in my builds. I freaking love it. It’s incredibly flexible without breaking, and the coating doesn’t shrink/melt with the heat from your soldering iron. Adafruit has some they sell, which is very nice, and there are several brands like Striveday on Amazon for a bit cheaper (Adafruit’s the better brand by a bit, in my opinion).
I initially put my power switch in-line with the ground wire. This is a bad idea, because it can make it so if your Pi’s USB jack comes in contact with the tin, it’ll wind up connecting it to the microLipo’s ground anyway since its micro USB jack will also be pressed against the tin. So it’ll render your switch useless and turn the system on. I felt dumb when I did that. 🙂
So even though in this guide you’ll see me using the switch on the ground wire, don’t do this, put the switch in-line with the red (BAT) wire in stead.
Snip the pins on your power switch so only a couple mm is left, bend the pins upwards, and attach the RED wire from the microLipo to the middle pin. Attach another piece of RED WIRE to the rightmost pin. It should look like this when you’re done, except, again, the switch should be on the RED WIRE:
Note: if you’re using the powerboost, you want to connect the middle switch pin to ground, and the leftmost switch pin to the EN pin on the powerboost. That way when the enable pin is put to ground (when the switch is to the left), it’ll shut off the power.
Now we’ll attach the battery. Since we removed the JST jack to make the charger thinner, we need to remove the JST connector from the battery.
Obligatory warning: liPo batteries can be dangerous (just try and get on a plane with a Galaxy Note 7). If you’re inexperienced in doing this sort of thing, you may want to find someone who is more experienced and get them to help you. Proceed at your own risk.
You don’t need much wire on the battery. Snip ONE of the wires so there is less risk of shorting them – leave a little over an inch. Strip it, twist it, and put a bit of solder on it to prep it. Connect it to the corresponding pin where the JST connector used to be on the charger (so black goes to -, red goes to +). Only after you connect the first wire should you snip the other one to about the same length, and connect it to the other pad. You should have this when you are done:
Put some tape over the ends of the wires coming off the charger, so you don’t short them on something. I used some more VHB tape to attach the charger to the base plate (you can reinforce the corners with some glue if you want). The easiest way to line it up is to plug a micro USB cable into it, and pull outwards gently as you press the charger down:
I wouldn’t recommend using something as strong as VHB tape to affix the battery. I used some “permanent” double sided scotch tape, and it seems to hold up great. It should look like this once you’re done with that (except, again, the switch should be on the RED WIRE):
Now the 3d-printed faceplate should be almost ready to use out of the box, but you may need to tweak a couple things. First is the size of the button holes. I tried a few different manufacturers when I was looking for a source for these, and found that there was a surprising (and annoying) amount of variation in button diameter from one manufacturer to the next. The ones I went with were some of the smaller ones, so that’s what I based the hole sizes off of. If I had sized them to fit the larger buttons (OEM ones seem to be the biggest) then the smaller buttons people would be getting from aliexpress or from myself would look funny and rattle around. So, if your buttons are too tight, you may need to expand them a bit. It only takes a second but you will need a cone-shaped drill bit like the one below:
Just gently press it in there and give it a few rotations by hand. Do a little bit at a time, checking with your buttons to see if it’s wide enough.
The other thing you will probably want to do is smooth out the square inner piece of the button wells, which keeps the buttons from rotating. With the way consumer FDM 3d-printers work, it’s virtually impossible to get this perfectly smooth, so your buttons may catch on them periodically as you’re playing, which is annoying. So you’ll want to very carefully shave off any blobs that are sticking out, and use a file to smooth it out as best you can. It doesn’t take too long and is definitely worth the effort – it can make the buttons feel much nicer. Also make sure your buttons themselves don’t have any odd bits of plastic sticking out from when they were made. Once again, probably easier to watch the video to see what the heck I’m talking about here.
You can check to see if you’ve got it smoothed out sufficiently by putting the buttons, as well as the membranes in the 3d-printed piece, pressing it up against something flat (like an altoids tin, hah), and trying the buttons out:
Once you’re happy with how the buttons feel, go ahead and attach the speaker with a couple tiny dabs of glue (this is really just to keep it from rattling around, it’ll be pressed up against the button PCB anyway), and attach a couple of wires ~1.5″ long:
Connect the speaker wires to the sound card as shown below. Notice that the pad that the left speaker wire attaches to is also attached to another pad. This is to join the left/right channels together.
After you’re done with that, go ahead put your buttons and D-pad in (don’t forget start/select) and screw your button PCB/Pi hybrid into the faceplate!
Depending on how thick your screw heads are, you may need to leave off one of the screws from the Pi (the bottom right Pi screw in the image above), so that it doesn’t press against the micro USB port. There are plenty of other screws holding everything together so it’s not a big deal – those were mostly to hold everything in place while you attach the two boards anyway.
The sound card will sit in the back of the tin, the edges resting on the raised L-shaped wall. You only need a small bit of glue to hold it in place. The crystal can be glued in place next to it:
Go ahead and put the screen in, and attach the bezel using 4 more m2x4mm screws, and then attach the other end of the ribbon cable to the button PCB:
Attach your L/R buttons (along with the ground wire for the L button), USB data wires, and power wires as shown above. The USB data wires (the green/white ones at the top) can be a little tricky – make sure they aren’t bridged with anything around them when you’re done. Also note that the USB sound card has its power wires connected to the button PCB. If you’re using a Powerboost it would probably be easier to connect it directly to that, since it has more places to connect/get power from.
It’s a good idea to place some tape (electrical tape works, I prefer kapton tape since it’s so much thinner) across any metal bits on the underside of the button PCB, just to reduce the risk of shorting something on the tin as you’re working with it:
At this point before you actually finish putting it together, it would be a good idea to turn it on and make sure that your screen, sound and controls all (still) work. If all that checks out, you can go ahead and attach the hinge (insert the arm into the slot in the bezel – the video might help here), and slide the faceplate into position. It should sort of pop down in there. Try and guide any wires out of the way of things like the battery, screw posts, etc – if they get sandwiched in there it could make it too thick to close. It should sit in there flatly without rocking if you have everything arranged nicely. Attach the faceplate to the base using 4 m2x8mm screws.
And that’s it! Hopefully at this point you have a fully-functioning, assembled mintyPi. 😍
If you get stuck or need any help, stop by the forums at sudomod.com/forum. If you didn’t get stuck and you have a fully functioning one, also stop by the forums and show it off! 🙂 Some more details for setting up your SD card, etc. are below.
SD Card Setup
A pre-setup RetroPie image can be downloaded here. The nicest cross-platform (Windows, macOS and Linux) program that I’ve found for copying an image is called Etcher, which you can download here. It’s very easy to use.
When you open it up, select the mintyPi image in step one, in step two select the SD card you’re going to burn it to (at least a 4GB card is required), and hit flash. Keep reading before sticking it in your Pi.
Setting up Wifi
After Etcher finishes burning the image to your SD card, take your SD card out of your computer, and put it back in. You should have access to a folder on the SD card that’s named ‘boot’ (it’s actually a partition). Within there, there will be a file called “wpa_supplicant.conf”. Open it up with a text editor, and enter your wifi network name (SSID) where it says “SSID_GOES_HERE” (keep the quotes). Enter your wifi password where it says “WIFI_PASSWORD_GOES_HERE”. That’s it! You can now pop your SD card into the Pi, and it should boot up with everything configured for you, even Wifi.
You have two options for getting games on your system, which I recommend doing before you close everything up:
USB ROM Service (easier and faster)
Before you put it in the tin and while you still have access to the USB port (and BEFORE you solder the USB data wires from the sound card to the bottom of the Pi) you can use the USB rom service built-in to RetroPie. I have this enabled by default on the pre-made RetroPie image. To use this, format a USB thumb drive to FAT32, add an empty folder named ‘retropie’, plug it into your Pi and boot it up. After it’s done booting, remove the USB drive, and put it back in your computer. You should now have a bunch of subfolders within that retropie folder, for various game systems. Now you can put whatever games you want into the correct system folder (so a super nintendo game would go in the ‘snes’ folder), and the next time you stick it in the pi, it will automatically copy over the games. Be aware that there is no progress indicator and it can take a while depending on how many games you put on it. Also be aware that the games won’t show up until the next time you reboot, or if you select “restart emulationstation” from the start menu.
This method will be your best bet after you’ve finished assembling your mintyPi. You need to make sure that your computer is on the same wifi network as your Pi, and you’ll also need your Pi’s IP address on your network. If you go to the RetroPie menu, there is an option to view this (it will likely be something like 192.168.something.something):
Once you have this, go download a program called FileZilla. When you load it up there should be a quick connect bar at the top that looks like this:
In the ‘Host’ field, put ‘sftp://whateveryouripaddresswas’, with the username ‘pi’ and the password ‘raspberry’ as shown above.
In the top right folder tree area, navigate to /home/pi/RetroPie/roms, then in the folder area below it you should be able to navigate to whatever system you want to transfer roms to. So if you wanted to transfer a SNES game, double click into that folder. Then from windows explorer or Finder on a mac, you can just drag your games onto that area of the window, and it should transfer them over.
3d-Printing the mintyPi
The STL files for printing the mintyPi can be downloaded from here. There are two versions of the bezel (2.2″ and 2.4″).
A few tips for printing it:
- PLA works fine for the faceplate, as well as the bezel. I’d recommend something stronger and less-brittle for the screen back, the base, and the hinge. I use a PC/PBT blend from Push Plastic, but you could probably get away with ABS.
- Printing the faceplate is the hardest part. You want the first layer to be nice and thin, and the extrusion width set to something like 125%. The goal is to get all the lines to mush together as much as possible so it’s nice and smooth (surfaces like buildtak might not do so well here). I use Simplfy3D for slicing, and I have two printing process set up: for the first two layers, I have it set to print at .22mm layer height. For the rest of the layers I have it set to .24. This helps the mintyPi logo to come out clean.
- You may have to play with extrusion multipliers and widths a bit to get things like the hinge to come out with the correct tolerances.