NOOK Simple Touch Notes

From Wiki
Jump to: navigation, search


  • Android 2.1
  • 800 MHz TI OMAP 3621
  • 256 MB RAM
  • 2 GB Flash
  • SD Slot
  • 6 in (152 mm), 600 x 800 pixel, 167 PPI, E Ink
  • Touchscreen, left-right paging buttons, home button
  • Wi-Fi 802.11 b/g/n
  • USB
  • 6.5 in (165 mm) H x 5.0 in (127 mm) W x 0.47 in (12 mm) D
  • 7.48 oz (212 g)

Model Numbers

  • BNRV300 - NOOK Simple Touch
  • BNRV350 - NOOK Simple Touch Glowlight

Various Links

Hardware Stuff


  • Need to find original kernel sources that B&N derived their build from
  • Determine differences between original source and B&N source
  • Determine how well changes can port over to 2.6.35
  • Android 2.3.7_r1 is last version that could be installed on an NST
  • What files do we lack to build the 2.1_r2.1p2?

Fetching Android 2.3.7_r1 Sources

curl > ~/bin/repo
chmod a+x ~/bin/repo
mkdir Android
cd Android
repo init -u -b android-2.3.7_r1
git config --global ""
git config --global "JC Wren"
repo sync

NOOK Files

  • /boot/wvf.bin - Waveform file for eInk controller
  • *.pgm - Netpbm image file, can be sent directly to framebuffer for display
  • /etc/wifi/firmware.bin - Firmware for WL127x WiFi module
  • /etc/wifi/tiwlan.ini - Configuration file for WL127x WiFi module

Copying The File System

These instructions are for Linux, and won't work for OSX. There is a way to do it, but I found it easier just to copy the mmcblk0 file over to the Linux box, where I could use the familiar losetup/mount tools. Under OSX, this can be done with the 'hdiutil'.

Suck the 2GB flash contents down to a local file (use -d option if connected via USB (recommended)):

adb [-d] pull /dev/block/mmcblk0 mmcblk0

The 'mmcblk0' file should be 1,958,739,968 bytes long. The physical part is 2,147,483,648 bytes in size, but the 188,743,680 bytes are not used as file system space.

Verify the partition start/end blocks match the value below

fdisk -lu mmcblk0

This script will mount the partitions in a local directory. You may need to remove the "ro," from the p7 and p8 mounts if they give an error. This is the result of copying a live file system. When the "ro," is removed, mount can fix the file system. If this is necessary, I'd strongly recommend unmounting, adding the "ro," back, and remounting to avoid accidentally changing the contents.

# Device       Boot     Start       End  Blocks  Id System
# /dev/loop0p1 *           32    155647   77808   c W95 FAT32 (LBA)
# /dev/loop0p2         155648    188415   16384   c W95 FAT32 (LBA)
# /dev/loop0p3         188416    577535  194560  83 Linux
# /dev/loop0p4         577536   3792895 1607680   5 Extended
# /dev/loop0p5         577568   1167359  294896  83 Linux
# /dev/loop0p6        1167392   1658879  245744   c W95 FAT32 (LBA)
# /dev/loop0p7        1658912   2150399  245744  83 Linux
# /dev/loop0p8        2150432   3792895  821232  83 Linux

for i in 1 2 3 5 6 7 8; do
  mkdir -p mmcblk0_dir/p$i

losetup /dev/loop0 mmcblk0
mount -o ro,offset=$((32      * 512)) /dev/loop0 mmcblk0_dir/p1
mount -o ro,offset=$((155648  * 512)) /dev/loop0 mmcblk0_dir/p2
mount -o ro,offset=$((188416  * 512)) /dev/loop0 mmcblk0_dir/p3
mount -o ro,offset=$((577568  * 512)) /dev/loop0 mmcblk0_dir/p5
mount -o ro,offset=$((1167392 * 512)) /dev/loop0 mmcblk0_dir/p6
mount -o ro,offset=$((1658912 * 512)) /dev/loop0 mmcblk0_dir/p7
mount -o ro,offset=$((2150432 * 512)) /dev/loop0 mmcblk0_dir/p8

Note that the one of the file system types used is 'ext2'. I had to recompile my Linux kernel with CONFIG_EXT2_FS=m in .config, followed by

modprobe ext2

to load the ext2 driver. If you don't have this, Linux will won't recognize the file system.

Back up the file system to a tar file to untar somewhere else.

tar -jcf mmclk0.tbz2 mmcblk0_dir/*

Unmount script:

umount mmbclk0_dir/*
rm -rf mmclk0_dir
losetup -d /dev/loop0