On June 11th, I wrote a semi-rant “Droid 3.. to be or not to be (ICS’d)”, and I discussed the exact reasons why I was “giving up” on ICS for the Droid 3. Many of you who follow me on twitter (@hashcode0f) have seen hints that something has changed in the Droid 3 world and are seeing words like “kexec” floating around.
Here’s a review of some of the points I brought up in my earlier post and the counter point to what has changed since then.
1. 512MB RAM isn’t supported in Texas Instrument’s (maker of the OMAP4430 CPU in the Droid 3) stock kernel
Not true any more. As of a month ago, TI has merged in new memory handling to support running their stock 3.0 kernel on 512MB devices. You can see this development branch here at omapzoom.org under the “p-android-omap-3.0”. This kernel source customized with Motorola’s drivers for the Droid 3 would enable an up-to-date ICS/JB experience just like the RAZR/Droid 4 and Bionic are currently getting.
2. The “ducati” HD codec binary doesn’t support 512MB RAM devices (similar to how the 3.0 kernel doesn’t)
My original argument: even if you could customize a 3.0 kernel to run on 512MB (which I have done for the Kindle Fire), I can’t compile my own 512MB complaint ducati binary. And the one I use on the Kindle Fire probably won’t work for the Droid 3’s dual camera setup.
Not true as well now. About 3 weeks ago TI merged in code to support building the ducati binary using a 512MB memory mapping. NOTE: To-date TI has never actually built a FULL ducati binary using that 512MB memory map, but I’m working on this (more below).
3. To get a 3.0 kernel loaded on the Droid 3, we would need to use a technique known as “kexec”. This allows an existing kernel to be fully replaced in memory almost like the device was rebooted. You may have already heard of this on the RAZR where developers [mbm] and Kholk successfully booted a slightly custom version of the original 2.6 kernel (at the time). My argument was that this process for getting a kexec system to work was also time consuming.
Since then, I’ve met another Droid 3 owner (and developer) named jonpry. He was interested in putting a custom kernel on the Droid 3. So, during out discussions, I told him: “if you make kexec work on the Droid 3, then I’ll take my best shot at getting a 3.0 kernel running on it.” And he did. Not only did he rebuild their process and get it working on the Droid 3, but also solved several issues that they had on the RAZR. For example: the 2nd CPU now works as well!
Looks like I had some work to do. But where to start …
4. My last argument was that the Droid 3 doesn’t have a usable 3.0 kernel to run on it. And developing one from scratch would takes months of time and run into all of the first 3 issues.
As of the beginning of July, Motorola released the 3.0 kernel source for the RAZR and it’s a VERY good starting point for a kexec kernel to use on the Droid 3.
So, if all of these issues are now “solved” why doesn’t the Droid 3 have an ICS/CM9 ROM which works and acts like it should?
The short answer is: We do (sort of.. in progress). As of a week ago, I have a full CM9 build using a new 3.0 kernel which has been heavily modified to more closely resemble a stock kernel from TI.
- It’s using Jelly Bean ready graphics drivers
- And has the code ready to load a 512MB memory mapped ducati binary enabling HD codecs and possibly camera. NOTE AGAIN: this ducati binary actually doesn’t currently exist. But, more on that later.
Status RIGHT NOW of the ICS/CM9 build using the new 3.0 kernel:
- The newly updated graphics drivers create a fluid and fast UI like it should be in ICS and beyond (IMHO it’s actually a bit smoother than the current MotoICS-based RAZR, Droid 4 and Bionic builds due to their framebuffer issues)
- Main audio is not working, but BT/Speaker phone are
- Radio is up and running, calls work and 3G has been reported as working (VZW only, more testing for XT860 and other variants)
- Touchscreen and other sensors are fully working
- Internal SD card is not mounting for whatever reason, but external SD is
- Wifi comes up VERY solid is perhaps the best it’s ever been on the Droid 3
- Hard keyboard needs work in the device tree to fix key mappings
In general, this build is encouraging as it demonstrates how close the Droid 3 is to being brought up-to-date with the other devices that I support (RAZR, Droid 4 and Bionic). And how well it cam run ICS and the Jelly Bean builds to come.
If you’re curious about seeing this build of CM9:
- You’ll need to install Safestrap 2.0 (with kexec support) from here
- Download the KEXEC CM9 ROM from here and install as you would any other ROM in Safestrap
NOTE regarding a new 512MB ducati: I made a contact at Texas Instruments who is working with me to build this binary. It’s not the normal thing that he does, and Texas Instruments is a bee hive of activity these days. (read as: he is VERY busy with Jelly Bean changes and more). So it may take some time to figure out the new ducati build and get a working 512MB binary, but with a little patience we’ll hopefully work it out and have what we need to make this the “complete” solution that all of us Droid 3 owners are looking for.
WHAT CAN I HOPE FOR BY USING A NEW 3.0 KERNEL-BASED ROM?
- Future-proof display drivers not only supporting the ICS changes that were so badly broken prior to this kexec build, but also new features like triple buffering and vsync limits for Jelly Bean and beyond
- Functional HD codecs for YouTube and Netflix as well as other encoding / decoding features that would never have been possible in the Gingerbread-based builds
- Working camera (back, front or both possibly) using TI’s latest camera drivers which support instant picture taking, panorama, and face recognition
- The latest (and future) Wifi drivers which support new functions such as Wifi Direct and Wifi Display as well as bug fixes straight from TI’s repositories
WHAT IF I’M USING A RAZR, DROID 4 or BIONIC AND I WANT THIS TOO?
My current plan is to finish more testing on the Droid 3 and then begin using this new kernel on ALL of our supported Motorola devices. So this isn’t just good news for Droid 3 owners, it’s great news for everyone as long as we can work out the kinks and get a few missing pieces.
I will try and post more information as it happens via twitter (@hashcode0f) or on such sites as Droid Hive, XDA Droid 3 Development section, DroidRZR and/or Droid Forums, but don’t hate me if it doesn’t hit your particular forum of choice.