With all of that hardware setup out of the way, you're ready to setup the Raspberry Pi! Don't close the case up until we're completely finished here!

  • Download the RetroPie SD image (you can read about the features of the RetroPie SD card image here!) for your Raspberry Pi version.
  • Load it onto your SD using one of the common SD card utilities -- Win32DiskImager for Windows, ApplePi-Baker for OS X or plain old dd on LinuxHere's an in depth guide to getting your SD card setup.

(If you see a message saying "Illegal Instruction" when starting Emulationstation, it's possible that you installed the wrong SD card image. You'll know there's a problem because instead of loading ES, you'll be dropped right into a command line on your first boot.)

  • Emulationstation will prompt you to train it for your inputs, so go ahead and assign them! Give those awesome new Game Gear controls their first offical presses!
  • Now, enter the menu and shutdown ES. We need to complete some system setup stuff so we can get the most out of the system.
  • Run sudo raspi-config and select Expand Filesystem.
  • Reboot, and quit ES again!

It helps a lot to do these configurations via SSH, so plug in your Ethernet cable and bring up your eth0 interface. The built in screen will be hard to read until we make a few changes. If you're really having trouble, you can temporarily plug in an HDMI cable (this will disable the built in screen) and use a regular monitor.

There are tons of things that you can configure in RetroPie, and there are guides on the RetroPie wiki. Highly reccomended that you give these a look through and see if they can answer any questions. This guide here will only give you the basics to get going.

One caveat to know going in, your Emulationstation bindings you set a little while ago do not work in the actual emulators themselves, those are set in the RetroArch configs. This guide covers that a bit later.

Keyboard Configuration

If you're in the U.S., you'll notice that pressing Shift-3 gives you a British Pound symbol (If you're on the local console, this shouldn't affect SSH). This is because the default keyboard layout is set to the Raspberry Pi's home country of the United Kingdom!

A quick and easy way to change it to a U.S. layout is to run this command:

sudo pico /etc/default/keyboard

You'll be greeted with this file:


# Consult the keyboard(5) manual page.



Navigate to the line that says XKBLAYOUT="gb", and change it to "us", like so:


# Consult the keyboard(5) manual page.





Next up, we have to configure the Rasperry Pi's video output to best match our little screen. Replace the lines at the top of the config.txt with the lines shown below. Don't overwrite the whole file though, just this block.

 (You may need to adjust your overscan values slightly. Play with them to create the best results.)

sudo pico /boot/config.txt
# uncomment if you get no picture on HDMI for a default "safe" mode

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border

# uncomment to force a console size. By default it will be display's size minus
# overscan.

Joystick Bindings

You have to now modify some of the configuration files for RetroArch and Dgen. This guide does not cover the many other possible configurations, just these. The configurations also allow for a USB joypad to act as your player two in any RetroArch supported emulator.


 You can find the retroarch.cfg file in:


Scroll down to the input/keyboard section (it's a long file...) called "Keyboard input." and replace input_playerX block with the following:

# RetropieJoyConfig 
input_player1_joypad_index = "0"
input_player1_b_btn = "1"
input_player1_y_btn = "5"
input_player1_select_btn = "8"
input_player1_start_btn = "9"     
input_player1_up_btn = "h0up"
input_player1_down_btn = "h0down"
input_player1_left_btn = "h0left"
input_player1_right_btn = "h0right"
input_player1_a_btn = "0"  
input_player1_x_btn = "4" 
input_player1_l_btn = "5"  
input_player1_r_btn = "4" 
input_player1_l2_btn = nul
input_player1_r2_btn = nul
input_player1_l3_btn = nul
input_player1_r3_btn = nul
input_player1_l_x_plus_btn = nul
input_player1_l_x_minus_btn = nul
input_player1_l_y_plus_btn = nul
input_player1_l_y_minus_btn = nul
input_player1_r_x_plus_btn = nul
input_player1_r_x_minus_btn = nul
input_player1_r_y_plus_btn = nul
input_player1_r_y_minus_btn = nul
input_player2_joypad_index = "1"
input_player2_b_btn = "0"
input_player2_y_btn = "3"
input_player2_select_btn = "10"
input_player2_start_btn = "9"
input_player2_up_btn = "h0up"
input_player2_down_btn = "h0down"
input_player2_left_btn = "h0left"
input_player2_right_btn = "h0right"
input_player2_a_btn = "1"
input_player2_x_btn = "2"
input_player2_l_btn = "4"
input_player2_r_btn = "5"
input_player2_l2_btn = nul
input_player2_r2_btn = nul
input_player2_l3_btn = nul
input_player2_r3_btn = nul
input_player2_l_x_plus_btn = nul
input_player2_l_x_minus_btn = nul
input_player2_l_y_plus_btn = nul
input_player2_l_y_minus_btn = nul
input_player2_r_x_plus_btn = nul
input_player2_r_x_minus_btn = nul
input_player2_r_y_plus_btn = nul
input_player2_r_y_minus_btn = nul

Make sure all other input_playerX lines are commented out with a #, as they may conflict with this configuration.


This file is located in the same directory as the retroarch.cfg. Open it up, and scroll down to "# Joystick/joypad definitions for pad 1" area.

Replace the entire joy_pad1 block with the following:

joy_pad1_up = joystick0-hat0-up
joy_pad1_down = joystick0-hat0-down
joy_pad1_left = joystick0-hat0-left
joy_pad1_right = joystick0-hat0-right
joy_pad1_a = joystick0-button0
joy_pad1_b = joystick0-button1
joy_pad1_c = joystick0-button4
joy_pad1_x = joystick0-button3
joy_pad1_y = joystick0-button5
joy_pad1_z = joystick0-button6
joy_pad1_mode = joystick0-button8
joy_pad1_start = joystick0-button9

Then, replace the entire joy_pad2 block with the following:

joy_pad2_up = joystick1-hat0-up  
joy_pad2_down = joystick1-hat0-down
joy_pad2_left = joystick1-hat0-left
joy_pad2_right = joystick1-hat0-right
joy_pad2_a = joystick1-button0
joy_pad2_b = joystick1-button1
joy_pad2_c = joystick1-button2
joy_pad2_x = joystick1-button3
joy_pad2_y = joystick1-button4
joy_pad2_z = joystick1-button5
joy_pad2_mode = joystick1-button8
joy_pad2_start = joystick1-button9

These may require some small tweaks depending on what kind of Player 2 Joypad you want to keep around, namely the button numbers. The Player 1 configurations match what the Teensy is configured to send. Edit it to your liking!

This guide was first published on Mar 02, 2015. It was last updated on Mar 02, 2015.

This page (Raspberry Pi Setup) was last updated on Feb 25, 2015.

Text editor powered by tinymce.