Wednesday, February 15, 2012

Delving Deeper into Android: Barnes & Noble's Nook Color

Executive Summary

In which I detail how I installed CyanogenMod 7 onto a Nook Color via an 8GB µSDHC card, added the modified Nook Color to my Android SDK development environment running under Fedora 14, and discovered that Foxconn was involved in the Nook Color's manufacture.

Installation of CyanogenMod 7

I have, since around the first of February, been hacking around with the Barnes & Noble Nook Color. This is the same Nook Color I rather reluctantly returned a little over a year ago, and wrote about it on Matthew's Reviews [LINK]. What changed my mind enough to re-purchase another Color?

Three events:
  1. Barnes & Noble released the Nook Tablet November 2011. I received a copy for Christmas and have been completely happy with it (a review is forthcoming on Matthew's Reviews). It cost $250. Which lead to the next event;
  2. When the Tablet was released, Barnes & Noble reduced the price of the Nook Color to $200. Which led finally to;
  3. In late January, Barnes & Noble sent out a $50 coupon for the Nook Color, further reducing the price to $150.
From my perspective Barnes & Noble had inadvertently released the perfect Android experimental device and it only cost $150. The Nook Color is missing a camera (or two), lacks cellular radios (no direct phone calls), and is missing a GPS. But it does come equipped with working WiFi, Bluetooth 2 and USB 2.0 as well as color touch screen, 786MB of memory, and an ability to add external flash drives. Whatever else is missing I can add/associate with the Color via one of those three channels.

When I talk about experimenting with the Nook Color I mean full-bore rooting with CyanogenMOD 7 (CM7, based on Android 2.3.7) complete with Google Market.

I started the process by researching via Google how to root it, and eventually picked up enough directions to successfully root the Nook Color.

The Nook Color is extremely easy to root (as compared to the Nook Tablet) because the embedded software that comes standard with the Nook Color (version 1.2.0) allows you to boot from a µSDHC configured with the proper file system and initial software load.

In my case I used my Dell notebook running Fedora 14 to configure the card. Once the µSDHC card was properly configured it was installed on the powered-off Nook Color. The Nook Color was then powered up at which point the Nook Color's embedded OS found and booted the modified µSDHC, eventually into full blown CM7.

Here are the steps I followed to install CM7 an an 8GB Sandisk µSDHC card under Fedora 14:
  1. Download the file system image from http://crimea.edu/~green/nook/generic-sdcard-v1.3.img.gz
  2. Unzip the 9MB file into a 130MB generic-sdcard-v1.3.img
  3. Using an adapter, physically attach the µSDHC to the computer. If automount is running, unmount the µSDHC card, noting the device (/dev) name.
  4. In a shell as root use dd to copy the img file to the µSDHC. On my Dell I used the command

    dd if=generic-sdcard-v1.3.img of=/dev/sdd

  5. Once dd is finished, physically remove and re-insert the µSDHC card. If automount is running Linux will mount the newly-minted filesystems in the image you just wrote to the card.
  6. Download a nightly CyanogenMOD build from http://download.cyanogenmod.com/?device=encore. I downloaded cm_encore_full-253.zip. Copy it to the µSDHC card and unmount the card when the copy is finished, then physically remove the card.
  7. With the Nook Color powered off insert the µSDHC into the Nook Color's µSDHC slot on the corner of the device. Power up the Nook Color. If all has gone well up to this point the Nook Color will boot from the µSDHC, unpacking and auto installing CM7. The installer treats the Nook Color screen as if it's in perpetual landscape mode. You'll see a Linux penguin in the upper left corner, with text (yes, text) log messages scrolling up the screen as CM7 is installed. Once everything is unpacked the installer will power the Nook Color off.
  8. Power the Nook Color on again, and the Nook Color should boot into CM7. You can, at this point, leave well enough alone. If you want or need Android Market, then you need to continue on with step 9.
  9. Make sure that you enable WiFi on the Nook Color via CM7. If for some reason you don't have WiFi capability as this point, then stop. You'll need working WiFi connectivity for complete installation of Android Market. Once you've enabled WiFi connectivity, power down the Nook Color.
  10. Re-insert the µSDHC back into your host computer (the Dell in my case). It will automount a number of file systems this time. We're interested in /boot on the µSDHC card.
  11. Go to http://wiki.cyanogenmod.com/index.php?title=Latest_Version. Scroll down to the bottom of the page and a table describing Google Apps versions (Market is a part of this package). Download the version for CM7, the first row in the table. The downloaded file name is gapps-gb-20110828-signed.zip
  12. Copy gapps-gb-20110828-signed.zip to /root. Unmount all the µSDHC card's file systems, then physically move it back to the powered off Nook Color. Power the Nook Color back on.
  13. When the Nook Color has finished booting, press the power button again until the powerdown menu appears. One of the options is Reboot. Select Reboot, and on the next menu select Recovery, then select OK. The Nook Color will reboot and then install Google Apps including Google Market. Once that occurs, you will then walk through Google Market's step-by-step process for setting up an account. You should at this point know how to respond to a Google Market initial account setup.
I will note at this point that I used my existing Google account, which is the one I use for my Android phone. I did not allow Google Market to sync with my Android phone or else I would have picked up everything installed on my phone. I want to keep the two devices as separate as possible.

SanDisk 8GB microSDHC
Recommended SDHC card for CyanogenMOD work, just $14.88 at a local Wal-Mart.

If this all sounds like a lot of trouble I suppose it is. But then, it took me less than 20 minutes to do all of this, including waiting for writes and reboots. It took far more time to research all the steps and then tailor them to my setup.


Most of the features on the Nook Table map transparently to CM7, with the notable exception of cellular telephony. Otherwise it operates rather well, far better than the stock software that ships with the Nook Color. I'd like to list some of the tablet tweaks I performed to further enhance performance. Under Settings, CyanogenMod settings, Performance, CPU settings;
  • Available governors is set to performance
  • Min CPU frequency is set to 600 MHz
  • Max CPU frequency is set to 1100 MHz
  • Set on boot is enabled
Back on Performance settings;
  • Use 16bit transparency should be enabled
With everything installed and configured, the single core Nook Color with CM7 performs as smoothly as my Android cellphone (the myTouch 4G) and the dual-core Nook Tablet with stock Barnes & Noble software, version 1.4.1. This speaks volumes about the power and  capabilities that lie dormant in the Nook Color.

Setup for Android Development

I wasn't going to stop there. I didn't go to all this trouble just to use it like a "normal" Android tablet. I wanted to use the Android SDK to develop applications for it. So I set about configuring my development environment on Fedora 14 x86-64.

First I added the following lines to my udev 51-android.rules file (for further information about udev and the rules file, check my Android category for details). Note that the first line is a comment:

# B&N Nook Color running CyanogenMOD7
SUBSYSTEM=="usb",ATTRS{idVendor}=="2080",SYMLINK+="android_adb",MODE="0666"

At this point I thought I was done. I plugged in the Nook Color with CM7 running, fired up ddms, and saw absolutely nothing. Typing 'adb devices' show nothing either. Yet udev found the Nook Color and lsusb showed it in the listing. I noticed the peculiarity that there was no textual name by the USB device listing. Regardless I hit the Google looking for advice about how to solve this problem and eventually found clues scattered all over. Here's what I did to get everything finally working.

With the Nook Color plugged in and powered on, at the shell prompt, type 'android update adb' to rebuild ~/.android/adb_usb.ini. This will add an entry to the ini file and allow adb to properly bridge to the Nook Color. Once that's done, you need to do an 'adb kill-server' followed by an 'adb start-server'. Once all that hand waving is finished you can use the bog-standard Android SDK to develop for the Nook Color running CM7.

Note: All of this is executing from the inserted card. I have yet to reprogram the Color's internal flash, and I may not. Performance is more than adequate running off the card.
Note: Power on the Nook Color before attaching it to the computer via USB. If you attach and then power on, the Nook Color behaves as if it won't turn on.



The Foxconn Connection

I have come to discover that a portion of the Nook Color is manufactured by Foxconn, at least the PCB if not the complete device. I say this because of yet another story out of China about Foxconn that paints an even bleaker picture about its unfair labor practices, this time about their use of unpaid student interns. The unpaid internship abuse hits a raw nerve with me because both my daughters have gotten involved with such here in the states while they were in college. Granted my children never experienced the level of abuse the Chinese students have, but still. When I attended college in the 1970s, interns were paid an entry-level wage and treated as entry level employees. They only worked for one term (usually during the summer) but an unpaid internship was unheard of. Now it's the norm complete with abuse.

I don't know what to recommend about the use of electronic devices made by Foxconn, especially the Nook Color. One of the reasons I've stayed away from Apple is because of Apple's heavy reliance on Chinese manufacturers, especially Foxconn. But it would appear that simply selecting an Android device won't let you avoid Foxconn, and there's no guarantee that any other manufacturer won't be as bad if not worse.

What this does is put a dark cloud over what should be a fun project. How can you enjoy experimenting with technology when the technology has such a bleak, dark price?

2 comments:

  1. thanks really informative. I was wondering if there was a way to access the barnes and noble default screen and stuff on a rooted nook color.

    ReplyDelete
  2. No, not that I'm aware of.

    ReplyDelete

All comments are checked. Comment SPAM will be blocked and deleted.

Note: Only a member of this blog may post a comment.