Unlaunch.dsi is the first ever [released] bootcode exploit for DSi consoles.
It's gaining control with full SCFG_EXT access rights immediately after power-up (before even starting the launcher).
Installation requires a working DSiware exploit with SD/MMC access, or a hardmod.
The exploit works with all retail DSi models, regardless of region and firmware version.
Once when installed, it will start the file 'bootcode.dsi' from SD card (if present).
Or, otherwise, it will resume booting nintendo's launcher (with disturbing healthsafety and bootmusic disabled, and removed RSA, whitelist and region checks).
Before Installation - make a backup
Make a backup of your eMMC chip. If you have a DSiware exploit, use the "Backup DSi NAND" function in fwtool.nds, for example. With hardmod, just dump the eMMC chip. Either way, backup the unmodified file in a safe place, you can use it to restore the console to working state if something goes wrong (if the console gets totally bricked then you'll need a hardmod to do this).
The eMMC contains some console-specific files with RSA signatures - if that files get lost then you've a problem - there is no way to replace them by using equivalent files from another console.
Automatic Installation (requires a working DSiware exploit)
Installation is easy if you have a console with Flipnote installed (the game came pre-installed on many consoles, and it was also available as free download when the DSi shop was still online). However, some people may have deleted or missed downloading it, and it wasn't released in CHN/KOR regions. Anyways, if you have flipnote, use this exploit:
Flipnote Lenny or whatever it is called flipnote exploit for USA/EUR/AUS/JAP regions (requires https and youtube)
If you already have another exploit like sudokuhax then you could use that as well. There's also another flipnote exploit called ugopwn in some webforum (for USA region). All DSiware exploits are conventionally loading 'boot.nds' from SD card, so rename unlaunch.dsi to that name, then select Install Now in unlaunch (first making the backup, of course).
Manual Installation (via hardmod)
This requires soldering four wires to DSi mainboard (eMMC signals CLK, CMD, DATA0, GND), attach the wires to a SD/MMC card reader, and use some tool like HxD or Win32diskimager to dump the eMMC content to a 240Mbyte file.
Next, you will need the CID and Console ID for decrypting the eMMC image. There are several to obtain that values, and it's also possible to brute-force one (or both) values.
- Decrypt the eMMC image using a tool like TWLtool (requires 64bit windows; there's also an inoffical 32bit built)
- Mount it to your OS using OSFMount or the like.
- Locate 520-byte 'title.tmd' file in the following folder: 'title\00030017\484E41xx\content' (the 'xx' varies per region), append 81400-byte 'unlaunch.dsi' at the end of the tmd file (tmd filesize is then 81920 bytes).
- Set the Read-only attribute for all files in above folder (else some DSi system tools may automatically brick your console by the deleting all files in the modified folder).
- Re-encrypt the eMMC image.
- Alternately, if you want to avoid the decryption, mounting, appending, protecting, re-encryption steps:
- Add a no$gba footer with CID and Console ID to the eMMC image, and run unlaunch.dsi in no$gba (with the eMMC named dsi-1.mmc)
- Note: Don't forget to enable DSi emulation, you may also need some further files like DSi BIOS rom images.
Finally, copy the modified eMMC image back to the console.
Hotkeys
Boot hotkeys can be changed by clicking OPTIONS in unlaunch filemenu. Button A+B are fixed, and will bring up the Unlaunch filemenu. Buttons None, A, B, X, Y can be assigned to anything you want, for example:
- Wifiboot (useful for developers)
- Unlaunch filemenu, or other homebrew filemenues, or official launcher
- DS Cartridge slot, or your favorite DSiware title(s)
Older unlaunch version did have fixed hotkeys:
- None: Start sd:\bootcode.dsi (if present)
- Button A: Start original launcher and show unlaunch version number (default when bootcode.dsi not present)
- Button B: Start ROM cartridge
- Button X: Start sd:\bootthis.dsi (instead of bootcode.dsi)
- Button Y: Skip Wifi init
- Dpad Up: Show red/blue/green to indicate relauncher bootstages
- Dpad Down: Do NOT invalidate cache on startup of installer
Bootable Files
The bootcode.dsi (and bootthis.dsi) can be general nds/dsi files of following type:
- Relative small self-contained titles (that are solely relying on the bootcode areas defined in their cart headers, without trying to load extra data)
- Homebrew NDS/DSi titles that are designed to load extra data from DSi SD/MMC slot (in many cases this may require something called "dldi" or so) (if it's a homebrew DSiware title then it should preferably use the Device List).
- Homebrew DSiware titles that access extra data by using the filenames from the incoming the Device List
- Not legit: Commercial DSiware titles (unless you have purchased them from DSi Shop when the shop was still online; but I think you didn't miss anything important if you didn't buy them)
- Not working: Games that load extra data from ROM cartridge slot instead of from SD/MMC slot (eg. ROM-images from commercial games)
For DSiware, the Device List contains the names of the executable and public/private save files. With unlaunch, that names will be sdmc:/bootcode.dsi, sdmc:/bootcode.pub, sdmc:/bootcode.prv (or bootthis.xxx instead bootcode.xxx). The .pub/.prv files must exist (if the title is using them), and they must have the correct filesize (as specified in the cart header of the title).
SD Cards
Unlaunch supports SD/SDHC cards (max 32GB, preformatted as FAT16/FAT32). SDXC cards (above 32GB, preformatted as ExFAT) are not supported, neither by Unlaunch, nor by DSiware in general.
Reformatting SD/SDHC cards isn't recommended, or it should be done only with dedicated SD card formatting tools (that maintain cluster size matched to physical sector size). However, reformatting SDXC cards may help to get rid of the weird ExFAT format.
I would be glad to receive any non-working SD/MMC cards, so I could either support them or at least add some meaningful error message for such cards.