I don’t normally write tech-type blog posts but having recently endured this utter pain in the arse of a problem, I thought I’d try to help others by posting my solution. I’ll attempt to be succinct.

2015 update: I’ve turned comments off for this blog post due to a weird and continuing influx of spam.

2014 update: You may want to consider skipping the faff below and simply install Cyanogenmod on your device. It’s easy and will upgrade your phone to Android KitKat 4.4. Find out more here.

First up: this is my particular experience. THIS ADVICE MAY NOT WORK FOR YOU. I DON’T GUARANTEE THIS POST’S ACCURACY. FIDDLING WITH YOUR PHONE IS DANGEROUS AND HAS RISKS. READ THIS WHOLE POST FIRST AND IF YOU’RE NOT COMFORTABLE WITH IT, DON’T DO ANYTHING. In other words, don’t blame me if you brick your phone. 🙂

The problem

My Samsung Galaxy S3 smartphone started freezing intermittently about a month back. It didn’t seem to be caused by any specific action. Sometimes it would freeze while I was using it, the screen getting stuck on. Sometimes it would freeze when I wasn’t using it, and I’d only realise when the screen wouldn’t come on at all.

After a freeze there were 3 crappy options:

  1. Hold down the power button until the phone forced a restart.
  2. Take out the battery and put it back in.
  3. Wait for approximately 20 minutes for the phone to unfreeze by itself.

Sometimes the freezes would occur only ever hour-or-so. Sometimes they’d happen every few minutes. The result was an unusable phone.

This appeared to happen shortly after my phone received the Android 4.1.2 update over the air. A quick Googling seemed to confirm that others were having a similar problem.

Trying to use official channels

I’m on O2 in the UK. Thus my first port of call was O2’s repair team. I took the phone into the shop and they sent it away to be investigated. They gave me a super-basic Nokia as a loan phone, which I had to pay a £25 deposit on. Clearly they don’t trust their customers much, even when they’re paying £30 a month and have been with them for 7 years.

It came back a week later. 20 minutes after leaving the shop it froze. Exactly the same problem.

No details were provided as to what O2’s repair people had done. As far I could tell, they’d simply done a factory reset. Which I’d already tried.

I took it back and they sent it off again.

I received a phone call a few days later from the elite O2 repair squad saying that they couldn’t find any fault. Of course, given the nature of the freezes, it might only happen every hour-or-so. With a factory reset the problem would sometimes lessen, though it would still happen.

The phone came back. They usefully claimed that they’d upgraded the firmware to the latest version. I checked and it was on exactly the same firmware as when it had left.

At this point I considered going direct to Samsung. However, I elected instead to try to fix it myself as I had rather lost faith in supposed support teams by this point.

Diagnosis

First up, identifying the problem. This is a weird problem in that it only affects a few S3 users. Enough to show up a lot on Google, but not a lot for the mainstream press or carriers to be aware of it.

Also, note that your phone freezing could be caused by all sorts of reasons. It doesn’t mean you have this specific problem.

After a lot of tedious research, I figured out what was going on. Let’s cut to the chase:

  • Computers like smartphones have firmware. This is what drives the phone. When a new version of Android or iOS is released, you’re upgrading the phone’s firmware. The latest major version of Android is called Jellybean.
  • Firmware has a version number (eg 4.1.2) and a PDA build code. A version number could have several different builds.
  • At some point in late 2012, Samsung acknowledged a problem with the S3’s Jellybean firmware (possibly 4.1.1 and prior, I’m not sure) which could completely kill the phone stone dead.
  • Samsung released a fix for this right at the end of 2012. This update was available over the air. It was the 4.1.2 XELLA update.
  • Many phone carriers, including O2, periodically take an official Samsung firmware release, re-brand it slightly, and then it gets released as that carrier’s official release. This is why you might not get an Android update until weeks or months after the manufacturer (in this case, Samsung) originally released it. If you’re on O2, you only get the updates that O2 approve.
  • In this case, O2 spotted that the 4.1.2 XELLA update was important and set about releasing an O2-branded version.
  • Meanwhile, shortly after releasing the XELLA update Samsung realised it had a bug: it could cause the phone to freeze intermittently.
  • Samsung quickly released a new build which didn’t have the freezing problem. In fact, there’s been 3 builds since then.
  • At the time of writing (April 8th 2013) O2 haven’t released any further builds since the XELLA update.

What this means is that if you have an unlocked, unbranded S3 you’ll be totally fine, as you’ll have the  very latest firmware. Even if you did have the faulty XELLA update, it will only have been briefly.

If you’re on O2 AND are being affected by the freezing, however, you’re currently a bit screwed. You can check which firmware build you have by going to Settings -> About device. The build code is right at the bottom.

Even if you send the phone off to O2 to be repaired, all they can do is put the latest firmware on it – 4.1.2 XELLA. Which is the CAUSE of the problem.

O2 staff in shops and at the repair centre seem entirely unaware of the freezing problem, despite it being reported in many places including their own forums and support systems. As mentioned above, it doesn’t affect all users, but it is widespread enough for it to be easily found in a Google search.

Send the phone off to Samsung and you could also have a problem, as they may well be restricted to only working with the O2-branded and approved firmware.

Which is why, currently, I needed to fix it myself.

The fix

Still there? Yeah, I know. It’s a lot of reading. I had to cobble all this together from about 15 different sites, and that was after filtering out all the irrelevant and incorrect stuff. Not fun.

Once I’d diagnosed what was actually going on, the solution seemed theoretically simple: I needed to get to a newer version of the 4.1.2 firmware, beyond the problematic XELLA build.

So how to do this?

Turns out, there’s something called ODIN. It’s an all-powerful god of a program, appropriately enough. It’s able to change the firmware on your phone very easily, with a few crucial benefits:

  • It doesn’t void your warranty.
  • It doesn’t require the phone to be ‘rooted’. Rooting can be cool, but only if you know what you’re doing. Although I’d rooted my previous phone, the HTC Desire, I didn’t want to root my S3.
  • It’s very easy to use: BUT YOU DO HAVE TO BE CAREFUL.

Two things are needed.

  1. The ODIN software. You can get it from here. The version at the time of writing is 3.07.
  2. A stable firmware build. Conveniently, all phone builds are stored at http://www.sammobile.com

To find the firmware, go to sammobile.com and click the Firmware link at the top. Then click the Firmwares link just below that pops up.

In the menu system, pick from left to right: Smartphone -> Android -> GT-I9300 – Galaxy S III -> United Kingdom – BTU

This will display the available firmwares for the phone.

NOTE: THESE INSTRUCTIONS ARE FOR A UK PHONE RUNNING ON THE UK NETWORK O2. IT MIGHT BE DIFFERENT IF YOU’RE IN A DIFFERENT COUNTRY. I DON’T KNOW, I HAVEN’T TRIED IT.

The best bet is probably to grab the latest one. At the time of writing, and when I fixed my phone, this was the 2013 March 4.1.2 I9300XXEMC2 build. Basically, try to go for the latest, stable, official build.

Note that this means you’re downloading the latest official SAMSUNG build. This is NOT the O2 build. In fact, it has nothing to do with O2.

It’s still an official, 100% legit build. There is nothing dodgy about this process.

You’ll probably need to register at the website to download. Simply click the name of the firmware to download it.

A note about locked sims

The sim card is the thing that tells your phone how to connect to your network carrier.

Some phones are locked to only allowing a particular type of sim. So, for example, you might only be allowed to use O2 sims in your S3 phone. Normally this is only a problem if you want to sell the phone or change networks.

In my reading it seemed that having a locked phone could cause problems with changing the firmware, with the phone then complaining and not recognising the sim and asking for an unlock code.

I didn’t have to contend with this as it turned out my S3 was not sim-locked.

The best way to check this is to put a sim card from somebody else’s phone into your S3. Make sure it’s on a different network carrier. You’ll soon see if it asks for a code. If it doesn’t, you’re good to go.

If it does, you may need to get an unlock code from O2. You can do this here. Alternatively you can try the methods described here, but these may only work if you’re on a 4.1.1 firmware build.

Game time

OK, here’s the actual process for doing the fix. THIS IS WHERE THINGS CAN GO WRONG, SO ONLY DO IT IF YOU’RE COMFORTABLE AND HAVE BACKED EVERYTHING UP.

I REPEAT: THIS WILL PROBABLY CAUSE DATA TO DISAPPEAR, SO DON’T LEAVE ANYTHING PRECIOUS ON YOUR PHONE. BACK IT UP.

You can find more info about ODIN by clicking here.

  1. Make sure you’ve got the GT-I9300 drivers already installed on your system. The easiest way to do this is to make sure you’ve installed the official Kies software from Samsung and connected your phone in the past. Windows will get all your drivers installed.
  2. MAKE SURE KIES ISN’T RUNNING. Hit ctrl+shift+escape if you’re not sure and check in the list for anything Kies-related. Kill it if it’s there. Having Kies running while ODIN does it’s thing would be bad.
  3. Extract the zip archive that you downloaded with firmware. This should result in a .tar or .tar.md5 file.
  4. Put your phone into download mode:
    1. Turn the phone off.
    2. Take out your sim card and SD, just to make sure they don’t interfere at all.
    3. Hold down the volume down and home buttons while holding the power button. This will start the phone up in a special mode.
    4. Press the volume up button to confirm. The phone will enter download mode.
  5. Extract the ODIN zip.
  6. Run ODIN – it’ll ask for admin permissions, so grant them.
    1. A window pops up with lots of buttons. Don’t change anything or fiddle around unless you know EXACTLY what you’re doing.
    2. By default you should have Auto Reboot and F. Reset Time already ticked. This is fine: leave them ticked.
    3. Make sure NOTHING ELSE IS TICKED. Having anything else ticked could destroy the universe.
    4. Click the PDA button and select the firmware file you extracted.
    5. ODIN will run a bunch of checks on the firmware file. This could take a little while. Afterwards, the PDA section will be ticked.
  7. Let’s do this thing.
    1. Connect your phone to the computer with a USB cable.
    2. Wait for the drivers to install.
    3. Once it’s ready, ODIN will change status to show something in the ID:COM box. It should turn blue, which means it’s ready to go. It might take a few seconds, so be patient.
    4. Double-check you don’t have anything else accidentally ticked.
    5. Click START.
    6. ABSOLUTELY, POSITIVELY DO NOT UNPLUG THE PHONE DURING THE PROCESS.

A progress bar will appear on the phone and in ODIN. Once it’s done the phone will reboot at least once. DO NOT UNPLUG THE PHONE.

Eventually a PASS! message will appear in ODIN and it’ll go green. This is good news.

Your phone will eventually reboot and you’ll end up on the start screen. At this point you can safely unplug the phone.

You can check the firmware in Settings->About device.  The build number should reflect the one you downloaded.

At this point I went to Settings -> Back up and reset and did a factory reset, to ensure I was starting nice and clean.

You can then log into your Google and Samsung accounts and reinstall everything and, if you’re like me, you won’t be suffering from freezes anymore.

I hope this helps somebody – it was a right faff trying to figure this out, so hopefully this’ll let some people cut straight to it.

The cool thing? You’ll now get the latest updates direct from Samsung, without having to wait for O2.

You can support this kind of post via my Patreon