Meego Wiki
Views
From MeeGo wiki
< ARM
Revision as of 01:57, 12 August 2011 by Wmarone (Talk | contribs)
Jump to: navigation, search

The Nook Color is an OMAP3621 based 7" tablet produced by Barnes and Noble as an lcd-based e-Reader. At the same time, it serves as quite a handy target for MeeGo due to the similar SoC.

Nook Color Official Site

NookDevs Nook Color Portal, good source of information

Contents

Basic Nook Color Specs:

  • OMAP3621 SoC @ 800MHz
    • PowerVR SGX 530
    • Differs from the 3630 by having the camera support logic disabled
  • 512MB RAM
  • 8GB internal storage
  • microSDHC slot
  • 7" IPS panel
  • Power, Volume+, Volume-, and stylized "N" home button
  • Headphone jack
  • USB Host support - Working in CM7 with 2.6.39 kernel and "Nook Tweaks" tool
  • Bluetooth -- Working in CM7 with 2.6.39 kernel

Communication

All channels are on irc.freenode.net

    1. nook-kernel -- All kernel collaboration discussion.
  1. meego, #meego-arm -- Future MeeGo discussion.

Novomok

Novomok had something going a few days after the 2011 San Francisco conference. They used a chroot to get stuff running.

Kernel Sources

B&N have posted the sources for their kernel, bootloader, and xloader, on their legal page, look for Attachments 1 and 2. Attachment 1 is the older 2.6.29 kernel, while Attachment 2 is the newer 2.6.32 kernel.

Currently there is an official 2.6.32 kernel, along with a community attempted port to 2.6.35, as well as my port of those patches forward to 2.6.38, in an attempt to meet the MeeGo baseline of 2.6.37.

A patch by Oleg Drokin that adds board file, serial console, gpio keys, MMC/SDCard and USB (peripheral) support has been accepted upstream. So Nook Color support is now available in the linux-omap-2.6 git tree and will be eventually pushed to linux-2.6.

Oleg's patches are very bare minimal and a kernel drivers for most devices still need to be pushed upstream. These drivers are both in 2.6.32 Nook Color Android stock kernel provided with the B & N source code and Oleg's Android 2.6.35 kernel. If someone is interested in forward port a driver to linux-next, please put your name next to the driver you will be working on. Then others can focus in different drivers to avoid duplicated effort.

The drivers needed are:

  • Encore charger and battery drivers (max17042).

I guess that support for this hardware is already in kernel, look at drivers/power/max17042_battery.c and drivers/power/max8903_charger.c

  • Kionix KXTF9 tri-axis digital accelerometer driver

Nathan Royer from Invense is also working in a driver for upstream submission. But as a part of a bigger driver for a Motion Unit Processing (MPU3050). When contacted Nathan said that he is also interested in a standalone KXTF9 driver working in the absence of the MPU3050. So Nathan's patch should be the one to base the porting work.

  • Cypress TrueTouch (tm) Standard Product (TTSP) I2C touchscreen driver

Kevin McNeely from Cypress Semiconductor is also working in a driver for upstream submission. Cypress driver is not I2C specific as the one found in the Barnes & Nobles Android kernel. The driver is generic, it has a core driver and bus specific modules. Right now implements two modules for I2C and SPI. The driver only supports multi-touch Protocol A. The community is working to implement Protocol B to Cypress driver, a requirement for upstream submission. The work can be found in this github repo

William Marone is working in a Linux port of the wifi driver for upstream submission, its git tree can be found here

Status

At this point 2.6.38 with drivers and board support files ported forward compiles silently, but does not activate the screen thus giving no useful output. With 2.6.32 and 2.6.29 it is possible to boot up to the login prompt (Xorg must be disabled, or the device will not give any indication of having booted.)

Getting Started

The Nook Color has a particularly well done boot sequence, in that it will default to boot from the SD card slot if plugged into a PC and powered on with a bootable card inserted.

Creating a Bootable Card

The card I created is based off of one of the Clockwork Recovery images, in particular a 4GB image reworked to boot MeeGo from the SD Card.

The simplest format is as follows, created using parted:

Number Start End Size Type File system Flags

1      32.3kB  74.0MB  74.0MB  primary  fat16        boot, lba
2      74.4MB  331MB   257MB   primary  ext2
3      331MB   4428MB  4097MB  primary  ext2

Partition 1

  • mlo -- Not sure, haven't touched it
  • u-boot.bin -- u-Boot binary, rebuilt to present a new command line to the kernel on startup
  • uImage -- u-Boot prepared kernel image
  • uRamdisk -- Rebuilt image to disable the internal init

Partition 2

Empty, probably not necessary

Partition 3

MeeGo root filesystem

Building the Kernel

The Nook Devs instructions will suffice for building a proper uImage. I will post the source of my u-Boot shortly.

Debug

Tech docs @ NookDevs. There is apparently a way to get RS232 out over the USB port, if you disable USB and enable the output in u-Boot.

Source Code

If you happen to come across any source code, patches, or the like (that are open source) then please let me (wmarone) know so they can be consolidated in a repository on Gitorious. Passing binaries and source code around using mediafire or other download sites just isn't right.

Personal tools