Modifying Nintendo 3DS firmware to install homebrew

3ds firmware homebrew
9 minutes, 51 seconds

Continuing with this obsession of mine to try and revive or repurpose old handheld consoles, I’ve put together this tutorial on how to modify the firmware of my old Nintendo 3DS so I can install homebrew programmes and games. This guide is based on the one from 3DS Hacks and I hope to simplify it as much as possible. A common question is whether hacking a 3DS linked to your Nintendo Network ID (NNID) will result in a ban. According to the available information, Nintendo has not banned accounts simply for owning a modified console, but there have been reports of bans for playing altered versions of games, although this does not guarantee that Nintendo will not adopt a stricter policy in the future. Personally, I use my Nintendo account on my 3DS and have not had any problems to date.

This guide works with all consoles in the Nintendo 3DS family (including 3DS, 3DS XL/LL, 2DS, New 3DS, New 3DS XL/LL and New 2DS XL/LL), regardless of region or firmware; for this tutorial, I have used a Nintendo 3DS XL and a computer running Windows 11. You can follow this guide as long as you can download files from the internet and copy them to your SD card, regardless of whether you’re using Windows, Linux, Mac, etc.

To follow this guide, you’ll need an SD card with a capacity of at least 2 GB; SD cards larger than 128 GB are not recommended due to known issues with custom themes and GBA/DS graphics. Following this guide isn’t a complicated process, but it could result in your console becoming bricked – proceed at your own risk. If you encounter any problems whilst following this guide, don’t panic – there are plenty of ways to get help! You can check the 3DS Hacks Pre-installation FAQs, or visit the Troubleshooting page. hacks.guide/troubleshooting.html) to find a solution, and if that doesn’t help, you can get personalised assistance on the Nintendo Homebrew Discord server.

CFW Verification

  1. Switch off your console.
  2. Hold down the (Select) button.
  3. Switch on your console whilst holding down the (Select) button. If you do not see a custom menu (the console simply boots to the HOME menu), you can proceed to the next section. If you see the Luma3DS setup screen or any other custom menu (e.g. GodMode9, Decrypt9WIP), STOP! You already have custom firmware! The only question left is whether you need to update it, but that’s another story we won’t cover here.

Checking the system version

  1. Launch the system settings on the console.
  2. Your system version will be displayed in the bottom right-hand corner of the top screen (for example, ‘Ver. 11.17.0-50U’).

Installing MSET9 CLI

  1. Download the latest version of MSET9 from this link.
  2. Insert the SD card into your computer.
  3. Copy everything from MSET9.zip to the root of your SD card, overwriting any existing files.
  4. Run the MSET9 script: on Windows, double-click MSET9-Windows.bat:
    • On macOS, double-click MSET9-macOS.command and enter your password if prompted.
    • On Linux, open a Terminal window, navigate to the root of the SD card using cd, then type python3 mset9.py and press Enter.
  5. On the script screen, select the number corresponding to your console’s model and version, then press Enter.
  6. In this submenu, select 1 and press Enter to start the MSET9 ID1 creation process.
  7. After reviewing the disclaimer, select 1 again and press Enter to accept it (if you receive an error, check the Troubleshooting and try again).
  8. The message ‘ID1 hack created’ will appear; press Enter to close the MSET9 script.
  9. Insert your SD card into your console (it will appear as though your 3DS has no user-installed data or applications on the HOME menu. This is normal. Your data will be available again in a later step).
  10. Switch on your console.
  11. Open Mii Maker and wait for your console to reach the Mii Maker welcome screen, then exit Mii Maker and return to the HOME menu. In the meantime, you may see a screen indicating that the necessary data is being created. Once you reach the normal Mii Maker screen, the data will already be in place. Exit Mii Maker and return to the HOME menu.
  12. Launch ‘System Settings’ and navigate to ‘Data Management → Nintendo 3DS → Software → Reset’. This will not delete any of your data.
  13. Switch off your console by pressing the power button and then tapping ‘Power Off’ on the lower screen.
  14. Insert the SD card into your computer again.
  15. Run the MSET9 script again.
  16. Enter the number corresponding to your console’s model and version, then press Enter.
  17. This screen should display ‘Current MSET9 state: Ready’. If the window says ‘Not ready – check MSET9 status for more details’, type 2 and press Enter to check the MSET9 status, then follow the instructions provided to resolve the issue.
  18. Once you have resolved the issue, type 0 and press Enter to close the script.
  19. Reinsert your SD card into your console.

Installing SafeB9SInstaller

  1. Switch on your console and make sure ‘System Settings’ is selected (if ‘System Settings’ is not selected, move the cursor over the ‘System Settings’ icon using the D-pad, switch off the console and switch it back on).
  2. Press (A) to start System Settings.
  3. Navigate to ‘Data Management → Nintendo 3DS → Additional Data’. Do not press any buttons or touch the screen.
  4. With the console STILL SWITCHED ON, and without pressing any buttons or touching the screen, remove the SD card from your console. The menu will update and state that no SD card is inserted.
  5. Insert the SD card into your computer.
  6. Run the MSET9 script.
  7. Type the number corresponding to your console’s model and version, then press Enter.
  8. In the MSET9 window, type 3 and then press Enter to inject MSET9. You should see ‘MSET9 successfully injected!’.
  9. Press Enter to close the MSET9 script.
  10. Reinsert your SD card into your console without pressing any buttons or touching the screen.
  11. If the exploit is successful, you will have launched SafeB9SInstaller. If a red screen appears or the console gets stuck on a loading screen, follow the troubleshooting guide.

Installing boot9strap

  1. When prompted, enter the key combination shown on the top screen to install boot9strap. If the bottom screen displays red text and you are not prompted to enter a key combination, follow this troubleshooting guide.
  2. Once complete, press (A) to restart your console.
  3. Your console should now have booted into the Luma3DS settings menu. This Luma3DS settings menu contains settings for the custom Luma3DS firmware. Leave these options at their default settings (do not tick or untick anything). If your console switches off when you try to turn it on, make sure you have copied boot.firm from Luma3DS.zip to the root of your SD card.
  4. Press (Home) to save and restart.

Removing MSET9

  1. Switch off your console.
  2. Insert the SD card into your computer.
  3. Run the MSET9 script.
  4. Type the number corresponding to your console’s model and version, then press Enter.
  5. In the MSET9 window, the current status should show as ‘Injected’. Type 4 and press Enter to remove the injected file. The message ‘Removed trigger file’ will appear.
  6. Type 5 and press Enter to remove MSET9. The message ‘MSET9 successfully removed!’ will appear.
  7. Press Enter to close the MSET9 script.
  8. Reinsert the SD card into the console.
  9. From this point onwards, the console will boot into Luma3DS by default. Luma3DS looks no different from the normal HOME menu. If the console has booted into the HOME menu, it is running custom firmware.

Installing Homebrew

The boot.firm file is what boot9strap launches after it has finished loading from NAND. In this case, we’re using Luma3DS by LumaTeam to patch the console and enable the running of homebrew software. From here on, the guide will show you how to back up critical system files and install some homebrew programmes. Most of these steps will be automated via a script that you’ll run on your console. The script will install the following applications:

  • FBI (installs CIA-format applications).
  • Homebrew Launcher Loader (launches the Homebrew Launcher).
  • Anemone3DS (installs custom themes).
  • Checkpoint (backs up and restores save files for 3DS and DS games).
  • ftpd (access your 3DS SD card wirelessly).
  • Universal-Updater (a homebrew app store for downloading homebrew to the 3DS via Wi-Fi).
  • GodMode9 (a multi-purpose tool capable of performing NAND and cartridge functions).

If you don’t want any of these applications, you can delete them after completing this guide by going to ‘System Settings -> Data Management -> Nintendo 3DS -> Software’. (GodMode9 cannot be deleted in this way and is required for other functions.) Let’s continue with the guide:

  1. Switch off your console.
  2. Insert the SD card into your computer.
  3. Copy the finalize.romfs file to the root of your SD card.
  4. Open the ‘luma’ folder on the SD card and create a folder called ‘payloads’ inside it, if it doesn’t already exist.
  5. Copy the x_finalize_helper.firm file to the ‘payloads’ folder.
  6. Reinsert the SD card into your console.
  7. Update your console by going to ‘System Settings’, then ‘Other Settings’ and selecting ‘System Update’ on the right. Updates whilst using boot9strap + Luma are safe. The updater may display a message saying ‘Your system is up to date’ instead of updating. This is normal if it is already up to date. If the update fails, set the DNS and Proxy to ‘Automatic’. If this does not work, follow this troubleshooting guide.
  8. Let’s extract the sound firmware. Press (L1) + (D-Pad down) + (Select) at the same time to open the Luma Rosalina menu. If one of these buttons does not work, download config.ini and place it in the ‘luma’ folder, replacing the existing file. This will change the key combination for the Rosalina menu to (X) + (Y).
  9. Select ‘Miscellaneous options’
  10. Select ‘Dump DSP firmware’
  11. Press (B) to continue.
  12. Select ‘Nullify user time offset’ (to synchronise your 3DS’s internal clock with the current time).
  13. Press (B) to continue.
  14. Press (B) to return to the Rosalina main menu.
  15. Press (B) to exit the Rosalina menu.
  16. Switch off your console.
  17. Hold down the (X) button and switch on the console whilst continuing to hold (X). This will launch the Setup Helper tool. If it boots to the HOME menu, your ‘payloads’ folder may be misspelt or in the wrong location.
  18. If you encounter an error, please refer to the troubleshooting page.
  19. If the Helper was successful, the console will boot into GodMode9.
  20. From this point onwards, you can access GodMode9 by holding down START whilst switching on your console.
  21. If you are prompted to back up essential files, press (A) to do so, then press (A) to continue once this is complete.
  22. If you are prompted to set the RTC date and time, press (A) to do so, then set the date and time and finally press (A) to continue.
  23. Press (Home) to bring up the actions menu.
  24. Select ‘Scripts…’.
  25. Select ‘Finish’. Follow the script’s instructions and answer any questions you are asked. Once the script displays ‘Setup complete!’, press (A) to switch off the device.
  26. Insert the SD card into your computer.
  27. Copy the ‘/gm9/backups/’ folder to a safe location on your computer. This folder contains backups of critical files. The two SysNAND files are the NAND backup and can be used to restore the console to a working state if it freezes due to a software issue. The ‘essential.exefs’ file contains your console’s system-specific files and can be used to recover its data in the event of a hardware failure.

With this, your Nintendo 3DS is now ready to run backups of your games, as well as homebrew software, so you can get the most out of this fantastic device, which Nintendo has decided to stop developing and has closed its e-shop for.

This was written without the use of Artificial Intelligence. Thank you for reading the post.