Install and play RetroArch on Ubuntu

RetroArch is an open-source games frontend that combines a polished interface with emulated console, arcade and computer systems. Instead of juggling separate emulators, it uses libretro cores for titles such as NES, SNES, Mega Drive, PlayStation and older home computers. Playlists, save states, rewind, shaders and unified controller support make it convenient on Ubuntu.

This guide covers installation, setup, legal content and troubleshooting for everyday Ubuntu users. The commands are straightforward to copy, while the explanations clarify why each choice matters. You can use Ubuntu’s own package or the official Flatpak, then tune the experience for your hardware, television and preferred controller.

Choose an installation route

For a standard Ubuntu installation, the repository package is the simplest option. Open Terminal and run:

sudo apt update
sudo apt install retroarch

If the package is unavailable, enable the universe component, refresh the package list and try again:

sudo add-apt-repository universe
sudo apt update
sudo apt install retroarch

Launch it from the Applications menu or with retroarch in Terminal.

Flatpak packages RetroArch and its runtime in a sandbox, often providing a newer build than the distribution repository. Install Flatpak, add Flathub if needed, then install the official application:

sudo apt install flatpak
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub org.libretro.RetroArch

You can also find RetroArch in Ubuntu Software and select Flathub as its source. Start the user installation with:

flatpak run org.libretro.RetroArch

Use one method consistently because package managers keep separate applications and settings. The repository route integrates simply, while Flatpak is convenient for a current upstream release. Update the application before downloading cores:

sudo apt update && sudo apt upgrade retroarch
flatpak update --user org.libretro.RetroArch

Restart RetroArch after either update.

Prepare cores, directories and content

RetroArch does not supply commercial games. Use ROM images you created from cartridges you own, freely licensed homebrew, public-domain releases or files from a service that explicitly permits downloading them. BIOS files are separate: some cores require a dump from hardware you own or an authorised replacement.

Create folders for the systems you plan to play:

mkdir -p ~/RetroArch/roms/{nes,snes,genesis,arcade,psx,handheld}

The labels are yours, but matching common abbreviations helps. In RetroArch, open Settings > Directory, choose Content Directory, sometimes labelled ROM Directory, and select the ~/RetroArch/roms folder. A separate playlist directory can live inside it. If Flatpak reports access denied, allow the application access to your home directory through its Flatpak permissions, then rescan.

Open Main Menu > Online Updater > Update RetroArch Cores to retrieve matching libretro cores. Install an NES core, Snes9x for Super Nintendo, Genesis Plus GX for Mega Drive and a PlayStation core such as Beetle PSX if needed. Core availability can vary, so check the updater rather than relying on a random package.

Some PlayStation and arcade emulators need original BIOS or firmware, while many 8-bit and 16-bit systems do not. Point the System/BIOS Directory setting at a folder containing those authorised files. Then use Import Content > Content Directory to scan your collection and create playlists. If a file is missing, confirm its extension, location and that the appropriate core is installed.

Configure graphics, sound and controllers

Ubuntu’s GNOME desktop may run Wayland, but RetroArch’s OpenGL renderer is usually the safest default. Open Settings > Video, leave the driver as gl initially and try vulkan only if the rest of your setup is stable. Set the resolution below your display’s native size, use integer scaling for crisp pixels and leave CRT shaders off until the basics work.

Recent Ubuntu releases use PipeWire, while older systems generally use PulseAudio. RetroArch normally follows the desktop’s chosen output, but you can select the device under Audio settings. Test normal sound before loading a game. Lower the audio latency from its default only when needed; values around 48–64 milliseconds can reduce delay, while excessive lowering may cause crackling.

Plug a USB gamepad into the computer before launching RetroArch. Xbox and PlayStation controllers are common in the Australian market, as are budget USB pads sold through local electronics retailers. For Bluetooth models, pair the controller in GNOME Settings first, then reconnect it after sleep. If several pads are attached, choose the correct device index under the port controls.

Map each controller through Settings > Input > RetroPad Binds. This gives RetroArch one consistent layout even when a core expects a different controller type. Assign hotkeys for the menu, fullscreen, save state, load state and rewind, then check that they do not clash with normal play. Keyboard mapping remains available for a second player or for troubleshooting.

Start a game and use RetroArch comfortably

Choose a game from a playlist or select Load Content and browse to its file. RetroArch may choose an installed core automatically, but open the game’s context menu when that choice is wrong. PlayStation discs often appear as a .cue file with companion .bin or .img data, and some need matching CD audio tracks. Arcade sets must keep their original parent and clone names.

A save state snapshots the complete running machine, so it can differ from the game’s own save system. Use the mapped state keys to save, load and manage slots. Rewind is useful for platformers and puzzle games when the active core supports it, but it consumes extra memory. Screenshots, playlists, content history and per-game overrides make large libraries easier to navigate.

For two-player games, connect two compatible pads and assign them to separate ports before launching the title. A keyboard can fill the second slot when only one gamepad is available. RetroArch’s library features also suit small Ubuntu laptops and larger desktop systems, letting you use the same frontend and configuration across different machines.

Tune performance and solve common faults

Most 2D retro systems are light on a modern Ubuntu machine, so persistent stutter more often comes from an unsuitable video driver, an oversized shader or rewind using limited memory. Begin at a modest resolution, leave maximum frame delay at its default and test without a shader. RetroArch’s rewind feature can require substantially more RAM than ordinary gameplay.

For graphics diagnostics, install the small Mesa and Vulkan tools packages:

sudo apt install mesa-utils vulkan-tools

Then run:

glxinfo -B
vulkaninfo --summary

The first command reports the OpenGL renderer and driver, while the second checks whether Vulkan is available. A missing Vulkan entry usually points to a driver package or a GPU without suitable support, not a broken game.

When a game will not start, change the driver from Vulkan to OpenGL, lower the resolution and disable shaders. For missing sound, check the desktop mixer, selected output and RetroArch’s volume before altering the core. If a pad is ignored, reconnect it, select another device index and restart RetroArch. A game that remains absent usually needs a core, a corrected content path or a supported file format.

Keep use within Australian law and market realities

In Australia, commercial game ROMs and BIOS files remain protected by copyright law, including the Copyright Act 1968. Downloading an unauthorised copy can infringe those rights even though the emulator itself is free and legal. Buying a cartridge second hand does not automatically make a full downloadable copy authorised, and rights to make a personal backup can be limited.

Australian console releases commonly carried an ACB classification, and much of the PAL-era catalogue was designed for 50Hz video. The classification does not grant copying permission, and region locks should not be bypassed to access content you are not authorised to use. Australia’s mains supply is also 230V at 50Hz; original North American hardware may need proper voltage support and can produce a different picture on local television standards.

JB Hi-Fi, EB Games and Kogan are familiar names in the Australian market for controllers and console accessories. A reputable USB pad is often simpler than adapting an unusual original controller. If an adapter or cable fails, the Australian Consumer Law and ACCC consumer guarantees still apply, so keep the receipt and seek a remedy with the seller.

Core downloads are usually modest, but the first Flatpak installation, artwork and playlists can consume several hundred megabytes. On an NBN connection in Sydney, Melbourne or Brisbane, a fixed home connection is easiest for setup. If you use a mobile hotspot, check its data allowance first; once cores and content are present, RetroArch can run locally without a constant internet connection.

A clean RetroArch setup pairs the right core with a correctly selected content directory, a mapped RetroPad controller and video settings that suit the display. OpenGL and modest resolution values provide a stable baseline on Ubuntu, while Vulkan, rewind and CRT shaders can be enabled when the hardware proves capable.

The lasting lesson is that successful retro gaming depends on lawful content and a stable configuration. Keep the application and cores current, use only authorised ROM and BIOS files, and test controls and display settings before settling into a long session.