Upgrading your Galaxy S: there’s no easy way

Screenshot from an Android 4.1 phone, showing a calendar widget in the centre, a Google search bar and a number of application iconsI spent the past two days upgrading my Android phone, a Samsung Galaxy S (model i9000) to the new version of Android. There have actually been several new versions since the last one Samsung could be bothered to provide, but the one I have settled on is the latest, codenamed Jelly Bean (they name them after confectionery products in alphabetical order). I got my phone in July or August of 2011 and at the time was quite impressed with its performance compared with my previous Android phone, a HTC Hero (rebranded G2 Touch by T-Mobile). However, perhaps because applications have got bigger and more complex since then, or perhaps because they’re optimised for newer versions than I was using, most of those I use have seen a decline in performance, frequently hanging or crashing, often during an operation such as pulling down to refresh a timeline (Plume is the worst for that). I read about Cyanogen Mod in the Android magazine, and had a look into that because unlike most other Android developers who produce operating systems you can upload to your phone (known as ROMs, although it’s not really ROM anymore), they actually have a website, a forum, and a wiki which gives directions on how to install it.

Note: these instructions apply strictly to the Galaxy S, model i9000, not to any other Android handset, including any related Samsung model.

There are three available versions - version 7.2 and 9.1, but the first is based on the old version of Android so it’s not much better than the Android your phone comes with, unless all you want is root access and to get rid of Samsung’s additions (some of it is useful, some of it is junk like the Twitter and Facebook integration which no longer works). Version 9.1 is the current stable version and is based on Android 4.0.4 (codenamed Ice Cream Sandwich). There is also a snapshot of the latest version of Android, codenamed Jelly Bean, which you can find here. You will also need to get hold of the right version of the Google Apps bundle, which can be found here. Note that the same bundle will work on any Android device as long as the OS version is right. The instructions for how to upgrade are on the CyanogenMod Wiki, but there are some details missing that really need to be made clearer.

1. Upload the bundles before installing Recovery

One thing their instructions don’t tell you, for example, is that installing the ClockworkMod recovery image will make your existing version of Android stop working — it will boot, but when you start using it, it will appear to keep rebooting, displaying the “big S” animation over and over again. You will not be able to use the phone in that state, so you will not be able to upload the operating system and Google Apps bundle to the phone. So, do that before you install ClockworkMod Recovery: connect your phone to your computer as a “removable disk” or a volume in the Mac finder, then drag the two bundles to the disk (the root, i.e. just the disk, not a directory within the disk).

(There is a way to mount your Android as a USB drive from Recovery, which is how I eventually did it, but it’s much easier to do it from Android before you even start.)

2. The infinite boot loop

When you finally get the Android and Google Apps bundles installed, you will have to reboot your phone and you will see the new CyanogenMod animation. After this, it will tell you it has to reset the phone to factory settings and reboot. When I let it do this, however, it then went into the “infinite boot loop”, displaying the Samsung Galaxy S logo alternately with and without the CyanogenMod logo. Your phone won’t boot any further than this, so you might as well just pop the battery out and back in again. You may be able to get round this by popping the battery out when it tells you you have to reset and reboot. I did this at a later point, and then turned the phone back on again. It worked.

For me, that was after I’d installed an earlier Samsung stock image, which did not work, then re-installed the ClockworkMod recovery image and re-installed the CyanogenMod version of the OS. It may work for you without that step, however. If it does, skip to step 4 below.

3. The corrupted recovery image

If you get the infinite loop problem, you will also find that the instructions for how to boot back into the recovery program no longer work. I searched the forums and found a recommendation to use a program called ODIN to install an earlier version of Android. Do a Google search for “odin 1.85” and it will take you to a download location. This is a Windows program, so if you don’t have access to a Windows PC, I’m not sure how you’ll be able to do this. You can get the firmware from either here or here. When you get the file, you will need to unzip it — it will leave a folder with a long name beginning “I9000” in the same directory as the zip file you downloaded, and in that folder is a file called JW6_JW2_JW1.tar. Start your phone in download mode, the same way you did when uploading the Clockwork recovery program, then connect your phone to your computer via USB if it’s not connected already. Run ODIN, then click “PDA”, and it will ask you for a filename, and you want to specify that .tar file. ODIN will then upload it (your phone will show a little progress bar) and the phone will then reboot.

However, the boot will fail. You will then need to re-install the ClockworkMod Recovery and then the CyanogenMod Android OS, bearing in mind my instructions above.

4. The IMEI problem

Screenshot of a warning on an Android phone. It reads "Warning! A problem was detected with your device. Your device IMEI number is invalid. An invalid IMEI number could cause network issues including the inability to call emergency numbers" with a button marked "OK".You won’t be told about this if you install CyanogenMod 9.1 or earlier. You will if you install CM10, because a message box will appear when you finish booting. Either way, you may well find that you can’t place calls. If you’re with T-Mobile in the UK, as I am, you will be able to use network data functions (i.e. the Internet) without any problem, but no call will connect and any attempt to send a message will fail. You also won’t be able to receive either. The IMEI number should be in the phone’s settings (under “About phone” then “Status”).

Your phone’s IMEI number is to be found under the battery, so you will need to shut the phone down and pop the battery out, and then note it down. That number and the number contained in a particular file on your phone’s memory (which is the number you will find in the settings) must match. However, some carriers will accept a generic number, which is what CyanogenMod comes with. T-Mobile won’t. At this point, if you didn’t have a back-up of this file, you’re screwed (or at least it’s back to your original OS, if you can find it — I couldn’t). However, I found that there was a back-up which seemed to have been made automatically. I posted the instructions for this bit here but I’ll reproduce it here:

Open up the Terminal Emulator (click the circle with six dots in it at the bottom of the main screen, and then move your finger from right to left), and type “su” to acquire super-user privileges. The phone will ask you to confirm, and then you will need to type the following:

cd /sdcard/backup/efs
cp nv_data.bin* /efs
cp nv.log /efs

Then reboot. Your phone should have the correct IMEI number (you can check the settings) and you will be able to make and receive calls and send and receive text messages.


Upgrading this phone to Android 4 can be done, but I wouldn’t recommend it to anyone who isn’t a geek and doesn’t know what they are doing. Maybe there are people around who will do this sort of thing for a fee — if there are, and they are competent, it is well worth it. The phone I have now seems to run faster and has a more responsive user interface than it did when it was running Android 2.3.3 on Saturday morning. The “pull to refresh” action, for example, which caused apps to crash several times a day, no longer does this. Some apps haven’t improved much; Facebook still takes ages to load trivial amounts of data on a good connection, but that is clearly a problem with the app, not the OS. It also displays text in other alphabets correctly (I get a lot of Arabic in my news feed, and the old version displayed Arabic letters from left to right, without joining them). To my mind at least, it finally puts Android on a par with iOS in terms of style and responsiveness. The battery has run down more quickly today than it usually does, but I’ve been using it quite intensively (installing a lot of apps, for example), so I will see how a more normal day’s usage works out.

Getting this on your phone should be much easier than it is. Samsung has not provided an upgrade for this phone because the new OS and its own features would be too space or resource-intensive. However, the phone works fine without those features — I prefer the old UI in some respects, but Cyanogen’s UI is quite acceptable and if that’s the price to pay for a phone that works better, then so be it. If Samsung does not want to provide a full upgrade that is fine, but they should make it easy for users to upgrade to a basic Android OS with the appropriate warnings, and without ‘bricking’ their phone or reducing it to a glorified electronic organiser. It is a hugely risky undertaking getting an Android OS from a third party, because the instructions are often incomplete as I discovered when trying to follow them to upgrade mine. They even sometimes claim that a version of an OS is ‘stable’ when one small feature — making calls — doesn’t work, as if a mobile phone were just a little computer which happens to be able to make calls, rather than a device primarily used for that purpose. A phone. The upgrade is out there; getting it on our phones should be much easier and much less risky.

Possibly Related Posts:


You may also like...