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. :unsure:

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.
All set? Ok good. I won't be providing help for setting these up, either. That stuff is basic, if you can't sort it out on your own, this thread probably isn't for you.

Part 1: Getting some things
The first thing you want to do is download the following things.
The second thing you want to do is use git to clone the following repos to wherever you feel like on your machine.
(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)
Lastly, you can either provide 6 Luma3DS configuration files for each of the 6 console regions by making them yourself, or use the example ones I've provided above. The example configurations come with the Enable game patching, Show NAND or user string in System Settings, and Show GBA boot screen in patched AGB_FIRM settings all turned on, with the hb. title set to be each region's specific Download Play app.

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
GodMode9_ntr.firm specifically should be about 800KiB to 1MiB in size roughly, which about what you want.

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.
  1. Insert the flashcart in the 3ds you want to hack.
  2. Place the magnet on the sleep switch spot or switch sleep mode on.
  3. Hold X+Start+Select+Power until the console boots into the script.
  4. Press A when prompted to unlock writing to SysNAND, and again when it double confirms that's what you want to do.
  5. Wait for the console to reboot.
  6. 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)
  7. Open the application you configured Rosalina to open Homebrew Launcher as.
  8. Press A to download the file and extract you uploaded to the internet.
  9. Press Start to exit the downloader and run the zip3dsfx you made, extracting the files to the SD card.
  10. 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.
The entire process can take about a 2 minutes if you removed the nand backup section, maybe an extra 8 to 15 minutes longer if not.

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. :yay3ds:
 
Last edited by CheatFreak47,

OrGoN3

Well-Known Member
Member
Joined
Apr 23, 2007
Messages
3,241
Trophies
1
XP
3,259
Country
United States
How would one go about creating a flashable ntrboot payload that includes hbmenu2, luma3ds, but does not connect to the internet. Is there a way to include files on the microSD card of the Ak2i and have them used in the process to cut down in size and not require the internet?
 

Cuphat

Well-Known Member
Member
Joined
May 16, 2011
Messages
1,295
Trophies
1
XP
1,223
Country
United States
How would one go about creating a flashable ntrboot payload that includes hbmenu2, luma3ds, but does not connect to the internet. Is there a way to include files on the microSD card of the Ak2i and have them used in the process to cut down in size and not require the internet?
The only way to access the microSD of the AK2i is to manually swap it with the SD card of the 3DS. That method is used here if you want some idea of how that'd work.
 

CheatFreak47

Catgirl Expert
OP
Member
Joined
Oct 11, 2011
Messages
1,574
Trophies
2
Age
28
Location
Michigan, USA
XP
2,773
Country
United States
How would one go about creating a flashable ntrboot payload that includes hbmenu2, luma3ds, but does not connect to the internet. Is there a way to include files on the microSD card of the Ak2i and have them used in the process to cut down in size and not require the internet?
The only way to access the microSD of the AK2i is to manually swap it with the SD card of the 3DS. That method is used here if you want some idea of how that'd work.
Additionally, it may be possible to include more files in the GodMode9 embedded and script out actions to perform with said files in the autorun script, but the firm must not exceed 3MiB in size, and even then, not all flashcarts can support a 3MiB sized firm. The R4i Gold 3DS RTS for example, can only handle firms of up to around 1.2MIB before ntrboot simply won't launch from the cart anymore, until you reflash it with a smaller one.

I've heard the Acekard2i is just a tad better for that sort of thing but, I wouldn't know to be honest.
 

CheatFreak47

Catgirl Expert
OP
Member
Joined
Oct 11, 2011
Messages
1,574
Trophies
2
Age
28
Location
Michigan, USA
XP
2,773
Country
United States
@CheatFreak47 might it be noted that you actually don't need 3dstool at all?
Oop, looks like that link slipped through when I was updating the post. Fixed it now.
Old compiles of GodMode9 used a vram romfs image which you needed 3dstool to make, but this is no longer the case.
 
  • Like
Reactions: SirNapkin1334

SirNapkin1334

Renound Aritst
Member
Joined
Aug 20, 2017
Messages
1,665
Trophies
1
XP
975
Country
United States
Oop, looks like that link slipped through when I was updating the post. Fixed it now.
Old compiles of GodMode9 used a vram romfs image which you needed 3dstool to make, but this is no longer the case.
Yes, I thought that was why. I read it once when you first posted it, but never really got around to it when I had problems with zip3ds (using a new computer now). It's a good guide.
 

MarioMasta64

hi. i make batch stuff and portable shiz
Member
Joined
Dec 21, 2016
Messages
2,297
Trophies
0
Age
26
Website
github.com
XP
2,096
Country
United States
with MultiUpdater i get an error: Download Failed! Error: 0xd8a0a046
config:
Code:
{
    "entries": [
        {
            "name": "Download Required Content",
            "url": "http://mariomast64.me/aio3dsx/boot.zip",
            "inarchive": "boot.3dsx",
            "path": "/boot.3dsx"
        }
    ]
}
 
Last edited by MarioMasta64,

SirNapkin1334

Renound Aritst
Member
Joined
Aug 20, 2017
Messages
1,665
Trophies
1
XP
975
Country
United States
@CheatFreak47 you should remove the recommendation for GitHub pages since soon they will not support TLS1.0, and without that the 3DS can't download files from them.
TL;DR, on February 22, from then on 3DS's can't download stuff from GitHub.
 
  • Like
Reactions: CheatFreak47

Onoitsu2

Member
Newcomer
Joined
Dec 2, 2016
Messages
10
Trophies
0
Age
39
XP
79
Country
United States
with MultiUpdater i get an error: Download Failed! Error: 0xd8a0a046
config:
Code:
{
    "entries": [
        {
            "name": "Download Required Content",
            "url": "http://mariomast64.me/aio3dsx/boot.zip",
            "inarchive": "boot.3dsx",
            "path": "/boot.3dsx"
        }
    ]
}

You seem to be missing the a on Mariomast(a)64.me
 

Windylacine

Well-Known Member
Member
Joined
Apr 15, 2016
Messages
381
Trophies
0
Age
33
XP
259
Country
Denmark
Is it just me or does anyone else have issues with compiling godmode9?
And What do I have to do with Vram0.tar?
I tried to put it(VRAM0.tar) into the data folder and complied GM9, flashed into my AcK2i flashcard and test it on my N3DS it just shuts down immediately upon the boot.
 
Last edited by Windylacine,

CheatFreak47

Catgirl Expert
OP
Member
Joined
Oct 11, 2011
Messages
1,574
Trophies
2
Age
28
Location
Michigan, USA
XP
2,773
Country
United States
Is it just me or does anyone else have issues with compiling godmode9?
And What do I have to do with Vram0.tar?
I tried to put it(VRAM0.tar) into the data folder and complied GM9, flashed into my AcK2i flashcard and test it on my N3DS it just shuts down immediately upon the boot.

You may want to re-read this line.
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.
You want to place the raw files in the data folder, GodMode9 handles packing them into a tar and such as part of the build process.
I haven't done this in a while so I may go through it again and make sure it all works but unless GodMode9 has changed by a huge amount in the time since I last updated it, everything should work/build okay.

Edit: I went ahead and followed my own guide here again from scratch and everything built fine and worked, so yeah, it's all A-OK.


Great tutorial and a great member.

CheatFreak has personally helped me on a 1 to 1 level install CFW, A9LH, B9S, and helped me region change 2 3DSs.
Hey, thanks man, I appreciate that a lot. :grog:
 
Last edited by CheatFreak47,

MarioMasta64

hi. i make batch stuff and portable shiz
Member
Joined
Dec 21, 2016
Messages
2,297
Trophies
0
Age
26
Website
github.com
XP
2,096
Country
United States
please update "make NTRBOOT=1 SCRIPT_RUNNER=1 AUTO_UNLOCK=1 FIXED_BRIGHTNESS=15" to say "make NTRBOOT=1 SCRIPT_RUNNER=1 AUTO_UNLOCK=1 FIXED_BRIGHTNESS=255" latest gm9 builds will fail unless you do this since it now has 255 values instead of 15 (actually it seems you have to first run it without the brightness part before you can actually set a brightness but ok)

also on a side note ntrboot_flasher does not like alot of the r4 3ds gold <insert year> carts, 0.4.0 should work fine for these (takes forever tho, but works)

also latest luma is not working with any of my o3ds systems with ntrboot (v10.0.1) i am like 95% sure since the system would *pop* and shut off until i switched out v10.0.1 with 9.1

anyways after exactly 13 months i finally am updating the files on the site (im gonna retry building with latest gm9 first now that i got it building correctly and sorta troubleshooted problems i shouldnt have so files are currently not correct on the site yet in fact the uploaded one right now is broke)

update: https://github.com/d0k3/GodMode9/commit/3c8fe0f69d4f4bdad0c57a13cf6422ac8e818529 (latest atm) isnt building right (o3ds turns back off) so im sticking to ol' reliable now (https://github.com/d0k3/GodMode9/commit/03d1255aaa7d059090e246f67cb2b68028e37468) i dont know where builds just didnt work for o3ds using ntrboothax (possibly all systems) and im not goind to find out so thats just how its going to be

also yea it took a long little while to figure all this out lol (finally got a build made that worked)

edit: yea, its gonna be awhile on that somehow i messed up and deleted the wrong file so i have to remake it now.. ;( im lazy but ill make a new comment when its done
rbRHZYN.png
 
Last edited by MarioMasta64,
  • Like
Reactions: CheatFreak47

CheatFreak47

Catgirl Expert
OP
Member
Joined
Oct 11, 2011
Messages
1,574
Trophies
2
Age
28
Location
Michigan, USA
XP
2,773
Country
United States
please update "make NTRBOOT=1 SCRIPT_RUNNER=1 AUTO_UNLOCK=1 FIXED_BRIGHTNESS=15" to say "make NTRBOOT=1 SCRIPT_RUNNER=1 AUTO_UNLOCK=1 FIXED_BRIGHTNESS=255" latest gm9 builds will fail unless you do this since it now has 255 values instead of 15 (actually it seems you have to first run it without the brightness part before you can actually set a brightness but ok)

also on a side note ntrboot_flasher does not like alot of the r4 3ds gold <insert year> carts, 0.4.0 should work fine for these (takes forever tho, but works)

also latest luma is not working with any of my o3ds systems with ntrboot (v10.0.1) i am like 95% sure since the system would *pop* and shut off until i switched out v10.0.1 with 9.1

anyways after exactly 13 months i finally am updating the files on the site (im gonna retry building with latest gm9 first now that i got it building correctly and sorta troubleshooted problems i shouldnt have so files are currently not correct on the site yet in fact the uploaded one right now is broke)

update: https://github.com/d0k3/GodMode9/commit/3c8fe0f69d4f4bdad0c57a13cf6422ac8e818529 (latest atm) isnt building right (o3ds turns back off) so im sticking to ol' reliable now (https://github.com/d0k3/GodMode9/commit/03d1255aaa7d059090e246f67cb2b68028e37468) i dont know where builds just didnt work for o3ds using ntrboothax (possibly all systems) and im not goind to find out so thats just how its going to be

also yea it took a long little while to figure all this out lol (finally got a build made that worked)
rbRHZYN.png
Updated that, glad you got it working, but I did say this was for advanced users. :P
If you can't get GM9 to build an advanced user is expected to sort that out, which you did, good job!
 

MarioMasta64

hi. i make batch stuff and portable shiz
Member
Joined
Dec 21, 2016
Messages
2,297
Trophies
0
Age
26
Website
github.com
XP
2,096
Country
United States
Updated that, glad you got it working, but I did say this was for advanced users. :P
If you can't get GM9 to build an advanced user is expected to sort that out, which you did, good job!
update to this: i ended up deleting all the files however i recovered them fine so that was good and i tested out my build and it seems to have worked perfectly, on another note the luma configs do not seem to work.

btw is there any tool or command to undo making a firm file? (in reverse file.firm -> data files) that would make this alot easier (i know i should save .tar but i did a dumb.) i tried firmtool but it gives me section0.bin section1.bin etc... like i know what these files are (romfs exefs etc...) but not how to handle them

on another note something to know is that multiupdater (at least v3.2.1 (the only one before it bloated hugely)) does not like big .7z files (big being (im like 90% sure on this) over 15 or 16mb) it will flip out over it so im now working on splitting up the updater sections while i use my old .7z file and then add a config and a multi-updater to a minimalist build (which is better anyways tbh) im thinking either per app, per category, or both (not sure yet)
 
  • Like
Reactions: CheatFreak47

Frantik

New Member
Newbie
Joined
Jul 28, 2022
Messages
2
Trophies
0
Age
30
Location
Quilpue
XP
28
Country
Chile
is this still a valid tutorial? I'm trying to revive an original small 3ds with a dead sd card. My plan is to boot from the flashcart
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • Julie_Pilgrim @ Julie_Pilgrim:
    the internet
  • Julie_Pilgrim @ Julie_Pilgrim:
    @Psionic Roshambo i have 16 gb in my pc and i run into issues with ram more than i'd like to admit
  • HiradeGirl @ HiradeGirl:
    I got only 8GB of RAM. But I want 32GB.
  • Sonic Angel Knight @ Sonic Angel Knight:
    Time to just download more ram
  • K3Nv2 @ K3Nv2:
    Yeah search Google
  • Sonic Angel Knight @ Sonic Angel Knight:
    Or, I also heard that if you use flash memory, it can act as more "RAM" at least windows tell me when I stick a flash drive into it.
  • Veho @ Veho:
    It can act as a swap drive but that isn't more RAM, it's slooow.
  • K3Nv2 @ K3Nv2:
    I wish we could have 1Gbps external storage by now
  • K3Nv2 @ K3Nv2:
    Like for micro
  • Veho @ Veho:
    New Myoo.
  • SylverReZ @ SylverReZ:
    @Veho, Yooo noice
  • SylverReZ @ SylverReZ:
    Looks like a Famicom handheld
  • Veho @ Veho:
    Yeah, they were going for that.
  • Veho @ Veho:
    It's not very good though.
  • Veho @ Veho:
    I'm watching the review, the emulators it uses suck bawls.
  • Veho @ Veho:
    Software update might improve it.
  • Psionic Roshambo @ Psionic Roshambo:
    Or maybe someone will make like Emulation Station for it or something?
  • Veho @ Veho:
    That counts as a software update :tpi:
    +1
  • OctoAori20 @ OctoAori20:
    Ello
  • K3Nv2 @ K3Nv2:
    I can think of the design teams process another joystick and no audio or a joystick and mono audio
  • Veho @ Veho:
    "You think we can just put the speakers at the top
    ?" "NO!"
    +1
  • K3Nv2 @ K3Nv2:
    Pft stereo speakers you're fired
    +1
    K3Nv2 @ K3Nv2: Pft stereo speakers you're fired +1