Tutorial
Updated
Update 3DS 8.1 to 9.x
Updating Sysnand 8.1
Disclaimer: This guide is a WIP. I may have forgotten something. I'm also not responsible for anyone who bricks their 3DS, or anything that happens to it really.
The 3DS Firmware version 8.1 is the launch version for N3DS. Many people who are on this FW are at 8.1.0-0x, a version with no web browser. The payloads for Ninjhax/Ironhax/Browserhax ect, requires the browser to gain access. Furthermore, most CFW for an exploitable N3DS require one of the aforementioned hacks.
Originally Nintendo hosted everything needed to update system NAND on their servers, however those files have since been removed. This means in order to update, you need to host these files yourself.
If you are on 8.1 and do have a browser you can still update via this method. If you are on O3DS I have no idea.
Preparation
- N3DS on 8.1
- Cubic Ninja
- 9.0-9.2 System Update Files (in .cia)
- NTR CFW v2 or v3 (Github) (Legacy install, do not use .cia)
- NTR Debugger
- 3ds-private-update-server.zip
- Server to host PHP (5.x or higher) files (can be done on local computer, will explain)
- Node.js executable file
Before starting you should clear any pending system updates, just in case.
Install NTR CFW
Run Cubic Ninja and navigate to the QR code function. Scan the provided QR code in the NTR CFW download to install it to the savegame.
Web Server
If you are on Windows and want to setup a local server, download WAMP or something similar. If you are using another OS there are alternatives.
Once the server is installed, make sure you can access it via local IP (like 192.168.0.x). In order to do this with WAMP, you need to edit httpd.conf. Click the green WAMP icon in the systems tray, navigate to the folder that says "Apache" and click httpd.conf. Find the text "Deny from all" and change it to "Allow from all". Now restart WAMP.
You should now see info when navigating to your local IP in the web browser (for example: http://192.168.1.100 ).
Make sure the contents of 3ds-private-update-server.zip are extracted somewhere as well (preferably C:\wamp\www\3dsupdate\).
1. Unpack Update Files
Place the .cia files of the system update you chose (should be 9.0, 9.1, or 9.2) inside a sub-folder named "updates" of wherever you extracted 3ds-private-update-server.zip.
Move node.exe and the file "CdnCiaUnpack.js" to the "updates" folder as well.
Next, open a command prompt and "cd" to the updates folder and type "node.exe CdnCiaUnpack.js". Alternatively you can drag the CdnCiaUnpack.js file and drop it onto node.exe. If done correctly it should have generated a file called "GetSystemUpdate.partial.xml". This file should not be empty. Move this file outside of the "updates" directory, to the same directory as index.php.
2. Host Update Files
Now move the folder containing index.php, all the .xml files, and "updates" directory, to the /www/ of where you installed WAMP (should be C:\wamp\www). I recommend moving it to somewhere like C:\wamp\www\3dsupdate\.
You should now see some text when viewing that folder in the browser (like http://192.168.1.100/3dsupdate/)
The first 6 lines of index.php can be configured. If you are having trouble try changing the $ServerPort.
You should also disable error reporting by editing index.php and typing "error_reporting(0);" on the second line (or anywhere in the <?php tag). If you have PHP 5.x you will most likely have to do this step.
3. Update SysNAND
Run Cubic Ninja and launch NTR CFW through it.
Replace 192.168.1.100 with your local ip / server address. Also make sure you can view the index.php link described in the commands below.
Run NTR Debugger and type in each command one by one, waiting for each one to say "Finished".
connect('192.168.1.100', 80)
listprocess()
write(0x15E424, tuple(map(ord, "http://192.168.1.100/3dsupdate/index.php\0")), pid=0x25)
write(0x15E0EC, tuple(map(ord, "http://192.168.1.100/3dsupdate/index.php\0")), pid=0x25)
write(0x15E463, tuple(map(ord, "http://192.168.1.100/3dsupdate/index.php\0")), pid=0x25)
Now go to your system settings and update your firmware like normal.
You can see this process through the video below.
Once finished, or if something goes wrong, you can view the log file the script generates.
Credits
- Syphurith for update server files.
- Guy who made video (forgot name)
- cell9 for NTR stuff
Last edited by ashinnblunts,