NES Controller

RetroArch on the Fire TV

retroarch logo
This RetroArch Fire TV guide began life as a post on my blog about gaming on the lightest weight Fire TV, the 2014 Fire TV Stick, and kind of grew from there.  The popularity of that post is what inspired me to create this site.

RetroArch isn’t in the Amazon app store, so you’re going to have to sideload it.  This means you’ll need to enable sideloading in the Fire TV menu: Settings/Device/Developer Options/Apps from Unknown Sources.

ES File Explorer

Probably the easiest way to sideload apps is the ES File Explorer.  Once you’ve installed ES File Explorer you have lots of options.  My preferred option “Remote Manager.”  Opening remote manager will make your device an FTP anonymous server and you can then do everything from your computer.  This is far and away the fastest option.  From your PC, you can use something like WinSCP as an FTP client, or really whatever you’re comfortable with. Note that if you are using wired Ethernet on a Fire TV device, the IP address may be wrong.  When I tested this, ES File Explorer set up its FTP server on my Bluetooth network instead of the wired Ethernet network. I worked around this by unplugging wired Ethernet and using WiFi temporarily instead, and ES File Explorer correctly used my WiFi IP address.


Download the RetroArch for Android APK from the main source (click to highest version and select Android).  As of the time of this writing, the newest release is RetroArch 1.7.3 (direct link).


Once you’ve copied the APK to a folder on your Fire TV (I copied it to the “downloads” folder using ES File Explorer, as mentioned above), you can open the APK in ES File Explorer to install it.


File Locations

The first time you start RetroArch it unpacks everything and creates its basic configuration file, retroarch.cfg.  Close RetroArch (“Quit RetroArch) from the main menu), re-enable Remote Manager in ES File Explorer, and use Win SCP to can edit retroarch.cfg in “/Android/data/com.retroarch/files” (or possibly /storage/emulated/0/Android/data/com.retroarch/files if you’re using another tool).

One of the things I did in my retroarch.cfg is switch some file locations from their normal locations to locations that I could access without root.  You absolutely don’t have to do this, but if you want to tinker, and you don’t have root, it’s a good idea.  Basically I looked for paths:


or on the newer Gen 3 Fire TV:


and changed them to:


or on the newer Gen 3 Fire TV:


You don’t want to change them all, or you’ll break RetroArch, but a few that you might change include:

  • joypad_autoconfig_dir – if you want to be able to tinker with controller autoconfig settings easily.
  • libretro_directory – if you want to be able to install cores and later delete them
  • playlist_directory – manually edit playlists
  • thumbnails – again, for manual manipulation
  • content_history_path – so you can manually edit
  • input_remapping_directory

Some things, like the autoconfig files, will need to be redownloaded after you relocate their directory.  You can do this in the RetroArch menu.


You probably already have a game controller if you’re reading this, but if not, check out our guide.  The first thing you’re going to want to do is make sure your controller  inputs work.  They *should* automatically work.  In older versions, with the Amazon Fire Game Controller, the A/B and X/Y assignments were backwards, matching the labels on the controller instead of the position on the controller.  This is because RetroArch uses a Nintendo style layout for its standard RetroPad:

NES Controller
Look where B and A are on the NES controller
SNES Controller
Note the Y/B/X/A positions on the SNES controller
Gameboy Advance
Gameboy, Gameboy Color, and Gameboy Advance have the same B A configuration as the NES

This made navigation confusing, and required a correction in the retroarch.cfg file (swapping menu_ok_btn and menu_cancel_btn assignments).  This is no longer necessary.  The Back key on the controller maps to “Select,” the Menu key on the controller maps to “Start,” and the Play/Pause button on the original Fire controller pulled up the RetroArch menu from with a game.  On other controllers, L+R+START+SELECT is the default, but, like everything in Retroarch, you can configure it how you want.

In the settings menu, select inputs, User 1 Binds, and Bind All.  This will cycle through all the buttons you can map and you can push the button on your controller to map them.  It goes a little fast, so be ready when you start it.  You might need to do it a second time once you’ve seen all the options.  Finally, you will want to go into the “Hotkeys” menu to set a button for the RetroArch menu, otherwise you won’t be able to get back to RetroArch from your game.

Once you have your controller like you like it, you can actually customize the layout for each core you have installed by loading that core and going back to the input setup.


Another thing you’ll want to do is turn off overlays.  Since this APK is intended for all sorts of Android devices, many of which are touch devices, it defaults to turning on overlays for touch based controls.  Just go to setting and overlays and switch that off.


I created a standalone directory on my Fire TV Stick for my ROMs.  From the default ES File Explorer FTP session, it’s just called /ROMS, from Fire OS’s perspective it’s located at /storage/emulated/0/ROMS.   On my Fire TV I did this on my SD Card.


Really Retroarch is a wrapper for running various different emulator cores.  You’ll find that there are a plethora of options, and some are better and some are worse for various reasons.

NES (Famicom/Nintendo Entertainment System)

For NES I’m using Nestopia, which has been around for years.  It seems to be the best option right now.  I still have my original NES.  It’s my second console love after my Atari 2600, so I always am always going straight for the NES emulator.  I mean, Zelda, Mario, Metroid, etc.

Sega Master System, Genesis, etc.

If you want to play 8 or 16 bit Sega games, Genesis Plus GX seems to be the go-to emulator.  I was never a big Sega guy growing up, but this emulator seems to support everything from the original SG-1000 to the Genesis and Game Gear.

Gameboy/Game Boy Color

For GB/GBC I’m using Gambatte, which was far and away the best GB/GBC emulator in the testing I found from about 18 month ago.

SNES (Super Nintendo Entertainment System)

Right now I’m using SNES9x.  There is also a SNES9x Next, but the best data I could find, which was 18 months old, showed it not testing as well for compatibility as SNES9x.  Still doing more research here.

Game Boy Advanced

For GBA I’m using mGBA, which gets high marks for compatibility.

N64 (Nintendo 64)

I’ve installed Mupen64Plus, but the  2014 Fire TV Stick just doesn’t have the horsepower.  On my Gen 2 Fire TV N64 games work like a champ.  Of course, my N64 is sitting right under the TV with GoldenEye and Ocarina of Time calling to me…

MAME (Multiple Arcade Machine Emulator)

MAME is, well, really cool.  It emulates all SORTS of arcade games.  Because of this, your success with running it on the Fire TV platform is probably going to vary a lot depending on the machine that’s being emulated.

Discuss this article in the forums.

16 thoughts on “RetroArch on the Fire TV”

  1. Hey I got Retroarch installed on my 2nd gen fire stick. I just loaded up from ES explorer within the fire stick. When I launch it I can navigate with the firetv remote control, but I cannot select anything. Any ideas what’s up?

    1. I find navigation in ES Explorer with the remote a little annoying. Some menus you can only get into from one direction, so that might be it? I’ve always been able to get things done eventually, if sometimes a little slowly…

      Edit: Never mind, I just realized I misread what you said. You’re having trouble navigating inside Retroarch. I’m not sure I’ve ever tried that with anything but the game controller.

  2. I’ve tried multiple methods of installation and multiple versions of Retroarch, but I can’t get it to install on my Fire TV box. I haven’t had this kind of trouble installing anything else.

  3. Got it all installed today. In game saves and save states do not work. I feel I have exhausted looking at the standard settings. What am I missing?

  4. Fire TV stick controller does not have the “select” button for RetroArch. You can select the game with the game controller.

    1. I’m having the opposite issue. No start or select option on my Bluetooth game controller but everything else works fine.

  5. found old paper boy for nes, I remember paying 40 bills of my own allowance for that game. I was playing SMB last night and it was fine, old Mario worked flawlessly, but today trying to get it to work and it crashes, any thoughts? Corrupted ROM?

  6. Excellent guide! I have minimal FTP experience and this guide really made it possible to quickly add APK files to my fireTV with ease.

    A few points of note for the newest version of retroarch (1.7) as of this comment date (01/06/2018):

    The directories have changed slightly for android devices. The original article lists directory paths as…


    And says you should change it to…


    This has been altered in the last update.The original directory path would now be…


    With the new directory path changed to…


    Using the joypad autoconfig directory as an example:

    New directory path…

    joypad_autoconfig_dir = “/data/user/0/com.retroarch/autoconfig”

    Change to…

    joypad_autoconfig_dir = “/storage/emulated/0/RetroArch/autoconfig”

    Thereby replacing /data/user/0/com.retroarch/ in any directory of interest with /storage/emulated/0/RetroArch/

    Of the original directories Colin suggested should be changed, only the joypad and libretro directories need editing. All of the rest are already root-friendly.

    For your copy and paste pleasure…

    Joypad old: joypad_autoconfig_dir = “/data/user/0/com.retroarch/autoconfig”
    Joypad new: joypad_autoconfig_dir = “/storage/emulated/0/RetroArch/autoconfig”

    libretro old: libretro_directory = “/data/user/0/com.retroarch/cores”
    libretro new: libretro_directory = “/storage/emulated/0/RetroArch/cores”

    1. Thanks for the detail. I clearly need to run back through a new install and update this info.

      Curious, which Fire TV were you using? With the 3rd gen on a different OS version based on a significantly different version of Android, that could make a huge difference.

  7. Ah, I hadn’t thought about that. I’m using the FTV3. Wish I’d read more about the difference between it and the last version. No extra ports! I’m in a dongle debacle.

    1. I have a FireTV3. Trying to load roms through retroarch using a usb otg cable. Android doesnt seem to want to mount it, so I cant locate it through retroarch. I can however find it using esfile explorer and view files on the usb drive.

  8. Hi there. Having trouble with my fire tv 3rd gen. I’ve downloaded retoarch with no problem and use my online rom to play games. I bought ev3d bluetooth controller and it works in retroarch but when i start the game it stops having any input at all. Have to use my fire tv remote to exit out and force stop retroarch. I manually configured my remote as well. Trying to play nes games and tryied a few different cores. Any help would be wonderful.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.