Tutorial
Updated
How to make a fast CFW-Installer ntrboot card
This guide is for advanced users only.
(Ya know, people that know their way around command prompt or terminal window.)
It's also a bit long and wordy. Not good for those with little patience.
All that the target stock 3DS needs is an SD card of decent size (at least 1.3ish GiB if you want to do a NAND backup) and an internet connection.
Interested? Continue on if you're feeling confident.
Disclaimer:
If you decide to try this, know that you are responsible for yourself and your actions.
I will not be held responsible for any action you take. This includes the potential for bricking of 3DS consoles and/or flashcarts.
Prerequisites:
Part 1: Getting some things
The first thing you want to do is download the following things.
(command reminder: git clone --recursive <url>)
Part 2: The self-extracting homebrew zip file
This part revolves around crafting the zip file (and the zip3dsfx) that will be downloaded from your webserver. If you don't have somewhere to host it, you should go set that up. Ideally you want something you can control and update if necessary.
First, decide what homebrew you think you want to include in this zip file. You are essentially making your own homebrew starter pack here. In fact, you can also just use the actual homebrew starter pack if you would like. All you need, at minimum, is a copy of the homebrew launcher, named boot.3dsx, in the root of the zip archive, since this will be extracted to the root of the SD card.
In addition, you will also be able to include anything else you want on the SD card in this zip file, provided you try to keep the zip file under about 10MiB. I recommend including your boot9strap payloads, such as GodMode9 and Ntrboot_Flasher in the typical luma chainloader path as well, but this is all up to you.
Once you've decided on the files, zip them up with your favorite archiver, generally Deflate at Ultra compression is a good way to compress it. Once you have it, name it archive.zip and copy it into data folder inside the zip3dsfx folder you cloned in Part 1.
Next, pull up a terminal or command prompt and do "make sfx_hard" in the zip3dsfx folder, to build the software, and it should be dumped into the /build/ folder as Homebrew.3dsx. You're gonna want to rename this to boot.3dsx and 7z it, and upload it to your webserver.
Part 3: Collecting Items for the embedded VRAM
So, the next step leads right out of the one from Part 2, you should now have a url for the 7z file (containing the zip3dsfx you compiled, named boot.3dsx) you uploaded to your webserver. Now you need to copy it and open the config.json you downloaded earlier. You're going to need to paste it in the URL field over the placeholder I stuck there. Simple enough. Save the file and we'll get on with things.
The next step is to gather the necessary files for the embedded vram you need to put together to go with the godmode9 script, and place them inside the data folder of your cloned copy of the GodMode9 source code- which will be packed into a vram.tar file when you build the software later.
So, with that last file, that makes a total of 13 files.
Part 4: Building a customized GodMode9
This part is the most integral thing, building the firm you will be flashing to your flashcart.
GodMode9 offers several options for ways to customize your build of the software. Today we will be taking advantage of these to create a build of GodMode9 that runs the included autorun.gm9 script and contains needed files for said script embedded within.
Before moving on, It's worth noting that you can pretty easily customize the autorun.gm9 script as long as you're careful and have at least a bit of experience with shell or bash scripting- as gm9 script is quite similar. I've also commented my script quite a bit, which should help.
An example customization would be to skip performing a NAND backup and sha256 filedump to speed up the install, like seen in the video above. You may disable it by adding a comment symbol (#) at the start of the line with the instruction that copies the backup, or by removing the section from the script outright.
Once you're done tweaking the script to your liking (or not touching it at all, which is fine too) with all 13 files in this data folder, you may return up a directory to the GodMode9 folder and open your terminal or command prompt here- and/or open one and navigate it to this path.
In order to build this firm, you will of course, need firmtool, which is installed with python. These were listed in the prerequisites section. You may also need to update firmtool if you already had it, as it is updated somewhat regularly.
You will want to run the following command to build GodMode9 with some specific flags.
"make NTRBOOT=1 SCRIPT_RUNNER=1 AUTO_UNLOCK=1 FIXED_BRIGHTNESS=255"
Once it's done building, you should be able to open the /output/ folder and find a handful of files.
Part 5: Flashing the Firm
The two important files here are
These two files you must rename as "boot9strap_ntr.firm" and "boot9strap_ntr.firm.sha" and place upon the SD card of your 3DS in the ntrboot folder. This will allow you to flash them to suitable flashcarts using ntrboot_flasher.
From here, it's a simple matter of launching ntrboot_flasher, making sure your flashcart is backed up, and flashing ntrboot to the flashcart. It's worth noting that this payload will not work in the event that the flashcart is unable to actually fit the payload on it.
Some supported flashcarts for this have absurdly limited storage space, such as the TTDS line- which typically has only about 64KiB of flashable storage. Unfortunately, if you flashcart is unsupported due to not having enough space for the firm, there's not much you can do.
I can confirm personally that this works fine with the Acekard2i and R4i Gold 3DS RTS, the latter of which was shown in the demo I did at the start of the thread.
Part 6: The fruits of your labors
If you did everything right, this flashcart will hack any 3DS you want in only a few minutes. Here's how you use it.
Afterword and FAQ:
This thread/guide is provided as is with no guarantee for support and no guarantee that this will even work. (though it probably does for the most part.) Here's some cool people I'd like to thank: @AnalogMan @ihaveamac @Wolfvak @d0k3
I will not be uploading any pre-built/compiled files and I actively discourage anyone participating in this thread from doing so. This is intended to be built and used personally, not publically distributed. If you just want to hack your 3DS, use http://3ds.guide.
Thanks for reading, and if this helped you or was of use to you, cool. I put in a lot of time writing this thread.
(Ya know, people that know their way around command prompt or terminal window.)
It's also a bit long and wordy. Not good for those with little patience.
All that the target stock 3DS needs is an SD card of decent size (at least 1.3ish GiB if you want to do a NAND backup) and an internet connection.
Interested? Continue on if you're feeling confident.
Disclaimer:
If you decide to try this, know that you are responsible for yourself and your actions.
I will not be held responsible for any action you take. This includes the potential for bricking of 3DS consoles and/or flashcarts.
Prerequisites:
- python (3.X)
- git (doesn't really matter what version, but you should have this obviously)
- devkitpro with devkitarm installed (latest version)
- firmtool installed (latest version, installed using the above python)
- A text editor you are comfortable with.
- Some sort of internet web host for serving a file. (This needs to be direct linkable, something like mega.nz won't work.)
- A 3DS already outfitted with boot9strap and ntrboot_flasher.
- A flashcart capable of ntrboot (with at least 1MiB flashable, the amount of flashable varies. Ex: TTDS is too small, Ak2i and R4i Gold 3DS RTS work fine.)
- That perfect aeskeydb mentioned in the GodMode9 readme.
Part 1: Getting some things
The first thing you want to do is download the following things.
- The latest boot9strap (just the regular one, not ntr or devkit)
- The latest stable Luma3DS
- MultiUpdater 3.2.1
- This GM9 autorun script
- Example Default Luma Configurations
- secret_sector.bin (you can get that from somewhere on this page)
- aeskeydb.bin (you can also get that from somewhere on this page)
- This example config.json for MultiUpdater 3.2.1 (right click save as)
(command reminder: git clone --recursive <url>)
Part 2: The self-extracting homebrew zip file
This part revolves around crafting the zip file (and the zip3dsfx) that will be downloaded from your webserver. If you don't have somewhere to host it, you should go set that up. Ideally you want something you can control and update if necessary.
First, decide what homebrew you think you want to include in this zip file. You are essentially making your own homebrew starter pack here. In fact, you can also just use the actual homebrew starter pack if you would like. All you need, at minimum, is a copy of the homebrew launcher, named boot.3dsx, in the root of the zip archive, since this will be extracted to the root of the SD card.
In addition, you will also be able to include anything else you want on the SD card in this zip file, provided you try to keep the zip file under about 10MiB. I recommend including your boot9strap payloads, such as GodMode9 and Ntrboot_Flasher in the typical luma chainloader path as well, but this is all up to you.
Once you've decided on the files, zip them up with your favorite archiver, generally Deflate at Ultra compression is a good way to compress it. Once you have it, name it archive.zip and copy it into data folder inside the zip3dsfx folder you cloned in Part 1.
Next, pull up a terminal or command prompt and do "make sfx_hard" in the zip3dsfx folder, to build the software, and it should be dumped into the /build/ folder as Homebrew.3dsx. You're gonna want to rename this to boot.3dsx and 7z it, and upload it to your webserver.
Part 3: Collecting Items for the embedded VRAM
So, the next step leads right out of the one from Part 2, you should now have a url for the 7z file (containing the zip3dsfx you compiled, named boot.3dsx) you uploaded to your webserver. Now you need to copy it and open the config.json you downloaded earlier. You're going to need to paste it in the URL field over the placeholder I stuck there. Simple enough. Save the file and we'll get on with things.
The next step is to gather the necessary files for the embedded vram you need to put together to go with the godmode9 script, and place them inside the data folder of your cloned copy of the GodMode9 source code- which will be packed into a vram.tar file when you build the software later.
- aeskeydb.bin (you can also get that from somewhere on this page)
- autorun.gm9 (from the downloads above)
- boot.firm (from the Luma3DS stable download)
- boot.3dsx (from MultiUpdater 3.2.1)
- boot9strap.firm (from the latest regular boot9strap download)
- config.json (from a moment ago)
- secret_sector.bin (you can get that from somewhere on this page)
So, with that last file, that makes a total of 13 files.
Part 4: Building a customized GodMode9
This part is the most integral thing, building the firm you will be flashing to your flashcart.
GodMode9 offers several options for ways to customize your build of the software. Today we will be taking advantage of these to create a build of GodMode9 that runs the included autorun.gm9 script and contains needed files for said script embedded within.
Before moving on, It's worth noting that you can pretty easily customize the autorun.gm9 script as long as you're careful and have at least a bit of experience with shell or bash scripting- as gm9 script is quite similar. I've also commented my script quite a bit, which should help.
An example customization would be to skip performing a NAND backup and sha256 filedump to speed up the install, like seen in the video above. You may disable it by adding a comment symbol (#) at the start of the line with the instruction that copies the backup, or by removing the section from the script outright.
Once you're done tweaking the script to your liking (or not touching it at all, which is fine too) with all 13 files in this data folder, you may return up a directory to the GodMode9 folder and open your terminal or command prompt here- and/or open one and navigate it to this path.
In order to build this firm, you will of course, need firmtool, which is installed with python. These were listed in the prerequisites section. You may also need to update firmtool if you already had it, as it is updated somewhat regularly.
You will want to run the following command to build GodMode9 with some specific flags.
"make NTRBOOT=1 SCRIPT_RUNNER=1 AUTO_UNLOCK=1 FIXED_BRIGHTNESS=255"
Once it's done building, you should be able to open the /output/ folder and find a handful of files.
Part 5: Flashing the Firm
The two important files here are
- GodMode9_ntr.firm
- GodMode9_ntr.firm.sha
These two files you must rename as "boot9strap_ntr.firm" and "boot9strap_ntr.firm.sha" and place upon the SD card of your 3DS in the ntrboot folder. This will allow you to flash them to suitable flashcarts using ntrboot_flasher.
From here, it's a simple matter of launching ntrboot_flasher, making sure your flashcart is backed up, and flashing ntrboot to the flashcart. It's worth noting that this payload will not work in the event that the flashcart is unable to actually fit the payload on it.
Some supported flashcarts for this have absurdly limited storage space, such as the TTDS line- which typically has only about 64KiB of flashable storage. Unfortunately, if you flashcart is unsupported due to not having enough space for the firm, there's not much you can do.
I can confirm personally that this works fine with the Acekard2i and R4i Gold 3DS RTS, the latter of which was shown in the demo I did at the start of the thread.
Part 6: The fruits of your labors
If you did everything right, this flashcart will hack any 3DS you want in only a few minutes. Here's how you use it.
- Insert the flashcart in the 3ds you want to hack.
- Place the magnet on the sleep switch spot or switch sleep mode on.
- Hold X+Start+Select+Power until the console boots into the script.
- Press A when prompted to unlock writing to SysNAND, and again when it double confirms that's what you want to do.
- Wait for the console to reboot.
- You should be rebooted into the 3DS's Home Menu. Verify the console is online. (If it is not, go connect it to the internet)
- Open the application you configured Rosalina to open Homebrew Launcher as.
- Press A to download the file and extract you uploaded to the internet.
- Press Start to exit the downloader and run the zip3dsfx you made, extracting the files to the SD card.
- Once it's finished extracting, press any button to exit the zip3dsfx to exit into what is now the Homebrew Launcher, fully stocked with whatever homebrew you included.
Afterword and FAQ:
This thread/guide is provided as is with no guarantee for support and no guarantee that this will even work. (though it probably does for the most part.) Here's some cool people I'd like to thank: @AnalogMan @ihaveamac @Wolfvak @d0k3
I will not be uploading any pre-built/compiled files and I actively discourage anyone participating in this thread from doing so. This is intended to be built and used personally, not publically distributed. If you just want to hack your 3DS, use http://3ds.guide.
Thanks for reading, and if this helped you or was of use to you, cool. I put in a lot of time writing this thread.
Last edited by CheatFreak47,