Let’s begin our adventure on the Retropie downloads page. Fetch the version appropriate to your Raspberry Pi board type — there are separate SD card images optimized for the Raspberry Pi “1” (Models A, B, A+, B+ and Zero), and another for the Raspberry Pi 2 or 3.
If you’ve used RetroPie in the past, check if a newer release is available…it’s updated frequently! This guide requires version 3.6 or newer.
While that downloads, you can get started with formatting a 4GB or larger microSD card (or full-size SD if using a “classic” Model A or B).
After downloading and uncompressing the RetroPie image, you can write it to the SD card as you would any other operating system. It’s explained in this guide.
Insert the SD card in the Raspberry Pi. Plug in an HDMI monitor, USB keyboard, then connect power.
On first boot, you should see some Linux console messages scroll by, followed by a RetroPie splash screen. It will report that it’s resizing the SD card partition, then performs a reboot cycle. The second time around, you’ll get the RetroPie splash screen, followed by the EmulationStation splash screen, and then it will prompt you to configure an input device.
You do not need to configure inputs yet…instead, press F4 to exit EmulationStation and get a Linux prompt. Then we’ll do some basic system configuration…
The following raspi-config options are required:
- Under System Options:
- Audio: force 3.5mm headphone jack (since HDMI will be disconnected later). In earlier releases, this is under Advanced Options.
- Under Display Options:
- Underscan: disable (earlier releases: Overscan in Advanced Options)
- Under Interface Options:
- SPI: enable
If using an older version of RetroPie, also select Expand Filesystem (recent releases do this automatically on first boot), enable the Device Tree under Advanced Options, and when enabling SPI above, answer “yes” when prompted whether to enable the kernel module.
These steps are optional but recommended:
- Change Password (since everyone knows the default).
- Under Internationalization Options, select Change Locale, Change Timezone and Change Keyboard Layout to your liking. If keys aren't producing the expected characters, this is why.
- Under Advanced Options, change Hostname if desired (default is “retropie”) and enable SSH (for remote administration).
DO NOT select:
- Overclock. We can enable this later, but there are some important details that need explaining with the PiTFT first! Start out at the default speed.
- Memory Split. In the past when using the PiTFT you'd want this as small as possible (16 MB). But now that we're actively using the GPU, we want some GPU memory, so don't touch this!
When you’re done, tab to “finish” and reboot when prompted.
After rebooting, the system will once again ask you to configure an input device. Let’s set it up for keyboard input for now (we can change this later). Hold down any key on the keyboard for a few seconds until it starts asking for keys to assign to certain controls.
There are a HUGE number of inputs (shoulder buttons, dual analog sticks, etc.)…but for any you don’t anticipate using you can just hold a key down for a few seconds and it will skip ahead to the next option. As an 80’s kid, I spend most of my time in MAME, so I configure EmulationStation’s input to be fairly minimal (but your emulator of preference might be different):
Key on Keyboard
Left Alt or Command
Remember — once configured, EmulationStation is navigated using these keys only. So, for example, the Return key won’t necessarily select an item, even though the same key may have the expected effect within some emulators.
You can set set up a more extensive combination of inputs for different emulators later…no need to get serious with the gameplay yet, just confirm that things launch as expected. Most emulators will exit and return to the EmulationStation menu with the Escape key.
Later, you can reconfigure it for a gamepad…you’ll need to access the EmulationStation settings menu with a keyboard still attached. Press the key you’d configured as “Start,” then select “Configure Input,” then proceed through each control as you did before with the keyboard, but using the gamepad now.
The control settings you select here don’t always carry through to some emulators. Others may have their own settings that overlap the keys you’ve chosen, causing mayhem. See the “Configuring Individual Emulators” section for tips on finding each emulator’s individual config file, so you can fine-tune these aspects.
If you don’t plan to use networking, skip ahead to the next section below: Install ROMs. You’ll need to use a USB flash drive and move files manually from the command-line.
Loading ROM files is most easily done on a wired Ethernet network. Recent RetroPie releases already have file sharing enabled; the system should appear on your network as “retropie.local” (unless you gave the system a different hostname during the initial setup).
If you plan to use wireless networking…the RetroPie menu includes an option for configuring WiFi, but I couldn’t get this to connect. If you have trouble with it, press F4 to exit EmulationStation for a command-line prompt and set up WiFi the old-fashioned way, by editing /etc/wpa_supplicant/wpa_supplicant.conf. Here’s a guide for basic network setup on Pi.
Once networking is all set up (it may require another reboot), you should be able to access the RetroPie system remotely…as a network share for transferring files, and (if you enabled SSH in raspi-config) for remote login to finish certain command-line tasks later.
You can always exit EmulationStation with the F4 key for a command line prompt, but remote login has the benefit that you can copy-and-paste some of the commands we’ll be using.
Emulators require ROM files. If you don’t want to do this step, that’s okay…a few self-contained games can be installed in the “Ports” section of EmulationStation, such as Doom and Quake (explained in next section below).
With networking enabled, it’s possible to copy the ROM files across the network — the retropie system should be visible as an SMB or AFP share. Alternately, you can fill a USB stick with ROM files, mount this on the Raspberry Pi and move them to the appropriate locations.
ROM files are installed in specific subdirectories of /home/pi/RetroPie/roms — one for each different emulator package. For example, NES roms go in the “nes” directory.
Some systems are supported by multiple emulators (for example, there are different MAME implementations, each with its own directory). Each emulator has its own quirks — some may render or perform better than others, or some might not work with certain ROMs. Hunting down these quirks and determining your preference for one emulator over another is a process you’ll have to work through yourself…there are just too many emulators and far too many ROMs for us to know them all. There are entire sites and forums devoted to the various emulators, and you may need to Google around and do your own research on the best selections for different games. The RetroPie web site and EmulationStation web site are great places to start to start, with forums, FAQs and wikis.
Version 4 (and later) of RetroPie does not include games like Doom and Quake by default. If you’re patient and reasonably tech savvy, you can add these on after the fact…
From the RetroPie menu, select “RetroPie Setup.” This runs a text-based menu from which options can be selected (use the arrows and enter key here rather than the “A” button).
Select “Manage packages,” then “Manage optional packages.” You’ll be greeted with a list of additional emulators and native (non-emulated) Raspberry Pi ports of some games. Use the “Install from binary” option to install these.
An emulated system won’t show up in the EmulationStation menu until corresponding ROMs are installed…but it only scans for ROMs at startup. It’s easiest just to reboot…or you can exit to the command line (F4) and type “emulationstation” to restart the menu.
If you haven’t already configured the keyboard or a gamepad for input, do that now. Hold down a key or button and proceed through each button when prompted.