The Complete Guide To The UltraSlim Raspberry Pi Image.

I’ve tried a number of different Raspberry Pi Emulator Distros before I finally settled on UltraSlim. The first thing that struck me about UltraSlim when I started going through it was that the author really was thinking about the end user when he structured the image. Making changes or troubleshooting in UltraSlim was made much easier because of the foresight the author had here. But the main selling point for me, unlike most other ( all other? ) images that contained a emulationstation front-end. UltraSlim came with XBMC already installed!


The only real draw-back I could find, was a serious lack of documentation. Not just for the UltraSlim image it self -but the entire raspberry Pi community in general. I spent more time searching through forum posts, changing configuration settings and researching linux commands than I did actually enjoying my Pi. Want to add a Bluetooth controller? There goes 2 hours… Want 2 controllers? Another hour… etc, etc. My goal here was to make the barrier to entry as easy to overcome as possible for beginners so that anyone can dive right in and setup their Emulators, controllers, customizations within minutes…not hours(or days?!) So with that, Enjoy UltraSlim and I hope this guide gets you up and running just a little bit faster.


I am not the author of UltraSlim, I’m merely a guy who writes an awesome blog that loved the image. The architect of this raspberry Pi image is TakenOver83, You can check out his original post debuting UltraSlim here. TakenOver put a lot of hard work into creating a great image, Please consider buying the guy a beer(donating) if you enjoy the image! 


General Info


Install UltraSlim to SD

1.) Download latest release of UltraSlim.

2.)  Flash image with windisk32imager.

3.)raspi-config” will run on the first boot. Make sure to re-size your file system, set regional settings, time-zone, etc..

4.) Do not reboot from raspi-config. Instead select No if it asks to reboot. This allows the first boot script to finish. (which will reboot for you)

Key File Locations

Roms location = ~/Roms/
Retroarch main config = ~/Emulators/Retroarch/retroarch.cfg
Retroarch core configs = ~/Emulators/Retroarch/configs/[emu]/retroarch.cfg
emulationstation config = ~/.emulationstation/es_systems.cfg
emulationstation mappings = ~/.emulationstation/es_input.cfg

Access Your Pi Via SSH (Putty)

1.) Download Putty.exe

2.) Run Putty.exe and connect to your Pi.



3.) You will get prompted to accept a Certificate, This is normal – Accept.

4.) Lastly, Login with the default credentials of:

User:  pi
Pass:  raspberry


Access Your Pi Via SSH (FTP Client)

1.) First we need to install SSH.


2.) Once Installed, You should be able to start the service by running:


3.) Then we need to enable SSH in raspi-config:


4.) Lastly, you need to configure and connect with your FTP Client. Below is a screenshot of my working connection information via FileZilla.


User:  pi
Pass:  raspberry


Access Your Pi via Samba

In Windows explorer, You can access your Raspberry Pi /home/pi directory by typing either of the following into a run command or Windows explorer.

  • \\\
  • \\UltraSlim\

You can customize your localhost name to something other than UltraSlim by running the “raspi-config” command.

Misc. Info About UltraSlim

  • Lirc (remote support) is installed and enabled. Just copy your lircd.conf to /etc/lirc.
  • SSH = pi/raspberry
  • You can put your own scripts in ~/Roms/apps/ and it will show in EmulationStation.
  • F4 = Exit emulationstation

If you run one of the script’s from emulationstation and it throw’s you back to emulationstation, then exit emulationstation with [F4] and try again. Should work fine after that.

Wi-fi Setup

1.) First we need to identify what type of wifi device we have plugged into our Pi.

Then take note of your wireless adapter info…

Next we need to do a search based on our results:

Our above search Returned x1 result for the required driver, So next we are going to install the required firmware via:



2.) Finally we will need to configure our wlan interface…


Click to Expand
[learn_more caption=”Unsecured Network”]


[/learn_more][learn_more caption=”WEP Config”]  

You may need to format your wireless key entry as such:
wireless-key s:<your wep password>

For Example:


[/learn_more][learn_more caption=”WPA2 Config”]  

[/learn_more][learn_more caption=”WPA2 Enterprise”]

First we want to change network/interfaces to use wpa_supplicant like so…


For this one, I also had to leverage wpa_supplicant…

Then setup my WPA2 Enterprise wireless connection like so…


It took me a long time to figure out how to get this one working…. My understanding is that this is because WPA2 wifi networks / 802.1x networks can vary in their configuration, so there is not a one size fits all solution like the other standards.

In any case, I hope this is able to help!

[/learn_more][learn_more caption=”Troubleshooting Your WiFi Connection…”]
  • Lookup your wifi card model @ to make sure that there are no known issues/bugs with your specific device.
  • Make sure your device works!! This may sound stupid, but I spent half a day trying to get a wifi card working on my Raspberry Pi… only to found out that the device didn’t work in the first place! It would scan the networks in range but never connect. I only figured this out after it did the same thing in Windows XP and Windows 7… Do yourself a favor and confirm that you have a working card!
  • You can run the following commands to see where issues may lie…
  • For advanced configuration of /etc/network/interfaces – You can check out this Post by Pencoys.


Finally, Reboot one last time. When your Pi comes back up, you should now see an IP address populated for your wifi device!If you do not get an IP address after the reboot, Make sure to Look at my Wifi Troubleshooting section above!


Set Static IP Address – Wired

1.) SSH into your Pi.

2.) Then we want to edit the network interfaces:


3.) You’ll see some settings that look like this:

Replace the line: iface eth0 inet dhcp
with: iface eth0 inet static

4.) Then specify the address, netmask, network, broadcast and gateway, like this:

iface eth0 inet static


**If you are unsure what the above settings should be, You can run the following:


5.) Finally, Reboot and make sure that you can ping the new static IP address. Then make sure your Pi can reach the inter-webs!


To Properly ShutDown

There are 2 ways to shutdown your Pi properly:


Ran from command line:


Simply hit the Menu key from emulationstation and select “Shutdown”


Guide Change Log

I thought it would be helpful to track my progress with the guide some place, so why not here? I’ve also decided to include a  “To Do” Section so that others can see what I plan to add in the future and offer up further suggestions / assistance.

To Do:

  • Add Xboxdrv section (wired ps3 controller)
  • ??? – Suggest something!

On Hold:

  • Get help with Remote control Setup instructions
  • Get joystick to work in XBMC ( waiting on next release )
  • Get Airplay to work in XBMC ( waiting on next release )

If anyone wishes to contribute documentation for additional controller types, Please leave a comment or feel free to E-mail me directly @

Update: (3/20/2014)

  • Get help with Xbox 360 Setup instructions (Thanks msargenttrue!)
  • Format Apple / Android XBMC remote section
  • Add Wired PS3 Controller Section
  • Made Code boxes more copy/paste friendly
  • Misc. Formatting / Spellchecking!

Update: (3/19/2014)

  • Updated audio troubleshooting section
  • Added XBMC-Nightly build section ( Thanks Etheric!)
  • Cleaned up XBMC section
  • Add “Where can I download Roms section” ?
  • Wifi Setup

Update: (3/17/2014)

  • Add Intro
  • Added instructions for getting quake & Doom to work. Also added install directions for Duke3d.
  • Elaborated on Performance / Audio troubleshooting
  • Cleaned up troubleshooting section
  • Added additional Emulators, Cleaned up section
  • Reformat PS3 Bluetooth controller setup section
  • Misc. formatting improvements

Update: (3/16/2014)

  • Fleshed out the PS3 controller section
  • Added a few new emulator setup directions.
  • Currently working to troubleshoot audio issues in some of the Emulators…

Also still seeking help in documenting Xbox controller setup! If you have a spare controller to send me, I’ll do all the hard work – I just need one to test with!


**Didn’t log updates prior to 3/17. But I assure you there were many!


Controllers & Remotes


Android/Apple – XBMC Remote control

Before we dive into configuring our phone as a remote device for XBMC, we will need to find the IP address of our Raspberry Pi. To do that go to:

System > System Info > Summary

Once you have your IP address, syncing your phone to XBMC should be a piece of cake.

[learn_more caption=”Android XBMC Remote”]

There are probably a dozen different XBMC remote apps available for you to choose from, So by all means feel free to try a few different ones out. I just personally favored the Yatse remote app.


1.) Download the Yatse XBMC Remote From the Google Play Store.

2.) Before you Open the App, Make sure that XBMC is running

3.) Finally, Enter your XBMC configuration info and connect!



[/learn_more][learn_more caption=”Apple XBMC Remote”]

Just like It’s android counter-part, there are a number of different Remote XBMC remote apps to choose from – again I just personally preferred this one.


1.) Download the Official XBMC Remote App.

2.) Make sure that XBMC is running before you open the app.

3.) Then simply configure the app using your Raspberry Pi IP address.
         (Although Auto-discovery should work as well!)




PS3 Wired Controller Setup

[learn_more caption=”Setting Up A Wired PS3 Controller”]

1.) First, Grab the device name of your controller by running:


2.) Then we will want to edit es_input.cfg to allow us to navigate UltraSlims menus. (Make sure you are using the exact device name from step 1 for the below config file!)

Edit  ~/.emulationstation/es_input.cfg

  • notepad++ in Windows
  • sudo nano in command line


3.) Next we need to configure our controller keymaps for use in our Emulators.

Browse to:  /Emulators/Retroarch

Edit Retroarch.cfg and append the below config to the end of the file.


Note: You will have to press the PS button before it recognizes your controller!

**Tested working in Ultraslim v1.6

[/learn_more][learn_more caption=”Control XBMC w/ Your wired PS3 Controller”]

As detailed by TakenOver himself:


1.) Install Xboxdrv


2.) Edit the script in /Roms/Apps to leverage Xboxdrv.


3.) Find your controllers driver file.



4.) Next, you will want to Create a PS3.ini file for xboxdrv to reference.
(If you use a different file name, change the script in step 1 to reference the different name!)

(This config is using a genuine PS3 controller!) 


5.) Save and Exit. ( Ctrl+x > Y > Enter )

6.) Finally. Reboot and test!


**If you encounter any difficulties during your setup/configuration – Please check out the xboxdrv Man page.


PS3 BlueTooth Controller Setup

[learn_more caption=”Installing & Configuring The PS3 Controller”]

1.) Make sure you are using a Bluetooth Dongle from this list of approved devices. Also make sure that if you are overclocking your Raspberry Pi at all – you are using a powered USB hub for your Bluetooth dongle!

Now would also be a good time to tell you to make sure your PS3 controller is plugged in via USB cable to your raspberry Pi.

2.) Install Dependencies

3.) Now we should be able to see if the bluetooth dongle is detected.

(Note: You may need to use a powered USB hub)

You should see something similar to this:


What we are looking for here is that it is reading in a “UP” state.


4.) Next we need to download sixpair and pair the Bluetooth dongle with the controller.


5.) You should still have your controller plugged in at this point, If not Plug it in now.

To pair the controller we need to run:

You should see something like:
Current Bluetooth master:  00:02:72:BE:8C:8F
Setting master bd_addr to: 00:02:72:C0:77:AA


6.) Next we Need to install SixAD to manage the controller.

**If you encounter issues installing SixAD or if the Checkinstall command in the next step doesn’t run successfully, you will probably need to apply the patch detailed below!

If you encounter errors when installing sixad, This is the compilation patch that helped me get things working:

After you save and exit, you should be able to then run the make command.


7.) Then we need to run CheckInstall:

I’ve highlighted the 3 prompts you will encounter when running the Checkinstall command. Essentially you want to do the following:

  • Enter “y” at the first prompt
  • Enter a name at the second prompt and then hit “Enter”
  • At the last prompt, leave it blank and hit “Enter” Again.



8.) We’ll want to set the sixad daemon to run at startup, and then manually run the startup process now.


9.) Now you can unplug the controller and press the PS button. After a few seconds the controller should vibrate and the LED should show that you are connected as the 1st player!

10.) Finally, We need to create a default controller profile for sixad:

Sudo nano /var/lib/sixad/profiles/default


When you are done save and exit. Then reboot your Pi. After boot-up you should be able to sync the controller once again by pushing the PS button. Please read the other PS3 setup sections to configure control setup for Emulators and Retroarch.



**Tested working in Ultraslim v1.6

[/learn_more][learn_more caption=”Setting Up A Second Bluetooth Controller”]

This section assumes that you already have got your 1st controller working via Bluetooth. It also assumes that you will be using the same Bluetooth dongle to connect both controllers. You shouldn’t experience any input lag with 2 controllers running off of the same dongle, however you may want to consider a 2nd dongle to support 3-4 players.


1.) Disconnect your 1st controller by rebooting your Pi or holding the PS button for 12 seconds to turn the controller off.

2.) Connect your second controller via a usb cable and give it a moment to recognize the controller.

3.) Then just like before, we have run the following command to sync the controller to our Bluetooth dongle.

You should get something like the following:

Current Bluetooth master: 00:02:72:BF:BC:8F
Setting master bd_addr to: 00:02:72:C0:77:AA

4.) Disconnect your 2nd controller from the USB cable, then hit the PS button to sync. If successful it will register the controller and rumble.

5.) Finally, you will want to add the proper keymaps for the 2nd player using the below sections:

  • Controlling emulationstation with your PS3 controller (optional)
  • Emulator Controls w/ PS3 controller


It is important to note as well that certain games wouldn’t register the 2nd controller for whatever reason. Please try a few different Roms when testing the 2nd controller! I wasted a good amount of time trying to register the 2nd controller with Donkey Kong Country 3…and it just wouldn’t work. Only to find out later that a different Rom on the Emulator registered player 2 just fine.

If you happen to figure out this little quirk – Please share your solution in the comments 🙂

[/learn_more][learn_more caption=”Navigating emulationstation w/ PS3 Controller”]

Delete  ~/.emulationstation/es_input.cfg

Restart your Pi and you should be prompted to config your controller again.

After you configure your new PS3 controller, you should be able to browse through menus!


For reference, this is what my new es_input.cfg file looks like in its entirety.

(Just remove the 2nd controller input if you don’t want the 2nd player to have control!)

To find your controllers Bluetooth address, Run:


[/learn_more][learn_more caption=”Emulator Controls w/ PS3 Controller”]

Browse to:  /Emulators/Retroarch

Edit Retroarch.cfg and append the below config to the end of the file.

(Each additional player will need their own config entry, The example above shows the proper setup for 2 players)

[/learn_more][learn_more caption=”Controlling XBMC w/ PS3 Controller”]

After spending a week trying to get this functionality working…I’ve finally called it quits. Smarter men than me are working actively to get this functionality working in the next release of XBMC-Gotham.

I will update this section when there is an easy to implement solution, but until then we’ll just have to be patient and keep an eye on the upcoming Gotham release dates.


XBox 360 Wired Controller Setup

**A huge thanks to User msargenttrue from the Raspberry Pi forums for contributing all of the below XBox 360 controller documentation.


[learn_more caption=”How to Setup The Xbox 360 Controller (x1 wired)”] 1.)  Start by installing xbox drivers from the terminal:
2.) When the installation is complete edit the rc.local file:
3.) Add this above the exit 0:
4.)  Save the file
5.) Navigate to Retroarch:
6.) While in this directory, input the following command:
7.) Follow instructions to map buttons.
8.)  Next use this command to append the button mapping config files to retroarch.cfg
(i.e. p1-p4 if mapping multiple controllers):
9.) Save and reboot and you should be good to go.

Here’s is the p1.cfg file I ended up with that illustrates the button mapping
(includes home exit button mentioned in next section):


I basically followed this guide (but I updated paths for UltraSlim and included all steps below):

The one’s also useful:

Refer to above links for details relating to the wireless Xbox 360 controller or multiple controllers.

[/learn_more][learn_more caption=”Configure Xbox Home Button to Exit Emulators”]

Add lines to the bottom of both “retroarch.cfg” and “p1.cfg”:

 Note: button 8 is the home button on the Xbox 360 wired controller.


View section: My emulator won’t close through my gamepad!


[/learn_more][learn_more caption=”Control Emulation Station with Multiple Controllers”]
I combined a wireless keyboard and wired Xbox 360 controller in es_input.cfg by following the 2nd post here:’s my final es_input.cfg for reference:




Where can I download Roms?

The 1st rule of Roms, Is you don’t talk about your Roms…


Just kidding:D I don’t understand why so many of the Pi forums are afraid to share this information… Heck even included a number of places where you can find Roms to download. In any case, You have a few different options available to you:

  • Torrents
  • Newsgroup Downloads
  • Rom Sites

For me, I found it easiest to just use


Roms Legend

(U) = US
(E) =  Europe
(J)  =  Japan
(G) =  Germany
(!)   =  Good Rom :)
[a]  =   Alternative version
[f*] =   Fixed to run better on copiers or emulators
[m*] = Multilanguage
[b*] =  Bad Dump :(
[f*]   = Unsure
[h*]  = Hack
[o*]  =  OverDump (sometimes bad, sometimes good)
[m*] = Not sure.

Supported Rom Formats

nes = .nes .NES .zip .ZIP
snes = .smc .sfc .fig .swc .SMC .SFC .FIG .SWC .zip .ZIP
sega = .smd .SMD .bin .BIN .zip .ZIP .iso .ISO
Ps1 = img .IMG .pbp .PBP .bin .BIN
Atari2600 = .a26 .A26 .bin .BIN .rom .ROM .zip .ZIP .gz .GZ
N64 = .n64 .z64 .N64 .Z64 .rom .ROM
FBA = .zip .ZIP .fba .FBA
mame = .zip .ZIP

Remove Default Games

Remove Cave Story:


Remove Doom3:

Remove rom from Doom Folder in \Roms\Doom

Remove Dinothaw:


Remove Qauke3:




Update to XBMC-Gotham

This is the same update procedure that TakenOver details for UltraSlim.


Update to XBMC-Gotham Nightly Builds

A Big thanks to Etheric from the Raspbery Pi forums for helping me figure this one out! The upgrade path detailed here is a bit hap-hazard but it finally allowed me to play with some XBMC Nightly builds!
(FYI – Joystick is still disabled in latest build! – Blarggg)

**Please Note that it may be easier to pull your SD card and make a backup of your current image than to restore your UltraSlim image if something goes wrong. You can find the details on how to do this in the TroubleShooting section.

1.) Prep System


2.) Upgrade to the December Gotham Build as described by TakenOver.

Now browse to /home/pi  and delete the XBMC.tar.gz used to upgrade in this step.


3.) Next, We want to visit this Thread and download our desired nightly. Just grab the link from the wget command.

For Example:


In order for the UpdateXBMC script to recognize the .tar.gz Nightly file, we need to rename it to something like:

  • xbmc-rbp-13-20140317-nc3.tar.gz

The important thing here is that the file starts with “xbmc-rbp”.


5.) Run the update script one last time.


It will probably complain this time about not being able to find the files… Shouldn’t make any difference though.



6.) When it is done, XBMC will end up here:

  • /opt/xbmc-bcm-20140317-nc3/xbmc-bcm

This is a problem because XBMC is going to be looking to run in the usual directory:

  • /opt/xbmc-bcm

So we just need to fix the folder heiarchy here….


7.) Finally, Etheric recommends running the following so that xbmc doesn’t keep complaining about missing scripts from previous versions.


If you run into issues along the way and need to revert to the last good backup of XBMC. You can run the following:


There is probably a better way to implement the recovery of your previous version of XBMC, but this is what worked for me. Essentially all we are doing is deleting the old xbmc-bin folder, extracting the contents of our backup and moving it to the /opt directory.

AirPlay in XBMC

Just wanted to quickly mention AirPlay functionality in XBMC. So far I’ve only been able to get photo & music sharing to work correctly, If you are interested in what it takes to make that happen you can checkout my UltraSlim thread on the Forums for more details:

***If you know any tips/tricks to get video playback working with AirPlay, I encourage you to share in the comments section!

Adding Media

Most users will be adding media content from another windows machine or NAS. Below is the procedure you want to use in the XBMC menu.

  1. Windows Network(SMB)
  2. WorkGroup
  3. NAS / Name of PC containing your Shared media Files
  4. Select your desired shared media folder
  5. Enter username & password if prompted
  6. Then select your desired “Scraper” category ( TV, Movies, Music, etc… )


Customize The Look and Feel of XBMC

Their are some pretty ambitious authors behind XBMC that have put together some great “Skins”. Changing the GUI of your XBMC machine can make a huge impact on usability / navigation and …well, making your media center look awesome.

Recommended Add-Ons(new)

This is an on-going list of recommended XBMC add-ons that I have personally found to be noteworthy.

  • YouTube
  • Pandora / GrooveShark
  • ??

Obviously the list isn’t all that populated yet. I’ll try to keep this populated with other worthwhile Add-Ons when I encounter them. However, If you would like to suggest one in the comments – I’ll be sure to check it out and Add it here.

I’d also like to quickly suggest you take a look at this short video:

I haven’t gotten around to testing the myriad of plugins available using his method, but it certainly looks promising.




All of the below instructions were derived from this great tutorial by Vanfanel.

Playstation Emulator

[learn_more caption=”PSX Re-armed”]

Already included in Ultraslim – Use the Emulator update script to up date if desired. This is  considered by many to be the best PSX emulator available for the Raspberry Pi. If you wish to try alternatives, it should be pretty easy to piece together from the other guides below.

If you do happen to try the alternatives, please share in the comments below and let me know how it went for you!


Super Nintendo Emulator

[learn_more caption=”PiSNES / SNES9x”]

UltraSlim comes pre-packaged with a working SNES emulator – PocketSNS. However I’ve heard multiple times in different threads that audio playback is much better in this Emulator. So here it goes….



Since we already have a SNES emulator in place, we can simply re-use alot of the already created folders in UltraSlim. We do however have to edit es_systems.cfg to tell it and use the new Emulator core that we moved.

Find the SNES section in es_systems.cfg and edit the .so file used – like so:


Just tested snes9x compared to pocketsnes…. Pocketsnes is way better from initial testing. Don’t bother with snes9x!

[/learn_more][learn_more caption=”SNES9x-next”]

UltraSlim comes pre-packaged with a working SNES emulator – PocketSNS. However I’ve heard multiple times in different threads that audio playback is much better in this Emulator.

This is the newer version of snes9x, hopefully it performs better than than the old version!


Since we already have a SNES emulator in place, we can simply re-use alot of the already created folders in UltraSlim. We do however have to edit es_systems.cfg to tell it and use the new Emulator core that we moved.

Find the SNES section in es_systems.cfg and edit the .so file used – like so:


Performance is still sub-par compared to PocketSNS. May have something to do with the modified Make command…


Game Boy + Game Boy Color

[learn_more caption=”TGBdual-Libretro”]

This is my recommended Emulator for Gameboy Roms.


Login via SSH w/ Putty


Create folder:  /Roms/gbc
Create folder:  /.emulationstation/gbc

This folder is going to house your emulator artwork. The easiest way to get this working is to simply copy the artwork contents of another emulator. There should be a .xml file and an artwork folder.

Simply modify the .xml file to point to your new artwork & folder path. It should be pretty straightforward.

Create folder:  /Emulators/Retroarch/configs/gbc

Still in this folder, create retroarch.cfg with the following placeholder text:


Edit  ~/.emulationstation/es_systems.cfg

  • notepad++ in Windows
  • sudo nano in command line

Lastly, If you really want to go the full nine here – You can add an entry for the emulator under the update_emulator script @ Roms\apps\. If you open up the shell script, It should feel pretty straight forward on how to modify an existing entry to work with your new emulator.

[/learn_more][learn_more caption=”Gambette-Libretro”]

This emulator did not work for me!

This is here for reference only, please use tgdual-libretro.


Login via SSH w/ Putty


Create folder:  /Roms/gbc
Create folder:  /.emulationstation/gbc

This folder is going to house your emulator artwork. The easiest way to get this working is to simply copy the artwork contents of another emulator. There should be a .xml file and an artwork folder.

Simply modify the .xml file to point to your new artwork & folder path. It should be pretty straightforward.

Create folder:  /Emulators/Retroarch/configs/gbc

Still in this folder, create retroarch.cfg with the following placeholder text:


Edit  ~/.emulationstation/es_systems.cfg

  • notepad++ in Windows
  • sudo nano in command line

Lastly, If you really want to go the full nine here – You can add an entry for the emulator under the update_emulator script @ Roms\apps\. If you open up the shell script, It should feel pretty straight forward on how to modify an existing entry to work with your new emulator.


Install Duke3d

“Time to Kick Ass and Chew Bubblegum… and I’m all out of bubblegum”


Install Dependencies


Install Duke3d


Edit  ~/.emulationstation/es_systems.cfg

  • notepad++ in Windows
  • sudo nano in command line

sudo nano /etc/X11/xorg.conf


Create folder:  /.emulationstation/duke3d

This folder is going to house your emulator artwork. The easiest way to get this working is to simply copy the artwork contents of another emulator. There should be a .xml file and an artwork folder. You will probably want to choose a unique image to represent the Emulator as well.

Simply modify the .xml file to point to your new artwork & folder path. It should be pretty straightforward.


Finally reboot:


The opening splash image and menu screen flash when you first load the game, However once you start gameplay it seems just fine. If you wish to use a controller instead of the keyboard, you will need to map your joystick manually. To do this, Load the game and navigate to Options > Joystick Setup. Detailed information about this can be found Here.


Install directions derived from RetroPie Setup Script.

Fix Doom

You will need additional .wad files to play Doom.

This means however you’ll get a rom list like this in emulationstation:

You can download the above .wad files Here.

Once downloaded, simply extract the file and place it in the /Roms/doom folder.


Fix Quake

Quake 3 is already setup and configured in UltraSlim…well almost.

It requires a few (8 to be exact) .pak files first.

1.) Download the .pak files @

2.) Browse to: \\ULTRASLIM\Home\Q3A\baseq3

3.) Unzip them in the directory listed above and start Quake!


4.) If you want to use your Joystick to control Quake, you will need to go to:

  • Setup > Controls > Look > Joystick = On
  • Exit out of Quake
  • Boot Quake once more and go back into Controls
  • Use your mouse and joystick to configure your controls




Not content with the huge library of Emulators & Game options?

Check out this great thread on the Raspberry Pi Forums detailing a ton of extra games!

For additional emulators you will want to check out the Libretro GitHub page.




General Tips:

1.) Make sure you are using compatible Hardware.

Click HERE For a full list of supported Peripherals.


2.) Adjust the memory that is dedicated to graphics/cpu:


3.) Adjust the overclock settings:

 **It should also be noted that the UltraSlim image is already overclocked to the ‘meduim’ setting by default.


4.) Below are a few helpful commands to help navigate/troubleshoot:

Search for a specific file / folder name on the Pi.

List all the files, folders & hidden folders in a directory.

List all controller devices:


5.) Before you hose your image troubleshooting an issue – Make a Backup!

  • Power off your Pi.
  • Plug your SD card into your PC
  • run win32diskimager and run the read command to make a backup!


6.) There are some fantastic resources available @ Ranging from general information to advanced user & programmer guides. Definitely worth bookmarking!


Troubleshooting Audio Issues

Audio issues seem to plague every emulator distro, UltraSlim is not exempt here unfortunately… Since this topic spans the entire spectrum of raspberry Pi emulators and we are working with a limited amount of horsepower with the PI, a lot of times there is little you can do to improve sound quality within certain Emulators or Roms. I will however attempt to cover some of the basics.

1.) Change Memory Split. ( see General Tips section above)

2.) Change Overclock (see General Tips section above)

3.) Try a different Rom. Particularly smaller file sized Roms.

4.) Try a different Emulator

5.) Try lowering the qaulity of your audio by editing audio_out_rate.



6.) Update Your Pi!

(This is what finally fixed my audio issues with pocketSNES!)


Additional information can be found @


Improve GamePlay Performance


1.) Change Memory Split. ( see General Tips section above)

2.) Change Overclock (see General Tips section above)

3.) Try a different Rom. Particularly smaller file sized Roms.

4.) Try a different Emulator ( Or updating it )

5.) You can completely disable audio



Specifically PSX & N64 emulation seem to be the most difficult to get working correctly. And for good reason, these emulators are pushing the processing power of our awesome little Pi to the very limit. As stated above, typically the best thing you can do to improve performance is target Roms that are of a smaller file size and don’t require a large amount of rendering.


For n64 emulation, a list of titles that are known to work well can be found HERE. Often times to achieve seamless gameplay – you will need to make adjustments in the Emulator configuration file. The catch is that each title operates best with different settings… There is a great forum post describing n64 emulation and configuration settings HERE.

Personally, The only n64 title that seems to work for me so far is Super Mario 64. It should be noted as well that it is only a 8mb Rom file. If you really want to emulate more than a handful of games in n64 well – You should be prepared to read up on overclocking your Pi, educate yourself on how to make adjustments in your emulator configuration file and for that matter making minor performance adjustments through-out the image. I’ve even read that people have been starting to attach heat sinks to their Pi’s.


Much of what has been said about N64 emulation can be easily applied to PlayStation emulation. That being said, PSX should be just a little bit easier to get working as it requires slightly less horsepower. I’ve read numerous places that 256 memory split offers an ideal experience, however I never actually noticed a difference personally.



I Need Your Help!!
To make this the best Pi Emulator guide possible. Please share any tips/tricks/advice or information you have in the comments section below. I would be particularly appreciative of any additional documentation for other controllers.

Thank you,



    • BillGato
        • BillGato
  1. Billgato
      • BillGato
  2. Óscar Liñán
      • Óscar Liñán
  3. Magnus
      • Magnus
  4. BillGato
  5. Magnus
      • Magnus
  6. Óscar Liñán
  7. laurids
      • laurids
  8. laurids
      • laurids
  9. laurids
      • laurids
          • laurids
  10. laurids
  11. Piet Jansen
  12. christofarian
      • christofarian
          • christofarian
        • christofarian
  13. Beegood
  14. Brennan Manion
  15. Sam Craig
  16. Jason
  17. expandables
  18. Raül HardRock
    • Raül HardRock
  19. expandables
  20. Nigel Taylor
    • Nigel Taylor
      • Nigel Taylor
  21. expandables
  22. expandables
  23. expandables
  24. ksh5022
    • Demon
        • Demon
            • Ludo
          • brody
  25. expandables
  26. expandables
  27. brody
      • Brody
        • brody
          • brody
            • brody
  28. Ryan
    • aivie
        • aivie
          • aivie
          • Lost
            • Alex Ellsworth
        • aivie
        • momovanli
  29. _PArker
  30. super
  31. expandables
  32. aivie
  33. expandables
  34. expandables
  35. aivie
  36. expandables
  37. expandables
  38. Pi-Noob
  39. expandables
  40. expandables
    • expandables
  41. David
  42. Alex Ellsworth
  43. marty
  44. LvZ