Debian/Ubuntu

Retropie on Debian/Ubuntu/Mint

A guide to build the RetroPie setup on Ubuntu 16.04 LTS x86 and Debian based distros.


Installation

First, install Ubuntu 16.04 LTS or a related Debian based distro such as Linux Mint 17 and 18. ISO images can be used to create a bootable DVD or a USB stick. http://www.ubuntu.com/download/desktop

To run RetroPie-Setup, you must be a member of the group root/admin.

Download RetroPie

Update and upgrade the existing APT packages:

sudo apt-get update && sudo apt-get upgrade

Install the needed packages for the RetroPie setup script:

sudo apt-get install -y git dialog unzip xmlstarlet

Download the latest RetroPie setup script:

git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git

Enter the folder with the setup script:

cd RetroPie-Setup

The script is executed with:

sudo ./retropie_setup.sh

The screen should look like/similar this at this point:

retropie-setup script 4-0-2

Install RetroPie

Basic Install

This will install the main packages which are equivalent to what is provided with the RetroPie SD image. Note that this will be the 32-bit version of RetroPie. That means that some emulators such as Daphne (Dragon's Lair) will not work out of the box on this version. That is because Daphne and a few other emulators only have a 64-bit version released for use while this install is for the 32-bit CPU family.

Now, you have to copy your rom files into the correct associated rom directories. If you followed the steps above the main directory for all roms is ~/RetroPie/roms (or /home/pi/RetroPie/roms, which is the same here). In this directory there is a sub-directory for every supported emulated system, e.g., NES, SNES, Sega Megadrive, etc.

Attention has to be taken for the extensions of the rom files. Some emulators use .zip while some use a custom file extension associated with the emulator in question. For example the Atari 2600 emulator may use .a26, .bin, and .rom.

All the information needed for each system is detailed in this wiki. See the wiki home page or sidebar for systems.

Configure RetroPie

EmulationStation can be run from the terminal by typing emulationstation in the terminal.

You can go into Setup / Configuration and enable autostart as you like.

FAQ

Emulationstation hangs if shutdown/restart was selected

It is not possible to restart/shutdown if a sudo requests an password. To disable sudo password request add the line

<user> ALL=(ALL) NOPASSWD:ALL

at the end of /etc/sudoers. Replace \<user> with the name of your current user.

Cannot Install PS3 driver

Ubuntu has an builtin PS3 bluetooth driver. There is no need to install sixad. Make your bluetooth dongle discoverable. Connect your controller over usb. Now open "bluetooth system settings/add device". Select PS3 controller and click ok. Your controller should pair now if you press PS button.

sidenote: https://retropie.org.uk/forum/topic/2736/ubuntu-16-04-install-genuine-ps3-controller-issue

Screen blanks after some minutes

Open Ubuntu system settings menu disable screensaver and screen lock timeouts.

Ubuntu does not autologin

Open Ubuntu system settings menu and select user accounts. Enable autologin for current user.

How to setup a splashscreen

Use Plymouth to setup a splash screen: https://wiki.ubuntu.com/Plymouth

My NUC or Intel Baytrail/Braswell powered device hangs

The default kernel 4.1 of Ubuntu 15.10 tends to hang. It is a know bug: https://bugs.freedesktop.org/show_bug.cgi?id=91629

Update to higher kernel version solves this problem: http://sourcedigit.com/18333-how-to-install-linux-kernel-4-3-3-on-ubuntu-15-10-ubuntu-15-04/

No audio

Open Ubuntu System Settings menu and select correct audio output device.

No HDMI audio

Ubuntu 16.04 uses PulseAudio 8 which has issues with HDMI if you suspend your device or change display resolutions at runtime. This problem will be solved with Ubuntu 16.10 and PulseAudio 9. You can disable PulseAudio auto output selection. Open /etc/pulse/default.pa and comment out the line:

#load-module module-switch-on-port-available

https://bugs.freedesktop.org/show_bug.cgi?id=93946#c36

No audio in Mupen64Plus

EmulationStation's use of PulseAudio will conflict with the SDL driver in Mupen64Plus, disabling sound in N64 games. If you are using lr-Mupen64plus, you will not have this conflict.

From a terminal:

aplay -l

Example output:

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Make a note of which card and device you use for audio. For example, for HDMI audio, consider the line card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]. In this case, we would want card 0 and device 3.

Create the file /etc/asound.conf with the contents:

ctl.!default {
        type hw
        card 0
        device 3
}

pcm.!default {
        type hw
        card 0
        device 3
}

Make sure to change the values of card and device to the values found by running aplay -l above.

The SDL driver in Mupen64Plus will now use the proper audio device, but it will still conflict with PulseAudio in EmulationStation. Open /opt/retropie/emulators/mupen64plus/bin/mupen64plus.sh in your favorite editor. Find the following lines at the bottom of the file:

else
    "$rootdir/emulators/mupen64plus/bin/mupen64plus" --noosd --fullscreen --rsp ${RSP_PLUGIN}.so --gfx ${VIDEO_PLUGIN}.so --audio mupen64plus-audio-sdl.so --configdir "$configdir/n64" --datadir "$configdir/n64" "$ROM"
fi

Change them to:

else
    mv $HOME/.config/pulse/client.conf $HOME/.config/pulse/client.conf.bak
    echo autospawn = no > $HOME/.config/pulse/client.conf
    /usr/bin/pulseaudio --kill
    "$rootdir/emulators/mupen64plus/bin/mupen64plus" --noosd --fullscreen --rsp ${RSP_PLUGIN}.so --gfx ${VIDEO_PLUGIN}.so --audio mupen64plus-audio-sdl.so --configdir "$configdir/n64" --datadir "$configdir/n64" "$ROM"
    mv $HOME/.config/pulse/client.conf.bak $HOME/.config/pulse/client.conf
    /usr/bin/pulseaudio --start
fi

This will stop PulseAudio from running while Mupen64Plus is running, but turn it back on when you quit it.

XBOX 360 Controller mappings not working

The X86 version of Retropie install does not have the xboxdrv installed correctly. Please launch Retropie-Setup Manage Packages - Drivers and install xboxdrv and remap your inputs.

How do I map controls to Dolphin?

Dolphin controls must currently be mapped via the GUI. You will need to drop down into terminal mode press F4 on your keyboard if you are currently in emulation station, hit the unity button and search for terminal. Click to launch. Change to the Dolphin directory

cd /opt/retropie/emulators/bin/dolphin-emu 
Launch dolphin emu
./dolphin-emu

From there there graphical client will launch and you can bind your controller in the Dolphin Interface as well as change settings.

Start+Select does not exit Dolphin

Dolphin is not a libretro emulator. Currently exit for Dolphin is hard mapped to Alt + F4 You can manually exit via your keyboard, and come back to emulation station. To map a button on your controller to exit Dolphin you will need to launch via the gui method above. Once in the menu navigate to Hotkey Behavior.
Switch the device indicator to your controller select the exit function and map a button like select to this function. You will also need to configure in the graphics window to always force window on top and to hide mouse/cursor

Now enter back into emulationstation mode and launch a dolphin game from the gamecube menu press x when the game is starting Select Dolphin-Gui instead of dolphin as the runcommand default emulator. Launch game You will now be able to exit back to emulationstation with that button you mapped.

SteamOS hack to allow installation

While SteamOS is not based on Ubuntu 16.04 it is based on Debian 8 which is supported. Currently you can install it and it will set everything up properly. EmulationStation has issues launching roms just like through a manual installation. However the samba share setup and all other parts of RetroPie appear to function normally.

To start follow the same instructions of doing a git clone of the RetroPie repo. Then you have to edit

  RetroPie-Setup/scriptmodules/system.sh

In the get_os_version() function the work-around is to change:

        error="Unsupported OS"
        ;;
esac

To

        __os_debian_ver="8"
        ;;
esac

This will obviously override any platform checking done by the script and is very hacky, but it will let the retropie setup continue properly until actual support exists