How to load ROMs from a USB drive on RetroPie 3

10 Jan 2014 in Linux/UNIX, Tutorials by Andy Mardell

Retropie load roms from usb

Update March 2016: Now working with RetroPie 3.*

We all love the Raspberry Pi and the RetroPie retro game emulation project. But what if you only have a small SD card, thousands of roms and wish to run them straight off a USB memory stick/pen drive? Here’s how:

1. Plug in your USB drive and find where it’s mounted

Once you’ve plugged your drive into the Pi, we need to log in via ssh:

ssh pi@retropie


ssh pi@[local ip address]

Note: the default password is raspberry. If you’re using Windows, you’ll need Putty. See the RetroPie Wiki for details

Lets switch to root user so we don’t have to keep typing sudo

sudo su

There are several ways to find out where your drive is mounted – this is my preferred method:

df -h

df -h will return something like this:

Filesystem      Size  Used Avail Use% Mounted on
/dev/root        15G  2.8G   11G  21% /
devtmpfs        364M     0  364M   0% /dev
tmpfs           368M     0  368M   0% /dev/shm
tmpfs           368M  5.2M  363M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           368M     0  368M   0% /sys/fs/cgroup
/dev/mmcblk0p1   57M   20M   38M  35% /boot
/dev/sda1        30G  1.5M   30G   1% /media/usb0

The drive you’re looking for is the one that resembles your USB drive. In my case, it was the last line, 30G drive Mounted on /media/usb0. Be sure to change all the following steps to match your Mounted on path.

Do not continue unless you are certain this is your USB drive.

2. Copy the ROM directories to your USB drive

We’re now going to copy across all the rom folders from the SD card to the usb drive.

cp -Rav /home/pi/RetroPie/roms/* /media/usb0/

3. Change the path to your ROMs

Lets backup the original config file just in case something goes wrong:

cp /etc/emulationstation/es_systems.cfg /etc/emulationstation/es_systems.cfg.bak

If you’re still using RetroPie version 1.* this file is located at ~/.emulationstation/es_systems.cfg

Open es_systems.cfg file with your favourite editor – I like nano:

nano /etc/emulationstation/es_systems.cfg

Change the PATH of each emulator to your USB drive’s path like so:

    <extension>.sh .SH</extension>
    <command>/opt/retropie/supplementary/runcommand/ 0 _SYS_ amiga %ROM%</command>

If you’re still using RetroPie 1.* or 2.* it will look like this:

DESCNAME=Atari 800
COMMAND=/home/pi/RetroPie/supplementary/runcommand/ 1 "/home/pi/RetroPie/emulators/atari800-3.0.0/installdir/bin/atari800 %ROM%"

Change the path for every emulator in the list.

When you’re done, hit CTRL + O then enter to save the file and then CTRL + X to exit the nano editor.

3. Configure Samba

Now that you’ve changed the path to your roms, we want to make sure you can add still add roms using samba. First, copy your samba config file in case we get anything wrong:

cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Edit the file

nano /etc/samba/smb.conf

Change the [roms] path to your new USB path:

comment = roms
path = "/media/usb0"

Hit CTRL + O then enter to save the file and then CTRL + X to exit the nano editor.

4. Reboot & Play

Reboot your Pi:


You’re done! Hopefully this was helpful. If it was, please leave a quick comment or share.

Andy Mardell

Andy Mardell is a 25 year old web designer and developer with over 5 years' professional experience. He designs and develops websites for small businesses and start-ups while focusing carefully on user interface design, user experience and accessibility.

  • Shawno.1024

    wrote a big comment about how thankful i am for this article, not going to go through the whole thing again. i have a 8gb card that is almost full, have heard that usb is faster so would be nice to load some of theslower working games off of those… i posted the pics, they are my first attempt at graphic design and just made them today. basically i posted them as a thank you, and hoped i could get some feedback here for them or requests or any kind of scrutiny. i have so many ideas about how to set up sd card and usb card use for storing games and im happy it seems so easy to do

    • Thanks! I’m glad this helped you. I haven’t noticed a huge difference in speed (N64 emulator is still a no-go) but it certainly isn’t slower than SD and saves a hell of a lot of space on the card. It also means you can chuck hundreds of ROMS on and it won’t cause a problem. Thanks for the comment and the image – what program did you use? 🙂

      • Shawno.1024

        pixlr editor online

  • Shawno.1024

    image that you can use hopefully

  • wasretro

    Thanks for this explanation. One question though: my emulator us not saving any savegames. Also: when I ftp to the raspberry I cannot write directly to the usb. Know how to solve this?

  • braedon

    Works while my raspberry is on but soon as I boot after its searching on my usb
    I get a shitload of errors is this possibly due to some wrong things bejng transfered to usb?

    • Hmm… What errors are you getting? See if it jogs my memory.
      I certainly don’t remember getting any myself
      Thanks for the comment 🙂

  • gideon

    Hey I’m a bit under-experienced with this, but when I enter sudo nano ~/.emulationstation/es_systems.cfg it just takes me to a blank screen. Am I supposed to see the detaills of the emulators there or do I have to manually enter the descname, name, path, and all the rest of it?

    • knip knap

      I also got this problem, I think the problem lays down with the new update of RetroPie.

    • knip knap

      soon i will make a video how to solve this problem, but for just now do this “es_systems.cfg is now located in /etc/emulationstation/ Copy over to /home/pi/.emulationstation/ to edit* also run the terminal in root “sudo su”

    • Hi Gideon,

      As knip knap has mentioned, the file has changed location in the latest update.

      I’ve not had a chance to try this myself, but the new config location is at /etc/emulationstation/es_systems.cfg. Apparently you’ll now need to copy this file to ~/.emulationstation/es_systems.cfg to edit it.

      So you’ll need to enter the following command:
      sudo cp /etc/emulationstation/es_systems.cfg ~/.emulationstation/es_systems.cfg

      and then:
      sudo nano ~/.emulationstation/es_systems.cfg

      Info on the new update can be found here:

      As I mentioned; I’ve not had a chance to try it so sorry if it doesn’t solve the problem 🙂

      Thanks for the comment.

      • knip knap

        Sorry mate, it’s not working anymore. Just rade your usb with a 32gb sd card, also sd cards are kind cheap those days, tomorrow i will buy one, just for retropie

        • Damn! Thanks for trying it out and reporting back. I’ll have to have a look properly at some point and see if I can get it working somehow…

          • Nuktu

            This does work on the latest version of RetroPie. I followed your instructions for one of the rom folders “snes” and it worked perfectly

            – sudo cp /etc/emulationstation/es_systems.cfg ~/.emulationstation/es_systems.cfg
            – sudo vim ~/.emulationstation/es_systems.cfg
            – change the path inside for snes to /media/usb/snes/

          • Jimmy

            This still isn’t working for me. I’ve been trying all Christmas. I’ve done the steps exactly like you say, but still only have Apple ii, Ports and IBM in my emulationstation menu.

            I copied the es_systems.cfg file to ~/.emulationstation/es_systems.cfg and amended the copy with the correct paths. Nothing shows up. I even tried amending the original, no luck.

            Thanks for any help, I’ve been trying to get this to work for a long time.

          • I am in the same boat. Any help? Do I have to force the systems to show up?

          • Hi Jon, I’ve just had a chance to try this out myself. Please see the updated post – it’s now fully working with v2 🙂 Hope it helps!

          • Jimmy, I’ve just had a chance to try this out for myself and all is working. Please see the updated post. A couple of people on here were right – the es_system.cfg file had changed. Hope it helps!

        • The problem with sd cards is corruption. I am really hoping to see an updated solution for usb.

    • Mychel Elderd

      I figured it out. It would be nice to see the (small) alterations for the directions to be in the main article if the author can edit it…

      This is as of RetroPie December 27, 2015. Follow all directions as stated until you begin section 2. In the beginning of section 2, it says to type:

      sudo nano ~/.emulationstation/es_systems.cfg

      But this opens a blank page. So instead, if we change the line to read:

      sudo nano /etc/emulationstation/es_systems.cfg

      We then get the correct file to edit. Now, edit the file as stated in the original article.

      NOTE: Make sure to also look at the EXTENSIONS line to see what extensions you can use. I tend to make a ROM and save it as a zip file. The SNES emulator was not showing up because it only looks for the extensions in that line. zip was not one of the extensions. I unzipped my SNES roms and all of them (and the emulator) showed up.

      • Mychel, You’re spot on. I can confirm this solution works and have updated the post. Thanks!

  • Krister Pettersson

    I have a problem how to get 2 usb memorys working at same time with retropie

  • Shackkeel

    Does my USB need to look like this? RetroPie/rom/[emulatorname] ?

    • I just put all the emulator directories on the root of the USB drive like so: /[emulatorname]

      Once I mounted my USB drive on /media/usb, the full path to the emulator directory is /media/usb/[emulatorname]

  • Juan Pablo Soto Olivares

    This works but first you need to create a directory on the pendrive called “retropie”. after that you insert the pendrive on the raspberry till the green light stop flashing… like 30 secs…. then again in the PC u will see all the directories created inside dir “retropie”. Thanks !!!

  • Magicfansubs

    Work on 3.x? 🙂

    • Working on it! Haven’t had a chance to install it and look yet. Check back again soon 🙂

      • indiwerwlf

        I am very interested in getting this working on retropie 3. Especially for Adafruits PiGRRL 2. I’d be happy to test it as well.

        • I’ve updated the post to work with RetroPie 3. Feel free to try it out and let me know if you run into any problems, but all seems to be working well for me. Thanks!

    • Now tested and working on 3.5. Thanks – let me know how you get on.

      • DrBlue

        It’s all working for me but whenever I restart emulationstation seems to be still copying ROMs from USB to the SD card filling it up (although I can actually play the games directly from USB). I can’t seem to find a way of switching ROM syncing off, it’s not a huge problem but if the SD card is full you can’t alter any of the emulator settings as they can’t be saved.

        • Interesting. It didn’t seem to do that on my setup. Out of interest: On your USB drive, do you have your roms in “retropie/emulatorname”? If you do, change the name of the directory to anything other than retropie and it shouldn’t copy them across. That’s why I put mine in /media/usb0/emulatorname instead of /media/usb0/retropie/emulatorname

          • DrBlue

            Yes I have them named retropie/emulatorname. That sounds logical, I shall try that. Many thanks 🙂

  • Hi, is there a way to start emulationstation if you change the path for a usb hard drive and the device is not mounted or connected? Because when ES starts, if some path in es_systems.cfg doesn’t exists then it doesn’t start and crashes.

    It would be great if ES can simply ignore that game system and load anyway.

    Thanks for the post.

  • David Levin

    So I’m using emulation station on retropie3 on rpi 2. I just followed these steps and now when I try to launch ScummVM, it no longer boots. Also my games are not populating under the +start scummvm option, not sure if they should after following your steps?

  • John Griffiths

    Followed the guide and it works, however I now have to wait 5-10 minutes for the pi to shut down or reboot, even pressing F4 for console takes at least 5 minutes to show the console properly. It only happens when the USB thumb drive is connected.
    Retropie 3.6 on Raspberry Pi Model B+ V1.2 USB thumb drive is a sandisk cruzer glide 64gb

  • Burnd

    This works, it can now run roms from USB. However, when I run a game there is no sound and the controls don’t work. I didn’t have this problem when I ran them from the SD-card. Is there an easy explanation/solution for this?

  • Aaron Daryl

    Hi there, 1st time using a raspberry pi – have installed retropie OS works fine but like many others I was looking for a way to play roms off a USB stick instead of copying them all to the SD Card.

    Followed your tutorial step by step but I still can’t play them from my usb stick, the screen shows the default emulators ie apple 2, ports, dreamcast etc – any ideas? The roms are saved on the usb stick under /gba for example, not in any other folder as it was previously ( I read some of the issues others were having before posting)

  • Baguda

    Easy way: (example for psx)

    -Make folder on USB drive called “psx” (or whatever name, this will be the new storage place for your ROMs).
    -Make sure that the USB drive IS NOT the same drive with the “retropie” folder in it for transferring games (this will make the usb device invisible to emulationstation).
    -boot up retropie and enter the file manager through the RetroPie options menu. (under retropie “console” in main menu)
    -in the file manager, keep backing up (the /.. option) until you cannot back up anymore and are in the root directory.
    -Go down to the /media folder and find which usb number(usb0 -> usb7) the flash drive is mounted on and write it down. (the “~usb” option shows all of the files in all usb devices)
    -Exit file manager (F10) and close emulationstation (alt+F4) to go to prompt.
    – edit the system configuration file by entering:
    sudo nana /etc/emulationstation/es_system.cfg
    This file will have all of the system information for each console!
    -Do a Where is search (ctl+W) for “psx” to find the section for playstation. (Each section starts with “” and ends with “”)
    -Find the file path in the playstation section (starts with “”, ends with “”), and change the file path inside to the location on your flash drive:
    This will tell the system to look for and boot psx extension files from the psx folder on your flash drive. The number after usb in the path name should match your drive’s usb number.
    -reboot system and run emulationstation. The playstation console will now boot from usb folder named psx.
    This is repeated for all other consoles.

  • Lorenzo Travagli

    i use Easy way: (example for psx)
    but each time i reboot i find retropie folder on hdd and it doesn’t see roms
    thks for your help

  • Juakin Bm

    Hi!, if I add two path lines (/media/usb0/amiga), will this take ROMS from two or more different folders?