NookColor: Nookie Froyo Technical Page
From nookDevs
Part of the NookColor portal
|
Contents |
What is this?
A more technical discussion of how to create your own version of Nookie Froyo, a flavor of Android Froyo which can be booted on the Nook Color from an SD card.
The detailed description can be found on the base page at NookColor: Nookie Froyo. This is the techy-geeky page.
Downloading Sources
Lastest version of cicadaman's sources: http://edencomputing.com/nookcolor/nookie-froyo-base-0.6.6.tar.gz
Discussion thread on XDA-Developers.com
Creating Build Environment
Formatting SD Card
info here. The sector/head/cyl counts are important, otherwise you get black-screen. You should partition your SD card into four parts, as described below:
Device Boot Start End Blocks Id System /dev/sdd1 * 1 15 120456 c W95 FAT32 (LBA) /dev/sdd2 16 34 152617+ 83 Linux /dev/sdd3 35 123 714892+ 83 Linux /dev/sdd4 124 244 971932+ c W95 FAT32 (LBA)
p1 is /boot, p2 is /system, p3 is /data+cache, p4 is SD
Modifying init.rc
The bundled init.rc in the uRamdisk, a "mix of stock + froyo, mostly froyo", must be modified to point to your new partitions (ie /dev/sdX# where X is your device and # is the partition) If you don't know how to do this... stop. It will involve unpacking and repacking the uRamdisk.
To unpack, copy uRamdisk into a directory (which we'll call "ramdisk")
cd /to/ramdisk/directory/where/uRamdisk/is dd if=uRamdisk of=ramdisk.cpio.gz bs=64 skip=1 gunzip ramdisk.cpio.gz cpio -i -F ramdisk.cpio rm uRamdisk
To repack:
See instructions on this page. You will need to build u-boot to get the mkimage tool.
Source Code
GitHub Sources:
- kernel 2.6.29 ka6sox's git repository of the kernel
- kernel 2.6.32 - a work in progress on the 2.6.32 kernel
- [1] cicadaman's template files- ramdisk, init.c, etc.
- EugeneKay's full build repository
Barnes & Noble's source code:
This is a 2.6.29 kernel built with the omap3621_evt1a_defconfig config. Modified further by cicadaman. https://github.com/optware4android/nook_kernel
- NOOK Color 1.0 OSS Release
- NOOK Color 1.1 OSS Release
- NOOK Color 1.2 OSS Release
- NOOK Color 1.3 OSS Release
Android FroYo sources:
Various TI redistributable binaries (linked from omappedia) for nook hardware:
- http://omappedia.org/wiki/Graphics
- http://omappedia.org/wiki/WiLink_Connectivity_Project_Main
- http://omappedia.org/wiki/DSPBridge_Project
- http://omappedia.org/wiki/OpenMAX_Project_Main
In process work for BT activation:
Work continues from the software side to get a software chain in place which will talk to the NC's bluetooth hardware and expose it to android. This has not yet succeeded. The current status is, that the kernel is capable of talking to the Bluetooth's controlling uart via hciattach loaded from Optware for Android. No radio signals, no pairing has been achieved. Please monitor the wiki and the IRC channel for progress.
We do not yet know if the BT radio is on and working. That is a hardware issue. The BT radio is hardware controlled by a pin on the underside of the radio chip and we can not see it or test it without tearing a board apart, so, short of the hardware teardown, which can not be reversed, work continues on BT software in the hopes that the radio is activated.
U-Boot diff <> http://pastebin.com/cz0MSP8n - sets up the GPIO that controls the BT enable
BN stock kernel diff <> http://pastebin.com/YrezkdRf - maps the BT enable to an rfkill device
With both of these patches, you can turn on the BT module with:
echo 1 > /sys/class/rfkill/rfkill0/state
BTS initialization scripts to test and modify here: TI_Connectivity_Package_Firmware_and_InitScripts_COM6_1271-L27.5.2_Pandroid
currently it only loads w/ hciattach from bluez 3.x from Optware for Android and bluez 3.x optware needs dbus for hcid, and optware's dbus seems to not be playing nice w/ bluez... which appears to be in the init script /opt/etc/init.d/S20dbus
fyi : if you try a script the bt doesn't like, the controller gets wedged. either power cycle or trip the watchdog to get it to reset
applicable reference info at http://processors.wiki.ti.com/index.php/ARM_Processor_Wireless_Connectivity_FAQ#How_can_I_run_Tx_BIP_.28WLAN_Calibration.29.3F
This is the TI source and utils for the wlan driver and wilink firmware that comes with NC 1.0.1 firmware: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/ecs/WL1271_Linux_SDK/3_00_01_06/index_FDS.html
Getting hardware UART console (WIP)
Apply these patches to the stock u-boot and the nookiedevs github kernel: http://www.mediafire.com/?7v4bqe4pzqb1b2t . A built u-boot is included for the lazy.
Build a USB UART-to-serial cable. You'll need something that can take 3.3V asynchronous serial, such as an FTDI USB-serial cable like used with Arduino. You're on your own for figuring out how to construct the cable, but the signals are D+ (green) for RX input on the NC, D- (white) for TX output from the NC, and USB ground (black, not the shield!) for ground. Terminal settings are 115200,n81, and the OMAP UART is UART3 (/dev/ttyS2 on BN stock 2.6.29, /dev/ttyO2 on omappedia's 2.6.32)
When the patched u-boot starts up, it will drop you to a shell instead of autobooting. To boot into stock, just type "run normalboot". The kernel patch and the environment settings in these patches set up the Linux early printk and console to come out of the UART.
For some reason, android console output is not routed out the UART, and the screen stays black after a boot with this setup.