One-upping the NES Classic Edition with the Raspberry Pi 3 and RetroPie

the NES Classic. The delightful emulator/nostalgia-fest sparked unanticipated demand, including near-instant supply issues and 200-percent-plus markups in secondary markets. So in December of 2016, we decided to build our own version instead. Since Nintendo bizarrely announced that it won’t be making any more of the hard-to-find mini consoles this week, we’re re-running this piece to help those of you with a DIY streak once again build your own. Hardware recommendations have been updated to reflect current availability and pricing for April 2017.

Against my better judgment, I’ve tried a couple of times to snag one of those adorable little $60 mini NES Classic Editions—once when Amazon put some of its limited stock online and crashed its own site, and once when Walmart was shipping out small quantities every day a couple of weeks ago. In both cases, I failed.

But the dumb itch of nostalgia can’t always be scratched by logical thoughts like “do you really need to pay money for Super Mario Bros. 3 again,” and “Castlevania II: Simon’s Quest is probably the weakest of the three NES Castlevania games.” Since it’s not entirely clear if or when those little mini NESes will become readily available, I decided to funnel that small wad of expendable cash and the desire for some nostalgia-fueled gaming into a DIY project.

It turns out that the NES Classic Edition is just a little Linux-powered board inside a cute case, and it’s totally possible to build your own tiny Linux-powered computer inside a cute case without spending much more than $60. And by using the Raspberry Pi and freely available software, you can build something capable of doing a whole heck of a lot more than playing the same 30 NES games over and over again.

Setting goals

I find it helpful when pursuing a new DIY project to start with a list of needs and wants and go from there—possibly a leftover from my IT days helping the non-technically inclined (and actively technology-averse) make purchasing decisions. With my homebrew NES Classic, I wanted to:

  • Spend something close to the same $60 that the NES Classic Edition costs, though I would be OK as long as the bill of materials came in under $100 (because that’s roughly as many Amazon points as I have to dedicate to this project).
  • Make something similar in size to the NES Classic Edition.
  • Make something powerful enough to easily emulate 8- and 16-bit consoles—anything above and beyond that would be great, too, but for these prices you won’t be emulating many games released after the end of the ’90s.
  • Include integrated Bluetooth and Wi-Fi for wireless controllers and easy network/Internet connectivity, respectively.
  • Build something that, once fully configured, would provide a relatively easy-to-use and attractive console-like UI.

With all that in mind, these are the components I settled on (prices and components updated on 4/14/2017):

  • For the heart of the system, I chose the Raspberry Pi 3 Model B, available for $42 from Amazon with a 5V 2.5A micro USB power adapter and little heatsinks (if you already have the minimum recommended 5V 2.0A micro USB adapter, the board itself can be had for around $38). This thing ticks a lot of boxes—it’s relatively cheap and relatively powerful, and it can easily handle anything from the original PlayStation on down (Nintendo 64 and Dreamcast emulation is offered but generally too buggy and laggy to be usable in most cases; anything newer is a no-go). It has the integrated Bluetooth and Wi-Fi I wanted as well as plenty of ports for wired accessories. And the Raspberry Pi is a super-popular lineup of enthusiast boards with tons of official and community support.
  • The Pi has no built-in storage, so you’ll need a microSD card; you’ve got a lot of choices here, but both the 32GB and 64GB SanDisk Ultra cards (available for $13 and $22, respectively) are solid, affordable options. These are all overkill capacity-wise, but I want to leave plenty of room for future library growth. Whatever card you buy, you don’t want to cheap out—even the best microSD cards don’t have stellar performance, and that’s definitely true when you’re using them as the primary storage drive on a computer rather than as a place to dump large photo or video files. The Wirecutter also says that Samsung’s cards usually hang with or handily beat offerings from other companies, if you want to try something faster.
  • The official Raspberry Pi 3 case, available for around $8. There are lots and lots of different Pi cases available, from cheap, creaky plastic numbers to sleeker aluminum versions to specialty cases with active cooling systems. I went ahead with the official model because it was cheap, it’s unobtrusive, and it can be completely taken apart and reassembled without tools.
  • A pair of Buffalo Classic USB Gamepads, which were available for about $13 when we originally published this but currently running about $26 each. Indie reviewers say that these SNES-style gamepads feel almost exactly like the real thing, and they’ve got 5.5-foot cables that are considerably more generous than the NES Classic Edition’s 2.5-foot cables. I already have PS3 and PS4 controllers that will work wired and wirelessly, but in my opinion older 8- and 16-bit games just feel better with a lighter, simpler gamepad. The pad you use is really up to you; die-hard purists who don’t mind dongles can find USB adapters for their original gamepads if they need the feel of the genuine article. Most generic USB and Bluetooth pads are going to work fine, too.
  • If you like the feel of an old-school gamepad mixed with the convenience of wireless controllers, 8bitdo makes a fantastic Bluetooth SNES pad available for about $35; it’s worth it, given that you can use them as wired controllers with micro USB cables and since the price on the wired models has gone up so much in the last few months. You can get them with both SNES-style purple buttons and Super Famicom-style multicolor buttons, depending on which you prefer.

With the 32GB microSD card and one controller, that bill of materials comes to around $89, which is near the top of my price range but still fairly reasonable for what you get. Many of these components are also common enough that you could save some money by just using things you already have lying around (and for our purposes I’m already assuming you don’t need an HDMI cable because it’s 2017 and we’re all lousy with HDMI cables; here’s a 3-foot one for $5 and a 6-foot one for $7 if you need).

The build

Putting our little box together is ridiculously easy, and you ought to have no problem with it even if you’ve never opened up a PC tower in your life. The official Pi case splits into five separate pieces, all held together with retention tabs that pull away with firm pressure: the base, the top, the lid, and both sides/port covers.

Completely disassemble the case by pulling off the sides and then pressing in on the arrow tabs so you can pull up the top. Then, take the Pi from its box and slide it into the base, making sure that the microSD slot lines up with its cutout on the front of the case. Don’t force the board into the case—if you’re having trouble, put the SD slot side of the Pi into the case at a 45 degree angle, and then lower the back end of the Pi into the case. Small plastic tabs should stick up out of the board’s back two mounting holes if you did it correctly. Then, snap the top and sides of the case back together, and you’re done! If you bought heatsinks, you can stick them to the chips on the top of the board at any point in this process, including after the Pi is already in the case.

That’s the easy part. Software is more tricky, though not insurmountably so.

Software setup

For the next parts of the process, you’ll need:

  • A Mac, Windows, or Linux PC with an SD card slot for loading the Pi’s operating system.
  • A USB keyboard or gamepad for setup, maintenance, and gameplay.

Making retro game consoles is a fairly common use case for the Pi, so there are a few different operating system choices out there. Most of them involve running libretro and its emulators on top of the Raspbian operating system, and the most prominent also include the EmulationStation frontend.

The best supported, most active of these options is RetroPie, which mixes all of these ingredients together into a package that’s relatively easy to use, visually appealing, and customizable. It also includes a huge number of emulators for both consoles and various personal computers, though, as I mentioned, nothing newer than the original PlayStation will run consistently well on the Pi 3’s hardware (the newer systems are confined to the x86 version of RetroPie, which looks and works basically the same but is built on top of Ubuntu and can run on more powerful and expensive hardware).

The first thing you’ll need to do is drop a RetroPie boot image on your SD card. Since RetroPie is Linux-based and uses the ext4 filesystem, Windows PCs and Macs can’t natively interact with the card once you’ve reformatted it. The RetroPie download page is here. The imaging tool that the RetroPie developers recommend differs depending on your operating system—Win32DiskImager for Windows, Apple Pi Baker for macOS, and Unetbootin for Linux—but the basic process is the same. Decompress the .gz file you downloaded from the RetroPie site, open the tool, and select the .img file you just unzipped. Point the tool at your SD card—if the tool doesn’t see it, you may need to format it as a FAT32 disk first—and let it do its thing.

Once the disk image has been copied to the SD card, pull it out and put it into the Pi, and then plug the Pi into the display with an HDMI cable, plug a controller or keyboard in, and then connect to power. The system ought to boot up and run through some first-time setup things (if the Pi’s red indicator light comes on but nothing else happens, the card may not be formatted correctly, and you should try again).

If you did everything right, after a couple of minutes you’ll see an EmulationStation prompt asking you to connect and configure a gamepad. Press down any button on your gamepad, and you’ll automatically be asked to map all the controller buttons. If you’re using the Buffalo gamepad I bought, it will ask you to map some buttons the gamepad doesn’t have; just hold down any other button on the gamepad to skip them, and then hold down any button again to enter the main EmulationStation UI.

All you’ll see by default is an entry for RetroPie that gives you access to a bunch of settings—this is totally normal, and you’ll see entries for other systems pop up as you transfer ROMs to the Pi. You can navigate through many of these configuration menus with a gamepad, but heading into any of the RetroPie settings kicks you out of the slick EmulationStation frontend into a text-driven, more DOS-like tunnel of menus. If you need to enter text or even hit the Esc key to leave any of these menus, you’ll have to hook up a USB keyboard first.

Here’s a short list of stuff to do before we dig into the fun part. From here on out I’ll assume you have both a keyboard and a gamepad to use.

  • Assuming your HDMI cable is handling video and audio, go to the Audio settings in the RetroPie menu and select “HDMI” from the list of outputs. The default is “Auto,” but forcing HDMI can apparently solve some audio problems.
  • If you’re not using wired Ethernet, go to “Wifi” in the RetroPie menu and connect to a Wi-Fi network. The Pi 3 natively supports 2.4GHz 802.11n, which isn’t great, but it’s fine for the price and good enough for our purposes.
  • Once you’re on the Internet, access the command line by pressing F4 on your keyboard or by pressing Start on the gamepad, selecting Quit, and then quitting EmulationStation.
  • Take note of your box’s IP address, which will be displayed along with other system information.
  • Type passwd if you’d like to change the default account’s password for security purposes. The default username is pi and the default password is raspberry.
  • Type sudo apt-get update and then sudo apt-get upgrade. The first command refreshes the list of available packages from the device’s repositories, while the second actually downloads and installs those updates. Go ahead and install all updates when prompted.
    • Once it’s set up, our RetroPie box will be pretty appliance-like; you could disconnect it from your network and never worry about updating it again if you wanted. But new versions of both Raspbian and RetroPie are released periodically, and if you intend to keep the RetroPie box on your network permanently, you should at least install updates periodically.
  • Type sudo shutdown –r now to reboot your box, which will bring it back into the EmulationStation UI.

At this point you’ve got a basic RetroPie setup running, you’ve connected your box to your network and you know its IP address, and you’ve updated EmulationStation, its emulators, and the underlying Raspbian operating system to the latest versions. Now it’s time to load up some games.

Listing image by Andrew Cunningham

Loading up games

First, the standard caveats with emulation apply. We won’t tell you how to get ROMs. We will tell you that while emulators themselves are perfectly legal, emulating commercial ROMs is at worst a form of piracy (especially in the modern era, since the companies that originally made these games are often packaging them up and reselling them) and at best a legal gray area. Tools like the Retrode family of products exist to help you make backups of your existing cartridges, and you can find online guides for backing up disc-based games and dumping those systems’ BIOSes (needed to make a few systems run).

OK, time to have some fun. There are a couple of different ways to get your ROMs to your RetroPie box, all of which are documented here. The easiest is probably to use RetroPie’s built-in SMB shares (these will be way faster over an Ethernet connection than the Pi’s weak Wi-Fi, but you decide what’s best for you).

In Windows, open an Explorer window and either type \RETROPIE or \[your IP address from earlier] into the address bar. In macOS, hit the Go menu in the Finder, hit Connect to Server, and type in smb://retropie or smb://[your IP address from earlier], and then connect to the server as a guest.

Once you’re connected, you’ll see four folders, of which we only really need to worry about two at the moment: “bios” and “roms.” You’ll only need to open up the bios folder if you’ve got an emulator that needs one (like the PlayStation or the Dreamcast), and you’ll find out exactly what you need to do on those systems’ RetroPie GitHub pages.

Open the roms folder and you’ll see a bunch of other subfolders, one for each system supported by RetroPie. This is where you need to drag your ROM files, being careful to keep them separated by system because RetroPie won’t sort them for you itself. NES files go in the NES folder, Sega Genesis games go in the Genesis (or Mega Drive) folder, and so on. Pretty straightforward.

Once your files are copied over, hit the Start button on the RetroPie’s gamepad, go to Quit, and restart the system to refresh everything. When it comes back up, all the systems you loaded games for will show up. Flip left and right on the gamepad to cycle through your systems, and hit A to select systems and launch games.

Gameplay and controller shortcuts

At this point you’ve got a fully functioning retro emulator, and if that’s all you want, you can basically stop here.

The default quality of the emulation looks just as good as it does on the NES Classic Edition, which in turn was a huge improvement over the emulators used for Wii and Wii U Virtual Console releases. By default in all systems, you’re going to get a clear, unfiltered image that improves on the look of the original consoles. HDMI connections and TVs are way better than the old analog connections and CRTs you would have been using to play this stuff back in the day. You may not see completely accurate emulation in every game you play, if only because perfect emulation even for older consoles is still extremely taxing, but the emulators for these older systems are all advanced enough that things should mostly run just like they did on the original hardware.

The NES Classic Edition offers easily accessible filters if you want to tweak image quality, one “pixel-perfect” setting that tweaks the aspect ratio and one setting that adds (ugly, in my opinion, but beloved by some) CRT-style scanlines to make it look more like it did on your 20-year-old TV. You can find filters for RetroPie’s emulators, and they can be much more flexible, but at best they’ll require a dive down into LibRetro’s inscrutable menus (there’s a smoothing filter that retains the clear picture while smoothing over the blocky look of the pixels, if that’s your thing) or a whole bunch of config file editing that’s outside of our scope here.

Gameplay feels good, too. With both the wired USB gamepad we recommend above and a Dualshock 3 connected wirelessly via Bluetooth, I noticed no input lag even in punishing, precise games like Mega Man and Punch-Out!!. If you do want to use a Dualshock 3 or 4 wirelessly, there are a couple of extra steps you have to perform, and you can no longer use the integrated Bluetooth adapter for keyboards and other accessories, though the tradeoff is worth it if you don’t mind plugging in a keyboard when you need one (you’ll also need a wired gamepad or keyboard to navigate those text-based configuration menus, or you can just hook the Dualshock up to the RetroPie box with a USB cable).

The NES Classic Edition also offers an easy, convenient UI for saving and loading states, a key advantage that emulators have over the original systems—you could use these to cheat if you were a monster, but sometimes it’s just convenient to have save points in older games that were designed without them. RetroPie offers save states, too, but this system is driven entirely by button combinations and doesn’t have a GUI. Here’s a list of the universal controller shortcuts you’ll want to memorize to have the best RetroPie experience:

  • Start + Select simultaneously: Quit game
  • Select + right shoulder button: Save state
  • Select + left shoulder button: Load state
  • Select + right or left D-pad button: Change save state slot
  • Select + X: View emulator configuration menu
  • Select + B: Reset game

Once you’ve memorized them (and you’ll want to try extra hard not to get the buttons for saving and loading states messed up, lest you lose your progress), these hotkeys let you do most of what you want without ever having to touch your RetroPie box, which isn’t the case for the NES Classic Edition. You can customize these hotkeys and add new ones if you want, but as usual with RetroArch and RetroPie, it quickly gets complex. As proof, I present you with this half-hour YouTube video about how to do it.

Customizing EmulationStation

In case it isn’t obvious, you’re never going to make your RetroPie box quite as clean or streamlined as a purpose-built console made by a major gaming company, but there are a few things you can do to prettify the EmulationStation.

The first and most obvious is to download some themes, a gallery of which you can find over here. Go to the RetroPie section in the console picker and select ES Themes, which will let you view and install the default set. Of what’s available, I think “simple” and “simple-dark” both look pretty good. Download the themes you want, head back to the main EmulationStation UI, hit the Start button, and select UI Settings. At the bottom of that screen, you’ll easily be able to choose from among the themes you’ve installed.

You can also grab box art, descriptions, and other data to display as you page through games, which goes a long way toward making the RetroPie look nice—otherwise you’re just looking at a long list of text. RetroPie has its own scraper that, for whatever reason, I couldn’t get working with the available documentation. But EmulationStation has its own builtin scraper, accessible by hitting Start and then entering the Scraper menu.

The EmulationStation scraper grabs data from by default, and it includes box art, a description, release information, and star ratings for every game in your library. Some caveats, though: the scraper is pretty bad at matching your ROMs’ filenames to the games they actually belong to, so you’ll want to have it confirm every choice with you manually lest you end up with dozens of mislabeled games. It’s also super slow, and it can easily take you an hour or two if you’ve got a few hundred games in your library.

The other downside is that if the scraper can’t find a game or is too confused by the filename to properly identify it, the search tool you could theoretically use to narrow down the field or try again doesn’t work, because the EmulationStation UI won’t accept regular keyboard input (you can configure the keyboard as a gamepad, but that’s it). So, it’s imperfect. But if you put in the time, you can make your game library look pretty nice.

The one minor annoyance I haven’t worked out yet is that small, text-based status messages pop up every time you load a game or when you save or load a state. It’d look cleaner if you could disable all of these, and it would be more useful if you could make them large enough to actually read on a TV you’re sitting six feet away from.

When you’ve got everything set up the way you like it, go ahead and make a backup of your SD card that you can store somewhere in case something goes wrong with some future update or configuration change. The tools you use to “burn” Raspberry Pi SD cards also include read functionality suitable for backups.

Pros and cons: Was it worth it?

I’ve been having a ton of fun with mine now that it’s all set up, and its flexibility (plus the quality of those USB gamepads) has made it my favorite way to play old games, outpacing my Apple TV, the pretty but not-living-room-friendly OpenEmu, and the old hacked Wii I still have sitting around. But my priorities may not match up with yours—to summarize, how good is a RetroPie box if the NES Classic Edition has you itching for something else?

NES Classic Edition


  • Adorable. Official.
  • Controllers are nearly identical to the “real thing.”
  • Clean, simple UI for selecting games, tweaking the visual presentation of the games, and saving and loading states.
  • Appliance-like. Remember when you just turned things on and then played your game without needing to install patches or updates?


  • Limited to the 30-game library it comes with literally forever.
  • Only covers the NES.
  • Short controller cables.
  • Nintendo inexplicably isn’t making them anymore.

RetroPie classic gaming box


  • Flexible. Customizable.
  • Plays a huge range of retro games—just about everything from 1970s consoles and computers to the original PlayStation is playable at full speed, though anything from the Nintendo 64 on up is generally too much for a Raspberry Pi 3.
  • Effectively infinite controller selection. Get some with longer cables. Play wirelessly. Buy USB dongles for your originals. It’s your call.
  • At less than $100 for a well-specced system and a controller, it’s still pretty cheap for what you get.
  • Basic setup isn’t totally painless but shouldn’t be hard for anyone who’s willing to learn.
  • You can repurpose the Raspberry Pi 3 for a whole bunch of cool DIY projects if you decide you don’t love RetroPie.


  • Emulation is a legal gray area, and the cost of making legal backups of your games can add up.
  • Advanced configuration quickly drags you into the wide world of Linux, with its mandatory command lines and hand-editing of text-based config files.
  • Not as good-looking or easy to use as the NES Classic Edition, even if you spend some time making it look prettier than it does out of the box.
  • Like any computer, you’ll want to think about updating its software and backing it up occasionally.
  • It’s still really small, but even the best-looking (non-custom) cases are less “cute/adorable” and more “unobtrusive/workmanlike.”

A little RetroPie system might not be the best choice for someone hoping to have an NES Classic Edition waiting under the tree or menorah or Festivus pole this year, but once you’ve got it up and running you’ve got a tremendously versatile little classic emulation box that you can assemble for relatively little money with relatively little expertise.

Powered by WPeMatico