Around xmas a techie friend looking for gift ideas asked me what kind of e-reader / tablet I would purchase if price wasn’t of primary concern. Of course, he also knows I’m cheaper than a three dollar watch, and price is always a primary concern for me. Being against all things Apple by nature and genetically pre-disposed to void the warranty on every electronic device I purchase, I did a bit of research and found that the good folks over at xda-developers.com had managed to root a B&N NOOKcolor, thus opening the device up to the near endless possibilities of the full Android platform. A little more research proved that if you compare this device to other Android tablets, while it’s the cheapest, smallest thing available in this realm with a capacitive touchscreen, it’s also very well built and an excellent value. So earlier this week when my state tax refund came in, and pressured by rumors that B&N had recalled store inventory to release a slightly less hackable protected bootloader version, I pulled the trigger.
Breaking the Seal
Being an Android virgin, I found after unboxing and trivially installing the fantastic autonooter from a microSD card, that much reading was in my future. Here’s how I configured my “Nookie” for use as a geek command center, without spending another penny or disabling any of the Barnes & Noble software (which is quite good IMO).
Minimum Geek Requirements:
Console Access (Shell)
Must run a 2.6 linux kernel (on principle alone)
Anything more than this would be unnecessary fluff, like being able to get on the youtubes and whatnot. Hell, I might even read a book or two on it.
Here’s what I learned, hopefully it will save another Android virgin some time.
What the Hell is SoftKeys and Why Do I Need It?
One of the applications that was included with autonooter was SoftKeys. I’m sure in some way this application can be more useful, but it seemed like regardless of how it was configured, it never seemed to work for what I thought was needed (a method to get back from a GUI page without a back button). Uninstall… I never really did find a good use for SoftKeys, save giving me a convenient list of the running apps on my homescreen. The function I believe it was intended to provide (the back menu key for pages devoid of a back button) can be achieved by swiping right to left across the notification bar.
Update: I did finally stumble upon a use for SoftKeys, read about it here.
After much trepidation I discovered what I really wanted was a homescreen replacement, which could then be assigned to the menu button (the lower case “n” at the bottom of the Nookie). Searching the app market turned up several hits, but nothing caught my eye (read: was free). A little more research on xda-developers turned up references to Zeam. Done and done. Once installed and in place press the “n” button. You should get a menu asking what application you would like to complete this action – click the checkbox at the bottom first, and then select Zeam. Now your “n” button will always take you back to your homescreen if you should get lost. How sweet basic functionality is!
This Is All Well and Good, But Can You ssh Into Your linux Servers?
At first I had somehow hoped that there would be a ssh client already present, waiting for me to gain console access. The app Terminal Emulator afforded me the opportunity to have my hopes dashed.
ConnectBot seems to be the defacto standard for this. Done and done? Not quite. Anyone who’s more than mildly familiar with any shell such as bash, bourne, csh, or the utilities vi, screen, top knows that no self-respecting sysadmin can function without that funky little key in the corner of your keyboard labeled [ctrl]. Turns out this is a tall order for a touchscreen keyboard. Enter Haily Lin’s FullKeyboard. You guessed it, free as in beer! Once you download it from the app market you need to copy the .apk to the /system/app folder so you can select it from Nook Color Tools.
See below for instructions on how to remount /system writeable, and linking cp to busybox…
# cp /data/app/com.hmw.android.fullkeyboard.apk /system/app/com.hmw.android.fullkeyboard.apk
# rm /data/app/com.hmw.android.fullkeyboard.apk
It takes a bit of getting used to, and I thought it wouldn’t work at all initially because turning the Nookie on it’s side caused FullKeyboard to go all whacko on me, only showing the qwerty half of the keyboard. This is where I found I needed to… you guessed it – install another app. It may be possible to turn off “compatibility mode” without the app SpareParts, but I’m sure it would’ve involved a nontrivial amount of cussing, so just take my word for it. After un-checking the setting “Compatibility Mode” in SpareParts be sure to reboot and you should find FullKeyboard is finally “full” in landscape mode. Sweetness.
UPDATE: Turning off compatibility mode only seemed to work for a short time, or it’s highly possible I imagined that it worked at all. Long story short, FullKeyboard still doesn’t work in landscape mode so that’s one limitation I’ve been unable to work around. Will update this page if I discover a solution.
Of vi and Shell Scripting on Android
Anyone who knows me very well knows that I don’t trust an application that can’t be scripted from the command line. The same is true of devices that can’t be bent to my will with a little shell scripting. Having found that I needed to copy the keyboard .apk file onto the /system partition in the previous step, I had grown tired of remounting this partition for read-write access, so why not let us make a shell script to do so with a few less keystrokes.
vi: not found
WTF? No vi? You call yourselves hackers? Let’s remedy this egregious oversight first. Remount /system for rw: (still as superuser)
# busybox which busybox
# busybox which mv
# cd /system/bin
# ln ../xbin/busybox vi
While you’re here you may want to also create a link for which, more, cp, lsattr, du, df, wc or any other essential busybox tools that you know and love that might have not been linked by the installer. Now we have a functional vi, and a keyboard that we can use it with.
Let’s make a shell script to save us typing the remount command (also still as superuser):
mount -o remount,rw -t ext2 /dev/block/mmcblk0p5 /system[ctrl+c]
# chmod 755 /system/bin/makerw
Now we only need to issue the name of our script (makerw) after becoming superuser and the world is now our (fully writeable, please be careful) playground.
Would Someone Please Answer That Phone?
While you’re still sitting on a writeable /system you might also want to remove or disable the telephony portions of Android to prevent them from being executing and wasting cpu time (and power).
# mv /system/app/TelephonyProvider.apk /system/app/TelephonyProvider.apk.bak
You might also want to move the ota certificate provider archive, theoretically disabling updates so your Nookie doesn’t update it’s little brains out.
Other cool tips like this can be found in the xda-developers Work-arounds thread. One such tweak I came back to and recently posted about here is the one where I permanently set the lcd_dentity variable.
I won’t go into extensive detail on the other apps needed to satisfy my requirements and / or whims, but here’s a basic list of their titles and function.
CPU tuner – tweak the cpu freqeuency scaling settings for better battery life
LCDDensity – for testing different X desktop sizes / scalings
ES File Manager – a free file explorer with CIFS capabilities
Tiny Cam Monitor Free – an awesome little mjpeg stream viewer
In the Spirit of Openness
If you’ve known me long you’re sure to have heard my rants about how dumb I think it is that hardware manufacturers go to extreme lengths to secure their own, or licensed intellectual property while at the same time drinking deep from the bountiful well that is the open source software community. With the maturation of the OpenWRT project, MythTV, and many other fantastic OSS pieces built around the linux kernel, I’ve long wished for more choices when it comes to (inexpensive) open hardware. Notwithstanding what the future revisions of this device may have in store for us, I would dare say that I think Barnes & Noble got the hardware / OS part right by shipping the NOOKcolor without a chastity belt. If Microsoft, Sony or not least Apple would remove head from ass so to speak, and follow suit, they might find their devices flying off store shelves that much faster. So to return the sentiment I purchased two ebooks from the B&N bookstore, and this will likely not be my last book purchase. Keep up the good work, and I’ll be buying one of these for all of my family members in the very near future.
Update: It appears the rumors floating around were false, and B&N has actually left the NOOKcolor configured to boot from the microSD slot as the first device. Let’s hope their sales numbers make the device the huge, open success it should be.