Skip to content

Releases: ihaveamac/ninfs

ninfs 2.0a2

19 Sep 18:01
v2.0a2
Compare
Choose a tag to compare
ninfs 2.0a2 Pre-release
Pre-release

This is the second alpha release for ninfs 2.0, featuring an installer for Windows.

This release is far from finished! It only has minimal testing. Some features are missing completely, some may not work correctly or at all.

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!

Windows Installer

An installer is available for Windows. This includes WinFsp, which is automatically installed if it isn't already. It also can add a Start Menu entry, and add the installation directory to PATH for command line usage.

A standalone zip is still available.

Note about Windows 7

Due to Microsoft discontinuing support for Windows 7, this platform is no longer supported. As soon as the standalone release is updated to use Python 3.9, it will not start. It should still work when used as a Python module, but issues specific to Windows 7 may not be fixed.

Other features and changes

  • GUI: Support single partition dumps for Nintendo Switch NAND/NANDHAC

  • About window updated to display licenses for included software and libraries

  • hac crypto module is separated to its own module: https://github.com/luigoalma/haccrypto

    • As a result, ninfs wheels no longer contain binary code and are cross-platform.
  • GUI: Fix SD wizard

  • GUI: Use console process if GUI has no console

    • This means that a cx_Freeze error dialog won't appear if the mount exits with an error.
  • Standalone Windows build now has two executables: ninfs and ninfsw. The latter starts without a console attached.

  • Add ninfsw entry point to setup.py to start without a console on Windows (no effect on other platforms)

  • Support providing a mount type to "ninfs" when run as a module, matching Windows standalone releases

  • Some others I probably forgot


Installation

Windows

The installer includes ninfs and WinFsp. This is the easiest way to use the application.

The standalone release can be downloaded as ninfs-2.0a2-win32.zip below the notes. Extract and run ninfsw.exe (or ninfs.exe to have a console attached).

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

  • py -3 -mpip install --upgrade ninfs==2.0a2

macOS

The 10.6 variant of Python is not supported for Nintendo Switch NAND/NANDHAC types.

  • python3 -mpip install --upgrade ninfs==2.0a2

Linux

  • python3 -mpip install --upgrade --user ninfs==2.0a2
    • --user is not required if you are using a virtualenv.

A little something extra...

If my tools have helped you in some way then please consider supporting me on Patreon, PayPal, or Ko-Fi.

ninfs 2.0a1

07 Sep 09:02
v2.0a1
ee3841c
Compare
Choose a tag to compare
ninfs 2.0a1 Pre-release
Pre-release

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 and twlnand_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.

ninfs v1.7b2

15 Aug 08:23
v1.7b2
e9eff25
Compare
Choose a tag to compare
ninfs v1.7b2 Pre-release
Pre-release

Note: this release is VERY old. Please use newer ones. https://github.com/ihaveamac/ninfs/releases

Warning: Using the GUI on macOS 10.14.6 will crash WindowServer and force you back to the login screen. The issue can be followed here: http://github.com/pyinstaller/pyinstaller/issues/4334

Changes since v1.6.1

  • SD: Properly decrypt contents of backup folder
  • NANDHAC: Support "raw" partition-based emuMMC images with -R/--raw-emummc
  • Display application name for CIA, CCI, and NCCH in mount title on macOS
  • Allow assuming contents are decrypted for CCI and NCCH
  • Major internal changes and rewriting
  • Remove titledir mount - better tools will be coming later to search for installed titles
  • Other things, probably

Changes since v1.7b1

  • Display application name for CCI in mount title on macOS
  • Allow assuming contents are decrypted for CCI and NCCH

Interested in filling out a quick survey on how you use ninfs? Click here!

Important note

This is not a full release, so some things may still be broken. Please file issues if this happens.

NAND and SD mounts allow writing. Keep backups before writing to these, in the event an unknown bug corrupts data.

There is a Windows tutorial for ninfs on GBAtemp. README also explains how to use it via command line and on non-Windows platforms. If you are unsure about something, you can ask at my server on Discord, Nintendo Homebrew on Discord, or the GBAtemp thread.

The signatures are created with the PGP key 90725113CA578EAA.

Usage

Windows and macOS users can download the standalone applications attached to this release, which works without needing Python installed. WinFsp for Windows or FUSE for macOS must still be installed.

Linux users (and users who prefer to use their installed Python) can install this release via pip, or by downloading the "Source code" archive. Python 3.6.1 or later is required. Read the README for more setup and usage details.

Command line install

Windows

  • py -3 -mpip install --upgrade https://github.com/ihaveamac/ninfs/releases/download/v1.7b2/ninfs-1.7b2-src.zip
    • With GUI support: py -3 -m pip install --upgrade https://github.com/ihaveamac/ninfs/releases/download/v1.7b2/ninfs-1.7b2-src.zip#egg=ninfs[gui]

macOS

FUSE for macOS is required.

  • python3 -mpip install --upgrade https://github.com/ihaveamac/ninfs/releases/download/v1.7b2/ninfs-1.7b2-src.zip
    • With GUI support: python3 -m pip install --upgrade https://github.com/ihaveamac/ninfs/releases/download/v1.7b2/ninfs-1.7b2-src.zip#egg=ninfs[gui]

Linux

  • python3 -mpip install --upgrade --user https://github.com/ihaveamac/ninfs/releases/download/v1.7b2/ninfs-1.7b2-src.zip
    • --user is not required if you are using a virtualenv.
    • With GUI support: python3 -m pip install --upgrade --user https://github.com/ihaveamac/ninfs/releases/download/v1.7b2/ninfs-1.7b2-src.zip#egg=ninfs[gui]

ninfs v1.7b1

15 Jul 01:32
v1.7b1
023f98c
Compare
Choose a tag to compare
ninfs v1.7b1 Pre-release
Pre-release

Changes since v1.6.1

  • SD: Properly decrypt contents of backup folder
  • NANDHAC: Support "raw" partition-based emuMMC images with -R/--raw-emummc
  • Display application name for CIA and NCCH in mount title on macOS
  • Major internal changes and rewriting
  • Remove titledir mount - better tools will be coming later to search for installed titles
  • Other things that I may have forgot to list here

Warning: Using the GUI on macOS 10.15 beta or 10.14.6 will crash WindowServer and force you back to the login screen.


Interested in filling out a quick survey on how you use ninfs? Click here!

Important note

This is not a full release, so some things may still be broken. Please file issues if this happens.

NAND and SD mounts allow writing. Keep backups before writing to these, in the event an unknown bug corrupts data.

There is a Windows tutorial for ninfs on GBAtemp. README also explains how to use it via command line and on non-Windows platforms. If you are unsure about something, you can ask at my server on Discord, Nintendo Homebrew on Discord, or the GBAtemp thread.

The signatures are created with the PGP key 90725113CA578EAA.

Usage

Windows and macOS users can download the standalone applications attached to this release, which works without needing Python installed. WinFsp for Windows or FUSE for macOS must still be installed.

Linux users (and users who prefer to use their installed Python) can install this release via pip, or by downloading the "Source code" archive. Python 3.6.1 or later is required. Read the README for more setup and usage details.

Command line install

Windows

  • py -3 -mpip install --upgrade https://github.com/ihaveamac/ninfs/releases/download/v1.7b1/ninfs-1.7b1-src.zip
    • With GUI support: py -3 -m pip install --upgrade https://github.com/ihaveamac/ninfs/releases/download/v1.7b1/ninfs-1.7b1-src.zip#egg=ninfs[gui]

macOS

FUSE for macOS is required.

  • python3 -mpip install --upgrade https://github.com/ihaveamac/ninfs/releases/download/v1.7b1/ninfs-1.7b1-src.zip
    • With GUI support: python3 -m pip install --upgrade https://github.com/ihaveamac/ninfs/releases/download/v1.7b1/ninfs-1.7b1-src.zip#egg=ninfs[gui]

Linux

  • python3 -mpip install --upgrade --user https://github.com/ihaveamac/ninfs/releases/download/v1.7b1/ninfs-1.7b1-src.zip
    • --user is not required if you are using a virtualenv.
    • With GUI support: python3 -m pip install --upgrade --user https://github.com/ihaveamac/ninfs/releases/download/v1.7b1/ninfs-1.7b1-src.zip#egg=ninfs[gui]

ninfs v1.6.1

27 May 21:08
v1.6.1
73bc356
Compare
Choose a tag to compare

Note: this release is VERY old. Please use newer ones. https://github.com/ihaveamac/ninfs/releases

Changes since v1.6

  • CCI: Fix oversight with passing boot9 to the NCCH mount, causing the partitions to not be mounted - #43

Warning: Using the GUI on the macOS 10.14.6 and 10.15 betas will crash WindowServer and force you back to the login screen.

Available on PyPI and AUR!


Interested in filling out a quick survey on how you use ninfs? Click here!

Important note

NAND and SD mounts allow writing. Keep backups before writing to these, in the event an unknown bug corrupts data.

There is a Windows tutorial for ninfs on GBAtemp. README also explains how to use it via command line and on non-Windows platforms. If you are unsure about something, you can ask at my server on Discord, Nintendo Homebrew on Discord, or the GBAtemp thread.

The signatures are created with the PGP key 90725113CA578EAA.

Usage

Windows and macOS users can download the standalone applications attached to this release, which works without needing Python installed. WinFsp for Windows or FUSE for macOS must still be installed.

Linux users (and users who prefer to use their installed Python) can install this release via pip, or by downloading the "Source code" archive. Python 3.6.1 or later is required. Read the README for more setup and usage details.

Command line install

Windows

  • py -3 -mpip install --upgrade ninfs==1.6.1
    • With GUI support: py -3 -m pip install --upgrade ninfs[gui]==1.6.1

macOS

FUSE for macOS is required.

  • python3 -mpip install --upgrade ninfs==1.6.1
    • With GUI support: python3 -m pip install --upgrade ninfs[gui]==1.6.1

Linux

  • python3 -mpip install --upgrade --user ninfs==1.6.1
    • --user is not required if you are using a virtualenv.
    • With GUI support: python3 -m pip install --upgrade --user ninfs[gui]==1.6.1

ninfs v1.6

27 May 03:29
v1.6
c2caa0f
Compare
Choose a tag to compare

Changes since v1.5

  • CDN: Support using a tmd file to mount - #36
    • The GUI now expects a tmd file by default instead of a directory.
  • SD: Support manual SD key input
    • --sd-key reads the key as a hexstring. It cannot be used at the same time as --movable.
    • The GUI currently does not accept the key as a hexstring, only a movable.sed file.
  • CMDLINE: Support --boot9 for loading the ARM9 bootROM from any path
  • SD: Workaround write corruption bug
  • NANDHAC: Performance improvements to AES-XTSN crypto operations by @luigoalma
  • CCI: Remove useless SeedDB option
  • Stability or something, I guess.

Available on PyPI and AUR!


Interested in filling out a quick survey on how you use ninfs? Click here!

Important note

NAND and SD mounts allow writing. Keep backups before writing to these, in the event an unknown bug corrupts data.

There is a Windows tutorial for ninfs on GBAtemp. README also explains how to use it via command line and on non-Windows platforms. If you are unsure about something, you can ask at Nintendo Homebrew on Discord, or the GBAtemp thread.

The signatures are created with the PGP key 90725113CA578EAA.

Usage

Windows and macOS users can download the standalone applications attached to this release, which works without needing Python installed. WinFsp for Windows or FUSE for macOS must still be installed.

Linux users (and users who prefer to use their installed Python) can install this release via pip, or by downloading the "Source code" archive. Python 3.6.1 or later is required. Read the README for more setup and usage details.

Command line install

Windows

  • py -3 -mpip install --upgrade ninfs==1.6
    • With GUI support: py -3 -m pip install --upgrade ninfs[gui]==1.6

macOS

FUSE for macOS is required.

  • python3 -mpip install --upgrade ninfs==1.6
    • With GUI support: python3 -m pip install --upgrade ninfs[gui]==1.6

Linux

  • python3 -mpip install --upgrade --user ninfs==1.6
    • --user is not required if you are using a virtualenv.
    • With GUI support: python3 -m pip install --upgrade --user ninfs[gui]==1.6

ninfs v1.5

21 May 21:27
v1.5
af15e6d
Compare
Choose a tag to compare

Changes since v1.4

  • Support split Nintendo Switch NAND backup files
    • Each part is expected to end in two digits (e.g. rawnand.bin.00, rawnand.bin.01, ...). Any part can be selected, the program will search for all parts starting with 00.
    • The command line argument -S or --split-files is used for a split backup.
    • The GUI will attempt to automatically detect this based on the filename.
  • GUI: Automatically detect Nintendo DSi NAND backups
  • GUI: Fix oversight breaking automatic detection of Nintendo 3DS NAND backups
  • ExeFS: Always show code-decompressed.bin, even if .code is not compressed

Available on PyPI and AUR!


Interested in filling out a quick survey on how you use ninfs? Click here!

Important note

NAND and SD mounts allow writing. Keep backups before writing to these, in the event an unknown bug corrupts data.

There is a Windows tutorial for ninfs on GBAtemp. README also explains how to use it via command line and on non-Windows platforms. If you are unsure about something, you can ask at Nintendo Homebrew on Discord, or the GBAtemp thread.

The signatures are created with the PGP key 90725113CA578EAA.

Usage

Windows and macOS users can download the standalone applications attached to this release, which works without needing Python installed. WinFsp for Windows or FUSE for macOS must still be installed.

Linux users (and users who prefer to use their installed Python) can install this release via pip, or by downloading the "Source code" archive. Python 3.6.1 or later is required. Read the README for more setup and usage details.

Command line install

Windows

  • py -3 -mpip install --upgrade ninfs==1.5
    • With GUI support: py -3 -m pip install --upgrade ninfs[gui]==1.5

macOS

FUSE for macOS is required.

  • python3 -mpip install --upgrade ninfs==1.5
    • With GUI support: python3 -m pip install --upgrade ninfs[gui]==1.5

Linux

  • python3 -mpip install --upgrade --user ninfs==1.5
    • --user is not required if you are using a virtualenv.
    • With GUI support: python3 -m pip install --upgrade --user ninfs[gui]==1.5

ninfs v1.4

18 Apr 02:23
v1.4
996fe4c
Compare
Choose a tag to compare

Changes since v1.3.1

  • New feature to mount Nintendo Switch NAND images
    • This requires BIS keys, dumped with Lockpick_RCM or biskeydump.
  • New project name: ninfs
  • Fix incorrect developer common key 0
  • Many other internal changes

Available on PyPI and AUR!


Interested in filling out a quick survey on how you use ninfs? Click here!

Important note

NAND and SD mounts allow writing. Keep backups before writing to these, in the event an unknown bug corrupts data.

There is a Windows tutorial for ninfs on GBAtemp. README also explains how to use it via command line and on non-Windows platforms. If you are unsure about something, you can ask at Nintendo Homebrew on Discord, or the GBAtemp thread.

The signatures are created with the PGP key 90725113CA578EAA.

Usage

Windows and macOS users can download the standalone applications attached to this release, which works without needing Python installed. WinFsp for Windows or FUSE for macOS must still be installed.

Linux users (and users who prefer to use their installed Python) can install this release via pip, or by downloading the "Source code" archive. Python 3.6.1 or later is required. Read the README for more setup and usage details.

Command line install

Windows

  • py -3 -mpip install --upgrade ninfs==1.4
    • With GUI support: py -3 -m pip install --upgrade ninfs[gui]==1.4

macOS

FUSE for macOS is required.

  • python3 -mpip install --upgrade ninfs==1.4
    • With GUI support: python3 -m pip install --upgrade ninfs[gui]==1.4

Linux

  • python3 -mpip install --upgrade --user ninfs==1.4
    • --user is not required if you are using a virtualenv.
    • With GUI support: python3 -m pip install --upgrade --user ninfs[gui]==1.4

fuse-3ds v1.3.1

30 Nov 05:57
d45e106
Compare
Choose a tag to compare

Changes since v1.3

  • New custom icon
  • First release of standalone macOS Application Bundle
  • Minor GUI text updates

Now available on PyPI and AUR!


Interested in filling out a quick survey on how you use fuse-3ds? Click here! (Updated to add the new type Nintendo DS ROM image)

Important note

NAND and SD mounts allow writing. Keep backups before writing to these, in the event an unknown bug corrupts data.

There is a Windows tutorial for fuse-3ds on GBAtemp. README also explains how to use it via command line and on non-Windows platforms. If you are unsure about something, you can ask at Nintendo Homebrew on Discord, or the GBAtemp thread.

The signatures are created with the PGP key 90725113CA578EAA.

Usage

Windows and macOS users can download the standalone applications attached to this release, which works without needing Python installed. WinFsp for Windows or FUSE for macOS must still be installed.

Linux users (and users who prefer to use their installed Python) can install this release via pip, or by downloading the "Source code" archive. Python 3.6.1 or later is required. Read the README for more setup and usage details.

Command line install

Windows

  • py -3 -mpip install --upgrade fuse-3ds==1.3.1
    • With GUI support: py -3 -m pip install --upgrade fuse-3ds[gui]==1.3.1

macOS

FUSE for macOS is required.

  • python3 -mpip install --upgrade fuse-3ds==1.3.1
    • With GUI support: python3 -m pip install --upgrade fuse-3ds[gui]==1.3.1

Linux

  • python3 -mpip install --upgrade --user fuse-3ds==1.3.1
    • --user is not required if you are using a virtualenv.
    • With GUI support: python3 -m pip install --upgrade --user fuse-3ds[gui]==1.3.1

fuse-3ds v1.3

12 Oct 01:42
eab74ec
Compare
Choose a tag to compare

Changes since v1.2

  • Added option to skip a specific update
  • Added option to prevent checking online for updates
  • Fix detection of tkinter on Linux

Now available on PyPI!


Interested in filling out a quick survey on how you use fuse-3ds? Click here! (Updated to add the new type Nintendo DS ROM image)

Important note

NAND and SD mounts allow writing. Keep backups before writing to these, in the event an unknown bug corrupts data.

There is a Windows tutorial for fuse-3ds on GBAtemp. README also explains how to use it via command line and on non-Windows platforms. If you are unsure about something, you can ask at Nintendo Homebrew on Discord, or the GBAtemp thread.

Usage

Windows users can download the executable attached to this release, which works without needing Python installed. 64-bit users should get the win64 version. WinFsp must still be installed.

macOS and Linux (and Windows who prefer to use their installed Python) can install this release via pip, or by downloading the "Source code" archive. Python 3.6.1 or later is required. Read the README for more setup and usage details.

Command line install

Windows

  • py -3 -mpip install --upgrade fuse-3ds==1.3
    • With GUI support: py -3 -m pip install --upgrade fuse-3ds[gui]==1.3

macOS

FUSE for macOS is required.

  • python3 -mpip install --upgrade fuse-3ds==1.3
    • With GUI support: python3 -m pip install --upgrade fuse-3ds[gui]==1.3

Linux

  • python3 -mpip install --upgrade --user fuse-3ds==1.3
    • --user is not required if you are using a virtualenv.
    • With GUI support: python3 -m pip install --upgrade --user fuse-3ds[gui]==1.3