This page is a guide to transferring data between systems without doing a System Transfer, and usually should only be done if the source console you are transferring from is nonfunctional or you only have its SD.
If you do not have a specific reason to follow this guide (i.e. both consoles are usable), do a System Transfer instead.
This guide can potentially cause unexpected results if done wrong. Please ensure you read the steps carefully to prevent these unexpected results from happening.
Additionally, ensure you have read the following three warnings to have a full understanding of the potential risks of this guide.
Do NOT use a movable.sed from Bruteforce Movable as your system movable (in general, but especially not for this guide). Doing so may cause other issues with the system, and WILL result in a guaranteed brick if you uninstall CFW while using that movable. Always keep a backup of your original movable.sed if you do so.
If you have already done this guide at any time before the date 2024-08-11, then uninstalling CFW will brick your console, as FixupMovable is required to avoid crashing on stock firmware.
If this applies to you, you can fix stock firmware by booting into GodMode9, copying your movable.sed from 1:/private to the destination console's SD root, copying FixupMovable.py to the SD root, and then doing the instructions from Section IV onward on the destination console only.
Any games/savedata/themes/DSiWare that was already on the destination console's SD card will become inaccessible once the guide is completed - you will only be able to use the data transferred over from the source console. To access the destination console's data again, you must undo the moveover by replacing.
This guide has you extract the original versions of those files so you are able to undo it if you need to - do not lose those files.
If the above warning will cause issues for you and you are willing to take extra steps to avoid it, you can instead use ninfs to merge the source console's encrypted files onto the destination console, then rebuild title.db to make any merged games/apps appear.
However, note that even this method will not bypass the issues of using a Bruteforce Movable movable.sed.
The latest version of GodMode9 (the GodMode9 .zip file)
The latest version of FixupMovable (the FixupMovable.py file)
Instructions
Section I - Prep Work
Follow these instructions on the destination console only.
Power off your console and insert your SD card into your computer
Copy GodMode9.firm from the GodMode9 .zip to the /luma/payloads/ folder on your SD card
Copy the gm9 folder from the GodMode9 .zip to the root of your SD card
Copy FixupMovable.py to the root of your SD card
Create a folder named 3ds on the root of your SD card if it does not already exist
This folder stores homebrew applications and data; it is different from the Nintendo 3DS folder that the console automatically generates
Copy faketik.3dsx to the 3ds folder on the root of your SD card
Copy the source console's essential.exefs to the root of your SD card and rename it to old-essential.exefs
If you have the source console's movable.sed already in raw form, you can copy that file to the root of the SD card instead
Reinsert your SD card into your console
Section II - Backing up essential.exefs
If you skip this section and do not have any other backups, then you will be unable to undo the moveover and the destination console's movable.sed will be permanently lost.
Press and hold START, and while holding START, power on your console. This will launch GodMode9
Enter the [S:] SYSNAND VIRTUAL drive
Press A on essential.exefs to select it
Press A on Copy to 0:/gm9/out
If you see Destination already exists, press A on Overwrite file(s)
Press A to continue
Press B until you return to the drive list
The destination console's original essential.exefs file will be in sd:/gm9/out on its SD card. It is highly recommended to back up this file to a safe location.
Section III - Extracting movable.sed
Navigate into the drive [0:] SDCARD
Press A on old-essential.exefs, and select Mount as EXEFS image
If you instead copied movable.sed to the SD root, press Y on that file and skip to the next section
Find the file named movable inside the image mount, and press Y to copy it to the clipboard
Press B to exit from the image mount, then navigate back into the drive [0:] SDCARD
Press Y to paste movable in the root of the SD card
Press R+START to power off the console
Section IV - FixupMovable
If you are not on Windows, replace py -3 with python3 in all commands.
The commands in this section are case-sensitive. Enter them exactly as written, or there may be unintended consequences.
Insert the console's SD card into your PC
Open a file explorer window and navigate to the SD card's root
Rename movable to movable.sed
Hold ⇧ Shift and right-click anywhere in the folder's empty space, then click the option that opens a terminal, PowerShell, or Command Prompt
In this new window, enter the following commands one at a time:
py -3 -V
If this does not print the Python version, it is either not installed correctly, or the wrong command was used. Please read the note above.
py -3 FixupMovable.py movable.sed
After this, movable.sed should be exactly 288 bytes in size. If it isn't, try the command again
Eject the SD card and reinsert it into the console
Section V - Replacing movable.sed
Press and hold START, and while holding START, power on your console. This will launch GodMode9
Navigate into the drive [0:] SDCARD
Press Y to copy movable.sed to the clipboard
Press B to return to the drive list
Navigate into the drive [1:] SYSNAND CTRNAND, then enter the private folder
Press X on movable.sed and press A to confirm deletion
Unlock Writing to SysNAND (lvl1) when prompted, then input the given key combo
Press Y to paste the new movable.sed from the clipboard
Press B until you have returned to the drive list
Press R+A on the drive [1:] SYSNAND CTRNAND and select Fix CMACs for drive
Once this finishes, press START to reboot your console
Your console may act like it has just been formatted - this does not mean your data has been lost. If it does this, proceed normally through initial setup and get to the HOME Menu
Section VI - Reinstating Apps
Launch the Download Play application
Wait until you see the two buttons
Do not press either of the buttons
Press L+↓+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
Relaunch the Download Play application
Your console should load the Homebrew Launcher
Launch faketik from the list of homebrew
Wait until the process is completed
Press START to exit
Reboot your console
The moveover is complete. Congratulations for performing a complex procedure.