Upgrade the Android in your Life

So you have an Android phone, it’s a G1, you’re pretty happy with it. The hardware lets it’s down a little though doesn’t it? It’s a touch underpowered for an ambitious Linux-based OS like Android. Would it not be great to try some kind of enthusiast firmware and kernel on it to squeeze every last CPU cycle out of the thing? Battery life be damned! Oh, and chuck in some of those snazzy Android 2.0 icons and stuff while you are at it…

You want CyanogenMOD.

Update: get the 5.0.8 version and apply to the G1 and then stand-by for awesomeness.

I have given my UK T-Mobile G1 the CyanogenMOD treatment and it’s well worth doing. However some guidance notes apply which I will elaborate on in this blog post. Let me explain how I did it, some mistakes I made and how you should do it too.

Well, number 1 is to follow the instructions on the project wiki here. Before you start I recommend you scan that whole article and download the 4 or 5 files you need to install to your phone. Oh, and number 0 would be to have a USB microSD card reader/writer handy in case you brick your G1. Now when you download those files for $diety sake please do the MD5 check (use md5sum on any modern Linux desktop) and carefully compare them with what’s listed on the website.

I did not do this and, yes, I bricked my phone. Luckily it seems quite hard to irreversibly brick ones G1 so I recovered but my phone was out of commission for a week. More on that unhappy episode later.
So on to step 2 – carefully transfer ALL these files to your G1. Don’t transfer in order like the article says, just chuck them on in one go. After your transfer, double-check the md5sums of the files on the G1 match the ones you have downloaded and those on the website. Make sure you use a good quality shielded, branded USB cable for this bit (believe me, all USB cables are NOT created equal) and make sure it’s plugged in firmly in both ends, especially the G1 Mini-B jack end.

Monitor dmesg output to make sure the G1 sdcard is mounted properly. dmesg will warn you if the mount process craps out and I even saw a “bad cable?” message when the connection was shonky.
Step 3, now follow the instructions and you should be good to go. Make sure you get the Cyanogen Recovery Image (1.4) installed and working as it will help if you mess a step up by using the wrong file or something.

Now it’s been a few weeks since I did it so I have the experience of living with it for a while. You won’t find me rushing to document my modding exploits the nanosecond after doing it in some kind of nerdgasm. No sir. Your author is too experienced for that kind of thing. There are some issues with the defaults. What are they? Well for one thing, immediately after installing the mod expect the phone to reboot a few times. Although scary when this happens, things will settle down. So keep calm.

Next, you will notice some things seem to take several seconds slower than before. What the hell? I noticed the home screen sometimes took 5 seconds to render after exiting an app, this is an eternity when you want to check something on the move. The solution is to select the “Home app in memory” option (the very last one) in the “Spare Parts” application. This confusingly named option keeps the home app in the Android’s memory thus making it much quicker to render and more like how Android should be – fast and responsive. You will also notice a glaring lack of ringtones and audio material. The solution is to follow the section in the wiki article entitled “Audio Resources (optional)”. That will put back a good bunch of audio stuff back.

The battery life will take a hit and the area on the back of the phone get hotter than usual – I think this is because the CPU is being taxed a bit more. I use the Power Control widget on my home screen which gives instant on/off toggle to Wi-Fi, GPS and a bunch of other battery-hogging things. This lets me easily turn off GPS or Wi-Fi if I’m not in a hotspot or don’t need Google Maps right that moment.
Anyhow, things are generally more quick, especially scrolling through long lists of data. Also there are some cool window animations and those spiffy Android 2.0 icon sets are installed by default. There are some other in-built apps I have not tried yet like USB and Bluetooth tethering, this lets you share the internet connection of the phone with a PC or laptop.

Overall CyanogenMOD ranks as one of the best device mods I’ve seen since the fantabulous XBMC. If you install it and like it then please consider a donation to the project.

So back to the mistake I made. Well, number one is that I used a frakking cheap USB cable in doing the transfer which resulted in a truncated DREAM.nbh firmware image. Had I done an MD5 check I would have noticed this, the file was 28MB versus 80MB like it should be! This is what I saw after rebooting:

As you might guess, my choice of words at this point were not about admiring those pretty colours that greeted me.

As I was without a microSD reader/writer I could not recover straight away. I bought one on eBay and waited a week for it to arrive. When it did arrive it came with a cheap USB cable. I don’t like making the same mistake twice so the cable went in the bin. So in the meantime while awaiting that microSD reader/writer I switched to my backup phone, a rather battered but fully working, Li-Polymer powered, Made-in-Germany, Nokia 6310i.

Ironically, having that phone about my person induced more interest from people than any smartphone could have done. People would reminisce about owning one and there would be other praise like “thats a mans phone, that is.” 🙂 In fact, I have discovered that there are outfits that specialize in refurbishing this model of phone because it is regarded as something of a classic. I get that. The phone has an elegant simplicity to it and a robustness that any business-class tool should have. I have dropped the Nokia 6310i many times and it just kept going and going. I would not like to drop the G1 as frequently. That said, in this era of mp3 ringtones I did wince a bit whenever the Nokia rang with it’s retro low-tech ringtone… 😉