Applying With Details
At this time (Nov 2011), the Nomad server is down. This process does not work.
Rooting New Nook
First, HUGE props to cdump for coming up with this technique. It's truly brilliant and has put the new hardware firmly back in the "rootable" domain. Also to Nomad for making things a bit easier by hosting the files and scripts needed on his public server.
I spent an afternoon figuring out how to do this, so I thought it might be best to post my experience, hopefully adding some info that wasn't terribly clear in the translated pages and some elaborating on some stuff that was just touched on.
The big picture:
cdump took a look at some of the source and determined that he could add some code to a script that runs on the device that's used to turn the wifi off. The script will essentially enable the ADB capability and provide root. Once that's achieved, a different file can be modified on the device to enable ADB and provide root the more traditional way (this is the same "hard root" method used on the SD card).
The way he figured out to modify the "wifi off" script is to fool the Nook into downloading the file from his server, rather than the official server. He determined that if the download fails due to the wrong file size, it actually leaves the bad file on the device instead of deleting it.
The new (and old) hardware downloads software revisions from a fixed Internet URL (x.barnesandnoble.com). cdump sets up his network to look for the .barnesandnoble.com address and send it a different server. For convenience, Nomad has kindly set up a server that will download the fake update.
- Also See: http://nookdevs.com/Rooting_New_Hardware_No_Router --Randomizer 11:39, 27 October 2010 (PDT)
Before this will work, you MUST register your device with the real B&N servers first. Immediately after you do, it will start downloading the legitimate update; just enable airplane to stop it, then do the steps below
This is done by a combination of tricks:
1) You've got to disable DHCP on your network. This is done by going to your router's setup page and disabling it. Note! Leave this page open and don't screw with your computer or cabling until the download is complete. Since you've turned DHCP off on your router, your computer won't be able to get an address from it the next time it boots. If you fall into this trap, you'll need to set your computer to a static address in order to find the router (or reset the router)--but that's for another day. If your router has an option to "enable dns relay", leave this on.
DHCP is the technique used by computers when they first connect to the network. The DHCP server built into your router tells the computer a) The computer's IP address b) The router's IP address, c) The address of the DNS server (this is the important part) d) The subnet mask
2) You're going to set up an alternate DHCP server on your network. This will have a distinct difference over the one in your router--it will allow you to specifically set the DNS server address to something other than the router's address. Now, if your router is complex enough to allow this setting, you can simply make the change there and continue to use that DHCP function--but most don't. Mind you, this is *not* the generic DNS settings--they need to be DNS server addresses contained within the DHCP settings i.e. the addresses downloaded to a new computer on the network, instructing them where to look up addresses.
A little more about DNS- When your nook requests info from google.com, it sends that URL to a DNS server, and the server responds with an IP address. The nook then requests the info from that IP address. But all that is invisible to you.
3) You're going to use a piece of software called Tftp32D to set up your DHCP server *and* your DNS server on our computer. This way you can give the nook the fake DNS server address (via oyur fake DHCP server), and have your fake DNS server point the Nook to Nomad's site (at http://188.8.131.52). The server does not work. The Nook will not connect to the server as it is missing the /bnhello.html file.
4) Before you run Tftp32D, you need to make some changes to a file on our windows machine. This will instruct tftp32d to intercept the DNS request to B&N and send it to Nomad. Nomad does a fine job of describing this so I'll leave it to him: "You edit the file hosts on your computer. It is found usually in your Windows\System32\Drivers\etc\hosts. At the end of the file should append these two lines: 184.108.40.206 sync.barnesandnoble.com 220.127.116.11 edmfiletransfer.barnesandnoble.com "
Sounds simple, but the host file is actually protected under Windows. so you'll need to find it, right click on it, choose properties, and set the permissions so that a lowly user can edit and save the file. It's probably a good idea to change it back after and restore the permissions as well.
5) Now you can install and run the tftp32d program, and set it to run a DNS and DHCP server. I had a little trouble here, as tftp32d didn't seem to want to save my settings and I needed to exit the program to enable the DNS portion. I fixed this by going into the directory created by the program and deleted the .ini file there. After that, the program came up with DNS enabled by default.
Cdump does a fine job of describing the tftp32d setup, but to elaborate, you'll need to set the DHCP server to deliver a range of addresses (it's helpful to use a block slightly off those supplied by your router, to verify it's working) but within the subnet of your router. For example, my router was set to deliver addresses in the 192.168.10.2-192.168.10.199 range. So I set tftp32d to deliver addresses in .200-.210.
Also important here is to know the address of the computer you're working on (run->cmd->ipconfig). You must fill that in under "WINS/DNS router". Finally, you'll put your router address (in my case, 192.168.10.1) in under default router. The netmask of 255.255.255.0 is fine.
6) With this all running, I tested it by turning on my smartphone's wifi and checking the settings. I wanted to make sure a) I got a wifi IP address in the 200-210 range and b) I could see the Internet Under the tftp32d DHCP tab, you can see any device get an address from the server. Under the DNS tab, you can watch the DNS server work when a webpage is requested.
7) Now it's time to turn on the nook and turn on the wifi. This is done by toggling airplane mode. The nook should get an IP address within the new range. Next go over to "my library", and choose "check for new content".
If you're correctly connected with Nomad's fake update server, you'll see a new entry in your list--"Don't Blink" will show up as a new entry as of Sept 29. Also, you'll soon get an error message that a firmware download failed. This is expected and the files have in fact been downloaded.
8) Now turn your wifi off (and back on). This process is actually running the script that gives you root. You can now use ADB over wifi to fix things so you don't need to toggle the wifi to get root, and to disable auto updates from our friends at B&N.
This is a good time to set your router back to DHCP mode, and kill the Tftp32D program!
Getting and setting up ADB, PC side
Getting and setting up ADB is pretty well documents in the hard root section, and that's all the same. But because I hate having to look all over the place, I've copied and pasted a bit here:
Getting a root shell with the Android Debug Bridge
1. Download and install the Android SDK. (make sure you have the 1.5 system installed)
1(a). Launch the tools/android tool to instead Platform-tools, which includes the adb tool.
2. Find the IP address of your nook by clicking on the active wifi connection.
3. In a terminal (command line) window, navigate to the "tools" directory in the Android SDK.
4. With the NOOK_IP being the IP address of your nook, enter the following:
5. adb connect NOOK_IP:5555
6. Nothing should appear to happen and you will be returned to your command prompt. This is normal.
7. You can now use the ADB tools to talk to your nook. To get a root shell on the nook, enter:
8. adb shell
9. A # should appear — you now have root access to your nook's command line interface!
9) So now you'll want to edit the /init.rc file to enable ADB forever. This can only really be done by pulling the file to your computer, making the edit, then pushing it back to the nook. Here's the commands: a) adb pull /init.rc init.rc b) use your favorite editing software to change the section about adb from "disable" to "enable" b) adb push init.rc /init.rc
10) Next, fix the file that cdump corrupted for you a) adb pull /etc/wifi_stop.sh wifi_stop.sh
b) edit the file by deleting everything after the line "echo "0" > /sys/power/wifi_pm"
c) adb push wifi_stop.sh /etc/wifi_stop.sh
11) Now disable the ability for B&N to push updates to you: a) adb shell (get # prompt) b) rm /system/app/FirmwareUpdateService.apk
12) Now reboot your Nook and pray it's not a Brick!
This closes the process ...
There is also a way to install additional apps on your Nook during rooting process. Scripts on Nomad's site (18.104.22.168) are able to install programs by calling script named /system/media/sdcard/root.sh on step 8. One could make a package to push needed apps on your nook automatically. At the moment two packages exist:
http://runserver.net/nook/mynook_package.zip - this one installs all apps and configs from Mynook firmware (own launcher, fb2 support, etc., English language by default).
http://runserver.net/nook/nomad_package.zip - this package installs modified Home Screen that have 'Apps' folder instead of 'Games' with all your additional apps listed.
To install any of these packages just unpack the archive to root folder of your device by USB (near the 'my documents' folder) and softroot it by steps 1-8. Note that Cleanup stages 9-12 are not needed and your device would be restarted automatically.
If you already have adb access and willing to install the package, you could unpack it and call 'adb shell sh /system/media/sdcard/root.sh'