You're likely to brick your 3DS if you try to update emunand from classic mode.
so no way to update emunand from 8.1J for now?
You're likely to brick your 3DS if you try to update emunand from classic mode.
so no way to update emunand from 8.1J for now?
I dunno how to do this steps and asked for a video tutorial but got some overreaction instead
I will try this with my n3ds tonight and I will do a simple picture tutorial or so (sorry, video took forever and I don't know how...)
For now you can download EasyPHP that Ichii Giki linked in his tutorial and install it. Pretty easy to use I must say.
Port 80 requires root on AndroidA buddy of mine is a web developer and when I saw him tonight I asked him to help me make an android app. If I have success I'll link it when we're done
Port 80 requires root on Android
So, indirectly, this method requires Cubic Ninja right? (because of NTR).
Really wished OoT could be used instead.
If I'm correct, all steps use plain HTTP connection.
I think it is quite possible that we setup a proxy server in the middle to intercept and replace these certain requests, and let other requests go through.
Using the proxy method, things needed are just the 3DS itself and a computer.
Ok so i'll add a disclaimer saying you need su
- Boot your 3DS into NTR CFW 2.0 and connect the debugger
- Use listprocess() to get the PID for “nim”. On 8.1.0-0J, it should be 0x25.
- Enter commands below into NTR debugger while connected.
- Go into system settings, and perform an update (do NOT exit system settings as you will lose your patches and will have to perform them again after restarting).
- Once the update is done, you will be prompted to restart, however because you are in NTR mode, the screen will just go black. You need to hold the power button and manually restart.
connect("your 3ds ip", 8000)
write(0x15E424, tuple(map(ord, "http://jp81to92update.tk/\0")), pid=0x25)
write(0x15E0EC, tuple(map(ord, "http://jp81to92update.tk/\0")), pid=0x25)
write(0x15E463, tuple(map(ord, "http://jp81to92update.tk/\0")), pid=0x25)
I put the files I used on a server, hopefully this makes it simpler.
It is still recommended of course to make a backup of your 8.1 sysnand first with gateway's launcher, and to enter and exit recovery mode to clear any pending updates.
Code:connect("your 3ds ip", 8000) write(0x15E424, tuple(map(ord, "http://jp81to92update.tk/\0")), pid=0x25) write(0x15E0EC, tuple(map(ord, "http://jp81to92update.tk/\0")), pid=0x25) write(0x15E463, tuple(map(ord, "http://jp81to92update.tk/\0")), pid=0x25)
Just a note, your NTRclient commands are missing the update.php/GetAccountStatus_response.xml files from their full paths. Thanks for hosting the files though, should help many people!
Also, if you are using the new NTR-CFW 2.1, you no longer have to hard-power off your console, it should reboot normally!
if( isset($_SERVER['HTTP_SOAPACTION']) ) {
header("Content-Type: text/xml");
switch($_SERVER['HTTP_SOAPACTION']) {
case "urn:nus.wsapi.broadon.com/GetSystemUpdate":
readfile("titleversion.xml");
break;
case "urn:nus.wsapi.broadon.com/GetSystemTitleHash":
readfile("titlehash.xml");
break;
case "urn:ecs.wsapi.broadon.com/GetAccountStatus":
readfile("getaccountstatus.xml");
break;
case "urn:nus.wsapi.broadon.com/GetSystemCommonETicket":
readfile("commoneticket.xml");
break;
That's a case in my php file:
*And the server is configured to respond with the same thing for any URL, so it's fine to add /update.php or /GetAccountStatus_response.xml to that domain. But it should not be necessary.
PHP:if( isset($_SERVER['HTTP_SOAPACTION']) ) { header("Content-Type: text/xml"); switch($_SERVER['HTTP_SOAPACTION']) { case "urn:nus.wsapi.broadon.com/GetSystemUpdate": readfile("titleversion.xml"); break; case "urn:nus.wsapi.broadon.com/GetSystemTitleHash": readfile("titlehash.xml"); break; case "urn:ecs.wsapi.broadon.com/GetAccountStatus": readfile("getaccountstatus.xml"); break; case "urn:nus.wsapi.broadon.com/GetSystemCommonETicket": readfile("commoneticket.xml"); break;
Aha, nicely done! *Also weird, just got a feeling of deja vu looking at that code...*
Switch is much prettier than if/elseif, did you use it as well?
I put the files I used on a server, hopefully this makes it simpler.