(Edit: Actually, shit, should I have made a new thread for this post?)
I tried to make this guide as foolproof as possible. Criticism appreciated. Credit to Syphurith for the original (kind of not foolproof) guide, yifanlu for the original method, cell9 for NTR, smea for ninjhax, 3dsguy/ps3hen for make_cdn_cia, and yellows8 for the SOAP response things yadda yadda whatever. Backup paste for the guide:
http://pastebin.com/G3S2XiWM
UPDATING STOCK 8.1.0-0J N3DS TO 9.1.0-20J
REQUIREMENTS
1. The Offline Server Update Pack:
https://mega.nz/#!sUEgjYbB!Ta1-flm-SwUZTodv9BJM3gyUQdaMUEf9IJKlAj6428I
2. A JP Cubic Ninja copy, or a Sky3DS with JP Cubic Ninja on it.
3. A PC with Windows on it. If you're running any other OS, you should be able to adapt this shit to your own machine.
4. A stock New 3DS, with 8.1.0-0J firmware.
5. A legitimate 9.2.0-20J update pack for New3DS. (Google "mset 4.x 6.x backups") It should contain a few cia files.
SETTING UP YOUR COMPUTER'S UPDATE SERVER
1. Install Visual C++ Redistributable for Visual Studio 2015. Go to
https://www.microsoft.com/en-us/download/details.aspx?id=49984 and pick vc_redist.x86.exe.
2. Install Python 2.7. Go to
https://www.python.org/downloads/release/python-2710/ and pick Windows x86 MSI installer.
3. Unzip the Update Pack somewhere. Copy the cia files from your 9.2.0-20J update pack into the UniServerZ/www/updates folder, which should contain a node.exe application and a CdnCiaUnpack.js.
4. Delete 000400102002CA00.cia.
5. Run an Administrator Command Prompt (Windows 8+ users, hit Win+X), and navigate to the UniServerZ/www/updates folder. Type in "node cdnciaunpack.js". It should say "All CIAs unpacked", and give you a bunch of folders with a GetSystemUpdate.partial.xml file.
Example if your folder is "D:\3DSUpdate\UniServerZ\www\updates" and you started in "C:\Windows\System32", you would type in:
D:
cd 3dsupdate\uniserverz\www\updates
node cdnciaunpack.js
6. Run UniController.exe in the UniServerZ folder. Don't enter any password (press cancel). Hit Start Apache.
7. Go to the menu > Apache > Access and Passwords > Folder www access and passwords > Apache Server Access > Select Local, Intranet and Internet Access.
SETTING UP YOUR N3DS
8. Clear all pending update data by booting your N3DS into Recovery Mode. Hold A+R+L+Up(DPad) when hitting the power button. Then exit immediately.
9. Copy ntr.bin from the NTR folder into your N3DS's SD card.
10. Boot up Cubic Ninja. Clear your save data if needed with L+R+X+Y at the main menu, then go into QR Code entry at the main menu. Scan JAPAN.png.
11. You should be back at the main menu. Hit X+Y to go into the NTR menu and start the debugger.
12. Find out your PC and N3DS's IP addresses through your router. They should start with "192.168."
UPDATING YOUR N3DS
13. Start the NTR Debugger ntrclient.exe, and connect with the following command. It should say "Connected" afterwards.
connect('YOUR_3DS_IP_HERE',8000)
14. Run the following command to check that the nim process is under 0x00000025. If it's not, then replace the "pid" number of the write commands in step 15 with the appropriate number.
listprocess()
15. Run the following commands on the debugger. They should say "null" and "finished" afterwards.
write(0x15E424, tuple(map(ord, “http://YOUR_PC_IP_HERE:8080/\0″)), pid=0x25)
write(0x15E0EC, tuple(map(ord, “http://YOUR_PC_IP_HERE:8080/\0″)), pid=0x25)
write(0x15E463, tuple(map(ord, “http://YOUR_PC_IP_HERE:8080/\0″)), pid=0x25)
16. Go to System Settings and update normally. At the end, it restarts, and you'll be running a 9.1.0-20J N3DS.