[Kindle Fire Android Development] Hashcode:
Hello Fellow Kindle Fire 1st Gen Users,

WARNING: This is not ready for prime time yet! It's a work in progress. Test at your own risk.

Welcome to the "Next Big Thing" for the Kindle Fire 1st Gen (when it's ready).

I present to you the second MAJOR update to our Kindle devices: TI Kernel 3.4.y + Android device changes for the Kindle Fire 1st Gen.

What currently doesn't work?

Audio

HD codecs

Device doesn't deep sleep

Bugs w/ USB connectivity (won't detect a new USB connection while screen is off)

Shutdown bug stalls out the shutdown. Looks like the device is off, but it's still powered draining battery. Currently requires long power button press to fully shutdown after the screen is black (about 15-20 seconds).

What's different / changing?

SGX/PVR graphics binaries / kernel module source updates for the new kernel.

HWcomposer API 1.1

New Audio drivers (kernel side is mostly done, userspace is WIP)

Uses a new backlight driver based on the KFireHD 8.9 sources -- much cleaner

Possible more changes including new green/orange LED drivers which are not tied directly to charger IC. Idea here might be to use the power button LED for blink notifications in Android

Patches to CM's frameworks/native which support the new FB1 framebuffer (used for WifiDisplay/HDMI) -- these will eventually need to be merged into CM/AOKP etc.

With this upgrade I have several goals:

Clean up our kernel drivers as much as possible to make further kernel upgrades MUCH easier (TI is already working on a 3.8.y branch).

Fix the MIC input

Fix the light sensor

Clean up OTG and more

Build custom HD codec binary using the codec sources released by TI. Previous to now, we have been 100% dependent on a binary provided by TI.

Finish device-based Android sources for the sensors so that we can drop the binary lib file from the Gingerbread-based Amazon OS.

Add TI's WifiDisplay Android APKs to the build for full support

Support all of the Kindle Fire models on 1 kernel. Changes will be coming to add Otter2, Tate and Jem support in the future.

What is a Kernel?

The core binary loaded by the bootloader which interacts directly with the hardware of our device. This is known as a "kernel".

Why upgrade the kernel?

All of Texas Instruments new sources for OMAP4 are based on this new 3.4.y kernel branch. There is no longer any development being done to our current 3.0.y kernel. This means that should any future version of Android require changes that TI is working on, we will need this kernel.

Improvements are made to the basic kernel structures over time and added in at various versions. For instance the flash memory access times seem to be considerably better using the 3.4 kernel vs. the current 3.0 kernel.

While this kernel is still fairly alpha and definitely not recommended as a daily driver. The future is that this will contain better OTG handling and updated USB drivers.

CyanogenMod build instructions:

First make sure your Android build environment is fully setup according to these instructions:

http://source.android.com/source/initializing.html

Then, follow the setup instructions here:

https://github.com/KFire-Android/android_local_manifest/blob/cm-10.1-k34/README.mkdn