Main menu

Post navigation

An A to Z Beginners Guide to Installing RetroPie on a Raspberry Pi 2 B+

To find out what you need for this project, please visit the “Materials” page.

__________________________________________________________

NOW WITH INSTRUCTIONS FOR RASPBERRY PI 2 B+

If you are using a Raspberry Pi A, B, B+ Start here:

To save a lot of time on the installation of RetroPie, you can actually just head over to the RetroPie Download Site, and grab the “RetroPie Project SD Card Image” – Then unzip that file to a location on your primary computer. Also, don’t forget there is a donate button there if you feel like sparing some change for the creators of this awesome package.

Once you have that image downloaded, you can use Win32 Disk Imager (as detailed in the next section) to mount the image to the card, and then slap it right into your Raspberry Pi.

By doing this, you bypass the (very) long wait to download and compile the emulators, however, the image may not contain the most up-to-date version of the emulators.

Now you want to plug your Raspberry Pi into a screen via HDMI, plug in the ethernet cable, and plug in your USB Keyboard. Now power on your Raspberry Pi by plugging it into your Micro USB Power Supply.

Once the Raspberry Pi boots up, it should jump right into EmulationStation and have you map out the controls (keep in mind this does not map controls for the emulators, only the EmulationStation menu) – Just follow through the prompts here. We will come back later and configure it with the controller, but for now, that is not important.

Once your are done with that, you will be presented with the EmulationStation menu. We have some other things to take care of, so press F4 to exit EmulationStation.

This will bring you to the terminal. Type in:

ifconfig

Press enter.

Take note of your IP address, it is the string of numbers following the line “inet addr“. It will probably look something like “192.168.1.5” – Write this string of numbers down somewhere.

Back at the terminal type:

sudo raspi-config

And press enter.

If you used the RetroPie Image and an older model Raspberry Pi, please skip to the section “Software Configuration of the Raspberry Pi”

IF YOU ARE USING A RASPBERRY PI 2 B+ START HERE:

Initial Setup Of The Raspberry Pi: For those who didn’t use the RetroPie Image

Unzip the contents of the two downloaded files into a folder, and run “Win32DiskImager.exe“

Click on the blue folder to the right of the empty box for “Image File“

Select the .IMG file of the Wheezy Raspian version that you downloaded (Or the RetroPi Image if you downloaded that).

Open up “My Computer”/”Computer” to check the letter assigned to the SD card you have inserted. Make note of this letter, if the incorrect drive is selected in the next step, it can re-write all of the data stored on that drive.

Back in Win32 Disk Imager under “Device” select the letter that corresponds with your SD card, the one we made a note of before, and then click “Write” (This will take several minutes.)

When this is done, remove the SD card from your computer, and insert it into the SD slot on your Raspberry Pi.

Plug your Raspberry Pi into your video source

Plug your Raspberry Pi into the same router as your primary computer

Plug your USB keyboard into your Raspberry Pi

Now turn on your Raspberry Pi by plugging it into your USB power supply

__________________________________________________________

Software Configuration of the Raspberry Pi:

When your Raspberry Pi has finished its first boot (or you got here from the RetroPie Image section), it should present you with the Raspi-config window.

Select the first option, “expand filesystem” and press enter.(This will take a few seconds.)

You will be presented with a message saying that the partition will be resized on your next reboot. Press enter.

A note on Passwords:

In this tutorial, I am going to skip over making a password. By default, the password is “raspberry”. If you would like a personal password setup in your own configuration, select the 5th item on the menu, “change_pass” and press enter. Follow the prompts after that to set up a new password. This password will be used for the user ID “pi”.

Back at the Raspi-config menu, go down to the 7th option “Overclock” and press enter. Press enter again to get past the warning screen.

Go down to the last option “Pi2″ and press enter, then enter again

Back at the Raspi-config menu, press the right arrow key twice to select “finish” and then press enter.

It will ask you if you want to reboot now, select “yes” and press enter.

It will take some time to reboot, as it is applying all the settings on the next startup.

__________________________________________________________

Installing RetroPie and EmulationStation

This section is for the newer Raspberry Pi 2 B+. If you downloaded and mounted the RetroPie Image (Raspberry Pi A, B, B+), you can go ahead and skip to the section “Moving ROMS Over To Your Raspberry Pi”.

When your Raspberry Pi finishes booting up, it will prompt you to enter a “raspberrypi login” – this is your “user ID” on the system. Enter “pi” and press enter. It will then prompt you for a password. (If you setup a different password earlier in the Raspi-config, enter that password.) Otherwise, enter “raspberry” (the default password) and press enter.Keep these credentials in mind, you are going to need to use them quite a few times throughout this guide.

It will display a few lines, and then end at one that says “pi@raspberrypi ~ $” – This is the Terminal prompt. This is your command prompt, your home base, your Linux command-giving console. From here we are going to install RetroPie with the petRockBlog initialization script.

Any line that is tabbed in, and surrounded by a light gray box
(like this paragraph) is a line that needs to be entered in the
terminal. This means type that line out and press enter.
Please note that everything is case sensitive

First, we need to make sure you have the latest updates.

sudo apt-get update

This will take a few minutes, when it’s done, you will be back at the terminal

sudo apt-get upgrade -y git

This will take a few minutes, when it’s done, you will be back at the terminal

sudo apt-get install -y git dialog

This will take another few seconds/minutes. You will be brought back to the terminal prompt input.

cdgit clone--depth=0 git://github.com/petrockblog/RetroPie-Setup.git

This will download the files needed to install the emulators. When it is done, you will be back at the terminal.

cd RetroPie-Setupchmod +x retropie_setup.shsudo ./retropie_setup.sh

You will be presented with a screen where you have a few different options. Select Option 1 (Binaries Based Installation) and press enter.

This will bring you to a screen where you can select/deselect systems and features that you may or may not want (spacebar to toggle). For simplicity’s sake, we’re going to leave it as the defaults, so just press enter.

RetroPi should now be installing. While the Source Based Installation is suggested for the newest software, I didn’t have any success with it when using the new Raspberry Pi 2 B+. The Binaries Installation should take about 15min.

When that is complete:

You will now be presented with some prompts letting you know where to put your ROMs. We’ll get to this later. Please make note, that the emulators will not show up in EmulationStation if the ROM folders are empty. So go ahead and press Enter a few times to get through these prompts.

Back at the RetroPie Setup screen, select the 3rd option “Setup (only if you already have run one of the installations above)” and press enter.

We want to make EmulationStation workable without a keyboard, so select the 2nd option “Auto-Start EmulationStation” and press enter.

Next, select option 2 “Start EmulationStation at boot.” and press enter. Press enter again at the next prompt.

Back at the RetroPie-Setup, press tab to select “cancel” and press enter. This will bring you back to the main install screen. Press tab again to select “cancel” and press enter to get back to your terminal.

While we are here, we want to collect some information for the next steps.

ifconfig

Take note of your IP address, it is the string of numbers following the line “inet addr“. It will probably look something like “192.168.1.5” – Write this string of numbers down somewhere.

exit

Leave your Raspberry Pi powered on and at the login screen.

__________________________________________________________

Moving ROMS Over To Your Raspberry Pi

Keep your Raspberry Pi powered on!

First, you need to go get some 100% legitimate homebrew non-pirate ROMs, because that’s the only kind you would ever download, right?

On your primary computer, go download, install, and run the program WinSCP – www.winscp.net

When WinSCP opens, it will be asking for details about a session.

File protocol: select SCP.

Host name: enter the IP address of your Raspberry Pi (You wrote this down before, remember? my example was 192.168.1.5).

User name: pi

Press “Login”.

It will prompt you for a password. Enter the password that you have setup for the user “pi” (raspberry by default).

Once it connects, it should show a file browser of your primary computer on the left, and your Raspberry Pi on the right.

On the right (your Raspberry Pi) open the folder “RetroPie”, and then open the folder “roms”.

On the left, open the folder where you keep your ROMs on your primary computer.

Drag and drop the ROMs from your primary computer into the corresponding system’s folders on the Raspberry Pi (SNES ROMs go in the “snes” folder, NES ROMs go in the “nes” folder etc…)

When you drag them over, you will get a prompt to copy the files over, click on copy. Depending on how many files you’re moving, this may take a while. When you are done copying your ROMS over, exit out of WinSCP.

Your Raspberry Pi is more or less ready to play some games.

Go back to your Pi, and put in your user ID and password.

EmulationStation should boot up.

First EmulationStation Run

On first boot, EmulationStation is going to have you run through the button configuration for navigating the menu in EmulationStation (Please take note: Configuring EmulationStation controls will not configure your controls for the emulator. We will get to that later)

Use left and right on your keyboard to select an emulator, then up and down to select a ROM, and then press enter to run it.

Default controls use the A,S,Z,X keys for the button pad, Enter and Shift for start and select, and arrow keys for D-pad. Esc will exit the game, and F4 will exit the EmulationStation frontend and bring you back to terminal.

Take note that pressing Esc from the game will dump the save data to the Pi keeping your save games. However the only time it does save your game to the memory is when you press Esc – not when you press save in the game. If the system is powered off before Esc is pressed, your save file will not be written to memory.

When you’re done messing around, shut down your Raspberry Pi by going back to the terminal (from a game press esc then F4)

sudo shutdown -h now

__________________________________________________________

Configuring Controllers and Other Settings

While the Raspberry Pi is powered off, plug in one of your USB controllers (if you are using a controller other than the one specified in this guide, you may have to install drivers first, it depends on the controller) – You should also still have your keyboard plugged in.

Power on your Raspberry Pi by unplugging it, and then plugging it back in again.

Your Pi should go through its regular startup, and launch EmulationStation.

Make Note: If you get an error about “Couldn’t open joystick #0″, try replacing the 0 in the above line with a 1 or a 2.

Next you are going to use your controller and follow the prompts. If your controller has less buttons than the config tries to setup (My SNES controllers lack the R2/L2, R3/L3, and Joysticks), then you need to select a dummy button (I used left trigger) for the buttons you don’t have. We will edit those out later. Once this is done, it will bring you back to the terminal.

At this point, you should be ready to game with one controller. If you type sudo reboot in your terminal, it should restart, and bring you into EmulationStation on the restart. You can then use the controller to select a game and play it. To setup a second controller, go back to your terminal (Esc to exit game, F4 to exit EmulationStation) and follow the next steps:

Go back to your primary computer, and connect to the Pi using WinSCP (The same way we did before when we were adding ROMs)

This time, over on the Raspberry Pi side, click the “Up a folder” icon (should be the top most icon in the file browser. It looks like a folder with an up arrow on it, and then two periods). Press that one more time, and this should bring you to the bottom folder of the Pi. From there open up the “opt” folder, then “retropie”, then “configs”, then “all”.

In here, you can find the retroarch.cfg file. This is a configuration file that applies its properties to all of the emulators. Open this text file. (You may have to tell Windows to open it with wordpad if it does not know how to handle a .cfg file)

Alternatively, you could have opened the folder/config for a specific Emulator. This could be useful for making configuration settings specific for each console. Let’s say you want the controller mappings for NES to be different than what you have setup for SNES. You could go into the NES folder under “configs” and edit the retroarch.cgfto your likings, and do the same for the retroarch.cfg file inside of the SNES folder. The code written in the folders for the specific emulator will override the code written in the “all” folder/config.

Scroll down to the bottom of the retroarch.cfg file, and you should see the lines for all of the button mappings that you did just a minute ago.

If you used a “dummy” button like I did, you are going to see that a lot of the buttons will have the same value. Because I am using a SNES USB controller, I’m going to delete the lines that I won’t be using. I am going to delete the lines:

I am deleting these because I have no L2 or R2 buttons on the controller, and I also have no L3 or R3 buttons.

Further down in the .cfg file, I am also going to delete the Joystick configurations, because the controllers I have, use only a D-Pad. So delete all the line “input_player1_l_x_plus_btn = “x”” and all of the lines under it.

Now the only things you should have left, are the buttons that exist on an SNES controller (A, B, Y, X, L, R, Start, Select, Up, Down, Left, Right), and one line at the top defining the first controller plugged in as “Player 1″

Now highlight the line:

input_player1_joypad_index = “0”

and also highlight all of the lines under that.

Copy that block of text, and then under it, press enter to add a space, and paste a second copy of it. You should now have 2 blocks of identical text. In the second block, we are going to make some changes to let the system know there will be a Player 2 controller, and map the buttons for it.

Change the top line of your second block of text to:

input_player2_joypad_index = “1”
Now go down the lines of code, and wherever it says “player1″ change it to “player2″

For example, in the second block of text, change

"input_player1_a_btn = "1"

to:

input_player2_a_btn = "1"

Keep in mind that this specific setup will only work if you are using 2 identical controllers. In my setup, I have 2 of the same SNES USB controllers, so the button mappings are exactly the same. If you have 2 different controllers, you will have to run the retroarch-joyconfig again for the second controller, and make the appropriate changes to the retroarch.cfg for the mappings of Player2_joypad to reflect the correct controls.

OPTIONAL BUT PREFERRED:

You can setup an “exit emulator” button combination that will bring you back to the emulator/game selection screen. When you do this, it will dump the ROM and keep any save files that you have. There are other ways this can be accomplished; we will go over those later.

So at the bottom of the retroarch.cfg, enter these two lines

input_enable_hotkey_btn = "X"
input_exit_emulator_btn = "Y"

Replace X with one of the numbers that corresponds to a button on your controller, and replace Y with a different number. In my setup, I wanted it to exit the emulator by pressing Select + Start. So I replaced X with the number corresponding to my select button (I think it was 8), and I replaced Y with the number corresponding to my start button (I think it was 9)

Additionally, there are some other useful commands that you can add underneath the input_enable_hotkey command such as

input_save_state_btn = “#”

and

input_load_state_btn = “#”

Once you have made all of the necessary changes, save the document.

While you still have WINScp open, go to the directory /opt/retropie/emulators/retroarch/configs/

Select all of the files in there and delete them

Back at the terminal.

sudo shutdown -h now

Once the Pi is done shutting down, unplug your mouse, keyboard and power supply. With the Pi powered off, plug in your two USB controllers. Plug the power supply back into the Pi.

You should now be ready to rock some oldschool emulation with 2 controllers plugged into your Pi, and no mouse or keyboard necessary. Your system will boot into EmulationStation. Use the P1 controller to select and play a game, and P2 will act as P2 in the games (usually… Some ROMs seem to have difficulties). The only thing left is making RetroPie look nice.

WEIRD CONTROLLER FUNKYNESS:

The biggest problem that people have with RetroPie is controller configuration issues. In the RetroPie-Setup there is an option to install a PS3 Game Controller Driver, and there is also an option to Map a USB controller. I skipped these because trying to do them resulted in nothing but headaches. This mode may work for other people, but I did not have success with it. The fact that there are several retroarch.cfg files laying about, and then a whole different configs folder filled with button mapping for specific controllers is really confusing. I prefer a method which uses one retroarch.cfg file and doesn’t depend on all of these other files. For example: in my initial setup, I tried using the USB controller mapping tool in the RetroPie setup. It told me that it created a file “USBGamepad.cfg” and that this would be used by default. Sure enough, it created that file with the correct button mappings. But then they didn’t work, and my buttons were doing weird random functions. After a lot of searching, I found that there was a RetroLink_Gamepad_USB_something.cfg file, and RetroArch decided that this was the .cfg file that it wanted to use (Rightly so, as I had a RetroLink controller, but that’s not where the RetroArch USB gamepad setup made the changes). After wrestling with that for a while, I found the old way, while a bit more time consuming, to be more reliable and less frustrating.

Note: If you did not setup an “exit emulator” button combo, there will be no way for you to keep your save files. Here are some other options for setting up a way to dump your save files.

Solution 1: Wire a button to your GPIO pins to act as a keyboard that presses “esc” – you can then use this button to dump the save files and go back to the EmulationStation. Any time the Pi is powered off after that, your save files will still be in tact

Solution 2: Use a Powered USB hub/splitter and also have a keyboard plugged in. You can then use the keyboard to exit the game. You can also use the keyboard for other features like save and load state. (In my personal setup, I programmed a Teensy to act as a keyboard. I then wired it to my reset switch. When the reset switch is pressed, the Teensy presses “esc” and exits the emulator – this will not be covered in this tutorial, as it is likely unnecessary)

Solution 3: If you have a controller that is not a SNES replica, you can add the line “input_exit_emulator_btn = “x”” where “x” is the extra button on your controller that you have set aside to save and exit the game. You can find out what the definition of “x” is by using the retroarch-joyconfig tool and pressing that button (it should display the number associated with the button you are pressing as you go through the script)

Solution 4: (advanced and requires soldering): This is actually the preferred method for advanced users/hobbyists. For your entire controller setup, use a RetroPie GPIO Adapter (http://petrockblog.wordpress.com/2012/10/21/the-retropie-gpio-adapter/) or make your own GPIO setup . This way, you can use authentic SNES controllers, and the Adapter has a button on it that can be programmed as the exit emulator button (or you can make your own button hooked up to the GPIO). You will also have to install the gamecon GPIO driver which is available in the RetroPie-Setup.

__________________________________________________________

Making EmulationStation Look Pretty

Now that you have a sweet micro retro gaming rig, it’s time to make it look nice. Plug in a keyboard into your Raspberry Pi and turn it on. When it boots into EmulationStation, press F4 to quit. This will bring you back to the terminal.

When the RetroPie setup starts, select the 3rd option, “Setup” (only if you have run one of the installations above) and press enter.

We need to turn off the EmulationStation on boot for this next part, so go down to the 5th option – “Start Emulationstation on boot?” and press enter.

Select option 11 – “Run ‘ES-scraper” and press enter.

At the next menu, select the first option “(Re-)scape of the ROMs directory”, and pressenter. If you add more games to your directories in the future, just run this again, and it will download art for all of the missing games.

Keep in mind that you need to be connected to the internet for this to work

It’s now going to search for, download, and install box art and game descriptions for all of the ROMs that you have. Depending on how many roms you have, this will take a different amount of time. When that is done, it will bring you back to the RetroPie setup screen. Press tab to select cancel, and then press enter.

sudo shutdown -h now

After your Pi is powered down, unplug the power supply. Then plug in your 2 controllers, and plug the powersupply back in.

You are now done with your Setup.

Troubleshooting

If you are having trouble with something in the setup, please check the comments for some of the issues people have had, and the solutions they have come up with. Aside from that, check out the RetroPie Wiki, and there are plenty of extra troubleshooting steps there

258 thoughts on “An A to Z Beginners Guide to Installing RetroPie on a Raspberry Pi 2 B+”

Hey,
Great tutorial! Yours is the only one which made enough sense to get me to a point where I could successfully start RetroPie and play a game.

I have a problem. There seems to be two different configurations for my controller: the menu for retropie has a configuration when you first start it with a controller plugged in and the configuration when you run retroarch-joyconfig.

I followed your guide assuming that the former was what you were talking about and I could just delete the incorrect presses later on but as it turned out, all it asked for were left right up down a b x y and page up and page down. I figured I would delete page up and down later on but I cannot find these in a file anywhere.

At what point did you do this? During the first time you ran EmulationStation (the front end that lets you run the games) – or when running the Retroarch-joyconfig (from the terminal prompt)? There are instructions on where to find and how to edit the retroarch joyconfig file, but if you need to re-setup your controller configuration for EmulationStation, you just need to delete the configuration file for that and it will run again. You can find the file in /home/pi/.emulationstation (keep in mind that the period means that it’s hidden, so if you are using the raspbian GUI, you will have to go to “options -> show hidden” (or something like that, I don’t have the specific term in front of me)

to do it from the terminal, just:

cd
cd .emulationstation
sudo rm es_input.cfg

next time you run emulationstation, it should have you remap the controls

Love the guide but my problem is that the controller doesn’t respond once the game starts. It works fine in the game select list but once I fire up a game it quits working. I will say that I wasn’t able to do the .cfg edit part of your tutorial because I do to see a LXDE button on my interface when I run “startx”. I am using Wheezy OS and I’m VERY new to the RPi.

Nice tutorial. Instead of doing the “sudo shutdown…”, in Linux you can do “sudo init 0″ to poweroff and “sudo init 6″ to restart. Also, if you’re a Linux user you don’t need to do a scp in order to copy the roms, you can mount the SD on your computer and copy manually the files.

I am on step “RetroPi should now be installing” Should take 6h? After an hour did i go out of the room, saw lots of text and installing progress
The screen is black now. Is that normal? Don’t know if it working or if it crashed…

When you first launch ES, it starts at the Apple II emulator. Press left or right to switch between emulators. You should start with Doom, Duke Nukem 3D, PC, and a few others. The NES, SNES, Genesis (and so on) will not show up until you put some ROMs on your SD card. If there are emulators that you do not want to show up in the list, delete their folders from the SD card.I deleted pretty much everything except for Atari 2600, NES, SNES, and Genesis (Megadrive), since those are the only ones that I use.

OK the game starts then crashes: this is what it says
power on HDMI with explicit settings (CEA mode 1)
/home/pi/RetroPie/supplemenarty/runcommand/runcommand.sh: line 11: retroarch: command not found
powering HDMI with preferred settings

I doubt the controller is the issue. Keep in mind that the software is often updated and this can cause different issues. My suggestion is to try the RetroPie SD Card Image ( https://blog.petrockblock.com/2013/02/10/retropie-project-image-download/ ) or start from the beginning and make sure you do every step exactly as it’s written. Because of the updates that are done to the installers/software, my guide may not be 100% accurate right now. I’ll run through it again and make any necessary updates soon.

Hey man, thanks so much for writing this! Unbelievably easy to follow! The only problem I have encountered is not being able to exit the game emulator once I launch a rom. I have tried changing the exit key to something different but it doesn’t seem to really care what changes I make in the config file. The only way out right now is to unplug the pi.

Are you using just a keyboard, or are you using controllers? I think the exit emulator button line may need to be changed for keyboard stuff. By default, I think it’s “input_exit_emulator_btn = esc”. If you wanted it to be the letter “p” I think you would have to change it to : input_exit_emulator_btn = “p”

You may or may not need quotes around the letter p, I forget and don’t have the time to check right now. Try it out and report your findings here.

Haven’t really messed with MAME and GBA. They are different emulators, so they are configured differently. If you do some googling, there are people who have gotten MAME working pretty well, but that isn’t covered in my guide.

Hi im having a slight problem. I installed as described via ssh but accidently rebooting my pi the next day (way over 9 hours to compile) so I could plug in the hdmi cable. I just need to know how to get the blue config screen up for retropi as I had rebooted at this point and missed that screen. also, am I able to run this from within the shell or do you still need to boot into the gui?

hey dude,
ive done the setup for emulation station, however when i boot it, from startup it automatically runs the Apple ][ system. I dont want this, in fact id like to scrap every console except the SNES, Nes, GB and GBC. Will this make emulation station unstable?

Also, how do i change it so that it wont boot to the Apple ][? Is it possible to give me a choice between the aforementioned nintendo consoles instead?

In order to remove the systems you don’t want to show up, go into ~/RetroPie/roms and then delete the folders of the emulators you don’t want to show up (in your case, delete everything extept for snes, nes, gb, and gbc) – EmulationStation will search for the folders and not find them, therefore, not display them

To reduce lag in the the menus (so that it doesn’t try to search for missing folders) go into ~/.emulationstation and edit “es_systems.cfg” and remove the lines corresponding to the systems that you don’t want to show up.

awesome that got it working much better!
At the end of my emulator list at the start now, the ‘pc x86′ shows up. how do i hide that/can i delete that too?

For my snes and nes emulators, i noticed the roms are in .zip folders, (and the emulators themselves dont start up) and they show up in red when i view them in terminal. do i have to extract them in order for the (s)nes emulators to run?

The .emulationstation folder is right in the main “pi” user folder. The dot means that it’s hidden, so by default in the LXDE file explorer, it won’t show up, you will have to go to view -> show hidden (or something along those lines)

To get there from the terminal, right after you log in, just use the command:

Hello. Thanks for the tutorial! NB: I am very new to the Pi. When I first started Emulationstation, I was asked to configure the keyboard controls, it seemed as the HDMI resolution f-ed everything up. It only showed half of the words (ie. “press up”). Can I redo this somehow with a fixed resolution? I am waiting for two USB SNES-controllers, so I only need the resolution via HDMI to work, in ES itself when I choose roms it works fine.

Hello again,
Got the screen fixed, now I have another problem: It wont play Gameboy Advance games, when I try to start it up from ES it “boots” and then returns to ES. Can you help me with this? NES and SNES emulators work perfectly. Thanks.

Hi there,
Thanks for the awesome guide!
Im stuck on the joyconfig part. My SNES USB controller can control retroarch fine. But when im in the terminal and use joyconfig to make it work in the emulator,
I cant presses any buttons on my controller!

Wow, a PERFECT tutorial!
I never did such a thing like that before, but now I ordered a Pi and it’s on the way! But I have one question: You wrote a tutorial about EmulationStation to let it run at the boot. Does that really mean that the Pi starts and then the EmulationStation is open or do I have to enter my username and password at first?

I am brand new to RPi and have followed your tutorial but am having an issue with the controller as well. The buttons work fine with the menus but as soon as I go into the game only the right and down directions work on the D-Pad. Any ideas? Thanks and great work!

I figured it out! The controller is a little cheap (sometimes down is [A])… but in the config file one of the d-pad setups was setup to be +0, +0, -1, +0. I altered it to match the set below and I was good to go! Thanks again for this tutorial, best $35 I spent in a while!

Thanks for the awesome guide. I have been following it step by step and at the moment I have a fully functioning RPi. However I seem to be having an error when trying to run the ES-Scraper tool to download the boxart and game descriptions. I get the following errors everytime I run any of the tasks listed in the ES-Scrapper.

Thank you so much for this guide. It is so helpful and I am almost ready to get my retro gaming rig going! However, I have one major issue: when I use the hotkey on my SNES controller to exit an emulator, I cannot start up another one without my pi freezing. The first one works like a charm every time, but neither NES or SNES games have worked after I have exited using my SNES controller. Any ideas?

Thanks for making this great tutorial and replying to all these comments. I haven’t started building my gaming rig since I am still buying the necessary parts, with that in mind I was thinking how to set up a wireless connection on Raspbian Wheezy, or to be more concise, at what step in your tutorial can this be done? and at which configuration screen?

Thanks for the completely awesome tutorial. This is the best one I’ve found! I’ve got my Pi up and running games and it’s working fantastically! One thing I would love to be able to do is use Bluetooth controllers. I will be using the Cirago Bluetooth 3.0 USB adapter for Bluetooth and Wifi. I am fairly certain it is compatico with the Pi. I built a SNES Bluetooth controller using this tutorial – http://www.instructables.com/id/Bluetooth-SNES-Controller-for-Android/
I would like to hook this to the Pi. I know it’s possible just need someone more experienced at Bluetooth than myself. Even if i can just get my PS3 controller working with it would be very nice! Thanks in advance.

Hi midithekid1!
Thank you very much for your tutorial, it’s perfect! But I have one problem: I’m stuck at the step, where EmulationStation should start at boot, after I placed the completely legally, homebrew ROMs on my Pi! When I restarted my raspberry, it tells me:

/usr/bin/emulationstation: line 11: /home/pi/RetroPie/supplementary/EmulationStation/emulationstation: file or directory not found

I believe that I’m missing a file or something like that (I did the source-based installation of RetroPie!), so I’m just gonna do the installation of RetroPie all over again… or?

Aw, help! I did the s ource-based installation all over again, but it still says that thing! Please, can you help? One thing I have noticed after every installation: When the installation was finished, the raspberry pi didn’t send a signal to the HDMI-Output, but the LED’s were on. When I plugged in my keyboard and pressed something, the Pi rebooted. Is it normal that the pi shuts down after the installation? Because you mentioned that I should get to the config-screen after that!

I tried the binary-based installation and I can now start the emulator, but at the controller-coniguration, I can’t skip the buttons I don’t have on my SNES-controller! (e.g.: After the “Accept” button, the pi asks for a “back” button (Which I believe I don’t have), but when I press the Left trigger to use it as a dummy-button, it says that this one is already mapped! How can I fix my Pi?! I only want to play… :(

Sorry for the late reply. No, you shouldn’t be losing power at any point (no rebooting) – are you doing the commands on the actual Raspberry Pi, or are you doing it via SSH? If you start an SSH session, and then close it, that’s as if you are restarting the Pi (so if it’s in the middle of the 9 hour install, it will kill that whole process)

If you want to install via SSH, I would suggest setting up “screen” first, so you don’t have to worry about your session dying – there’s a guide here:

Great Tutorial very easy. But when i go to choose my rom in emulation station on the apple thingy it wont run the rom. Am I doing something wrong? I havent done the controller setup yet but I think it should still run.

Apple thingy? I think the default system it shows you is Apple II because it’s alphabetical. If you’re trying to launch SNES roms with the Apple II emulator, you’re going to have a bad time. Use left/right to select the appropriate system, and make sure the ROM files you moved are in the appropriate folders (SNES roms in the SNES folder, NES roms in the NES folder etc…)

I can confirm that this happens. The first ROM in your emulator is automatically selected. It seems like the DOWN arrow or something similar is stuck. I went into the command prompt and typed “startx” to load up the GUI. I deleted the Apple emulator, but now it’s loading CaveStory lol. Seems like having the arrow stuck will automatically load the next emulator on the list.

I need to find out how to get the arrows unstuck so I can actually select my ROM. EmulatorStation will automatically load the first game on the list and there’s no way to select whatever ROM we want!!

I managed to select the emulator I wanted by using the LEFT and RIGHT ARROW keys on my keyboard whenever CaveStory came up. I can load up any ROM I want but…

No matter which ROM I load, my LEFT arrow key is always stuck down. It’s as if somebody was constantly pushing down on the button. So I swapped out my keyboard for another one–same issue! This makes every game completely unplayable. You can launch the game but cannot actually do anything as your character is forced to go the LEFT of the screen.

I tried remapping some stuff in my RetroArch.cfg but I’m not sure I’m doing it correctly. Anybody have any ideas? This literally makes my emulator unplayable :( Thanks all.

I’ve discovered that launching the program through the terminal allows the game to run correctly. But I believe I’m using a completely different emulator here. On startup, I believe the launch screen is using “snes9x-rpi/snes9x”. However the emulator I found that works in the console is “pisnes/snes9x”

This works in the console:

ONE LINE COMMAND: /home/pi/RetroPie/emulators/pisnes/snes9x /home/pi/RetroPie/roms/snes/Earthwormjim.sfc

So two things. One is that whenever I am using emulation station and going through the roms it freezes causing me to reset the system. This happens 90% of the time which really makes it unplayable. I have deleted all of the emulators that I am not using as well as deleted the .cfg file associated to them. i have installed by sd image and have overclocked the system to 800 and it does not work. Nothing I do helps and the screen just freezes after a few seconds of scrolling through the roms most of the time, the games play well when i actually get them to load up, but when i use the start select combo to quit the rom it freezes as well.

number two, is there a way to set up Sega genesis usb controllers? i assume it is the same way as the SNES controllers except i don’t see an option for the C and Z buttons. Any idea?

As far as the freezing goes, make sure the Power Supply you are using for your rPi is adequate. If you’re not getting enough power, it can cause all sorts of weird issues. Also, to make sure you have enough power, don’t plug in too many USB devices. I’ve had other people report similar issues, only to find out they have an un-powered USB hub plugged in with an external hard drive, charging their phone, 2 controllers, a wifi dongle, and a bluethooth dongle. Unless you are using a USB splitter providing its own power, that will never work.

Also make sure you’re using a class 10 SD card. May not be frozen, could just be loading speed issues.

As far as the sega controller goes, i’m sure it’s possible. Sega uses a different emulator though, so you need to configure it for that emulator. I have not gone through this myself, so you’d have to look around elsewhere for instruction on that.

Thank you for this guide, it is amazing. I had 1 issue after everything was done. When I started playing the roms, while navigating the menus in the games, only the left button and the down button worked on my D-pad. Once I started the game though the right directional would then work, but the up would still not work. I have a USB SNES controller, and it is brand new. Do you have any ideas on what I should do?

RetroArch isn’t taking my changes to retroarch.cfg into account. Can you offer a simple step by step to change this? It has something to do with es_systems.cfg but i have no idea how to access and change this

I’m finding the same problem. I can successfully access retroarch.cfg, and I can go through the command prompts, but it is not saving the output to the file. I think the easiest solution is to write down which buttons give which response (start is 9. select is 8), and edit the retroarch.cfg manually.

This sounds more like a permissions thing. My experience has been that the RPi configs will only save when logging in as the root/elevated-admin user or using the Super User Do (sudo) command via terminal.

Hi I’d like to start by saying, thankyou soo much I’ve never done anything like this before and It works great.

However the mega drive emulator doesn’t load my roms it goes to a black screen then back to my Rom list when I try to load them, it almost like I need a bios for it. I’m using a hdmi cable as well btw. Any and all help is appreciated

I have been working away at this for a little bit and when I get to the point of trying to get the NES controllers to work the one button does not seem to work. The Left button does not work in the configuration of the controllers. I have plugged it into multiple other computers without issues. Would anyone be willing to provide the config file for using 2 usb to nes adaptors so I can see if it is just in the configuration it is having issues?

“It should recognize that a controller has been plugged in. If it does not, your controller may need a driver. Follow the on-screen instructions to setup your controller with EmulationStation. When it says press up, press up on your controller, when it says press down, press down etc…
It will also prompt you to input the 2nd player menu controls, so if you have a second controller plugged in, you can follow the prompt. Otherwise hold down any button on the P1 controller for a bit, and it will skip it.
Once you are done with this, it should boot up EmulationStation. You should now be able to use your controller to navigate the EmulationStation menu. Keep in mind that this is only the controls for the frontend, not for the emulators. We’ll get to that now.”

If you’re mapping controlls for the EmulationStation frontend, and you need to start over, do this:

cd
cd .emulationstation
sudo rm es_input.cfg

That will delete the current controller configuration, and prompt you to do it again. What SNES controller adapters are you using? If I don’t have the same exact ones, it may not work the same exact way.

I am using the classic NES game pads going through an adapter to USB. The up and left are the only buttons that do not work. I am going through Retrolink usb to nes adapters. I believe after more reading and testing that it is not seeing the up and down, left and right as axis. The Down and Right are being seen as buttons but it is not able to see them as an value. Any ideas on this?

Great guide, thanks. A have a litte confiusion with all the entries in retroarch.cfg. I use a Tomee SNES USB Controller. Everything works fine, except “left-button”. Could you please post your retroarch.cfg file ? Thanks a lot Bye zumi

Hi, great guide! I have an unusual problem that I can’t figure out. I’ve everything set up and running fine, but I can’t add more than about 500mb of roms. I am using a 16gb SD card. Any suggestions? Also how do I change the resolution?

Had the same problem. Easy solution: You have to expan the SD-Filesystem
In Terminal type in:
$ sudo raspi-config.
Now select first option: “Expand filesystem” and confirm with ‘enter’.
After that you can use the whole 16gb on the SD card

Amazing guide, thank you so much! I just got my RPi up and running a few hours ago. I ended up buying two of the USB Super Retro Ports as you suggested. I noticed some funny behavior when I went to program them from the terminal after executing the ./retroarch-joyconfig >> ~/RetroPie/configs/all/retroarch.cfg command. It wouldn’t allow me to input up or left. The only way to advance was to press another button, so I pressed down (for up) and right (for left). Sure enough, when I went to play a game, the d-pad controls didn’t work properly. I went into the retroarch.cfg file and ended up entering the opposite value for up than that which was listed for down (I think it was -1) and likewise for left. That ended up doing the trick! Just wanted to post in case someone else runs into this problem.

Thank you for the tutorial!
I’ve hit a snag. I’ve followed all the steps for controller setup and whatnot, but when I got to start playing a game a white box briefly appears on the screen then I’m dropped back on the same menu screen I started at. I can’t load any games and this seems to happen no matter what ROM I am trying.
Any advice?

its the amount of things u have running on those usb ports. i was having problems with my keyboards and such when i was running everything off of one powered up. i use 2 powered hubs now. one for keyboard and mouse one for just the controller and wifi and it runs smooth, for some reason when too much power is being used on the usb ports it causes glitchy control issues

I was wondering if you had experienced any problems in doing the joypad config program with NES controllers. I have 2 different styles of controller, one is direct USB and the other is an original NES controller with an adapter. No matter which one I use the Up direction and the Left direction are not recognized by the configurator. Any help would be appreciated.

Some other people have had this issue. You will have to go into the retroarch.cfg file and manually map the controlls for up and left. They will be the opposite values of down and right (so if down is 0, then up is 1, and if right is 1, then left is 0… or something like that)

I have a question, when i’m at the step to config my controller i dont get the comand lines to work . At first I type in:

cd RetroPie/emulators/RetroArch/tools

that works fine, but when i’m typing in the next line it doesent work. It says that the file is missing:

./retroarch-joyconfig >> ~/RetroPie/configs/all/retroarch.cfg

Then i tried to just type in “./retroarch-joyconfig ” which works to config the controller. But i think i’m do something very wrong here. But I dont know what? when are you suposed to use the last part “>> ~/RetroPie/configs/all/retroarch.cfg “?

Thanks for the amazing tutorial!! My only issue is that when I try to use two controllers (Tomee SNES USB), it only recognizes one of them. Both work separately on different usb ports but when I connect both, it only recognizes one of them.

Who has had good success running the PCSX
Emulator.. I get a bit of lag and the sound is a bit distorted.. All running over hdmi.
Model b
128mb gpu
700mA pwr supply
Any tips to suggest perfomance increase?
Many thnx

You probably aren’t going to get it running perfectly unless you are playing older, less graphically intensive ones (i.e. 2D). However, you can get a performance boost by overclocking/overvolting, which can be set in the raspi-config. I personally use the “High” setting which is the first one with an overvolt. Just make sure that your Pi can have decent air circulation.
Remember, the Pi is comparable to a Pentium 3, so don’t expect miracles.

Hi, thanks for a great guide that is easy to follow step by step.
I’m stuck at the part to where to config the controller via the terminal.

The first command line works fine.
cd RetroPie/emulators/RetroArch/tools

But when I try the second part didn’t work at all.
./retroarch-joyconfig >> ~/RetroPie/configs/all/retroarch.cfg
After that I tried to just write the first part “./retroarch-joyconfig” and was able to config the controller. But how do I save it to the retroarch.cfg in the All file?

Sorry for my many questions. Now that I have managed to fix the controller issue I ran in on a new problem.

After I run the “(Re-)scape of the ROMs directory” and the process was done I all of a sudden got doubbles of many of my games in the game lists for both nes and snes. For example I had four copies of “Alien 3″ with the box art and game descriptions, but I only have one copy of the game in the ROM directory. Even weirder is that, when I try to start the game, its actually four different games that starts (one is the actual Alien 3 game).

That’s a new one. Unfortunately, I don’t have ay solution for this. I didn’t write any of the software, just the guide to install it. I would log into startx and check the ROM folder to make sure there’s only one copy there. The new version of the scaper could have a bug in it that duplicated your games.

I found the solution, it took a while to fix. The problem was in the gamelist.xml file in the rom directory, and not amongst the roms it self . Some of the games in the .xml-list where doubles so I just removed those and run the “(Re-)scape of the ROMs directory” again.

Hello, and thanks for the tutorial. I have hit a snag. As I see in the comments many other people have run into my problem. This problem is that whenever my raspberry pi boots, I never actually get to the ES Menu. It skips directly into the emulators. On first boot, it loaded up the Apple II emulator. When I pressed F10 to get out of it, the emulator is immediately launched again. After deleting the emulator itself using WinSCP, it moves down the list to the next emulator and the cycle repeats. I have never actually gotten to the ES menu.
Any help or input would be appreciated.
Thanks.

ES doesn’t really have a “menu”. The only thing it has is the controller configuration. If that’s what you are trying to get to, try doing this from terminal:

cd .emulationstation
sudo rm es_input.cfg

that will delete the ES config and make it so that next time. But… Now that I think about it, you say that you’re having trouble getting to the terminal, so you may have to use WinSCP to get into the Pi, and then delete the file “es_input.cfg” from the folder “emulationstation”.

Hey Miles
If you get the old skool apple ii screen when you boot up u have dne everything correctly. You are in Emulation Station! That is like the picture of the emulator it isnt the actual emulator.. If u want to see the “rest” go and chuck roms in mame, snes etc then when u reboot youll see them… Aswell as the apple one… They display in alphabetical hence apple menu first… Just edit the es_syatem.cfg file to remove the menus/emus i dont want displayed… I wouldnt bother about trying to remvove the actual emu… Who cares right? Just stop
It from displaying…. Oh and F4 takes u to the prompt…
Hope this
Helps!
PB

Hi and thanks for the comprehensive guide!
I have a retrolink SNES controller that I’m trying to use, but EmulationStation doesn’t seem to recognize it even being plugged in.
I tried doing “lsusb” from the terminal, but it only shows 4 devices when the controller is both plugged in and not.
The controller works on my windows computer just fine and I made sure to apt-get joystick and apt-get update, but still nothing.

The weird part is that my RPi actually recognized my controller perfectly ONCE and I went through the ES key setup and then when I went to go configure the in-game buttons, the RPi stopped seeing the controller again.
I think this may be a problem with with the actual controller and RPi and not so much ES.
I can type lsusb and it never wants to see the controller. It sees my other controller, but it is a SuperSmartJoy adapter, which doesn’t seem to register very well with ES.

Any input is appreciated while I’m still testing every possible solution.

Sounds like it could be a power issue. The Raspberry Pi is very finicky with USB devices when it is not getting enough power. Please make sure the wall wart you are using supplies at least 1 Amp (1,000 mah). If you are unsure how much power your adapter provides, I would suggest buying one that gives you that information. On the materials page, there is a link to one which provides 2.1A, which is more than enough.

For those having a problem getting roms to show up in the SNES emulator, make sure the roms you are using are a .smc format. I was using roms from a torrent I downloaded, and they were in a different format, and therefore did not work. Also note, you may not even be able to view the SNES emulator until the Raspberry Pi has the correctly formatted roms on it.

Secondly, if you’re looking for a quick way of transferring roms to your Raspberry Pi without an a network connection or additonal cables, you can use a usb stick instead. Put the USB stick you plan to use into the Raspberry Pi, after a few seconds unplug it. It should now have generated a “roms” folder automatically. You can use a primary computer to transfer roms directly to the “roms” directory. When you put the USB stick back into the Rapsberry Pi for the first time it may take a while to transfer the roms. You will know it has finished when your USB stick’s light has stopped flashing. At this point you can remove the USB stick and play your games as normal.

The Raspberry Pi automatically creates all the various subdirectories you’ll probably need for different game systems (NES, SNES, mame, etc) when you initially insert the USB stick. After that, you just have to ensure you are putting your Roms in the corresponding directory for that game system (on your primary computer, of course). Hope that makes sense. I would have replied sooner but I was so happy to discover this USB workaround, that I’ve been bingeing on games this past week :)

Hi! I haven’t gotten my pi yet, but this is the project I’m planning to do once it arrives. My question is: do the Super Nintendo or NES emulator(or even the pi itself) support multiple usb controllers for two-player action? If you don’t know immediately, do you mind doing a few tests to find out? Let me know :D And thanks a lot for making this page. It’s going to be super helpful!

Hi!
Great guide and so easy to follow!
I only have one problem (so far) and that is that the controls for the GBA emulator is on my keyboard and not to my xbox controller. The controller works for the other emulators I have tried (GBC, GB, NES, SNES). Any idea on why it insist on being controlled by the keyboard and how to fix this?
I have also tried unplugging the keyboard before starting it up and it didn´t work either.

Some of the emulators don’t use the overall retroarch.cfg file for their settings. Go into the config folder for the GBA and see if there is another config file there and see if it has directions for setting up the controls.

I am encountering issues and am in need of assistance. I purchased two GTRON SNES to USB Convertors (http://www.amazon.com/Nintendo-Gtron-Controller-Adapter-Converter/dp/B002WM17JC) and an encountering major issues getting two official SNES controllers to work with the RetroPie. When i attempt to configure the controller for EmulationStation, i cannot use the “down” and “right” buttons on the d-pad.

When i use “lsusb” to find the device it is listed as “0925:8866 Lakeview Research WiseGroup Ltd, MP-8866
> Dual Joypad”.

I know i have heard (read) of other users encountering issues with the GTRON.

So my questions are;
-Has anyone resolved the possible driver issues?
-What SNES to USB adapters are being used with, official SNES controllers, that are not encountering issues?

I haven’t personally tried the GTRON SNES to USB converters, so I cannot attest to their compatibility. What I did use for authentic SNES controllers was the RetroZone chips (http://www.retrousb.com/product_info.php?cPath=21&products_id=44). I can affirm that these work perfectly. Assuming the rest of their products use the same chip, which is likely, the SNES to USB adapter, and pre-made SNES/USB controller should work flawlessly.

On boot, I get to a screen with a white “Start” on a red stripe and green text saying “APPLE ][ PRODOS 1.0 01-OCT-83″ but no clues of what it is or what I’m supposed to do. I found by trial & error that the X button of my controller takes me to “Linapple2″ from where F10 takes me back to the previous screen. I’ve also found that F4 exits me to the command line.
Manually running “emulationstation” does the same.
I don’t get any emulator selections or game selections (I’ve copied a few roms on).
I think I got a keys defining thing once but had no idea what was going on and haven’t seen it since.

If I run “dgen SonicTheHedgehog.zip” then DGEN just hangs and I have to reboot the pi.

This is about the 3rd pi retro game arcade distro SD image I’ve tried and they’ve all had issues.
I did once have Sonic, SpaceInvaders, Defender & PacMan running OK on one of them but then killed it trying to get DynamiteHeaddy running.

So what’s with the Apple stuff above and how do I get it so that it matches what this walk-through say it should be doing?

Please read through the other comments, this has been gone over many times. Apple II is one of the emulators, you need to press left or right (and sometimes wait a few seconds for it to read a rom list) to select a different emulator/system. If left and right aren’t working in the menu, they may not be mapped. You mentioned that you had no idea what was going on during the EmulationStation key mapping, so that could be it. TO get back to the ES button mapping config, you need to delete es_input.cfg.

to do it from the terminal, just:

cd
cd .emulationstation
sudo rm es_input.cfg

next time you run emulationstation, it should have you remap the controls

Are there other comments somewhere else as I read this lot (again) and not found this. Anyway, now reset mappings & realized that the apple screen was one of the emulators which can be scrolled horizontally to select using left & right joypad buttons. Even got as far as finding my mame games (now unzipped), but no coin insert button so I can’t use them. I had coin insert working fine in another distro. Went through the individual button mapping under the ‘Start’ menu thing twice more, still can’t find it. Also dgen doesn’t show up in emulationstation but Sonic works OK from command line. Still blank screen on DynamiteHeaddy though.

I think this is one of the most significant info for me.
And i’m glad reading your article. But should remark on some general things, The web site style is great, the articles is really great : D. Good job, cheers

Really awesome. But I’ve got a small problem, there seems only to be the Apple II, Doom, Duke Nukem and DOSBox available in the menu. I scrolled to left and right but SNES, C64 and others don’t show up :( what am I doing wrong?

The Emulator for a system won’t show up if there are no ROMs in the folder. If you put roms in the correct folder, please make sure they are un-zipped. Also, I think the file extensions are case sensitive, so if it’s all lowercase .smc, try changing it to uppercase, .SMC.

For some reason, even after following the instructions, I can’t use my SNES controller. I can use it to navigate between the emulators, but I have to use the keyboard to select and play a game. Any suggestions would be appreciated. Thanks.

I’m having an issue with the final “make it look pretty” step – whenever I do the step to run the scraper, it turns my SNES page within ES to a completely gray screen. I can still scroll through things and select roms, but I can’t see anything. That is, I can HEAR it scrolling, and I can press Start and a ROM will start, but I can’t see anything that shows me what the screen is. It seems that a semi-reliable fix is to just press “Start” to start whatever the first game is, let that load for about fifteen seconds, and then Select+Start to go back to ES, and then the screen will load properly.

I understand that the proper step is probably “Just don’t do the scraper step”, but is there a fix for this so that it will automatically load everything on the first try?

It’s weird that you mention this. I had this issue as well when I first used the scraper, but then one day, everything just started displaying correctly, and I haven’t had a problem since. So unfortunately, I have no solution for you, but, maybe it will just… go away?

Hi, I had the issue of the white screen on the nes emulator earlier and it’s gone since i removed some emulators from the menu via the file es_system. See post on may 8th, 2013 at 2am to see how to access this file.

Hi there
Thanks for all this. I am still new to this whole thing, including Linux and your guide is awesome.
I am personally having trouble with the configuration of buttons for the emulation station itself. I have tried to start over a dozen times but every time I do, when I am trying to configure my sixaxis controller (plugged in via usb through a powered hub) the inputs are entered too quickly and one button has multiple functions. For example I try and press left to configure the button and it also fills in Right and Accept.
Any help would be appreciated.
Thanks

I just did a test run of the new ES updates, and your issue shouldn’t be a problem now if you download and flash to the newest RetroPie image. Aloshi added a few lines of code to the ES control config where if a button is already mapped, it will not go on to to the next button, so this shouldn’t be an issue anymore. Also to my surprise, Aloshi added a controller config section to ES to auto config the controllers for the emulators. This is a huge step towards making the applications more user friendly, and my guide needs a serious update.

Hello! Great tutorial! I have an original SNES controller hooked up to a USB adapter. When i test it on my computer, all the buttons work/respond. However, when I plug it into my RPI, the right and down buttons (D Pad) do not work. I have 2 original controllers (both working) and 2 adapters (both working). I tried all four combinations of adapters and controllers and the down/right buttons still do not work on the RPi. What do I do?

how do i do that? i just went on a google binge, stared at my screen, and tried all these ways to try to do that. i’ve accomplished nothing except updating my RPi like four times. sorry for being a noob

Have you used the actual joystick config tool?
The tutorial above explains this?

cd RetroPie/emulators/RetroArch/tools
./retroarch-joyconfig >> ~/RetroPie/configs/all/retroarch.cfg
And if you want to “edit” the buttons fire up the .cfg in nano.. Eg sudo nano retroarch.cfg and youll see your keymaps.

First, thanks a lot for the tutorial!
I made the steps under “Making EmulationStation Look Pretty” but i dont like how that turned out.
How do i set up the previous look without the game pictures and descriptions?

Hey, great tutorial, but I’m running into an issue. I am trying to set up the usb SNES gamepad. I run the command line, it tells me to press some buttons, and then I actually set the buttons making the L button my dummy button. My issue is when I go to delete the extra buttons. It seems that the changes I made when I was mapping the buttons don’t save. The all of the input_player1_button are blank. Any reason why it isn’t saving the changes?

This isn’t an “issue”. Apple II is one of the emulators, and by default, it opens the emulators in alphabetical order. Apple starts with A. This is the first emulator that it will show on the screen. If you actually read my instructions, you’ll see that a keyboard is in fact required to do the entire setup. Please read through the instructions again and follow them. I went through my tutorial again yesterday and followed all of my steps and ran into no issues. DO NOT skip any steps because “you don’t think you’ll need them” or something like that. Every single step in the tutorial is necessary.

How exactly can you call this “An A to Z guide…”? Seems like nothing works right. Seems like no one has been able to get everything working right since this distro was introduced. And most of the complaints seem to be for the same problems over and over. Controllers not working, roms not recognized or running, problems with having the keyboard and a controller plugged in at the same time, freezing, crashing, general flakiness all around. And these are the same problems that apparently have been going on now for months with no real fixes… or maybe it’s a lack of better instructions?
Seems to me like there is a LOT missing from this distro and this “guide” in terms of actually getting all of this running and simply playing some games. This shouldn’t be so complicated… especially considering that many of the people who want to use the R-Pi as a gaming console have little or NO experience with any Linux operating systems. That alone can be a complete turn off and scare most people away before they even get started, even for more experienced Linux users.
I personally know a bit about Linux and the Pi and it’s various distros, and I spent over a day trying to get RetroPie running and still haven’t been able to get ONE game working right. And I am using a pretty standard USB keyboard/mouse and a wired USB generic PS3 game controller, nothing fancy, yet nothing is working after following all of these “instructions” and several supposed “fixes” :-(
If this is to be a real guide I suggest that you make your instructions COMPLETE, CLEAR, CONCISE, and COMPREHENSIVE enough so that even noobs know what it is they are doing. Remember, when you assume, you make an ass out of you and me. Perhaps you should place some of the fixes (if there are any) to these common problems in the main page instructions. Or better yet, implement the fixes in the download distro itself, instead of making people have to search through the maze of comments and replies and try to fix these things when they have no idea what they are doing. Seriously, it’s like looking for several needles… in a field of haystacks… at night… in a heavy fog, and then not knowing if the needles you found are the right needles… you end up doing more damage than good and then have to start all over again… Gaming is supposed to be about having some fun… dissecting and debugging a Linux distro is NOT what I call fun…. and it’s not what most of us came here to do.

If you follow the instructions, and use the materials I suggest you use, there are no issues. I’m still working on making a video guide to prove this. Every time somebody says something doesn’t work, I go home, and follow my own guide to make the entire thing. And it all works without any problems. People often skip over certain parts thinking “oh, I won’t need to do this” when in fact, you need to follow the guide closely and completely.

You note that you’re using a generic wired PS3 controller. Did I tell you to do that? Or did I say that the only confirmed controllers that I know work are the retrolink ones, or the retrozone ones? That’s right, I said that. Not every controller will work with the Raspberry Pi. You also say you’re using a USB keyboard/Mouse at the same time. Does this mean you’re using a USB splitter? Is it the one I suggested you use (I bet it’s not)

If you think this guide is bad, you should see what existed before it. It was just the command lines to launch the installer. That’s it.

I was as clear as I could be with my instructions, (I even tell you to press enter after each command line). If you’re having trouble following the instructions, maybe you should go back to middle school and brush up on your basic reading skills.

If you don’t like the guide that exists, make your own. That’s what I did.

What!!!!???
Hang on! Look at the raspi!! Just look at it…. Ok, firsty does it look like a nice “turnkey” computer?? Of course not…. Sooooo there is not going to be one Single solution??? The raspi isnt for evryone u need to do your research! If theres a problem with your setup google it.
I bet i know LESS about linux than u do but i figured it out.
Joystick questions ? Heard of the config?? REEAAAAAD!!! Does retropie even detect yr jstick???

This guide made me buy the raspi! And i followed it and i plugged in a cheapo stick… Got the right roms….

You sound like you are limited in pushing yourself to problem solve…!! Don’t bash the guy who wrote the guide??? Why is it his fault?
What a douche!

Can someone please explain exactly how to get DOOM (and 3rd party .wad files) working from the ES menu?

I have installed the latest setup script and updates and re-ran the controller/joystick config script and that seemed to work OK. I have googled several different instructions on how to get DOOM running in RetroPie, but so far nothing is working… the fixes I found are months old and maybe are no longer valid… (config files and directories may have changed since then?)

What is happening is when the Pi boots into the EmulationStation GUI, I can see the .wad files I have installed in my /home/pi/RetroPie/roms/doom directory in the GUI menu… but when I try to select one to play it looks like it’s loading the game, (screen goes blank for a few seconds) but then I just get kicked back into the menu… none of the .wads I have tried work at all… and the pre-installed prboom.wad doesn’t work either…. never did.

Hi. Thanks for this article. Its one of the only ones i have gound that makes sense and gets you from start to finish. Great job!

I do have a tiny issue with save/load states though, and it seems like there are some clever minds on this forum that might be able to help.

After following your guide, i was having certain issues with the controllers in the main configuration file ( mainly that Start on my usb conrroller wouldnt work, so i was having to use enter on the keyboard), so i booted up ‘startx’ and in leafpad, set up a joypad config file in the specific snes and megadrive folders, to override the main config file, This included the hotkey buttons to allow the saving and loading of states.

Now, in the Snes emulator, this all works perfectly. However, in the megadrive one, when i attempt to save it says ‘failed save state’. Everything else works fine though.

Has anyone come across this and found a solution? Does the megadrive have to save to a different slot to the snes? Or does the save state hotkey need to be in the main config file?

Hello,
First at all thanks for the great tutorial. To Object Mr Scumbag Spock it works very well if you just follow the steps. For a Raspi newby like me it was a very good help to set up my SNES emulator. Had a lot of fun allready playing some old games. However i ran into a problem with the controller configurations.
My setup: powered USB Hub with 3x Bigben usb controller

As you advised is used the joyconfig tool to set up my controllers. I did so for 3 controllers, giving them joyids 0,1,2. Joyconfig detects input from all three controllers without propblems. Emulationstation as well, i can browse the games with all three controllers. When i start SNES games only 2 controllers work, within emulationstation scrolling works with all three. Do you have an idea, if there is anything else do to for a 3-controller setup?
I Tried it with secret of mana and super bomberman 2 which both support 3 controller on an original snes. As i tried several hours to fix it i am getting desperate and would really appreciate it, if you got an idea :).

As i only use SNES i wrote the joyconfig output into the “/configs/all/retroarch.cfg”

It would be really nice from you if you got an idea :)
I can post my cfg file if needed, but its just the normal joyconfig output for 3 different joyids 0,1,2

Honestly, I haven’t tested any 3-controller setups yet. I really should get around to trying to figure that out because Secret Of Mana is definitely one of my all time favorite games. It may have something to do with the way that the splitter is assigning the device ID’s for the USB controllers. From your terminal, try the command “lsusb” and see if it lists the USB controllers in a row. If you have any other USB devices plugged in, it may skip a spot and have it something like:

If this is the case, try mapping player 3 the joyid 3 instead of 2. Maybe…

Like I said, i’m not completely sure, I haven’t tried a 3 or 4 controller setup, and i’m not even 100% sure it’s supported. Check the Raspberry Pi forums and other places, somebody might be able to give you a better answer than I can. And like always, if you find a solution, please come back and let us know. I’m sure you’re not the only one out there trying to get this to work.

Hey Thanks for you answer.
I Used the lsusb and it showed that my controllers are at Deviceid 7,8,9.
However my first two controller work with joyids 0 and 1. I looked into the RetroArch code and found something. As the SNES Uses only 2 ports it seems to be necessary to implement the usage of the “multitab”, the old SNES port replicator. A third Player can not be defined, because the SNES only supports two ports. It seems, that it is needed to define a setup like this:
port 1 USB CONTROLLER PLAYER 1
port 2 MULTITAB PORT REPLICATOR WITH
USB CONTROLLER PLAYER 2
USB CONTROLLER PLAYER 3

The Usb Ports are no problem, the joyconfig tool easily detects my 3 Controllers.
I will see if its possible to do a multitab setup within the archconfig.cfg without chaning any code.

The underlying libretro api supports the usage of the multitab. So theoretically it should be possible to create a 3-player-setup for SNES. I guess it works easy on N64/XBOX emulator, because there is no need of a multitab device.

Digging into some old SNES API Documentations i found out, that the games themselfes check if a multitab is connected (a certain I/O behavior implies it) before they allow the third player.

Great Write up! I’m having just one little issue keeping me from playing. I bought these (http://www.amazon.com/gp/product/B0058FN036/ref=oh_details_o06_s01_i00?ie=UTF8&psc=1) controllers to play with. They say they are Tomee, like the ones you used before the RetroArch controllers, so I figured they would work. They are recognized just fine, however they do all kinds of crazy stuff when it boots up. I ran the jstest utility to test them and it shows that whenever I pick the controller up, the buttons are flickering between on and off. However, when I’m not touching it, everything is fine. This happens with both controllers, and using the controller utility on windows shows they work fine. Could this be a driver issue? or perhaps something else?

It seems whenever I am holding the controller it presses all of the buttons simultaneously. I’m not sure if this is because of the cheap quality of the controllers or if there is a driver problem or what, but it seems to work fine on the windows controller utility. I ran jstest, and everything was fine when it was sitting on the floor, but if I picked it up, everything was flickering between on and off. When I run the Windows Controller utility, everything seems to work fine.

Sorry if I double posted this, I posted a question on Saturday, but didn’t see it when I came back today. Thanks again!

First of all, thank you for your hard work going through all this amazing tutorial. I had configured mi RetroPie with no problem, except for the save and load state.

It is kinda frustrating, because it was working well, but today suddenly, it will not save states anymore. I was playing DKC2 for the Snes, and it still load my last states, but when I try to save a new one, it shows a “Failed to save state…” and some more text that is cropped in my TV and I am unable to read. It doesn’t save with other emulators, neither.

I am googleing the problem all over, but i can not find anything useful. Has anybody this same problem?

Thank you so much for your help in advance. My inner teenager wants to go through the DKC original trilogy again so bad!

Hey!
Very nice tutorial. I am planning the following.
Only if no Keyboard is attached Emulationstation should start automatically.
I think this could be done via a startup script. But my question is: How do I end emulationstation and schut down the Pi without Keyboard?

I had to mess around a little bit (e.g. the image did not work for me), but now RetroPie is up and running including usage of my XBox 360 Controller.
Now, that debugging is done, I want to set my environment to start ES when Pi is loaded. I checked, what the setup script does, when I change boot behavior (function “set_changeBootbehaviour()” in file “~/RetroPie-Setup/scriptmodules/setup.shinc”):

I have two problems about that:
1. I must start ES with arguments for width and height. Otherwise, resolution changes to very low when coming back from an emulator to ES menu.
2. I have to be sure, that the xboxdrv daemon is loaded before ES starts. By now, I have placed this command in “/etc/rc.local”.

I’m not that much into Linux, so what is the best (and hopefully easiest) way to get this autostart working?

Not to forget: Thanks for your work, this all makes setting up a nice looking retro gaming machine much easier.

Hi ,my Pi is still installing retropie for almost 12 hours. .
Is that ok?
And i typed some stuff during installation , is this bad ?
Just some stuff like fbdgdjd when i wanted it to come out of the black screen :)

Alright, so I have a USB NES controller and it works fine while selecting emulators but as soon as a game opens it stops working. When i tried to do the
cd RetroPie/emulators/RetroArch/tools
./retroarch-joyconfig >> ~/RetroPie/configs/all/retroarch.cfg

It says:
-bash: ~/RetroPie/configs/all/retroarch.cfg: No such file or directory.

And last but not least. After i got my controller to work in the front end my keyboard stopped working. I can use it in game and to exit ES but thats it.

I am stuck here too. Some people are able to get past the first line of code, but I can’t even get that far. I type in
cd RetroPie/emulators/RetroArch/tools
But I get an error that reads
-bash: cd: RetroPie/emulators/RetroArch/tools: No such directory

Have you found a solution for this? I am having a similar problem. I am using the snes controller. I cannot run the
cd RetroPie/emulators/RetroArch/tools
./retroarch-joyconfig >> ~/RetroPie/configs/all/retroarch.cfg
command. I did the inital setup through ES, and I found a section in the loaded ES that seems to config the controller. When I launch a rom only a couple of buttons work. I can not start a game. Is there a reason that the retroarch.cfg file will not run. I have read through the directions a few times, but no matter what I try I cannot get the config command to run. I am not very familiar with linux so I may be doing something wrong. Thanks for any help.

Thanks for the tutoríal it’s great, I can’t figure out how to configure the controls in emulationstation, cause all the buttons works fine except the up and left of player 1 and left and down of player2, I have them connected by usb cable I build a retro arcade machine with mame buttons.

So far,I have everything working smoothly, except for one detail. I have followed all of the prompts in the tutorial, but when I go into the games,I have to manually set up the controller by hitting F1 and navigating to the input setting. I have to do this every time I load a game. What am I missing?

hey man,
When i try to load up GBA games, i get the error
“sorry, but gpSP requires a Gameboy Advance BIOS image to run correctly. Make sure to get an authentic one, it’ll be exactly 16384 bytes large and should have the following md5sum value:

a860e8c0b6d573d191e4ec7db1b1e4f6

when you do get it name it gba_bios.bin and put it in the same directory as gpSP.”

For Configuring a controller:
I’m getting a file/directory doesn’t exist when I put this command in:
cd RetroPie/emulators/RetroArch/tools

however when I remove the es_input.cfg and restart emulationstation i can navigate with the controller. If i try to configure input (in ES), after i save it no longer recognizes the controller, and im forced to use the keyboard. If i just jump into the games with the controller, it’s unresponsive.

I’ve read through the comments and the only thing that was similar to mine was that it could be a power supply issue. However, I have it in a 2.1.

Thanks in advance and GREAT tutorial. (Was reccommended in a college class)

Absolutely right Aaron! I stubbornly kept searching the directories to find the .cfg file, until I found the post you’re talking about! And then like magic I’m playing NES with my wife on my Pi! midithekid2, please append the instructions above -some stubborn newcomers might end up banging their heads against the wall for far too long.

when i type startx in terminal, linux fails to boot; it just hangs at a black screen.

Then, when i try to edit anything on the rPi through winscp, (ie. add roms or change my coretroarch.cfg file) it says ‘not enough space left on the device’, yet there is no possible way my sd card is full. help?

Great tutorial, I did this whole process months ago without any guidance or useful tutorials and it was painful, I wish I had this in front of me back then. I read through this entire write-up as well as all the comments.. and I have 2 things to say.

1) If you follow this tutorial verbatim, you will have no problems. When I say problems, I mean actual problems, not you being too stupid to realize that the letter A comes first in the alphabet and that is why you are seeing the Apple II emulator first in emulationstation.

2) 90% of the comments here are ridiculous, if you don’t have the attention span or reading comprehension to follow these steps then you don’t deserve to have anything nice or have anyone help you. This is by far the most complete, well-organized, and easy to understand tutorial on getting RetroPie installed and configured. If you want to use your knock-off brand controller, with a non-powered usb hub, skip random tutorial steps, and then complain about it not working while at the same time providing no details that would help solve your problem… you are the un-wiped asshole of the internet, go away.

I am just received a RPi for Christmas and am trying to follow these steps. I am stuck on the transferring ROMS via Winscp. I keep getting a Network Error: Permission denied message. I have the RPi connected to my wireless router via ethernet cord and have my laptop connect via ethernet cord to the same router. I am not very computer savvy but is the correct way to connect everything?

Hi, thanks for the detailed tutorial. I have had no issues following it, however when I got to the last step with es-scraper every thing went as expected (I think) but afterwards when i boot up the pi all that appears is a black screen. I can tell that it is not an issue with the hdmi because the command lines and the picture of a raspberry pie still appear before this. Any help will be greatly appreciated thanks.

Had the same problem……Use an ethernet connection….You dont have a wireless connection setup using this method as you havent run Raspwheezy or anything yet to set it up. Once you connect the ehternet give it a second and F$ back to terminal, type in ifconfig and you will have your IP address and you will have no more issues. I know its two months later but hopefully that still helps someone

First thanks for the awesome guide. I got my snes controller working perfectly.

I have my pi hooked up via hdmi and I have two issues.

1. When my pi boots it uses the full tv screen, then when then retropie uses all the screen to select a game. Then the emulators use a very small portion of my screen. How do I make my games run full screen or at least close to it?

2. Sound in retropie is fine but sound in the games is very low. Is there a way to boost the sound during the games?

Great tutorial, but I can’t seem to get winSCP to download. I am using windows 7, and when I click on the .exe file, it appears to load for a few seconds (a spinning wheel beside my mouse) and then nothing happens! When I check in task manager, there seems to be a running configuration file, a .tmp, and a file called “consent.exe”. Any help would be very greatly appreciated.

Hi, thanks for your fantastic guide.
I want to ask you something…
In my RetroPie SD (last 1.9.1), the sounds and music work fine on emulationstaion and NES games, but don’t work on Amiga Games and GameGear games.
Do you know how to solve it? My games without sound are not the same.
Thanks again.

I met some problems when I configuring my controller (my controller is a generic PS2 USB controller). First, the terminal window didn’t appear full on my TV, so the words/command to press the buttons couldn’t read correctly. Can you show me the screen shot when you configuring your controller. Or how to make it viewed in full screen in terminal window?
Second problem, I’ve copied a couple of NES ROMs in *.nes extention, they’re recognized and appear on NES Emulator. But when I selected one of them and press Select button to choose, it just show terminal window like booting, but then it’s back to emulation station screen.
Can anyone help me? Thanks before.

My raspberry is not working. I don’t know Why.
problem in this part ‘ sudo apt-get install -y git dialog’. I was write them and raspberry showed me error. what’s the problem?
Tankyou for reading. my English is too bad.
From raspberry user in Korea.

and selected option 2 (Source Based Installation) the Pi started working but that was 48 hours ago and it’s still not finished. should i be worried? It’s still showing new lines on the screen so it’s not stuck. just really really slow.

This Guide is GREAT. Only problem I had was due to my 2 Super Smart Joy’s not being identical, one used 8 and 11 for select and start, the other 4 and 5. Also, one of the Smart Joy’s would not configure right, had to copy paste in es_input.cfg to make it work. Was very happy with the PI’s performance on this, F-Zero at full speed?? Wow.

Also I have a suggestion for adding more functionality other than quit to your snes controllers you can us the hotkey function like so.

So dissapointed by my purchase of the Pi… What a convoluted piece of hardware to get working! Just corrupted my SD card and ruined 12+ hours of configuration work. I know it’s not the Pi’s fault, but…. what the hell???!

Almost everything works on my Raspberry Pi. The only thing that is frustrating is the fact that my (down and left) d-pad buttons (of my Thrustmaster Dual Analog 4) are also functioning as the A keys (only in games).

Could this be because the mouse and keyboard were still plugged in or because there is something wrong in my RetroArch.cfg file?

firstly amazing tutorial tried on v2.3 and couldn’t do anything reinstalled v1.10 and everything is just as you said. so thank you. one problem I’ve had is I scraped and followed directions workd perfect added some games now if I re scrape it flashes a bunch of white text (to fast to read) then back to the setup menu. doesnt download the boxart or anything.. if you could suggest my next step that’d be greatly appreciated

I’m very new to the RaspberryPi, so please forgive me if my question has a super simple solution, but I’m completely at a loss. I’ve gone through all the steps, including the 20 hours it took to compile the BIN’s and then got to the point where you configuring EmulationStation to run on boot, however I can’t get it to work. When I reboot I get the following error message:

/usr/bin/emulationstation: line 11: /opt/retropie/supplementary/EmulationStation/emulationstation: No such file or directory

I would really like to make separate settings for my controllers on my consoles. A setting for NES and one for SNES. When I follow the description and enter the startx command (LXDE GUI) open “Retro Pie” there’s no “configs” folder. I only have “ROMS” and “BIOS” folders. Can’t find “retroarch.cfg” anywhere.

Can someone help to tell me why in folder “RetroPie/” only has BIOS and Roms? I didn’t see folders “emulators/RetroArch/installdir/bin”
Now I stuck in setting up the controller for SNEC emu. (I use a GameCube to USB adapter)

I stuck from this command….. Can someone help?
cd RetroPie/emulators/RetroArch/installdir/bin
./retroarch-joyconfig >> ~/RetroPie/configs/all/retroarch.cfg

Hello. Thank you for the very good write up. I was able to set up my Pi with no issues and I had a blast doing it. The only problem that I have is that none of my n64 games will play. I followed the suggestion on the forum here (http://blog.petrockblock.com/forums/topic/n64-segmentation-fault/) and replaced a config file. At this point the games played, but they were terribly laggy and unplayable. I have tried overclocking my Pi, moving memory allocation around and found no luck. Do you have any suggestions? Is there anyone else out there that has experienced similar issues? Thanks!

I never connected my Pi to the router because I used a USB to transfer the roms, much quicker and easier. But I can’t get the command line you use to configure the controllers to work. So I used the method found at the link above and for one controller it worked perfectly. But I can’t get the system to recognize the second controller in the games although it responds to both when navigating EmulationStation. I also can’t add the code to allow Select+Start button combo to save and exit the game. There is no “Config” file/folder where this method indicates after using startx to get to the desktop. Any help you can offer would be hugely appreciated

About setting up the second controller. The new version of RetroPie relocated the RetroPie file in /opt/retropie. And you have to give root permission to access them. So, in LXDE file mqanager, you have to look in the root path of pi.
And while we are at it, there are two erros in the retroarh.cfg file. Buttons B and Y are set as axis, so it was driving me crazy that the controller was flipping. Just change them to btn.

I’m having an issue that doesn’t seem to necessarily match anyone else’s. When I try to configure the controller (run the command line “cd RetroPie/emulators/RetroArch/installdir/bin”), I keep getting the error that there is “No such file or directory”. Upon trying every level of that directory, it appears that the folder “RetroPie” exists, though “emulators” doesn’t. …Do you think this was an install or corruption problem? I’m running version 2.3 of the full-install image. Everything else is working great, I can control the UI with the controller and I can play all games with the keyboard… Help!

Hello thanks for this tutorial, for some reason each time I try to setup my snes controller I just get the message “this file/location doesn’t exsits ” or something to that effect. I also do not have the same setup when I go into startx.
I really would appreciate the help.

Just wanted to say thanks, I’ve sought a Pi for a while but couldn’t really justify a reason for getting one. But being able to emulate some serious classics was more than a reason enough in the end, and this guide has certainly helped me to do so! Cheers.

i am having a few problems;
-for whatever reason, near the end of the installation i dont have the folder ‘supplementary’ under /Retropie. I tried using the ‘mkdir supplementary’ command to add it, but i get ‘permission denied’ and it also wont allow me to download ES-Scraper (same response; permission denied). how do i fix this?

-I was able to program my usb controllers, however they are unable to navigate the main menu to select a game; i have to use the keyboard to do this, however once the game starts up the controllers work fine.

-which files do i delete in order to get rid of all the excess emulators which im not using? ie. i only want the nintendo/super nintendo options to show up