Today I undertook the task of installing CyanogenMod 6.0 on my HTC Desire, the process can be quite convoluted if you read the various docs, and what’s worse is they are all quite windows centric, in fact as I went along I found it to be much simpler than the docs make it seem and thought I would document how I did it.

Rooting your phone and loading a different Android OS on it automatically violates the warrantee. If these steps cause your phone to explode and blind you then I take the same responsibility as the CyanoGenMod developers do: which is to say – none whatsoever. You have been warned. Note that some parts of this was taken directly from the cyanogenmod wiki – small bits where I really couldn’t add anything useful.

The one mistake I did seem to make was to buy a new spare 2Gb microSD card for the experiment. In retrospect, I did nothing with it I couldn’t have done with the 4Gb (though that is qualified by the fact that I don’t keep important data on the SD card).

The first step was to backup my contacts. I went into the “People” application, hit Menu and then export to SD-card, I did this for both google contacts and sim contacts. I then connected to my PC and copied these files to my hard drive so they would be easy to recover if the data got lost somehow.

Most howtos suggest you will have to have a microSD reader – I am not so sure of this, I used one but you can probably get away without one. I will say that it helped to bypass the phone for some steps however. Even so I the small microSD card reader I bought cost me all of R70 so it was hardly a major expense.

You will need to download the root system for the phone as well as make a gold card.

Let’s start with the goldcard. There are many docs out there that use the Android SDK and make you do difficult steps that aren’t distro or OS neutral… basically it’s a schlep – here’s the easy way. With the SD-card you want to use, go into the android market and install GoldCard Helper. This app will when you run it produce the code you need, then let you copy it to the clipboard, open the website, paste it and have your goldcard.img mailed to you in a very simple set of steps. Why do it the hard way when there’s a nice automated tool to do it for you and protect you from typing errors ?

When you have the goldcard image, stick the SDcard in your card-reader, and copy the image file onto it with dd:
dd bs=512 if=goldcard.img of=/dev/sdd
Note that your disk device name may not be sdd replace with the right device name, right after you plug it in – dmesg should show it to you*

Once done – mount the sdcard, and copy the update.zip from the rootkit I linked above onto it (note that this is the rootkit for bootloader 0.80 – if you aren’t sure what this means, first read up on that as earlier versions need a different rootkit).

Now powerdown your phone, start it up and boot it again while holding down the back button, make sure it’s connected via USB. You’ll get to the fastboot menu.

In the directory where you extracted the rootkit run this on your PC: ./step1-linux.sh

Go to Bootloader|Recovery

You’ll get to a black screen with a red triangle on it. Hold down the volume button and tap the power button. This brings you to the recovery screen. First run through “Wipe data” then when this completes run through ”Apply sdcard:update.zip’ make sure you are connected to the PC the whole time.
The process takes a while but once it completed, pull out the battery, boot back up – and your system is rooted. The Desire will run through it’s initial setup screen at this stage (all your settings having been wiped – I did warn you).

That’s the first phase: your phone is now rooted.

Now go to the market and install Rom Manager. Once in Rom Manager install the ClockworkMod first which Rom Manager uses to select boot images.

This takes a while.

Use the Backup option to back up your current rom.

This will also boot you into the ClockWorkMod recovery system (Rom Manager lets you autoboot in here anytime). And this is where I got stumped – and had to google for an answer. Unlike the HTC’s own recovery menu, clockworkmod does NOT use the powerbutton for select, you still move around menus with volume, but you select with the trackball.

Download the latest version of the radio (5.09.05.30_2).
Place the radio update.zip file on the root of your SD card.
Boot into the ClockworkMod Recovery.
Once you enter ClockworkMod Recovery, use the side volume buttons to move around, and the trackball button to select.
Select Install zip from sdcard.
Select Choose zip from sdcard.
Select the radio update.zip.
Once the installation has finished, select Reboot system now. Now the HTC Desire’s Baseband version should now be 5.09.05.30_2.

When you boot, you will first see a weird icon, and the HTC will appear to hang for several minutes, don’t panic, it boots up eventually.

Boot the phone and run rom manager again.

Go to Download Rom. CyanogenMod should be right at the top of the screen. Tap “Stable Release” and wait for the download to complete. Rom manager has an option (which will pop up now) to automatically add the google apps to cyanogenmod (which the primary distribution of it cannot include for licensing reasons) – add them if you want them.

Once the ROM is finished downloading, it asks if you would like to Backup Existing ROM and Wipe Data and Cache.

If Superuser prompts for root permissions check to Remember and then Allow.

The phone will now reboot into recovery, wipe data and cache, and then install CyanogenMod. When it’s finished installing it will reboot into CyanogenMod.

Most of you probably know this by now, but just over two weeks ago – I announced the end of my involvement in the kongoni project. The reasons were stated in the original post so I won’t be rehashing them here. I did however state that if somebody volunteers to take over the leadership – I will gladly pass it on, and help the person to get going.

The good news is, less than 48 hours later, such a volunteer emerged. We’ve been working together quite hard over the past
few days as I taught him the structures and set up access for him to the various pieces of infrastructure that make up the build systems for Kongoni. By mid-week he had done his first ISO build and by yesterday he was starting to get ready to do git commits and publish his first changes to git-current.

He’ll have a steep learning curve still to get to know the system’s many ins-and-outs like I do but he’s at a working level and progress can once more begin. I am very happy to be able to tell you all this as it means that my greatest regret about leaving kongoni – that it left the users without an upgrade has been resolved.

So I am happy to announce that Robert Gabriel is the new leader of the Kongoni project, he has already launched a rather
spiffy new Kongoni website which I urge you to check out.

For myself, this by no means ends my involvement with free software, least of all with the fully-free-distribution movement, it
merely shifts my direction to something more feasable for me as a person with my particular practical considerations at this time. I have, in the time since the anouncement, accepted an invitation to become a contributor to the gnewsense project. I am slowly learning the ins-and-outs of the gnewsense ideas and my initial progress has been slowed by dedicating time helping Robert get started – but I have as an initial step taking responsibility for adding and maintaining a chromium package for Gnewsense. In the future I intend to get quite heavilly involved – and possibly take over most of the maintenance on gnewsense-KDE as currently there is very limited work done there (largely due to lack of manpower).

So, here’s to the future. The kng is dead, long live the kng.

I won’t get into the concerns about whether google chrome is proper free software right now, mostly because I’ve started a discussion on it with the gnu/linux-libre group, which is a coalition of free distro developers where we collaborate and discuss these things together – and I don’t want to push anything until that conversation is done. Instead, here’s my review of the google-chrome browser’s official GNU/Linux beta release as I found it in my testing – with a mostly technical focus.

This also means there won’t be a kongoni port just yet – whether there will be one depends on the outcome of the aforementioned discussions.

I received a mail from google last night (which I’d requested) to inform me that the Linux beta for google-chrome is now officially available, followed the link and got greeted by a nice XKCD-esque comic about it. Followed another link and got the download page with the ugly EULA. Oh well. Packages were available for a few major distros – four in all, 32/64 bit RPM’s and 32/64 bit debs.

Kongoni can convert either to a usable format, and I’d previously done some chromium testing using the debs, but I opted for the RPM’s here. Doubt this makes much difference but just for interest. I grabbed the 64-bit one, ran rpm2tgz on it, and installed it. It created a /etc/cron.daily script which is meant to install the regular updates, currently of course, this won’t work, but if I end up supporting it, the kongoni version can easily enough replace it with it’s own. The RPM version’s script seems to use yum, presumably the deb version will use apt.

That out of the way, the next clencher was that it missed some libraries from mozilla-nss, which was odd since I have it installed. Double-check, the library names weren’t the same – close but it wanted additonal 1d and 0d extensions, a couple of symlinks sorted that out.

It came up, seemed to work – but wouldn’t render anything, checked the console output – lots of shm messages. Okay, I know that one from earlier experiments, set /dev/shm to world-writeable and retried. It imported my firefox settings, including saved passwords and bookmarks wonderfully – and suddenly, it works sweetly.

Okay, start playing… it’s fast, very fast. Faster than I remember from testing on windows… much faster. It’s slick, easy to use and just flows around the net. Played a bit with extensions – installing one for facebook and one for twitter – both worked instantly, without requiring a restart, and ran very nicely (though the buttons-next-to-the-address-bar choice may not be their best decision, that could get very cluttered fast for people with lots of extensions). Some googling around failed to find an addblocking extension just yet or anything for laconi.ca but I may just have not looked hard enough.

Still, I rather like it, it’s bleeding fast, beautifully rendered.. just about perfect in fact. The slight difficulties installing is probably because I didn’t built a proper kongoni port, and thus had to do manual effort to sort things out when converting a package built for another distro. All in all, I think google and their volunteer developers on chromium did and awesome job with the port. Well done, when my only gripe is a minor one of aesthetics – that says something.