1. Home
  2. Linux

How to play Nintendo 3DS games on Linux

The Nintendo 3DS is a handheld video game console built by Nintendo. It was released in February 2011, and is one of Nintendo’s most successful video game consoles, selling millions of units.

If you love the Nintendo 3DS and want to experience it on your Linux PC, you can, thanks to the Citra emulator. In this guide, we’ll go over how to set up Citra to play 3DS games, how to save, and even how to configure a controller!

Note: Addictivetips in no way encourages or condones the illegal downloading or distribution of ROM files for Citra. If you want to play Nintendo 3DS games with Citra, please use your own game ROM files you’ve backed up to your PC, legally

Installing the Citra emulator on Linux

The Citra emulator is experimental and can be a little unstable at times. Still, it’s the best way to emulate the Nintendo 3DS on the Linux platform. To get the Citra 3DS emulator working, start by opening up a terminal window.

Once a terminal window is open on your Linux desktop, follow the command-line installation instructions outlined below that corresponds with the Linux OS you currently use. As of now, Citra is supported by Snaps, Flatpak, and via source-code.

Snap package

Citra is available as a Snap package. However, it’s not a “stable” Snap package by any means. Instead, the Citra emulator is in the “Edge” channel. To get it working on your system, start by ensuring that the Snap runtime is set up on your Linux PC. Then, use the snap install command below with the –edge flag to get the latest Citra 3DS emulator package up and running.

sudo snap install citra-mts --edge


Aside from Snap, the Citra emulator is available as a Flatpak. However, unlike a lot of other Flatpaks, Citra is not hosted in the Flathub app store. Rather, users must install the dedicated Citra Flatpak repo. Here’s how to do it.

First, ensure that the Flatpak runtime is up and running on your system by following this guide. Once the Flatpak runtime is working, you must add the Flathub repo. Why? Various dependencies that Citra relies on are hosted on it.

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

After adding the Flathub repo, it’s time to install Citra from the Citra emulator repo.

To install the nightly release:

flatpak install https://flatpak.citra-emu.org/citra-nightly.flatpakref

To install the canary release:

flatpak install https://flatpak.citra-emu.org/citra-canary.flatpakref

Building from source

If you don’t like Snaps or Flatpaks, it is possible to build Citra from the source code. To start, follow the commands on this page to get the dependencies set up. Be sure to also install the “git” package, as it is necessary to download the source code.

Once all the dependencies are taken care of, use the git clone command to download the latest source code for Citra to your Linux PC.

git clone --recursive https://github.com/citra-emu/citra

cd citra

Then, build the code and install Citra.

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
sudo make install

For more information on how to get Citra built and ready to use on Linux, please refer to the official documentation found here.

Playing 3DS games with Citra

To play a 3DS game with the Citra emulator, find the “File” button, and click on it with the mouse. Inside of the “File” menu, locate the “Load File” button, and click on it.

Selecting the “Load file” button will bring up an open-file dialog box. Use this box to browse for the Nintendo 3DS ROM file you’d like to run in the 3DS emulator. Citra will start the game up immediately upon selecting the ROM file.


Need to save your game? Here’s what to do. First, find the “Emulation” menu, and click on it while a ROM is running. Then, look through the “Emulation” window for the “Save State” option, and select it to save your game.

Note: there are multiple save state slots, so feel free to save your game as many times as you want!

To load a saved game, start by clicking on the “Emulation” menu with the mouse, while the ROM is in use. Then, find the “Load State” option. Inside of “Load State,” select the save state you would like to load.

Configuring a controller

Citra has controller support. To configure the controller, do the following. First, plug in the controller to your Linux PC. Then, click on the “Emulation” menu and select the “configure” button.

Inside of the “configure” area, locate “Controls,” and click on it. Once inside of the “controls” area, use the UI to set your buttons up. When the controller configuration is done, click on the “OK” button to save your settings. Citra will instantly start using the controller configuration.

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.