Tuesday, June 26, 2012

No Android, but Linux

Of course, I've a little (maybe some would call it huge) project in mind with my 2 Kindle Fires. One part of that project is to potentially not use Android on the Kindle at all. There are various reasons for this, but the major one is boot time. In that project I can't keep the Kindle Fire in its well-working suspend mode, from which Android awakes really quickly. Instead it'll boot freshly each time and my plan is to get the boot time down to under 5 seconds.

So, currently KF#2 does no longer contain any Android files. It already boots in ~8 seconds to a command line prompt of a small Linux system, but my hope is to get that further down. The kernel takes ~3 seconds, but x-loader and u-boot are my main obstacles right now. u-boot is a mess to understand and Amazon didn't make the job easier by adding support for the Fire to it. I even considered to get rid of u-boot and boot directly into the kernel from x-loader, but that would also mean to miss some nice features (boot logo, fastboot, etc.). Yes, I still use fastboot and adb from android, mainly because I find them very comfortable to use.

I've built that small linux system using Buildroot and used the (non-Android) framebuffer OpenGL ES drivers from TI, though getting the SGX drivers working was tricky. On the other side the OpenGL ES demos from the same package and some own test programs run nicely already.

Friday, June 8, 2012

Hardware Inspection Part #1

Before even buying my Kindle Fire #1, I started to inspect the hardware and especially the main PCB on iFixIt. Because I love to know what is inside consumer electronics, I also love iFixIt! Of course, it can't make up for the experience and joy of opening and analyzing the device yourself and attaching a digital storage oscilloscope everywhere you like to. But it was a good start for me also here.

This is what I learned from there:
  1. The WLAN companion chip (from the WL127x series) uses just TI's WiLink WLAN IP core and not all 3 for WLAN, BT and GPS. Actually, there are 4 if you include FM. So no need to invest time into finding out the hard way by trying to get a linux driver working blindly.
  2. Although iFixIt missed to mention it, the Kindle Fire comes with an ambient light sensor. Right after my first kernel build, I immediately tried out all ambient light sensor drivers that I could find. None of them seems to work. Did Amazon remove it from the code? I payed for the sensor, I got it, so I've also the right to use it!
  3. Surrounding the Flash ROM there's a line of 40 soldering pads and a PCB imprint that hints at the shape of a ZIF socket. I suspect that on pre-production models Amazon either used that for a larger, exchangeable Flash module or the JTAG interface. Or for both :-)