Skip to content
/ Fuse-Nx Public

FUSE driver (and more) for various Nintendo Switch file formats

License

Notifications You must be signed in to change notification settings

averne/Fuse-Nx

Repository files navigation

Fuse-Nx

Mount Nintendo Switch archive as filesystems, and find/extract files from them.

Supported formats

  • Nca (only AES-CTR encrypted/plaintext NCA3s are supported, BKTR encryption (for update NCAs) is unsupported)
  • Xci
  • Pfs
  • Hfs
  • Romfs

Formats are recognized based on magicnums/numeric contants present in their headers, and not their extensions.

Usage

Refer to the built-in help (-h/--help). You can find help on a specific subcommand using fuse-nx <subcmd> --help, or fuse-nx --help-all.

Windows

Windows is supported via:

  • WinFsp: make sure that winfsp-x64.dll (found in C:\Program Files (x86)\WinFsp\bin after installing) is present in the same directory as the executable;
  • WSL: To access the filesystem through the explorer, you will need to pass the -o allow_other flag to FUSE when mounting, and add user_allow_other to /etc/fuse.conf.

Project layout

  • lib: Library (fnx) for parsing the supported file formats;
  • src: Source code for the main application;
  • bindings: CPython (3) bindings for the library;
  • scripts: example Python scripts using these bindings.

Building

fuse-nx

This program depends on either libgcrypt or mbedtls for cryptographic operations. The former should be preferred when possible, as it makes uses of available hardware crypto extensions (whereas mbedtls only supports AES-NI).

The build process as follows:

meson build
meson compile -C build -j$(nproc)

If libcrypt is not found, it will fall back on the system installation of mbedtls, or failing that, on a clean build of it. mbedtls can be forcefully enabled by passing -Dcryptobackend=mbedtls on the configure step.

Python bindings

python setup.py build

Installing

fuse-nx

sudo meson install -C build

For users of Arch-based distros, an AUR package is available.

Python bindings

sudo python setup.py install

Or just pip install -U git+https://github.com/averne/Fuse-Nx.git.

About

FUSE driver (and more) for various Nintendo Switch file formats

Resources

License

Stars

Watchers

Forks