FUSE filesystem Python scripts for Nintendo console files
Alternatives To Ninfs
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
10 months ago13March 25, 202215mitPython
FUSE filesystem Python scripts for Nintendo console files
Kezplez Nx103
3 years agootherC
The "easiest" way to get all 70+ Nintendo Switch keys to use with hactool!
4 years agomitPython
FUSE (Filesystem in Userspace) scripts for Nintendo Switch files
Fuse Nx29
4 months agogpl-3.0C++
FUSE driver (and more) for various Nintendo Switch file formats
3 years agogpl-2.0C
Mount Nintendo GameCube disc images using FUSE
5 years agogpl-2.0C
fusee payload that dumps the RAW FUSE, KFUSE and BOOTROM bytes from a Nintendo Switch.
8 years agoC
A FUSE application to mount Nintendo DS roms
Rebuild Title Database5
a year ago1mitPython
Rebuilds the contents of title.db for Nintendo 3DS
5 years agogpl-3.0C
NSP/XCI manager for the Nintendo Switch
Alternatives To Ninfs
Select To Compare

Alternative Project Comparisons


ninfs (formerly fuse-3ds) is a FUSE program to extract data from Nintendo game consoles. It works by presenting a virtual filesystem with the contents of your games, NAND, or SD card contents, and you can browse and copy out just the files that you need.

Windows, macOS, and Linux are supported.

Supported types

  • Nintendo 3DS:
    • CTR Cart Image (".3ds", ".cci")
    • CDN contents ("cetk", "tmd", and contents)
    • CTR Importable Archive (".cia")
    • Executable Filesystem (".exefs", "exefs.bin")
    • Nintendo 3DS NAND backup ("nand.bin")
    • NCCH (".cxi", ".cfa", ".ncch", ".app")
    • Read-only Filesystem (".romfs", "romfs.bin")
    • SD Card Contents ("Nintendo 3DS" from SD)
    • 3DSX Homebrew (".3dsx")
    • Titles directory ("title" from NAND or SD)
  • Nintendo DS / DSi
    • Nintendo DSi NAND backup ("nand_dsi.bin")
    • Nintendo DS ROM image (".nds", ".srl")
  • Nintendo Switch
    • Nintendo Switch NAND backup ("rawnand.bin")

Example uses

  • Mount a NAND backup and browse CTRNAND, TWLNAND, and others, and write back to them without having to extract and decrypt them first.
  • Browse decrypted SD card contents. Dump installed games and saves, or copy contents between two system's SD contents.
  • Extract a game's files out of a CIA, CCI (".3ds"), NCCH, RomFS, raw CDN contents, just by mounting them and browsing its files. Or use the virtual decrypted file and start playing the game in Citra right away.


For 3DS types, The ARM9 bootROM is required. You can dump it using boot9strap, which can be set up by 3DS Hacks Guide. To dump the bootROM, hold START+SELECT+X when you boot up your 3DS. It is checked in order of:

  • --boot9 argument (if set)
  • BOOT9_PATH environment variable (if set)
  • %APPDATA%\3ds\boot9.bin (Windows-specific)
  • ~/Library/Application Support/3ds/boot9.bin (macOS-specific)
  • ~/.3ds/boot9.bin
  • ~/3ds/boot9.bin

boot9_prot.bin can also be used in all of these locations.

"~" means the user's home directory. "~/3ds" would mean /Users/username/3ds on macOS and C:\Users\username\3ds on Windows.

CDN, CIA, and NCCH mounting may need SeedDB for mounting NCCH containers of newer games (2015+) that use seeds.
SeedDB is checked in order of:

  • --seeddb argument (if set)
  • SEEDDB_PATH environment variable (if set)
  • %APPDATA%\3ds\seeddb.bin (Windows-specific)
  • ~/Library/Application Support/3ds/seeddb.bin (macOS-specific)
  • ~/.3ds/seeddb.bin
  • ~/3ds/seeddb.bin

Python 3.6.1+ and pycryptodomex are required. appJar is required for the GUI.

  • fusepy is pre-included until refuse has a fully stable release.


Windows 7 or later is required.

A standalone executable with a GUI is available for use. You can get a single executable for download from GitHub or the GBAtemp Download Center A window will appear allowing you to choose mount options easily.

Python does not have to be installed, but WinFsp is still required.

Install with existing Python

  • Install the latest version of Python 3. The x86-64 version is preferred on 64-bit Windows.
  • Install the latest version of WinFsp.
  • Install ninfs with py -3 -m pip install --upgrade
    • With GUI support: py -3 -m pip install --upgrade[gui]


A standalone application bundle with a GUI is available for use. OS X 10.9.5 Mavericks or later is required. You can download the DMG from GitHub.

Python does not have to be installed, but FUSE for macOS is still required.

Install with existing Python

Versions of macOS supported by Apple are highly recommended. Mac OS X Snow Leopard is the lowest version that should work.

  • Install the latest version of Python 3. The recommended way is Homebrew. You can also use an installer from or a tool like pyenv.
  • Install the latest version of FUSE for macOS.
  • Install ninfs with python3 -m pip install --upgrade
    • With GUI support: python3 -m pip install --upgrade[gui]


  • Arch Linux: ninfs is available in the AUR: normal, with gui, git, git with gui
  • Recent distributions should have Python 3.6.1 or later pre-installed, or included in its repositories. If not, you can use an extra repository (e.g. deadsnakes's PPA for Ubuntu), build from source, or use a tool like pyenv.
  • Most distributions should have fuse enabled/installed by default. Use your package manager if it isn't.
  • Some dependencies may need to be installed to build and install ninfs.
    • On Debian-based systems, g++ and python3-dev are required for the C extensions. To build and install as a package, python3-setuptools and python3-wheel are required.
  • Install ninfs with python3 -m pip install --upgrade --user
    • --user is not needed if you are using a virtual environment.
    • With GUI support: python3 -m pip install --upgrade --user[gui]
      • To use a GUI, Tkinter may need to be installed as a separate package. On Debian-based systems, install python3-tk.
  • You can add a desktop entry with python3 -m ninfs --install-desktop-entry. If you want to install to a location other than the default ($XDG_DATA_HOME), you can add another argument with a path like /usr/local/share.


Graphical user interface

A GUI can be used, if ninfs was installed with GUI support, by specifying the type to be gui (e.g. Windows: py -3 -mninfs gui, *nix: python3 -mninfs gui). The GUI controls mounting and unmounting.

Command line

Run a mount script by using "mount_<type>" (e.g. mount_cci game.3ds mountpoint). Use -h to view arguments for a script.

If it doesn't work, the other way is to use <python-cmd> -mninfs <type> (e.g. Windows: py -3 -mninfs cci game.3ds mountpoint, *nix: python3 -mninfs cci game.3ds mountpoint).

Windows users can use a drive letter like F: as a mountpoint, or use * and a drive letter will be automatically chosen.


  • Windows: Press Ctrl + C in the command prompt/PowerShell window.
  • macOS: Two methods:
    • Right-click on the mount and choose "Eject “drive name”".
    • Run from terminal: diskutil unmount /path/to/mount
  • Linux: Run from terminal: fusermount -u /path/to/mount


  • 3DS game card dump:
    mount_cci game.3ds mountpoint
  • Contents downloaded from CDN:
    mount_cdn cdn_directory mountpoint
  • CDN contents with a specific decrypted titlekey:
    mount_cdn --dec-key 3E3E6769742E696F2F76416A65423C3C cdn_directory mountpoint
  • CIA:
    mount_cia game.cia mountpoint
  • ExeFS:
    mount_exefs exefs.bin mountpoint
  • 3DS NAND backup with essential.exefs embedded:
    mount_nandctr nand.bin mountpoint
  • 3DS NAND backup with an OTP file (Counter is automatically generated):
    mount_nandctr --otp otp.bin nand.bin mountpoint
  • 3DS NAND backup with OTP and CID files:
    mount_nandctr --otp otp.bin --cid nand_cid.bin nand.bin mountpoint
  • 3DS NAND backup with OTP file and a CID hexstring:
    mount_nandctr --otp otp.bin --cid 7468616E6B7334636865636B696E6721 nand.bin mountpoint
  • DSi NAND backup (Counter is automatically generated):
    mount_nandtwl --console-id 4E696E74656E646F nand_dsi.bin mountpoint
  • DSi NAND backup with a Console ID hexstring and specified CID hexstring:
    mount_nandtwl --console-id 4E696E74656E646F --cid 576879446F657344536945786973743F nand_dsi.bin mountpoint
  • DSi NAND backup with a Console ID file and specified CID file:
    mount_nandtwl --console-id ConsoleID.bin --cid CID.bin nand_dsi.bin mountpoint
  • Switch NAND backup
    mount_nandhac --keys prod.keys rawnand.bin mountpoint
  • Switch NAND backup in multiple parts
    mount_nandhac --keys prod.keys -S rawnand.bin.00 mountpoint
  • NCCH container (.app, .cxi, .cfa, .ncch):
    mount_ncch content.cxi mountpoint
  • RomFS:
    mount_romfs romfs.bin mountpoint
  • Nintendo 3DS directory from an SD card:
    mount_sd --movable movable.sed "/path/to/Nintendo 3DS" mountpoint
  • Nintendo 3DS directory from an SD card with an SD key hexstring:
    mount_sd --sd-key 504C415900000000504F4B454D4F4E21 "/path/to/Nintendo 3DS" mountpoint
  • Nintendo DS ROM image (NDS/SRL, mount_nds also works):
    mount_srl game.nds
  • 3DSX homebrew application:
    mount_threedsx boot.3dsx mountpoint

Useful tools

  • wwylele's 3ds-save-tool can be used to extract game saves and extra data (DISA and DIFF, respectively).
    • wwylele's save3ds is a FUSE mount for 3DS save files. Currently only supports macOS and Linux.
  • OSFMount for Windows can mount FAT12/FAT16 partitions in NAND backups.

Related tools

  • roothorick's BUSEHAC is a Linux driver for encrypted Nintendo Switch NANDs.
  • Maschell's fuse-wiiu can be used to mount Wii U contents.
  • koolkdev's wfslib has wfs-fuse to mount the Wii U mlc dumps and usb devices.


  • ninfs is under the MIT license.
    • is under the ISC license (taken from
    • hac/aes.cpp and hac/aes.hpp are from @openluopworld's aes_128 commit b5b7f55, and uses the MIT License.
    • hac/_crypto.cpp AES-XTS part by @luigoalma, based on @plutooo's crypto module; Python module implementation initially by me(@ihaveamac).

Special thanks to @Stary2001 for help with NAND crypto (especially TWL), and @d0k3 for SD crypto.

OTP code is from Stary2001/3ds_tools, and is under the MIT license.

Popular Nintendo Projects
Popular Fuse Projects
Popular Companies Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Nintendo Switch
Fuse Filesystem
Nintendo 3ds