16 January 2014

Google Nexus 4 and Kitkat (4.4) vs Jelly Bean (4.3) : dialler issue

I switched from iOS to Android when my iPhone 3G (not 3GS) finally gave up the ghost, and by that stage Apple weren't doing any OS updates to it either. That was a few years ago. On the whole I'm pretty happy with Android, since v4 it's felt less like a hobby OS and more stable. Even if it doesn't seem as stable as iOS, which is understandable since it gets skinned for each manufacturers hardware- making it akin to Windows in trying to accomodate everything.

I've got a Nexus 4 (the google phone) so you'd expect Android to play nicely with Googles own hardware, and yeah, upto 4.4.2, it has - it seems noticeably quicker doing things than on equivalent hardware.

So far, so good.

Android 4.4 came out late last year and it's caused problems on a number of devices. But the problem I had was when I made, or answered, a phone call - the dialler pad went black and inactive. The only way I could hang up was by holding the power button, or waiting until the caller hangup. And I couldn't use phone banking, or put the phone on speaker.
Sometimes hitting the power button on the side showed a brief glimpse of the panel. couldn't do anythnig with it, so presume this is Google's attempt at teasing me.

Not really the best look for a device marketed as a phone.

Even for me who doesn't really use the phone as a phone much.

So I've written this summary to bring together the number of pages and things I tried, eventually taking the phone back to Android 4.3.

What did I try
The internet is full of suggestions. Here's what I tried and what happened.

Tried alternative dialler
Kinda improved things, but still when receiving phone calls everything went dark.

Safe Mode
This is similar to booting into Safe Mode on a PC, it disables 3rd party apps etc. Instructions here.
Result: same problem, so it's Android and not an app I installed.

Restore to factory settings
Your phone has a restore to factory settings somewhere. It'll clear everything, so back up if you don't already sync to Google.
Result: as expected, same as Safe Mode.

Clean Install of 4.4.2
I'll give more detailed instructions under the restore to 4.3 section below. But figured before I took it back, I'd try a clean install of 4.4.2.
Result: phone seemed more responsive, but same problem with dialler.

Restore back to 4.3
And so, after being unable to get some voicemail, I decided to go back to 4.3. This involved a few webpages, and wasn't very Mac focussed, so here's my attempt at bringing it together - hopefully making it reasonably straightforward for most users.
Sources for this:
Cult of Android
Android Developer Site
Unlock bootloader for Nexus 4

Software you'll need
Android SDK- Developer Tools and API libraries
Android Factory Images - choose the 4.3 version
Android File Transfer Agent (maybe already installed if you move files/music around)

Instructions
Your Mac should already have the drivers to see the Nexus, if not install the Android File Transfer agent from here.
Extract the Android SDK, it will say you need to have a Java environment installed, but all you want from this large bundle is a small file called Fastboot.
Extract the 4.3 Factory image.
I kept both extractions in Downloads, as it was easier to keep track of where they were. But that's just me.
Find the file in the SDK called 'fastboot' and move this into the extracted 4.3 directory (called occam-jwr66y). Fastboot is probably in a subfolder called 'platform-tools'.

Put Nexus into Bootloader mode
Turn the phone off, then switch on by pressing the power key, and Volume Up + Volume Down simultaneously.
Connect the phone to the computer.
Start up a terminal window (Launchpad / Other / Terminal). Use the cd command to get to the directory you've saved everything into, for example mine was:
cd ~/Downloads/occam-jwr66y

type:

./fastboot oem unlock

You will be prompted on the phone to verify the process.
Open the script flash-all.sh using TextEdit from the occam-jwr66y folder and edit it so that all of the fastboot commands read ./fastboot my script now looks like:

./fastboot flash bootloader bootloader-mako-makoz20i.img
./fastboot reboot-bootloader
sleep 5
./fastboot flash radio radio-mako-m9615a-cefwmazm-2.0.1700.84.img
./fastboot reboot-bootloader
sleep 5
./fastboot -w update image-occam-jwr66y.zip

Back to Terminal, and type
./flash-all.sh

Your phone will automatically reboot, and ask you to set it up again. Things worked fine for me here.
But I also rebooted into the Bootloader, connected my phone up, and typed the following into the terminal window to lock the bootloader again:
./fastboot oem lock

It was then an annoying process of going through the Android store for My Apps, then clicking on the All tab and choosing what I wanted to reinstall.
However the phone dialler now does what I want it to do. 
Hope this helps someone...

B

No comments: