Fuse-Nx
Fuse-Nx copied to clipboard
FUSE driver (and more) for various Nintendo Switch file formats
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 inC:\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 adduser_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
.