So as promised, this blog post will be about my work with CM and, in particular the state of the Motorola Droid and Motorola Droid X. I'll also throw in a few more things here and there to spice things up if that's what you fancy.
So on with the show!
I know I have been dormant for quite some time on the whole CyanogenMod project. I've been attempting to keep somewhat in the loop as to where we are currently but for the last two to three weeks I have essentially been away from the project.
With school coming to an end for the year and full-time work looming over the summer, I had to take a break to work out some stuff in my personal life before I can dedicate any sort of focus to the CM project, otherwise I would just burn out and nobody wants that.
So anywho, what does that mean now? It means that school is finally over, that my jobs are all lined up for the summer, and that I'm pretty much set to go! I've successfully straightened out all of the kinks on my end and hope to get back to work on my CM projects next week! (huzzah!)
So on to the nitty gritty.
The Motorola Droid still has some obvious issues, the biggest one being the issue with data connectivity. It seems that my fix does fix the original issue, but there's something else happening on occasion that causes the connection to drop.
The problem stems from Motorola's RIL daemon doing some goofy stuff when it comes to defining gateways instead of letting the Android framework deal with it. I'm still not entirely certain as to what they are expecting the framework to do in order to keep things copasetic.
One possible solution is to use my fix, but if it fails then to roll back to the old fix (resetting the entire radio library). It's not elegant but it is a slightly better fix than we had before, and would hopefully prevent the data from ever disappearing completely.
Another issue is bluetooth audio, which has something to do with using the from-source libaudiopolicy instead of the proprietary. Not exactly sure why it's an issue but that needs to be looked into as well. I've been working on developing a from-source libaudio library for Motorola phones, and that might solve the issue, but I'll talk about that a bit more in the Droid X section (as that's the main reason I'm doing it).
I also want to look into the issues with notification lights. I haven't heard a lot of complaints about it but it seems to me that the notification light system is all screwed up on the Droid, with only certain apps giving notifications. Also, I've noticed that the “vibrate” feature seems to be a little sketchy for notifications, so I want to look into that as well.
Finally, the camera seems to have some issues as well still. I get occasional freeze-ups on my phone when taking pictures and videos. I've also noticed that video playback seems to be a bit slow. I remember my Droid with stock firmware being able to play my 848×480 resolution MP4s fine, but now they seem to be unviewable, which probably means a codec or DSP problem.
So as you can see, there's still quite a bit of work to be done on the original Droid, so I guess it's a good thing I'm coming back next week! :D
The CM4DX project is still in the works, but keep in mind that this is still a ways off from being realized. I'm a bit concerned that by the time it's ready it may be too late, but I will continue to work on it, considering that I have the device and would like to see it blossom one day into something more than an oversized paperweight!
That being said, the main focus of the CM4DX project as of now is to reverse engineer the audio library. I know what you're thinking, “why is that important?”, well you lucky person you, I'm going to tell you.
One of the biggest pains in the ass about the Droid X (and for that matter, the Droid 2), as a “feature” they implemented called A2DP Passthrough. Essentially, it was a way for the bluetooth audio system to make calls directly to the audio hardware instead of letting framework do it (there's more to it than that, but that's the general idea). So in order to build anything for the Droid X, you need to add many lines of code that implement this passthrough, which also breaks many things for other devices.
Rather than do that (because it IS a GIANT pain in the ass), I have decided to rewrite the Motorola libaudio library from scratch, using the information I can gather from other open-source libaudio libraries as well as the kernel source provided by Motorola. At the moment I would say it is about 70% done coding-wise, but it still has a ways to go.
One of the benefits of rewriting libaudio is that from the kernel source provided by Motorola, the libaudio libraries for both the Droid, the DX, and the D2, are extremely similar. So similar in fact, that they could probably all use the same one, which would be awesome.
So anywho, that's what I'm working on right now for the DX, as it also benefits other devices. Once that is complete, the next step is to try and get a reliably-booting CM onto the DX.
I have to head out now, so I'll save the “fun and frolic” topics for another day! The next post will likely be about my adventures teaching Computer Science to a local 6th grade class, and some of my work involving mutating Java bytecode in order to test the accuracy of unit tests.
I've been away for awhile for personal reasons, but am now back!
The original Motorola Droid has lots of bugs that need to be looked at, and I have some ideas for how I'll start doing that next week.
CM4DX is still being worked on. Trying to rewrite libaudio.
Up next: teaching CS and java mutation testing!