NOTE to the phone users which I support:
Yes, I’m also working HEAVILY on the phones to get some features fixed and others added. Never fear. :) However, kernel work has a large place in the future of phone development, and this has been a GREAT experience. Hopefully, the work I’m putting into the Kindle will pay off for the phones I work on as well.
For those of you that don’t know, I’ve been fairly active developing ICS for the Amazon Kindle Fire.
A little history of the device:
- TI OMAP4430 CPU (just like Droid 3, Bionic, RAZR and Droid 4)
- 512mb memory
- 7″ form factor tablet (1024 x 600)
- Runs Amazon’s customized version of Android (2.3.4 Gingerbread)
- Unlocked bootloader
- Current kernel is 188.8.131.52, TI tag: L27.13.1-Beta
- 8gb internal emmc storage area w/o an external sd slot
Since the Kindle Fire has an unlocked bootloader, I felt it would be a GREAT experiment in learning about kernel development and work on some of the systems that are currently unavailable on the Motorola phones I support.
Enter a few weeks of blind kernel development. There is no serial port on the Kindle Fire. I would try backporting some of the ICS kernel’s features and if the kernel didn’t boot.. well that was it. Toss the code and start over.
Few weeks ago, the identified the UART motherboard pads in this XDA thread, and I KNEW IT WAS TIME TO LEARN TO SOLDER!
So, I ordered all of the goods needed and got ready to get to work:
SparkFun FT232R for translating serial output to USB.
Set of small electronics screwdriver set
I wouldn’t recommend that everyone jump in and do this:
- In general you risk damaging your Kindle Fire
- Taking the back cover off incorrectly can break off the small tabs that hold it into place, making it difficult to keep on. (I did break 1 tab during this procedure — but the cover still fits nicely)
- Soldering is not a joke. You need to go do the research and practice. I took out a motherboard from an old laptop and did 10+ tests where I took a wire and soldered it to a pad on the board. Even then… things didn’t go entirely smoothly (read below). YouTube also has a GREAT series on how to solder (you’ll have to get over the fact that it’s the 80′s):
Anyway so here we are with the pics:
This is the equipment I used.
Here I have the back cover off of the Kindle. I recommend using a plastic flat tool to pry the rubberized portion up and away from the front. That way you avoid breaking too many of the small tabs.
Motherboard is out! Note that the pictures make this look like it’s fairly good size. It’s not.
Here’s a better shot right before I moved the Motherboard to start soldering on the wires to the 4 pads on the right. They are so small that at this point I nearly stopped and put the entire thing back together. The tests I did on the other motherboard: the pads were slightly larger and had more solder on them.
Here’s a shot of the Motherboard with the new wires attached. I didn’t realize at the time that I only needed GND and TX0 attached. I did all 4. And originally I thought I’d have enough solder to attached the wires just by tinning the tip and wires. Such was not the case. I had to pin the wires down with a clamp so I could use 2 hands and add just enough solder to hold the wires to the pads.
And here’s the Motherboard back in the Kindle. I flattened one of the speaker screens and ran the wires out through the top so they could be connected to the SparkFun.
I had a real scare while re-attaching everything. The battery connector didn’t go in perfectly straight and I bent a pin. Had to pull the battery out and use a very thin screwdriver attachment to go into the connector and straighten it out.
This was around 2:30am. But that didn’t stop me from booting it up and checking the output!
This pastebin shows the bootloader and then the kernel output via the new UART connection:
NEXT STEPS FOR KINDLE FIRE ICS KERNEL DEVELOPMENT?
I’ve been working with the Nook Tablet guys as we’ve been hammering on the kernel backport modules. They also have a guy who soldered a UART connection and is working on a 3.0.8 kernel. Amazingly the Nook Tablet is nearly identical to the Kindle Fire. So much so that they have the same TI tagged kernel as we do (L27.13.1-Beta).
I will probably grab the work-in-progress kernel that they’ve been developing and load up the 3.0 kernel config I already have out on GitHub.
And we’ll see where stuff is going wrong.