Just a place to put together some thoughts on Java, Technology and Other Stuff (tm) that interests me.

Thursday, November 5, 2009

An Update on My Rooted G1

I've been patiently waiting for Cyanogen to resolve the issues that caused Google to send him a cease and desist letter concerning his previous releases of his customized Android builds (ROMs to some - I think it's a misnomer). Well he worked out the issues - basically, they were unhappy with him packaging their closed source applications with his builds; even though their own build process includes the binaries! - and he was able to get rolling again. Prior to my recent upgrade, I was running CM 4.0.4 which was the last stable build prior to the C&D from Google. That version was very stable and I was pretty happy with it on my phone, but it had one nagging issue and that was that the phone would slowly degrade in performance the longer it had been running. (Android is a customized Linux with a Java like application layer on top, so you literally boot Linux when you power up the phone.)

So I watched intently as Cyanogen got rolling with a new unstable series of builds that didn't infringe on Google's intellectual property. (See they're not all sweetness and light and openess as some might believe.) The numbering of these builds was 4.1.x; numbered similarly to the Linux kernel with even minor version numbers indicate unstable and even indicating stable. The reports from people in the IRC channel (#cyanogenmod on irc.freenode.net) were that the speed of these builds was incredible. Cyanogen put in a different process scheduler than what stock Android is / was using. But it wasn't without issues. Stability was one, and another was randomly starting playing MP3 files. There were other things too and it was just enough to keep me from pulling the trigger and updating.

But at some point you have to release and the guys that help Cyanogen got things to a point that they considered stable and called version 4.2, then 4.2.1, then 4.2.3 and finally 4.2.3.1. And this is the build that I've been running since last weekend. I actually upgraded from 4.0.4 to 4.2.3 with the instructions on the xda-developers thread about the new release. (Have I mentioned how much I dislike xda-developers.com and all thread-based forum sites?) This process basically uses the fact that your phone is already rooted (since I had 4.0.4 already) to perform the update. In summary the process is that you lay down a new official Android 1.6 (Donut) build on your phone using the rooted recovery partition / image and then before completing the installation (by rebooting your phone), you then lay Cyanogen's new stuff over the top of the install thus replacing all the bits required to keep your phone rooted. If done correctly, you end up with a 1.6 rooted build. If done incorrectly, you lose root access to your phone, possibly permanently.

With that dire warning out of the way, what's good about the new version?

It keeps the lovely and indespensible apps2sd functionality (especially if you have a G1). It gives you the latest Android (source released) base OS. It features a tweaked CFS scheduler that positively is better than stock Android. It makes the phone respond like you always hoped it would from the start. My phone responded pretty well with 4.0.4 just after a boot and maybe for a day, but it never ran this well. 4.2.3.1 also has usb tethering. So your phone becomes your laptop's data link when you're out of normal network coverage or just don't want to use whatever WiFi is around you. I haven't recalibrated my phone's battery yet, but I've noticed that day by day, my battery life is improving. I used to be pushing it if I used my phone much throughout the day and would need to juice it up when I got home from work (or sometimes before). Today I noticed that at 5:30pm it was still at 48% capacity. That's a solid 11 hours with plenty of reserve. Word is that if I recalibrate it will get even better. (In other words the phone isn't showing the true capacity of the battery.)

What's bad, if anything?

By default, 4.2.3.1 doesn't use compcache or a swap file or a swap partition. But like all of CM's releases it can use that stuff if you want. To enable it you create a user.conf and userinit.sh in proper place and those 2 files control those and other settings. I enabled a 70M swap partition on my old, slow (unclassified == Class 2) 8g micro SD card. Since enabling swap, I've had occasional spurious reboots of the phone. I think these are related to a timing issue with the wifi radio and the swapping activity to/from the (sd card's) swap partition. I'm seriously considering upgrading to a Class 6 8g card to see if that helps. If it doesn't, I think I'll disable the swap partition. The only downside is that I'll take a penalty when I run all sorts of stuff like I do without some additional virtual memory to back it up.

Someone has updated the Cyanogenmod-updater on the Market and I was able to use it to upgrade from 4.2.3 to 4.2.3.1. Very easy and painless. I'm looking forward to whatever Cyanogen comes up with next. Email or call me if you have questions about the process or whether your phone will work for this update. If I can't get the answer, I can put the question in front of some guys that will know.

2 comments:

Unknown said...

I just installed it! Immediate first impression: It's fast!

I bought a class 6 sd card in preparation ($20 from Amazon), so I'll have to try apps2SD and maybe even turning on swap.

Thanks for the encouragement!

Unknown said...

Go Bruce. Now if we can just get some of the other slackers to follow along..