NxNandManager Switch

From GameBrew
NX Nand Manager
Nxnandmanager.png
General
Authoreliboa
TypePC Utilities
Version5.2
LicenseGPL-2.0
Last Updated2022/04/20
Links
Download
Website
Source

Nintendo Switch NAND management tool: explore, backup, restore, mount, resize, create emunand, etc. (Windows).

Features

  • Backup or restore any Switch's NAND (file or drive) => full sysNAND, full emuNAND, boot partitions or user partitions.
  • Encrypt or decrypt native encrypted partition (PRODINFO, PRODINFOF, SAFE, SYTEM & USER) using BIS keys.
  • Resize your NAND (USER partition only).
  • Retrieve and display useful information about NAND file/drive (Firmware version, device ID, exFat driver, S/N, etc.) using BIS keys.
  • Splitted dumps are fully supported (backup & restore). However the program cannot split an existing dump nor can it split the output file in any case.
  • Option to wipe console unique ids and certificates (a.k.a Incognito) from PRODINFO.
  • Enable/Disable auto RCM (BOOT0).
  • Create emuNAND (file or partition based) from any NAND image (RAWNAND or FULL NAND).
  • "Advanced copy" feature (passthrough zeroes, split output, zip output, etc).
  • Mount any FAT partition (USER, SYSTEM, etc.) as virtual disk. Follow steps to install Dokan's driver first.
  • Explorer (Beta):
    • Explore the content of USER & SYSTEM partitions. Provides useful info: title name & id, user name & id, etc.
    • List, save or extract files from saveFS (title saves, under /save folder)
    • List, save, decrypt or extract content from NCAs (installed titles) using hactoolnet Png

User guide

Supported file format

It should be noted that the program does not check the file extension to detect if a file is supported or not. It'll look for specific signature inside binary data (magic number) when possible.

If the file is fully encrypted, the program will detect the type by inspecting the filename (without extension) and the file size. Therefore, a single partition file (encrypted) should be named after the partition name ("SAFE.bin", "SAFE.enc" or "SAFE.whatever" will work, "SAFE_01.bin" will not).

Supported drives

NxNandManager can detect physical drives that contains a valid NAND (or partition) such as memloader drives (tool for mounting Nintendo Switch's NAND on a computer) or SD card containing an emuNAND partition (SX OS hidden partition or emuMMC partition).

How to use (GUI)

sysNAND or emuNAND (via Hekate):

  • Launch Hekate/Nyx (v5.2+) on your Nintendo Switch. Navigate to Tools > USB Tools.
  • Either select "eMMC RAW GPP" (sysNand) or "emu RAW GPP" (emuNAND) to mount your NAND on your computer (you can mount BOOT0/BOOT1 separately).
    • Set "Read-Only" to OFF if you want to perform restore operations.
  • Open NxNandManager then open new drive (CTRL + D).
  • Select the mounted drive. You can now perform backup/restore operations.

emuNAND (partition):

  • Mount the SD card containing emuNAND on your computer.
  • Open NxNandManager then open new drive (CTRL + D).
  • Select the drive labelled "FULL NAND".

emuNAND (files):

  • Mount the SD card containing emuNAND on your computer
  • Open NxNandManager then open new file (CTRL + O).
  • Open the first split file of your emuNAND (i.e "sdmmc:\emuMMC\SD00\eMMC\00" for emuMMC or "sdmmc:\sxos\emunand\full.00.bin" for SX OS's emuNAND)

NxStorage types

The following types are supported by NxNandManager:

Type Description Can be restored from
BOOT0 BOOT0 partition (single file)

BOOT0
or
FULL NAND (partial restore)

BOOT1 BOOT1 partition (single file)

BOOT1
or
FULL NAND (partial restore)

PRODINFO PRODINFO partition (single file).

Also known as "CAL0"

PRODINFO
or
FULL NAND, RAWNAND (partial restore)

PRODINFOF PRODINFO partition (single file)

PRODINFOF
or
FULL NAND, RAWNAND (partial restore)

BCPKG2-1-Normal-Main BCPKG2-1-Normal-Main partition (single file)

BCPKG2-1-Normal-Main
or
FULL NAND, RAWNAND (partial restore)

BCPKG2-2-Normal-Sub BCPKG2-2-Normal-Sub partition (single file)

BCPKG2-2-Normal-Sub
or
FULL NAND, RAWNAND (partial restore)

BCPKG2-3-SafeMode-Main BCPKG2-3-SafeMode-Main partition (single file)

BCPKG2-3-SafeMode-Main
or
FULL NAND, RAWNAND (partial restore)

BCPKG2-4-SafeMode-Sub BCPKG2-4-SafeMode-Sub partition (single file)

BCPKG2-4-SafeMode-Sub
or
FULL NAND, RAWNAND (partial restore)

BCPKG2-5-Repair-Main BCPKG2-5-Repair-Main partition (single file)

BCPKG2-5-Repair-Main
or
FULL NAND, RAWNAND (partial restore)

BCPKG2-6-Repair-Sub BCPKG2-6-Repair-Sub partition (single file)

BCPKG2-6-Repair-Sub partition
or
FULL NAND, RAWNAND (partial restore)

SAFE SAFE partition (single file)

SAFE
or
FULL NAND, RAWNAND (partial restore)

SYSTEM SYSTEM partition (single file)

SYSTEM
or
FULL NAND, RAWNAND (partial restore)

USER USER partition (single file)

USER
or
FULL NAND, RAWNAND (partial restore)

RAWNAND

RAWNAND contains:
- GPT (partition table)
- PRODINFO
- PRODINFOF
- BCPKG2-1-Normal-Main
- BCPKG2-2-Normal-Sub
- BCPKG2-3-SafeMode-Main
- BCPKG2-4-SafeMode-Sub
- BCPKG2-5-Repair-Main
- BCPKG2-6-Repair-Sub
- SAFE
- SYSTEM
- USER
- GPT backup

RAWNAND
or
FULL NAND
or
any valid partition (partial restore)

FULL NAND

FULL NAND contains:
- BOOT0
- BOOT1
- GPT (partition table)
- PRODINFO
- PRODINFOF
- BCPKG2-1-Normal-Main
- BCPKG2-2-Normal-Sub
- BCPKG2-3-SafeMode-Main
- BCPKG2-4-SafeMode-Sub
- BCPKG2-5-Repair-Main
- BCPKG2-6-Repair-Sub
- SAFE
- SYSTEM
- USER
- GPT backup

FULL NAND
or
RAWNAND (partial restore)
or
any valid partition (partial restore)

Notes on transfer speed

Performance depends greatly on hardware/drive limitations. For example, if you're doing backup/restore operations on a drive mounted through "memloader", the transfer speed will be very slow, due to memloader limitations.

That said, the transfer rate will be reduced if you choose to encrypt or decrypt data. Data integrity validation (MD5 hash) can also affect the tranfer rate.

Compatibility

All dumps made with Hekate are supported by NxNandManager (and vice versa).

NxNandManager also supports splitted dumps (such as SX OS's (emu)NAND dumps).

Split filenames should be: basename[00->99].(bin|.*) or basename[0->9].(bin|.*) or basename.[0->∝]

Set the first split file as input.

CLI Usage

NxNandManager.exe [--list] -i inputFilename|\\.\PhysicalDriveX [-o outputFilename|\\.\PhysicalDriveX] [-part=nxPartitionName] [--info] [--enable_autoRCM] [--disable_autoRCM] [--incognito] [-user_resize=n] [Flags]

Arguments Description
-i

Path to input file or physical drive.
Input must be a valid NxStorage type (RAWNAND, FULL NAND, BOOT0, BOOT1, SYSTEM, etc).

-o

Path to output file or physical drive.
If output is a valide NxStorage, the program will restore output from input.

-part=

Partition(s) to copy (apply to both input & output if possible).
Use a comma (",") separated list to provide multiple partitions.
Possible values are PRODINFO, PRODINFOF, SAFE, SYSTEM, USER, BCPKG2-2-Normal-Sub, BCPKG2-3-SafeMode-Main, etc. (see --info).
You can use "-part=RAWNAND" to dump RAWNAND from input type FULL NAND.

-d

Decrypt content (-keyset mandatory).
Only applies to RAWNAND, FULL NAND, PRODINFO, PRODINFOF, SAFE, SYSTEM & USER.

-e

Encrypt content (-keyset mandatory).
Only applies to RAWNAND, FULL NAND, PRODINFO, PRODINFOF, SAFE, SYSTEM & USER.

-keyset Path to a file containing bis keys.
-user_resize=

Size in Mb for new USER partition in output.
Only applies to input type RAWNAND or FULL NAND.
Use FORMAT_USER flag to format partition during copy.
GPT and USER's FAT will be modified.
output (-o) must be a new file.

--gui Launch graphical user interface (optional).
--info

Display information about input/output (depends on NAND type):
NAND type, partitions, encryption, autoRCM status...
...more info when -keyset provided: firmware ver., S/N, device ID, ...

--list List compatible physical drives.
--incognito

Wipe all console unique ids and certificates from CAL0 (a.k.a incognito).
Only apply to input type RAWNAND or PRODINFO partition.

--enable_autoRCM Enable auto RCM. -i must point to a valid BOOT0 file/drive.
--disable_autoRCM Disable auto RCM. -i must point to a valid BOOT0 file/drive.
Flag Description
BYPASS_MD5SUM

Used to by-pass all md5 verifications.
Dump/Restore is faster but less secure.

FORCE Program will never prompt for user confirmation.
FORMAT_USER To format USER partition (-user_resize arg mandatory).

Examples

Dump full NAND to file

From physical drive (you first need to mount NX eMMC with memloader (via TegraRcmGUI for ex):
.\NxNandManager.exe -i \\.\PhysicalDrive3 -o "C:\Users\Public\NAND dump\rawnand.bin"

From existing dump file:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\rawnand.bin" -o D:\rawnand2.bin

Dump specific partition to file

Dump SYSTEM partition from physical drive:
.\NxNandManager.exe -i \\.\PhysicalDrive3 -o "C:\Users\Public\NAND dump\SYSTEM.bin" -part=SYSTEM

Extract PRODINFOF partition from existing dump file:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\rawnand.bin" -o D:\PRODINFOF.bin -part=PRODINFOF

Restore NAND dump

Restore full raw NAND to physical drive:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\rawnand.bin" -o \\.\PhysicalDrive3

Restore full splitted raw NAND to physical drive:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\full00.bin" -o \\.\PhysicalDrive3

Restore specific partition to physical drive:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\rawnand.bin" -o \\.\PhysicalDrive3 -part=PRODINFO or
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\PRODINFO" -o \\.\PhysicalDrive3 -part=PRODINFO

Copy partition from file to rawNand file

Copy specific partition from rawNand file:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\rawnand.bin" -o "C:\Users\Public\NAND dump\rawnand2.bin" -part=BCPKG2-1-Normal-Main

Copy specific partition from partition file:
.\NxNandManager.exe -i "C:\Users\Public\NAND dump\BCPKG2-1-Normal-Main" -o "C:\Users\Public\NAND dump\rawnand2.bin" -part=BCPKG2-1-Normal-Main

NAND decryption/encryption (AES-XTS)

NxNandManager can decrypt or encrypt NAND file/drive (rawnand or encrypted partition file "PRODINFO", "SAFE", "SYSTEM", etc). A keyset file containing biskeys must be provided.

Use -d argument to decrypt, -e to encrypt.

Keys can be provided by the -keyset argument to the keyset filename. The program can parse keyset files made with biskeydump or lockpick:

  BIS Key 0 (crypt): <16-byte hex key>
  BIS Key 0 (tweak): <16-byte hex key>
  ...

or

  bis_key_00 = <32-byte hex key>
  bis_key_01 = <32-byte hex key>
  ...

When -keyset and --info arguments are provided, the program can also retrieve some useful information, such as firmware version, exFat driver, last boot time, etc.

Examples:

Decrypt full rawnand:
NxNandManager.exe -i rawnand.bin -o rawnand.dec -d -keyset keys.dat

Decrypt single partition file:
NxNandManager.exe -i PRODINFO -o PRODINFO.dec -d -keyset keys.dat

Encrypt single partition file:
NxNandManager.exe -i PRODINFO.dec -o PRODINFO.enc -e -keyset keys.dat

Decrypt & restore single partition file to physical drive:
NxNandManager.exe -i PRODINFO.dec -o \\.\PhysicalDrive3 -part=PRODINFO -e -keyset keys.dat

Encrypt & restore full rawnand:
NxNandManager.exe -i rawnand.dec -o \\.\PhysicalDrive3 -e -keyset keys.dat

Screenshots

nxnandmanager2.pngnxnandmanager3.pngnxnandmanager4.pngnxnandmanager5.pngnxnandmanager6.png

Changelog

v5.2 2022/04/20

  • Firmware detection : added support for 14.0.0, 14.1.0 & 14.1.1.
  • Fixed #79 : Incognito hanging on newer PRODINFO versions.
  • Fixed #82 : Error while performing backup/restore from/to NAND without GPT header backup (mounted via Hekate's UMS Tool for example).

v5.1 2022/02/02

Bug fixes:

  • #74, #37 - NAND without GPT backup is now recognized as a valid NxStorage.
  • #71 - A bug was fixed that caused checksum mismatch error.
  • #61, #47 - Several bugs were fixed regarding partition formatting.
  • #59 - Filebased emunand with extra dots in file path were not recognized, fixed.
  • #57, #44 - File paths with non ASCII characters are now properly managed.
  • #46 => #24.
  • #24 - A bug was fixed that caused crypto validation error for empty/formatted partitions.

New features:

  • Partition mounting (virtual disk / virtual FS):
    • New option: User can select mouting point (drive letter).
    • New option: Nintendo's archive folder virtualization (handled as single file NCA, file size can exceed 4 GB).
    • New option: Partition can be mounted as read-only.
    • Virtual FS now uses multithreading which allows for file sharing & faster transfer speeds.
  • NAND partition formatting (USER, SYSTEM):
    • Code has been redesigned. FatFS lib is now used.
  • Explorer (Beta):
    • Explore the content of USER & SYSTEM partitions. Provides useful info: title name & id, user name & id, etc.
    • List, save or extract files from saveFS (title saves, under /save folder).
    • List, save, decrypt or extract content from NCAs (installed titles) using hactoolnet.
    • Please note:
      • You'll need to re-configure your keyset (import all keys from both prod.keys & title.keys).
      • Content (JPEG) will be downloaded from Nintendo's public CDN and cached in /cache folder.
      • Content will be downloaded from eliboa.com (nca filename DB as json file, title DB as json file).
      • External program hactoolnet.exe is used to decrypt & extract files from NCAs.
  • Keyset configuration:
    • You can import all sorts of keys into keyset, not only Bis keys (useful for Explorer).
  • Firmware detection:
    • BOOT0, SYSTEM: added support for latest firmwares (up to 13.2.1).
    • SYSTEM: added a feature to query firmware version from a remote database : eliboa.com/switch/nca.php (#75).

v5.0 2021/05/17

  • Added firmware detection support for 12.0.1 & 12.0.2.
  • Added a feature to mount any FAT partition (USER, SYSTEM, etc.) as virtual disk. Follow steps to install Dokan's driver first.
  • Improved transfer speeds (especially for splitted NAND).
  • Various bug fixes & improvements.

v4.1.2 2021/04/06

  • Added firmware detection support for 12.0.0.

v4.1.1 2021/01/19

  • Added firmware detection support for 10.2.0, 11.0.0 & 11.0.1.

v4.1 2020/08/04

  • Added support for mariko's BOOT0 (prevent autoRCM activation for mariko).
  • Added firmware detection support for 10.1.0 & 10.1.1 (CHN).
  • Fixed a bug caused by a nullptr when creating rawbased emunand from FULL NAND.
  • Fixed segmentation fault in NxHandle destructor.
  • Fixed a bug occuring when some bis keys were missing from keyset file.
  • Output file handle is now correctly freed after copying.

GUI:

  • UI scaling implementation (many thanks to Chrscool8 for his contribution).
  • You can now close an opened file/drive from 'File' menu (to release file handle).

CLI:

  • New option --crypto_check : Validate crypto for a given keyset file (-keyset) and input (-i).
  • Fixed a bug when displaying remaining time.
  • Encryption/decryption for FULL NAND was broken, fixed.

v4.0 2020/06/13

  • Emunand creation tool has been implemented for CLI use.
  • List of NCAs has been update for a better firmware detection (thanks to @shadow2560 & @throwawayay).
  • Firmware detection (from pckg1ldr header) update.

Bug fixes:

  • AutoRCM was broken. One byte in each of four BCTs is now XORed.
  • Copy failed during dump via Nyx UMS tool (emuMMC).
  • Fixed a critical bug caused by an unresized copy buffer when splitting output file into chunks.
  • GUI: Data integrity validation was missing for full dump.
  • CLI: Remaining time display was broken (restore).
  • #26 : Selection of the nand image file was not possible in the Emunand Creation Tool.
  • #27 : By default, the program wasn't running with elevated permissions.

v4.0-beta 2020/04/25

  • New GUI layout.
  • New feature "advanced copy" (passthrough zeroes, split output, zip output, etc.)
  • New tool "Emunand Creation Tool" (GUI only) provides an easy way to create a file based emuNAND or raw based emuNAND on micro SD card.
    • NB: You'll have to open a valid RAWNAND or FULL NAND image before you can lauch the tool from the Options menu.
  • GUI : you can now choose to open any emuMMC partition, in case of multiple emuMMC on the same micro SD card (Open Drive, CTRL+D)
  • Many fixes and improvements.
  • Edit April 25: #26 fixed.
  • Edit April 30 : #27 fixed.

v3.0.3 2019/11/14

  • Fix USER's boot sector when creating resized NAND larger than 32Gb (Horizon OS was unable to detect the real size of USER partition).

v3.0.2 2019/11/03

  • GUI : Fixed a bug that caused backup GPT not to be found for RAWNAND as a memloader drive (#10).
  • GUI : Fixed a bug that caused BCPKG2 partitions not to be recognized (#8).
  • Input volume is now locked before making dump/restore to prevent any other process from writing to volume during operation.
  • Misc fixes.

v3.0.1 2019/11/01

  • Writing to emuMMC partition is fixed (#6).
  • Fixed an error when input or output path contains non latin characters (#5).
  • Edit 11/02 : this release was updated with a quick fix for emuMMC partition detection bug on Windows 7 (#7).

v3.0.0 2019/10/27

  • Edit : Writing to emuMMC is broken :/ I'm working on it. It should still work for SX OS hidden partition though.

Added suppport for SD partition emuMMC and SX OS hidden partition (emuNAND):

  • Thus, support for a new NxStorage type "FULL NAND" was added. FULL NAND contains BOOT0, BOOT1 and RAWNAND in a single file/storage. You can pretty much perform the same operations to FULL NAND and RAWNAND (dump, restore, decrypt partition, dump partition, etc).
  • Additionally, you can extract RAWNAND from FULL NAND as well as BOOT0 & BOOT1 (CLI : use argument -part=RAWNAND, -part=BOOT0,etc. GUI : "Tools" > "Dump RAWNAND only"). You can also restore FULL NAND to RAWNAND (BOOT0 and BOOT1 will be skipped) and vice versa.
  • To open your emuNAND partition, mount your SD card on your computer, then :
    • GUI : Use shortcut CTRL + D to list compatible drives, then select the detected drive, labelled "FULL NAND".
    • CLI usage : use command NxNandManager.exe --list to get the disk name to use with input argument "-i".

Resize NAND:

  • You can now resize any RAWNAND or FULL NAND storage. The resize feature will create a new file for your NAND with resized USER partition. This is mainly useful to reduce the size of your emuNAND (file or partition) but you can also increase the size of USER partition, above 26 Gb. Optionally, USER partition can be formatted while resizing.

CLI : a list of partition can now be provided through argument "-part":

  • In case you want to dump or restore several partitions at the same time, you can provide a list of partitions, seperated by a comma, through "-part=" argument. In this case, output must be a directory. When output is a valid NxStorage (restore), every partition that exists in both input and output, will be restored to output.
  • One thing to remember is that when argument -part is provided, the program will never copy the GPT (partition table).

Misc.:

  • Restoring to splitted dump is now allowed.
  • When keyset is provided, the program can retrieve new information:
    • device ID (can be useful to disable parental control).
    • WLAN mac address.
    • Available FAT32 space for partitions SYTEM & USER.
  • Improved BOOT1 detection (will look for magic PK11 in the entire file).
  • Except for some GUI parts, the whole code has be refactored. Although this is mainly transparent for end user, you should notice a general improvement in performance when copying (except when using memloader which is still super slow).
  • CLI : remaining time and amount of bytes copied are now displayed during copy.

v2.0.2 2019/09/20

  • Added support for 9.0 RAWAND firmware detection.
  • Added support for 9.0 BOOT1.
  • Improved firmware detection : since nca filename based detection is not so accurate, the program will also and always search in journal/play reports for firmware version (opening rawnand or SYSTEM partition will be a bit slower, especially with memloader).

v2.0.1 2019/08/14

  • Added support for emuMMC (SD Files). Restoring to a splitted dump is still not supported but you can dump/join and decrypt emuMMC, or install incognito on emuMMC (open the file "sdmmc:\emuMMC\SD00\eMMC\00" to open your emuMMC).
  • Fixed error when installing incognito on splitted dump.

Release notes.

Credits

External links

Advertising: