Info
This guide allows you to system transfer everything between 3DS systems of the same region and country without using the official System Transfer tool.Luma3DS v11.0 or higher must be running on both consoles and has to be configured and run at least once to generate the sd:/luma/backups folder on both consoles.
Also you need medium experience with the command line to follow along.
This guide was written with Linux in mind, but should work equally fine on Windows and macOS. Contact
gruetzig
on Discord if you see any potential for improvement. I won’t be available to help unless I gave you this guide
What you need
- Python 3
- cleaninty (will be downloaded in the process)
- 2 working 3DS consoles of the same region modded with latest Luma3DS and GodMode9, good modding tutorial can be found here: 3ds.hacks.guide
- 2 SD cards(doing it with one is possible but pain and wont be covered here)
- cleaninty’s ExtractSystemElements script (press Ctrl+S to save it if it opens as a text document in your browser)
- faketik (the
.3dsx
)
Section 0 - Explainations
In this guide, the console you’re transferring from is referred to as the “source console”,The console you’re transferring to is referred to as the “target console”,
The SD card from the source console is referred to as the “source console’s SD card”,
The SD card from the target console is referred to as the “target console’s SD card”.
Section I - Backing up important files and other Prep work
- Create a new folder on your computer, name it exactly “3DS_Backups”
- the name doesn’t necessarily matter. this folder will be used to store files from this guide.
- Copy ExtractSystemElements.gm9 to
/gm9/scripts/
on the source console’s SD card
Section I-I - Launching GodMode9 on the source console
- Turn on the source console with the source console’s SD card inside while holding the (Start) button to launch GodMode9
- If you see the Luma chainloader instead, select GodMode9 using the D-Pad and (A) button
- If you are prompted to create an essential files backup, press (A) to do so, then press (A) to continue once it has completed
- If you are prompted to fix the RTC date&time, press (A) to do so, then set the date and time, then press (A) to continue
Section I-II - Creating a NAND backup on the source console
- Press (Home) to bring up the action menu
- Select “Scripts…”
- Select “GM9Megascript”
- Select “Backup Options”
- Select “SysNAND Backup”
- Press (A) to confirm
- This process will take some time
- If you get an error, make sure that you have at least 1.3GB of free space on the source console’s SD card
- Press (A) to continue
- Press (B) to return to the main menu
Section I-III Extracting non-unique console data required for cleaninty
- Press (Home) to bring up the action menu
- Select “Scripts…”
- Select ExtractSystemElements
- This process will take some time
- When it finshes, you’ll be back in the main menu
Section I-IV Backing up CTRNAND data
- Navigate to
[0:] SDCARD
- Press R+(Y) to create a new folder, name it
ctrnand
- Press (B) to return to the main menu
- Navigate to
[1:] SYSNAND CTRNAND
- Press (Y) on the data folder to copy it
- Press (B) to return to the main menu
- Navigate to
[0:] SDCARD
->ctrnand
- Press (Y) again to paste the data folder
- Press (B) to return to the main menu
- Navigate to
[1:] SYSNAND CTRNAND
->private
- Press (A) on movable.sed
- Select
Copy to 0:/gm9/out
- Overwrite file(s) if asked
Section II-I - Launching GodMode9 on the target console
- Turn on the target console with the target console’s SD card inside while holding the (Start) button to launch GodMode9
- If you see the Luma chainloader instead, select GodMode9 using the D-Pad and (A) button
- If you are prompted to create an essential files backup, press (A) to do so, then press (A) to continue once it has completed
- If you are prompted to fix the RTC date&time, press (A) to do so, then set the date and time, then press (A) to continue
Section II-II - Creating a NAND backup on the target console
- Press (Home) to bring up the action menu
- Select “Scripts…”
- Select “GM9Megascript”
- Select “Backup Options”
- Select “SysNAND Backup”
- Press (A) to confirm
- This process will take some time
- If you get an error, make sure that you have at least 1.3GB of free space on the target console’s SD card
- Press (A) to continue
- Press (B) to return to the main menu
Section III - Moving important backups to the computer
- Insert the source console’s SD card into your computer
- Create a folder named
source_console
inside the3DS_Backups
folder on your hard drive - Create a folder named
target_console
inside the3DS_Backups
folder on your hard drive - Create a folder named
cleaninty
inside the3DS_Backups
folder on your hard drive - Copy
<date>_<serialnumber>_sysnand_##.bin
from the/gm9/out/
folder on the source console’s SD card to3DS_Backups/source_console
- Copy
movable.sed
from the/gm9/out/
folder on your source console’s SD card to3DS_Backups/source_console
- Copy the
backups
folder from theluma
folder on the source console’s SD card to3DS_Backups/source_console
- Copy the
ctrnand
folder from the source console’s SD card root to3DS_Backups/source_console
- Copy the
system_elements
folder from the source console’s SD card root to3DS_Backups/cleaninty
- Insert the target console’s SD card into your computer
- Copy
<date>_<serialnumber>_sysnand_##.bin
from the/gm9/out/
folder on the target console’s SD card to3DS_Backups/target_console
- Copy the
backups
folder from theluma
folder on the target console’s SD card to3DS_Backups/target_console
- Create a folder named
SDCARD
inside3DS_Backups/source_console
- Create a folder named
SDCARD
inside3DS_Backups/target_console
- Copy all of the source console’s SD card contents to
3DS_Backups/source_console/SDCARD
- Copy all of the target console’s SD card contents to
3DS_Backups/target_console/SDCARD
Section IV - Setting up cleaninty
- Inside the cleaninty folder, open the terminal/command prompt/powershell
- Command prompt can be opened by replacing the path bar with
cmd
while in the correct folder - You can alternatively
cd
into the correct directory if you know what that means
- Command prompt can be opened by replacing the path bar with
- Enter
python -m pip install cleaninty
- Enter
python -m cleaninty ctr SetupConstants --ssl system_elements/sslcode.bin --cfg cfgcode.bin --act actcode.bin --process9 p9code.bin --enc-clcert-cert system_elements/ctr-common-1-cert.bin --enc-clcert-key system_elements/ctr-common-1-key.bin
- Enter
cp boot9.bin ~/.3ds/boot9.bin
- Enter
cd ../source_console/backups
- Enter
dir
- You should see file names now, like “otp.bin” or “SecureInfo_A”
- Enter
python -m cleaninty ctr GenJson --otp otp.bin --secureinfo <secureinfo> --region <region> --country <country> --out source.json
- Replace “<secureinfo>” with the filename listed above, like “–secureinfo SecureInfo_A”
- Replace “<region>” with the source console’s region, like “–region JPN” (JPN stands for Japan(theres also EUR and USA))
- Replace “<country>” with the source console’s region, like “–country JP” (JP stands for Japan(there are other countries))
- Enter
cp source.json ../../
- Enter
cd ../../target_console/backups
- Enter
dir
- You should see file names now, like “otp.bin” or “SecureInfo_A”
- Enter
python -m cleaninty ctr GenJson --otp otp.bin --secureinfo <secureinfo> --region <region> --country <country> --out target.json
- Replace
with the filename listed above, like "--secureinfo SecureInfo_A" - Replace
with the target console's region, like "--region JPN" (JPN stands for Japan(theres also EUR and USA)) - Replace
with the target console's region like "--country JP" (JP stands for Japan(there are other countries))
- Replace
- Enter
cp target.json ../../
- Enter
cd ../../
from now on we will do transfer things, but they should be reversible as long as you have your backups
Section V - Moving server-side
- Enter
python -m cleaninty ctr NNIDTransfer -s source.json -t target.json
- Enter
python -m cleaninty ctr SysTransfer -s source.json -t target.json
- This will put you on a 7 day transfer cooldown
- Enter
python -m cleaninty ctr EShopDelete -C source.json
- This will ensure the NNID transfers correctly
Section VI - Moving console-side
- Insert the target console’s SD card into your computer
- Format the target console’s SD card
- This should be safe when you made a backup of the SD card’s contents in Section III
- Copy everything from
3DS_Backups/source_console/SDCARD
to the target console’s SD card root - Copy
faketik.3dsx
to the3ds
folder on the target console’s SD card- create the
3ds
folder if it doesn’t exist already,Nintendo 3DS
is not3ds
- create the
- Turn on the target console with the target console’s SD card inside while holding the (Start) button to launch GodMode9
- If you see the Luma chainloader instead, select GodMode9 using the D-Pad and (A) button
- Navigate to
[0:] SDCARD
->ctrnand
- Press (Y) on
data
- Press (B) twice
- Navigate to
[1:] SYSNAND CTRNAND
- Press (X) on
data
- Press (A) to confirm, then unlock write permissions
- Press (B) to decline relocking write permissions
- Press (Y)
- Press (B) twice
- Navigate to
[0:] SDCARD
->gm9
->out
- Press (Y) on
movable.sed
- Press (B) until you’re back in the main menu
- Navigate to
[1:] SYSNAND CTRNAND
->private
- Press (Y)
- Choose overwrite file(s) if asked
- Press (B) twice
- Press R+A on
[1:] SYSNAND CTRNAND
- Select “Fix CMACs for drive”
- Press (Start) to reboot
Section VII - Recovering tickets using faketik
This is Section III from 3ds.hacks.guide’s Finalizing Setup- Launch the Download Play application
- Wait until you see the Nintendo 3DS and Nintendo DS buttons
- Press (Left Shoulder) + (D-Pad Down) + (Select) at the same time to open the Rosalina menu
- Select “Miscellaneous options”
- Select “Switch the hb. title to the current app.”
- Press (B) to continue
- Press (B) to return to the Rosalina main menu
- Press (B) to exit the Rosalina menu
- Press (Home), then close Download Play
- Launch the Download Play application
- Your device should load the Homebrew Launcher
- Launch faketik from the list of homebrew
- Press (Start) to exit faketik, then exit the Homebrew Launche, and make sure your apps reappear
Section VIII - Formatting the source console
Do not skip this!- Turn on the source console with the source console’s SD card inside while holding the (Start) button to launch GodMode9
- If you see the Luma chainloader instead, select GodMode9 using the D-Pad and (A) button
- Press (Home) to bring up the action menu
- Select “Scripts…”
- Select “GM9Megascript”
- Select “Scripts from Plailect’s guide”
- Select “Remove NNID”
- Press (A) to continue
- Press (A) to unlock SysNAND (lvl1) writing, then input the key combo given
- Press (A) to continue
- Press (B) to return to the main menu
- Select “Exit”
- Press (A) to relock write permissions if prompted
- Press (Start)
- Launch System Settings
- Tap Other Settings
- Tap Format System Memory
- For Nintendo 3DS, Nintendo 3DS XL, and Nintendo 2DS, you can find that option by tapping the right arrow three times until you reach page four
- For New Nintendo 3DS and New Nintendo 3DS XL, you can find that option by tapping the right arrow four times until you reach page five
- If required, enter your Parental Controls PIN
- Tap Format
- Tap Format again to erase the data
gruetzig
on Discord via Nintendo Homebrew on Discord and give them your source.json. A .json created by cleaninty should never be shared publicly, so do it in DMs.
We can use .jsons of dead consoles to perform system transfers allowing consoles to access the eShop after region change even if it breaks, deep shit I know ;).