[Nook HD, HD+ General] leapinlar:
When I originally bought the Nook HD+, I made several futile attempts to get ADB working so I could sideload apps to it. I was so frustrated that I was ready to give up and return it. But I finally got it going and with the help of a few smart users here was able to get it rooted and installing apps directly on the device. So, to save some other users the same frustration I had, I thought I would outline what I did to make this device hum.

Update 12/27/2012: A lot has changed since I first created this tips thread. I am updating it to the latest information. Most of the steps below are not necessary anymore since I now have a new thread here which lets you do these things easily with a special version of ClockworkMod (CWM) recovery for the HD and HDplus. And the text here has been modified to reflect that and include the HD.

Update 11/02/2013: Since B&N has included the gapps and Play Store in version 2.1.0 and above and since verygreen developed the new boot.img that removes B&N /system file protection scheme and I updated my HD/HD+ CWM thread to account for those changes, I decided to give this thread an update. I have added comments to the sections in italics below where necessary

If you have questions or comments on this post, reply to this thread. Please do not send me private messages or emails. By posting in the forums others get a chance to help you and if I answer your question in the forum, others can see my response and it may help them too.

1. Setting up ADB

ADB is very useful for many things but you do NOT need ADB to root anymore. Look at my thread referenced above to use CWM to root.

Also, rather than use ADB via USB, it is much easier to use a Wireless ADB app available in the Play Store.

If you want to know how to set up ADB with USB, click on the "show content" button below.

The first thing you need to do is get ADB working on your PC so that it can connect with the HD+. The instructions to do that is on B&N's own site here. (But you really don't have to do all that, see below). To make it easier for XDA users, I have attached to this post the drivers downloaded from B&N site. Download and unzip that file to your PC.

To install the drivers, do the following (I tested this on Windows XP and Windows 7):

1. On your HD+ go to settings, device information, developer options, and make sure check "Enable ADB" is not checked.

2. Plug in the device to the PC with the USB cable. MTP should install.

3. Unplug the device, go to settings again and check 'Enable ADB'. Plug back in.

4. New devices will try to install. When they do, work your way through the options until you get to the choice "include this location in search" (the terminology is a little different in Win7) and browse to the location you unzipped the driver files above. Continue and the driver should install. In Windows 7 just one device will pop up. On Windows XP, two may. (Edit: If you are having trouble with this step, go to the B&N link I have above and read and follow section 4.6 of that guide. You can skip section 4.6.2 since you unzipped those drivers earlier. But do all of the remaining steps in section 4.6).

5. An "Android Composite ADB Interface" will install. If the computer says it needs to reboot to finish. Do it.

6. If, when it starts back up, and after installing ADB below, it does not work, you may need to go the Device Manager and look to see if "Android Composite ADB Interface" device has a yellow exclamation point by it. If it does, update the driver with the B&N driver again.

7. Create a file named adb_usb.ini and put 0x2080 in it with no line feed or carriage return. Go to \documents and settings\ and open your users folder and create a folder named .android and put that file in it.

8. I have attached a file named adb.rar below. Just unrar the adb.rar file. There will be three files there that you can put in a directory (any name you want).

9. Open a command prompt and cd to wherever you copied those adb files. If you set your path to that directory, you can have the prompt set for any directory, like where your apks are stored. Type 'adb devices'. It should go through some commands ending with a list of devices connected. The serial number of your HD+ should be listed. You can now run ADB commands.

2. Sideloading Apps

Once Unknown Sources is activated by my CWM zip above, you do not really need to install apps this way anymore.

Once you have ADB connected to your HD/HD+, it is very easy to sideload install apps. Just have your command prompt set to the location that you have your apk's stored and type "adb install xxx.apk", where xxx.apk is the name of your app. It is best to name the apk to something simple with no underlines or special characters in the name. It does not matter what you name it, the real name is inside the apk. The app should install. I would start with a launcher app since sideloaded apps cannot be seen in the stock launcher. Then I would install AnyCut which I have attached to this post. This app allows you to put the Home command on your launcher's home screen so that after you make your launcher default, you can get back to the B&N home page. There is a trick mentioned in the B&N guide referenced above that lets the stock app drawer see your sideloaded apps. On the Apps screen, hold the volume up button while you press the "Apps" word at the top of the screen for 2-3 seconds. An "Extras" screen will pop up showing all of the sideloaded apps. You have to do this every time you want to see it.

3. Rooting the HD/HD+

Rooting is now very easy using CWM in the referenced thread above. If you want to use the older manual method, click on the "show content" button below. But be warned these older methods no longer work on version 2.0.5 or newer.

Verygreen came up with the original scheme to root the HD+. But it had a problem. The HD+ checks on boot to see if /system has changed, and if it has, it will not boot. It tries this 8 times and on the last time the "8 failed boot" procedure kicks in and your device is wiped clean (including your storage space) and the factory ROM is re-installed. He later modified it to survive a reboot. Someone0 developed another scheme where he can root without modifying /system directly. So the next time it boots, it boots normally. See his thread here.

ONCE YOU HAVE ROOT, DO NOTHING THAT MODIFIES /SYSTEM OR IT WILL NOT BOOT AND END UP RESETING ITSELF. Also do not install anything that installs to /system, like busybox, AdFree and a few other apps. Ignore this warning with Universal Root rev3 or higher.

4. Setting OTA (Over the Air) Updates from B&N to Manual

When you first register the HD/HD+ it will automatically update itself to the latest version. To protect yourself against further updates that might jeopardize your ability to root or add other mods, you should try to block further automatic updates. But it seems that making this mod is no longer effective, B&N updates anyway.

Again, I have a CWM zip that will do this for you in the referenced thread above. If you want to see how to do it manually, click on the "show content" button below.

EDIT: (2/22/13) I have a new way to block OTA that seems to work so far. Another user (thanks greenya!) discovered this and I have come up with a way to implement it. I use the app AdAway to put my own black list of sites to not allow access to. If you want to try this, you must be rooted. Get AdAway either on the 1mobile.com market or at its developer's site (http://code.google.com/p/ad-away/). Before you do anything go to its preferences and change the target hosts file to /data/data/hosts. That way it will not reset the device. Then go to "Your Lists". Add this site to the black list: su.barnesandnoble.com. Then go to the main menu and select "Download files and apply ad blocking". It will ask you if you want to add a symlink, say yes. (If you installed the new boot.img from verygreen or flashed my latest version of Universal Root (rev3 or higher), you do not need to worry about adaway resetting your device. Just install it normally.)

It does not seem to block any B&N shopping or downloading apps or books. I installed this on my 2.0.5 and purposely tried to update and it says it needs the update but pushing download does nothing. Then I unblocked it and pushed download and it started to download immediately. So it does work.

Basically the same method used on the Nook Color and Nook Tablet should work on the HD+. It requires that you edit a database file and that requires root access. I use the paid Speed Software's SQLite Editor. You need to use the latest version (2.0.1). I could not get my older version to get root access.

So here is a description on how to do it with SQLite Editor. Open the app and it should get granted superuser access. Then browse with it to /data/data/com.bn.devicemanager/databases. There should be a file there named "devicemanager.db". Open that with SQLite Editor. There should be a list down the left side, one being "registry". Click on that. A table opens up that looks like a spread sheet. On line 6 is com.bn.device.fota.mode. Scroll across till you see the value column. It should say auto. Edit that to manual. Save the database and you are done.

This worked on the other Nooks, so should work here. See the post below for another automatic method.

5. Setting Up Installing from Unknown Sources

I also have a CWM zip that will do this for you in the referenced thread above. If you want to see how to do it manually, click on the "show content" button below.

You can toggle the unknown sources using the same method as I used for blocking OTA. Just look for the database in /data/data/com.android.providers.settings/databases. The database is settings.db. Open secure and line 4 - install_non_market_apps and change the value to 1.

6. Setting up Google Play Store and Google Apps

I also have a CWM zip that will do this for you in the referenced thread above. If you want to see how to do it manually, click on the "show content" button below. If you have stock version 2.1.0 or higher you do not need to flash my zip. Play store is included in the ROM.

Someone0 has a post on how to add Google Play Store is here. And he now has it so you can install the entire Gapps package, including Play Store. Again, you must be rooted first.

7. Setting LCD Density

If you are like me, you hate the tiny fonts on these high resolution devices. You can change the default lcd density to help with that. The default lcd density for the HD/HD+ is 240. I changed it to 300 and everything works fine on the HD+ and fonts are a little larger. But you cannot modify build.prop on /system to do that. It will cause the device to reset itself since you are modifying /system. To get around that, create a file in /data named local.prop. Add the following line to that text file:

qemu.sf.lcd_density=300

Then reboot and your new density is set. You need to be rooted to do this on the device.

I found that changing the density on the HD made the SystemUI app crash. If you want larger fonts for the HD, I recommend you use the tip in the next section.

8. Larger System Fonts

If you don't want to set your LCD density higher but you still want larger fonts, a user (Windsor1959) just passed on this tip. Go to the B&N app store and install the free app Go Read. Once that is installed, open it and use the menu to go to accessibility settings. There is an option for larger system fonts. It works great. Thanks Windsor1959.

I also just discovered that there is another hidden setting that lets you set the system fonts from small, normal, large and huge. To get to these settings you need a third party launcher like zeam or adw and the AnyCut app I attached below. On the launcher screen long press and select shortcut. Select AnyCut from the list. Within AnyCut select activity and scroll down to fonts. Select that and a fonts shortcut will appear on the launcher screen. Open that and you can select the font size.

9. Data structures on the HD/HD+

For those of you used to having two separate partitions for data and media files, B&N has used a different scheme for the HD/HD+. They make one very large /data partition ranging from 5GB to 28GB depending on which device you have. Then they create a folder in /data (/data/media) and, using the sdcard fuse feature, link it permanently to /sdcard. So that means it is one big dynamic space for both /data and /sdcard, sharing the free space. /data is considered root and /sdcard is not.

They named it /sdcard because a lot of third party apps expect there to be an sdcard on the system and won't run unless there is one. That creates a little bit of a terminology problem for us Nook Color users. We are used to having /sdcard be an external SD. And on top of that, if we do add an external SD, it is mounted as /ext_sdcard under /mnt and that is hard for some apps to see. And when you connect your device to your PC with MTP, internal media (sdcard) is called 'internal memory' and the SD (ext_sdcard) is called 'SD card'. I think B&N did this with the expectation that users would not be rooted and be able to see that stuff under the hood.

Since sdcard is really just a part of /data, it is formatted as ext4 instead of FAT32 like the Nook Color media partition was. That means you can store a single file larger than 4GB, which is the limit for FAT32. Most external SD cards are formatted FAT32 so they are also limited to a single file size of 4GB. But it makes them directly readable by your Windows based PC. When you first put a new external SD in the HD/HD+, it asks you if you want to reformat it so you can more easily store your media files. If you say yes, it will format it to ExFAT, a new flash drive format that supports larger file sizes. That's good for your media files since you can have very large files on it. But it could be bad if you want to take the card out and put it in your Windows XP PC because XP cannot read it without an update patch from Microsoft. If you have Vista or higher, ExFAT can be read natively.

When you do a factory reset (clear /data) your media directory (/sdcard) is wiped out too.

Also, the B&N media, books, magazines, etc., are stored in /data/nookmedia, which is root.

10. White on White Text for Some Apps

One of the annoying issues with using some third party apps is the HD/HD+ displays some dialogue boxes with white text on a white background so that the text is unreadable. Someone0 and I developed a patch that can repair this. I have a zip in my CWM thread referenced above to repair the HD+ and HD. (Also since stock version 2.1.0, B&N has dramatically changed the color scheme so that the white-on-white issue is no longer the problem it used to be, I have discontinued providing white-on-white mods for version 2.1.0 and above.) If you want to see how to do it manually, click on the "show content" button below.

Someone0 and I have been working on this and have found a solution. It requires a modification to the framework-res.apk on /system. And the mod works very well. The problem is that the apk is on /system and must be symlinked using our symlink trick we use on /system files when we need to modify them. That is easy to do, but this particular apk is very critical to your system. If you do not get it installed properly, it will lock up the device and you either need to reset it completely or repair with ADB.

If you are tech savvy enough you could modify your own apk and install it. In the colors.xml file in the values section of the de-compiled apk, are two settings that need to be changed, "background_light" and "background_holo_light" need to be changed to "ffcfcfcf". The color choice was a compromise between making the text dark enough to be seen against a white background and bright enough to make things like menus show in the grey backgrounds. Re-compile and put the apk in /data, delete the apk in /system and symlink to the one in /data. The problem with doing it manually while running is as soon as you delete the apk, things go bonkers. And you cannot add the new symlink until the original apk is deleted. If you start messing with this mod, be sure to have ADB enabled so if it locks up and gets stuck on booting, you can access things with ADB and hopefully repair it. When I did my system manually, I copied the modded apk to /data with root explorer, used root explorer to set /system to read/write, then used ADB to delete the apk in /system and create the symlink. If you mess up, it will boot, but get stuck at the 99% level. Hopefully if you left ADB enabled, you can use ADB to repair whatever is wrong.

11. Implementing Userinit.d

Userinit.d can be used to run specialized scripts as part of the boot process. The HD/HD+ does not implement userinit.d, but it can be modified to allow it. And these scripts can be used to customize the performance of the device, like modify fonts, change colors, add symbolic links, modify drives, set CPU speeds and tweaks, etc.

I have implemented userinit.d in the new Universal Root zip in my referenced CWM thread above. (The latest version no longer uses it).

The scripts are usually named with numbers at the beginning and no extension. Examples would be the scripts from CM7 init.d which are: 00banner, 01sysctl, 03firstboot, 05mountsd and others. They are executed in the order of the numbers. They are plain text files that have as the first line:

#!/system/bin/sh

Then they have script commands in text format.

The beauty of these scripts on the HD/HD+ is you put them in /data instead of /system which would reset your device. Put the script files in a new folder named /data/local/userinit.d. Set the script file permissions to execute.

There are examples of userinit.d scripts out there if you search for init.d scripts on XDA or the web. Some will work on the HD/HD+ and some won't. I have a great example in the next section.

12. Swapping "sdcard" and "ext_sdcard"

I now also have this modification as a flashable zip in my CWM thread linked above. No need for root with that one.

As explained in section 9 above, the internal media is named "sdcard" so that apps can store their files there. Some users would like them stored on their external SD. I have a userinit script that will swap "sdcard" and "ext_sdcard" so that apps will store their files on the external SD. The external SD will show as "sdcard" and the internal media will show as "ext_sdcard". And it shows swapped using MTP also. It can be a little confusing since we cannot control the names, but they are swapped. If you don't have an external SD plugged in, both sdcard and ext_sdcard will show the internal media.

To swap the drives, make sure userint.d is implemented, then download the attached file, 11SDswap.rar, and extract it and put the file in /data/local/userinit.d. Set the permissions of the file to execute in all three boxes. On the next reboot, they will be swapped. To return to normal, just remove the file and reboot.

13. Skipping OOBE (Out of Box Experience)

Skipping OOBE is when you want to skip the registration step when you first start your device or after a reset. Not registering means that you will not be able to buy books or apps from B&N or, if you already have an account, have access to already purchased items. Your name will show as TEST (which can't be changed). And, if you set up wifi, the device will still check for updates and if found, update.

So if you don't want to register, or that device is already registered to someone else and you can't, just skip OOBE. There are instructions for the Nook Color here. They still work for the HD/HD+.

14. Back Up Your Stock ROM Installation with CWM v6.0.2.8 for Nook HDplus and v6.0.2.7 for the HD

Now you can backup your stock installation with my bootable CWM (ClockworkMod) recovery SDs. That way you can restore if you make a mistake and change /system so the device starts to reset itself. Just catch it before the reset completes, insert the card and restore and you will be back to OK.

You can do anything with these CWM SDs you normally would do with CWM, (nandroid backup, wipe system, data, cache, dalvik-cache, fix permissions, etc).

One of the nice features is you can wipe /data without it wiping your internal media at /data/media. So, if you want to reset, just wipe /data and your media files are still left intact. And when you do a nandroid backup, it can be placed either on internal media or your external card. The nandroid backup feature backs up /boot, /system, /cache and /data (without the media folder). So if you want the media folder backed up you must do it manually from within stock. And when you restore, you can selectively restore any partition. So if you mess up /system by putting something there that causes a reset, just selectively restore /system.

EDIT (5/22/13) - There is a new procedure brought to my attention by another user (thanks fanoush) which lets you make the CWM SD without burning the image. It seems the OMAP4 devices are a little more liberal on the booting requirements than previous OMAP devices. This makes it easier to install on any size SD. Go to my HD/HD+ CWM thread linked in my signature and look at item 1a. There are instructions and files there.

The versions attached below are under 120 MB so they can be put on any size SD. It burns very quickly. But there is no room there for any backups. After burning the SD you can use partitioning software (like Mini-Tool Partition Wizard or EaseUS Partition Manager, both free) to expand it to the full size of your SD card if you want so there would be plenty of room for backups. But be sure to only expand the back end of the partition, being careful not to touch the beginning.

I also now have a 4GB versions for both the HD and HDplus attached to the CWM thread referenced above.

To make the SD, download the version for your device and extract the file. It should be a 120MB .img file. Burn (write) that image file to your SD card using Win32diskimager in Windows. In Linux or OSX (Mac) use the "dd" command.

To use Win32DiskImager, find it on the web (here, it's free) and install it on your Windows PC. Open it (be sure to run it as administrator) and select the drive (device) that has your card reader with your SD inserted. Then in the image file box put the location where you have the extracted img file. Then when everything is set right, click on the write button. A warning will pop up asking if you want to proceed. When you have verified that you are going to write to the correct device, click on Yes. (One user overwrote their external USB hard drive by not verifying first). With the small version it should burn fairly rapidly. If you get an error message about access denied, it means you are looking at the drive with Windows Explorer. Close Windows Explorer and try again. In fact, it is a good idea to close all unnecessary windows when burning, even your browser.

Insert the SD into your powered off Nook HD/HD+ and power on. It should boot to CWM with the label v6.0.2.8 for HD+ stock. The HD version just says v6.0.2.7 for Stock. You can tell it is booting properly if the cyanoboot logo shows up after the Nook logo shows for a few seconds. If the Nook logo stays there and starts changing, it means it is booting to stock. Hard power off by holding the power button for several seconds. Try again.

Manipulate the controls with volume up/down for cursor, n key to activate and power key for back.

15. Modifying System Files on the HD/HD+

Ordinarily you cannot modify system files on these devices because they will detect the change and reset themselves back to factory stock, wiping out all your data at the same time. But there is a safe way to do it if you are rooted.

If you have installed my new Universal Root rev3 or higher or installed verygreen's boot.img, the below procedure is no longer necessary, just modify the files directly.

The HD/HD+ has a manifest file included in the boot files that has a listing of each file that is supposed to be in /system and a checksum of each file. On boot, it reads the files in /system and makes sure each file that is there is on the list and matches the checksum. It ignores directories, symlinks and missing files. If one is added or has the wrong checksum, it stops and tries to boot again. If it reboots 8 times in a row without completing the boot, the automatic reset feature kicks in and your device is formatted and the factory ROM is reinstalled.

So you can see that missing files are OK and symlinks are OK. So if you want to modify a system file, first copy it to /data somewhere, delete the original, and make a symlink in /system to replace the deleted file. The symlink points to the file copied to /data. But be careful, some files, like framework-res.apk, are being used all the time and if you delete it, even temporarily, the system goes crazy.

The scheme that someone0 and I use is to mimic /system under /data/su so that the structures are the same to avoid confusion. For example, if you wanted to modify build.prop, it would be copied to /data/su/system/build.prop and the symlink would point there. Since build.prop is not used very often, it is safe to now modify it however you want. But be careful, some settings there are vital, like hardware rotation. Mess with that and things will go all wonky on the next reboot.

Here are the specific commands to make this happen using build.prop as an example:

1. Use your root file manager to copy /system/build.prop to /data/su/system/build.prop. Set the file's permissions to match the original.

2. Delete /system/build.prop also using your root file manager

3. Set up Terminal Emulator. Start the program and type su enter. After you allow superuser access, the prompt turns to #

4. Type the following command at the # prompt (without the quotes):

"mount -o remount,rw /system"

5. Then this command:

"ln -s /data/su/system/build.prop /system/build.prop"

(That first letter is a lower case L)

6. Then this command:

"mount -o remount,ro /system"

You are done. You can now modify build.prop in /data any way you want and the system will not reset.

But before you do this mod or any other system file mod, I recommend you have backed up your system using CWM as described in the previous section. That way if you did not get it right somehow and it starts to reset, you can insert your CWM card to stop the rebooting and selectively restore /system and try again.

One side benefit of doing this build.prop mod is if B&N tries to update you in the future, it will fail because it cannot verify your build.prop because it is missing. And, in my experience, it does not try again.

16. Nook HD/HD+ internal partition structure and backups

The partition structure for the HD/HD+ is the same and is as follows:

P# Name Size Type
1 xloader 128K Fastboot Image
2 bootloader 256K Fastboot Image
3 recovery 15MB Fastboot Image
4 boot 16MB Fastboot Image
5 rom 48MB vfat
6 bootdata 48MB vfat
7 factory 448MB ext4
8 system 672MB ext4
9 cache 464MB ext4
10 data varies ext4

There is a simple process to make image backups of your internal partitions. Most people will never have to use the backups, but there is one critical partition that holds vital device specific information that was created at manufacture that is probably wise for you to back up. The process requires that you have either Terminal Emulator installed or ADB set up. And it can be done either in rooted stock or CM10/CM10.1. In Terminal Emulator or ADB Shell in superuser mode, type the following command:

dd if=/dev/block/mmcblk0p7 of=/mnt/sdcard/factory.img

This will make an image of your partition 7 that has that vital information. It also has a copy of the factory.zip file used to reset your device should you need to. If you want to back up the rest of your partitions, just change the p# and file name in the above commands to match the listing above. Partition 10 is quite large so should not be backed up using this method.

To restore a partition, just reverse the information following the if= and of= statements in the command. The information stored in partitions 1, 2, 3, 4, and 8 is specific to the ROM version you were running when you made the backup, so restoring them to another version is probably not a good idea (and if you do, restore all 5 of them together). Only do it if it is a last resort. And of course you should not restore HD partitions to the HD+ and vice versa.