Hacking the Nokia Internet Tablet
I've been a fan of tiny computing devices for a long, long time. I started my obsession for having a “PC in your pocket” with the Hewlett-Packard 95LX and stayed with that platform for a long time—graduating to a 100LX, then a 200LX. The 200LX was eminently hackable, as it was basically a PC/XT running DOS 5.0 with CGA graphics. At one point, I had the 200LX doing some crazy things, including acting as a mobile Internet terminal while I was on vacation touring Europe.
I then moved on to the Palm line of organizers, but although the features grew, the ability to hack the system slowly diminished. I'd pretty much given up on an easy-to-hack portable PC, until Nokia released its series of Internet tablets. Once I saw the N800 in action, I knew I had to get my grubby paws on one and see just how far the little platform could be hacked. I'm happy to say, I haven't been disappointed.
Nokia has released three models of Internet tablets at the time of this writing: the 770, N800 and N810. The 770 was basically the prototype Internet tablet, while the N800 and N810 are very similar in basic architecture. Because the 770 is somewhat unique, this article applies only to the N800 and N810. The Nokia Internet tablets have been covered in Linux Journal before—the N800 actually won the “Ultimate Linux Handheld” award in September 2007. Doc Searls and Jim Thompson wrote an article in that same issue and demonstrated the device's value when paired with a Bluetooth GPS and a cellular phone. That's one type of hack for the tablet, but there are many others.
The first “hack” anyone should do to the tablet is to flash it to the latest version of the operating system, if that's not been done already. The N800 ships by default with OS2007 (maemo 3.2, code-name Bora), and the N810 ships with OS2008 (maemo 4.0, code-name Chinook). However, a new version of OS2008 was released in June 2008 (maemo 4.1, code-name Diablo) that enabled over-the-air upgrading, much like apt-get does for Debian-based laptops and desktops. If you are not running this on your tablet, that's the first hack you should do.
The full instructions for updating your tablet are available on Nokia's wiki (see Resources), but I summarize them here. To update the OS on your tablet, the first thing you should do is run the internal backup utility (found in the Settings menu), back up the contents of the tablet, and then transfer the contents of that backup to your PC. Next, download the Linux “flasher” utility and the latest firmware image for your particular tablet to your PC. Ensure that the battery on your tablet is fully charged, power off the tablet, and connect the tablet to your PC. Finally, execute the flasher utility as root with a similar command line as shown on the wiki, and plug the tablet in to the charger. The flasher utility displays messages as the firmware load progresses, and the tablet reboots automatically. That's it!
A tiny but very useful “hack” for the Internet tablet is to populate it with large Flash media (SD cards on the N800, miniSD cards on the N810) and use it as a USB storage device. Nokia had the foresight to give the tablet the ability to look like a USB mass storage device to a PC when a USB cable is connected. I have two 8GB SD cards in my N800, and I always leave a couple gigs of storage available on one of the cards, so that in a pinch, I can jack the tablet up to a PC and use it as a portable hard disk. It has come in handy more than once.
Another useful “hack” that's really easy is installing Linux applications that have been ported to the tablet. One of my favorite applications on the tablet is the popular IM application Pidgin, as shown in Figure 1. Although the Nokia tablets come with an XMPP-compliant Jabber client, I find that having a consistent UI and behavior from desktop to laptop to tablet is really nice. Getting Pidgin installed on the tablet is really easy, as it's in the official Nokia software repositories. Simply fire up the Application Manager from the Settings menu, search for Pidgin, and click install. The launcher for Pidgin will be in the Extras section of the menu.
Of course, a Linux machine of any kind isn't really complete until it runs Doom. LXDoom has been ported to the tablet, and it runs just great, as shown in Figure 2. The controls take a little getting used to, due to the nature of the touchscreen and the directional pad on the tablet, but the game runs with a very playable framerate. Other games have been ported to the tablet, including Battle of Wesnoth, Nethack, Bomberman and even Quake.
Another really interesting hack for the Nokia tablets is using them to emulate other computing environments. ACCESS (the owners of the Palm operating system) has released a free (as in beer) Virtual Machine (VM) for Nokia tablets that allows PalmOS applications to run on the tablet. To install the VM on your tablet, go to the link provided in the Resources section of this article, and register to download the VM. A link for downloading the VM will be sent to you via e-mail. Open that e-mail message on your tablet and click the link, and you'll be sent to a site where you can agree to the EULA and download the binaries. Make sure to open the package in the Application Manager, and it will install automatically after you click OK in a couple dialogs.
Once you launch the application, you will see a start screen (Figure 3) where you can select the PalmOS app you want to run. Click the app, and then click Launch, and the VM launches that app (Figure 4). Once the app starts, you are in a PalmOS VM, and you can even call up a PalmOS “home” screen by clicking on the house icon (Figure 5). This comes in very handy if you are a recovering Palmaholic who's got that one killer app you haven't been able to find on any other platform (TealAuto is that one for me!).
Other emulators have been ported to the tablet as well, such as Basilisk (if you are a fan of old Macintosh applications), DOSBox for old DOS programs or games and Bochs (if you want to try your hand at running Windows 3.1 or Windows 95 on your tablet). There are documented cases in the Nokia forums of people running Windows 95 and even Word 6.0 on their tablets.
The tablets also make great IP telephones. Not only is there a Skype client for the unit, but there also are fring and Gizmo clients, as well as the Web-enabled Google-based Grandcentral. The Internet Tablet Talk forum has a post that describes how to tie a free Gizmo and a free Grandcentral account together to get 100% free land-line phone calls from your Nokia tablet. Other than the Gizmo account and software, there are no real “hacky” things needed, other than a willingness to tie two services together in a way that neither provider envisioned.
So far, I've touched on some of the easier software hacks you can do that will extend your tablet. You can perform other more-advanced hacks on both the OS and hardware, but you need to have one thing before you can proceed with them, and that's a root shell.
In previous versions of the tablet's OS, this was truly a hack. In OS2008 (Diablo) this has been turned into an installable package, so it's really easy now. Simply open the Application Manager, search for the rootsh package and install it. Then, once you have a shell open in the X terminal, run rootsh, and you will have root access to your tablet.
Once you've got a root shell, you really can start digging into the OS of the tablet. One of my favorite hacks is to run the OS off an SD card rather than the internal Flash disk. Not only is it faster if you have a Class 6 SD card, you also can partition the disk so that you'll have more space for applications, and you still will have the internal Flash copy of the OS in the event that you break something.
This process is documented in full on the maemo.org wiki (see Resources), but the steps are actually pretty easy and can be summarized in this article. First, you need to have the root shell enabled on your tablet as described above. Then, you need to partition the SD card into two partitions: the first partition is a FAT32 partition for your data, and the second is an ext2 partition for the copy of the tablet's OS. After you've prepared the card, you need to install some packages from the command line (wget, tar, an upgrade script called nupgrade.sh and a couple tablet-specific packages like initfs_flasher). initfs_flasher flashes the boot sector of the internal Flash disk to pop up a boot menu that lets you boot the tablet from internal Flash, an SD/MMC card or an external device like a USB memory stick.
Once initfs_flasher has finished doing its magic and you have set the default boot device, you're ready to clone the OS to the SD card. This is as easy as becoming root on the tablet and running the nupgrade.sh script with the proper arguments. Note that you'll run it five times according to the wiki—this lets you monitor each step of the way. The steps are as follows:
Creating the ext2 filesystem on partition two of the SD card.
Temporarily mounting partition two as /opt.
Temporarily mounting the rootfs as /floppy.
Cloning the OS from /floppy to /opt.
Committing the filesystem updates and umounting /floppy and /opt.
The device reboots when it's done, and the boot menu pops up. At that point, just select what you want to boot from the menu. If you're really feeling adventurous, try “Advanced Booting” your tablet, so you can boot multiple copies of the OS from the card. The wiki has an example procedure that shows how you can set up a card to have a 2GB data partition and boot five different copies or versions of the tablet OS! Just the thing for the curious tablet user.
All of these hacks have dealt with the software or firmware of the tablet in one way or another. A very useful hardware hack is enabling a USB host mode on the tablet. The tablet as shipped is a USB device, suitable for hooking to a PC and showing up as a device attached to that PC. A tablet, running in USB host mode, would be able to utilize a full-size keyboard and USB disk drives, effectively making it more of a PC. This previously was a hardware-only hack, requiring soldering special USB cables to put the USB port into host mode.
With OS2008, Nokia put software hooks into the OS to allow users to flip the port into host mode. This is enabled by a small package called USBControl, which is in the Nokia repositories as well, and it can be installed via the Application Manager. Once you run USBControl, switching from device to host is as easy as touching a button. Then, simply hook up the device you want to use with the tablet using any adapters that are necessary, and that's it (assuming there are drivers for that device in the OS). Most input devices and storage devices are enabled out of the box.
The Nokia N800 and N810 are both great little devices and are much more than the sum of their parts, thanks to their open-source heritage and Nokia's willingness to allow them to be extended and hacked in this fashion. Kudos to all the maemo.org developers and hardware engineers for creating such a hackable and fun platform!
Bill Childers is the Virtual Editor for Linux Journal. No one really knows what that means.
- My Childhood in a Cigar Box
- Papa's Got a Brand New NAS
- Applied Expert Systems, Inc.'s CleverView for TCP/IP on Linux
- Returning Values from Bash Functions
- Tech Tip: Really Simple HTTP Server with Python
- Rogue Wave Software's TotalView for HPC and CodeDynamics
- Panther MPC, Inc.'s Panther Alpha
- Simplenote, Simply Awesome!
- Debugging Democracy
- NethServer: Linux without All That Linux Stuff