Recently, one of my colleagues flashed his ageing HTC Desire GSM with Cyanogenmod and felt quite happy with its performance.  Of course, doing so voids the warranty but with the contract expiring soon, he probably didn’t care.  Funnily enough, my wife’s phone was in a similar situation so my colleague’s satisfied feedback, encouraged me to do the same.  Once I explained to her the possible benefits of doing that but also the caveat that the process could possibly “brick” the device if things go wrong, she agreed to trust me with the rebuild 🙂

In order to “upgrade” my wife’s phone, I chose the latest stable build (update-cm-7.1.0-Desire-signed.zip – at the time of writing) from Cyanogenmod.com.  The site also contains an excellent Wiki page, detailing the whole process in reasonable detail.  For that reason, I won’t try to repeat the same instructions here.  I am writing this post to document a few issues I had while flashing the phone so that anyone else hitting the same issues, can use my experience to resolve them.

First of all, I should reiterate that flashing your phone with another build, voids your warranty so make sure you understand the risks and no one but you are responsible if you end up with a “brick”.  The process should only be attempted by people who are comfortable with computers and know a little bit about these devices.  That said, there is a lot of help available on the web and given you do your research, it should be an easy and educational experience.

For the sake of completeness, I should mention that the HTC Desire GSM in question, was running Android 2.2.2 (Froyo) – the stock ROM from HTC (HBOOT 0.93.0001).  I started following the process that is documented in the Wiki.  I didn’t have to install the HTC drivers as I already had them installed on the PC I was planning to use (installed them in the past to run App Inventor when Google developed it – MIT has adopted it now) but I am sure, the link mentioned in the Wiki will work fine.  The second step asks to disable “Fastboot”.  Don’t worry too much if you can’t find that setting on your phone (mine didn’t have it).  All recent phones have it disabled by default so in most cases, it should be fine.  Enabling “USB Debugging” mode is necessary but hopefully, you won’t have too much problem in finding the setting.  In the next step, you need to find the HBOOT version of your phone.  It would be useful at this stage to have “ADB” (Android Debug Bridge) installed as it’s quite a useful to tool to have, if you’re into flashing your Android phone or want to play with Android development.  Here is a good link, explaining it all.  That said, ADB is not strictly required to find HBOOT version and serial number of your phone.

It was at this point, where I hit my first minor hiccup.  You are required to enter the phone model, HBOOT version and serial number at the Revolutionary website, to get a beta key.  That key is entered when you have your phone connected and you run the Revolutionary tool to “set S-OFF”.  The trouble was that no matter how many times I tried (with one finger and very carefully!), it would not accept my input and complained it was an invalid beta key.  It was only after quite a few tries, I tried copying the key off the website and pasting it in the command window, which worked!  So, if you see the same problem, just copy the resulting key from the website and paste it into the window.

Once the key is successfully entered, it attempts to set S-OFF and once successful, offers to download a recovery image to the device.  It’s necessary to have your machine connected to the Internet at this stage and if you say “yes”, it would download the image and place it on your phone.  Once done, you need to boot into that image (as mentioned in the article) and use the trackball to scroll through the menus and select options.  When asked, it’s a good idea to back up the current ROM image, in case something goes wrong.  As it goes on the SD card, space shouldn’t be an issue.  If everything has gone smoothly so far, then you should next boot into the selected version of Cyanogenmod (7.1 in my case).  By the way, this also meant that Android version on the phone was now 2.3.7.  That was good as my wife also wanted to run the Android App version of Microsoft OneNote, which requires version 2.3 or higher.

For me, the process was smooth and boot after flashing was successful.  Everything seemed fine until I discovered my second issue: Going into certain areas of “Settings” caused the application to crash, especially when going into wireless settings.  The error message was:

“The application settings (process com.android.settings) has stopped unexpectedly.  Please try again.”

A reboot and several retries didn’t help and the application kept crashing.  The phone was working fine otherwise but lack of wireless meant that everything was dead slow.  Obviously, this was not an acceptable solution but I couldn’t find anything wrong with the process or any of the phone’s settings.  As this seemed like a corruption of some sort, I decided to flash the phone again, given that I didn’t have much configuration on the phone done yet and the zip file was still present on the SD card.  This time, however, I used the built-in version of “ROM Manager” to flash the device, while choosing the option to back up the current state.  It took a couple of minutes and the phone booted into Cyanogenmod again.  Guess what: The problem was fixed and now I could go into all settings and was also able to configure wireless and connect.

But there was another twist waiting for me: Going into Google Play and trying to upgrade an app gave me the following error message:

“Error while downloading <app name here>.  There is insufficient space on the device.”

Now that I knew to be untrue as I had just rebuilt the whole phone but just to be sure, I went into “Storage” to confirm that I had more than enough space still available in both the internal and external storage.  I tried various things and restarted but the problem remained.  I also tried ROM Manager’s option to fix permissions, to no avail.  In the end, I tried searching Google Play, to see if there is an app that fixes this kind of issue.  I was quite fortunate to find MarketFix.  Installation of this app, fixed the problem!  Once fixed, I removed the app and the problem didn’t return so if you hit the same problem and use the app, it should be OK to remove once the problem is fixed.

After all this, the phone was finally stable enough for me.  As “root” access was available now, I also installed Titanium Backup, which requires root access and is a must for anyone interested in flashing one’s phone regularly.  I also installed other apps we were interested in and finally it was job done for me.  The phone has been running for a few days now and it’s definitely running better.  I would say that better performance is also due to the “clean up” that happened because of the rebuild but the Cyanogenmod build definitely has less bloat and therefore, leaves a reasonable amount space for other apps.  Needless to say, my wife is much happier with the phone now and is now willing to live with it for the next couple of months – after which, she gets her new contract/phone.

Hope this helps!