This is the first alpha release for ninfs 2.0, featuring a completely new GUI.
This release is far from finished! Some features are missing completely, some may not work correctly or at all. Notably, no macOS application is available at the moment (but can still be used as a Python module).
This is a release that is the result of many internal changes under the hood over a year, and there are still more that are coming, before and after 2.0's full release. Testing this release is highly appreciated. Please file issues on GitHub. Support is provided on my server on Discord (info, invite link) or the thread on GBATemp. Thanks!
New GUI
-
Supports multiple mounts within a single instance
-
Creating a new mount uses a simple wizard, with some fields auto-filled where possible
-
Console is hidden by default on Windows
Other new features
-
NANDHAC: Support for mounting a single partition dump (PRODINFOF, PRODINFO, SYSTEM, USER) (not in the GUI yet)
-
NCCH/CIA/CDN: Support providing a seed directly (not in the GUI yet)
Other changes
-
NANDHAC: Don't open NAND in read-write mode if mount is created read-only
-
NANDHAC: Handle missing BIS keys by hiding partitions without available keys
-
CCI/CDN/CIA/NCCH: Show partial game title in the volume name on Windows
-
SRL: Show game title in volume name
-
NANDCTR: Show Device ID in volume name
Removed or missing features
-
On Windows, only drive letters can be used as a mount. (Directory mount points can still be used through the command line.)
-
The side effect of this is that NAND types aren't usable with OSFMount, unless ninfs is run as administrator.
-
This should hopefully not be an issue once FAT filesystem mounting is added to ninfs, removing the need for OSFMount or similar tools.
-
This might come back in a future release.
-
-
The GUI doesn't check if libfuse works.
-
Since boot9 and seeddb can be set during the mount wizard, there is no feature to copy these files to the common locations. This might be added later. Files in these locations are still automatically used.
-
The Nintendo Switch NAND/NANDHAC wizard currently doesn't support choosing a single partition dump, instead expecting a full NAND image (full or split). This can still be done from the command line.
-
The 3DS and DSi NAND mounts don't show individual partitions for ctrnand and twlnand anymore. Instead there is only
ctrnand_full.img
andtwlnand_full.img
. -
Nintendo 3DS SD mounts hide the "Nintendo DSiWare" directory. Due to the encryption of the files inside, supporting this like GodMode9 requires more effort. Until these files can be decrypted properly, exposing this directory as-is will only cause problems.
-
root notice no longer shows for Linux/macOS.
-
No standalone Windows 64-bit build is provided yet.
-
The standalone Windows build has no version with a console attached, making command line use with nearly impossible. Please install ninfs as a Python module if this is important right now. This will be resolved in the next release.
-
"About" dialog is unfinished.
There are most definitely other changes that I left out on accident.
Library versions in the Windows standalone release:
-
Python 3.8.5 32-bit
-
pyctr 0.4.3
-
pycryptodomex 3.9.8
-
cx-Freeze 6.2
Installation
Windows
Windows users need WinFsp.
The standalone release can be downloaded as ninfs-2.0a1-win32.zip below the notes. Extract and ninfs.exe
.
ninfs can also be used as a Python module below.
macOS
macOS users need FUSE for macOS.
No standalone build is provided yet. cx_Freeze was giving me problems. Sorry! I really want to fix this soon but decided to focus more of my time on the core application first.
For the time being, install it as a Python module below.
Linux
Install as a pip module like below. To use the gui, make sure tkinter is installed. This is python3-tk
on Debian/Ubuntu and python3-tkinter
on Fedora.
Arch Linux: (AUR git package still needs updates, please wait...)
BSD/etc.
No idea. It might work! I would like to make sure ninfs works on these systems too, so feel free to file issues or make PRs for compatibility with BSD or other systems that support libfuse.
fusepy should support FreeBSD and OpenBSD. For anything else you should consider adding support to refuse.
Python module installation
Python 3.6.1 or later is required. Version on PyPI
Windows
Wheels are provided for 32-bit and 64-bit versions of 3.6, 3.7, and 3.8.
py -3 -mpip install --upgrade ninfs==2.0a1
macOS
Wheels are provided for the macOS 10.9 variants of 3.6, 3.7, and 3.8. The hac._crypto module will not build with the 10.6 variants.
python3 -mpip install --upgrade ninfs==2.0a1
Linux
python3 -mpip install --upgrade --user ninfs==2.0a1
--user
is not required if you are using a virtualenv.
A little something extra...
The first commit for ninfs, at the time called fuse-3ds, happened just over 3 years ago on August 14, 2020. Back then it was just a collection of independent mounting scripts. Now it's evolved to be my largest project with support for many types for Nintendo consoles.
If my tools have helped you in some way then please consider supporting me on Patreon, PayPal, or Ko-Fi.