Monday, December 19, 2011

Galaxy Nexus : installing ICS 4.0.2 from factory image on the GSM/HSPA+'s model (« yakju » / « maguro »)

UPDATE 04-04-2012 :
Be aware that :
  • All your personal data (files, photos, mp3, ...) will be erased during the process and a factory reset will be done.
  • You should make a backup before starting the install.
  • You should also ensure that your account's information are backed up on Google's server and that all the account have been synchronized on Google's server.
  • You will have to parameter again all your applications : social networks account (sign in into Twitter, Facebook, or whatever account you use), cloud service account (sign in into Ubuntu One, Dropbox, Evergreen, or whatever service account you use), library account (sign in into Kindle or whatever service account you use). So, you should ensure you have all those account sign-in information with you. And be prepared to spend some time on this task.
AS YOU MAY BRICK YOUR PHONE, DO IT AT YOUR OWN RISKS.
Good luck if you decide to continue with the manual update process instead of waiting for the OTA.


I've just updated my GSM/HSPA+ Galaxy Nexus (« yakju » / « maguro » model) to Android ICS 4.0.2 by flashing the factory image. I've decided to flash the factory image because manual install requires to unlock the bootloader and this single action will erase my data (userdata partition) on the device whether I flash the factory image or the OTA archive.

First of all, prepare everything :
  • download the yakju / maguro icl53f Android 4.0.2 factory image and verify the checksum (MD5 or SHA-1)
  • then expand the archive in a folder on your desktop computer
  • download the fastboot application for Windows or Mac on your desktop computer, unzip it and copy the unzipped contents to the folder where the factory image has been expanded to. It seems the fastboot application is now in the Android SDK folder : android-sdk/platform-tools. So you just have to ensure this folder is in your PATH environment variable
  • install the Android SDK on your computer. I don't know if this is a required step but who knows, it will be ready if things goes wrong ...
  • open the flash-all.sh script file from the directory where the factory image has been expanded to in a text editor
  • open a command shell and go to the directory where the factory image has been expanded to

Now everything has been prepared, you're ready to proceed.

Here are the steps :
0) boot in fastboot mode following the instructions from Building for devices (shutdown your Galaxy Nexus then hold volume-up and volume-down, then press power while maintaining volume-up and volume-down until the phone vibrate)

1) unlock the bootloader following the instructions from Building for devices (the "Unlocking the bootloader" section). The Galaxy Nexus will display a warning screen and you'll have to confirm on the phone you still want to unlock the bootloader using the volume-up button then the power button)

$ fastboot oem unlock
...
OKAY [ 33.912s]
finished. total time: 33.912s

At the next Galaxy Nexus reboot, you will see an unlocked locker on the black screen with the « Google » logo.

2) flash the bootloader following the flash-all.sh script's commands provided in the factory image archive

$ fastboot flash bootloader bootloader-maguro-primekk15.img
sending 'bootloader' (2308 KB)...
OKAY [ 0.347s]
writing 'bootloader'...
OKAY [ 0.291s]
finished. total time: 0.637s

wait for a few seconds

3) reboot the bootloader following the flash-all.sh script

$ fastboot reboot-bootloader
rebooting into bootloader...
OKAY [ 0.007s]
finished. total time: 0.007s

wait for a few seconds

4) flash the radio image following the flash-all.sh script

$ fastboot flash radio radio-maguro-i9250xxkk6.img
sending 'radio' (12288 KB)...
OKAY [ 1.749s]
writing 'radio'...
OKAY [ 1.376s]
finished. total time: 3.124s

wait for a few seconds

5) reboot the bootloader following the flash-all.sh script

$ fastboot reboot-bootloader
rebooting into bootloader...
OKAY [ 0.006s]
finished. total time: 0.006s

wait for a few seconds

6) flash the android 4.0.2 (icl53f) image following the flash-all.sh script

$ fastboot -w update image-yakju-icl53f.zip
archive does not contain 'boot.sig'
archive does not contain 'recovery.sig'
archive does not contain 'system.sig'
--------------------------------------------
Bootloader Version...: PRIMEKK15
Baseband Version.....: I9250XXKK6
Serial Number........: 0xxxxxxxxxxxxxx
--------------------------------------------
checking product...
OKAY [ 0.007s]
checking version-bootloader...
OKAY [ 0.008s]
checking version-baseband...
OKAY [ 0.008s]
sending 'boot' (4074 KB)...
OKAY [ 0.591s]
writing 'boot'...
OKAY [ 0.249s]
sending 'recovery' (4406 KB)...
OKAY [ 0.648s]
writing 'recovery'...
OKAY [ 0.295s]
sending 'system' (317594 KB)...
OKAY [ 34.419s]
writing 'system'...
OKAY [ 33.115s]
erasing 'userdata'...
OKAY [ 0.193s]
erasing 'cache'...
OKAY [ 0.015s]
rebooting...

finished. total time: 69.582s


Wait for a few seconds and your phone will reboot by itself, then restart.

7) As everything has been erased, and specially your personal information, apps, data and so on, you are asked a few information to configure your Android phone as it is a very first start.

This restoration process takes quite some time.

8) After the phone has been parametered and it has restored your data (contacts, emails, ...), apps, and the likes from Google's servers, it is strongly suggested to lock your phone's bootloader (as recommended by Jean-Baptiste Queru).

At the command prompt, execute the following command :

$ fastboot oem lock
...
OKAY [ 0.203s]
finished. total time: 0.203s

wait for a few seconds then reboot your phone


$ fastboot reboot
rebooting...

finished. total time: 0.005s

While the phone reboots you should not see any unlocked locker on the black screen with the « Google » logo.

That's it. Enjoy.


fastboot commands

$ fastboot -?
usage: fastboot [ <option> ] <command>

commands:
update <filename> reflash device from update.zip
flashall flash boot + recovery + system
flash <partition> [ <filename> ] write a file to a flash partition
erase <partition> erase a flash partition
getvar <variable> display a bootloader variable
boot <kernel> [ <ramdisk> ] download and boot kernel
flash:raw boot <kernel> [ <ramdisk> ] create bootimage and flash it
devices list all connected devices
continue continue with autoboot
reboot reboot device normally
reboot-bootloader reboot device into bootloader
help show this help message

options:
-w erase userdata and cache
-s <serial number> specify device serial number
-p <product> specify product name
-c <cmdline> override kernel commandline
-i <vendor id> specify a custom USB vendor id
-b <base_addr> specify a custom kernel base address
-n <page size> specify the nand page size. default: 2048

17 comments:

Unknown said...

Thanks! Worked perfectly on my Galaxy Nexus bought at Siba with Telenor Norway. (Fastboot from MacBook Air, Mac OS X Lion)

:)

ozmor39 said...

'$' is not recognized as an internal or external command operable program or batch file

I received this error, what should I do ? Where am I mistaking ?

a2b said...

@ozmor39

$ is the command prompt your command shell displays

In the line « $ fastboot reboot-bootloader » you just have to enter the "fastboot reboot-bootloader" without the surounding "

The command you have to enter is in bold darkmagenta in my post.

Don't forget that you can brick your Galaxy Nexus if you don't know what you are doing. If you don't feel confident, it's wise no to try to update it manually.

ozmor39 said...

thanks for helping man, i believe i can do it :)

But you know problems keep on occuring. The last one is:

when i wrote the first command
- fastboot oem unluck -

it returnes a system error.

The program cant start because AdbWinApi.dll is missing from your computer. Try reinstalling the program to fix this problem.

P.S: I already re-install Android SDK. I dont know what else I should do.

ozmor39 said...

But I have this AdbWinApi.dll in platform-tools at android-sdk. I wait for your helps guys.

a2b said...

These are pretty basic instructions and you shouldn't get any error.
Try not make any mistakes while copy/pasting them in your command shell.
If it doesn't work, perhaps is it the sign you should not try the manual upgrade. I just can't help you anymore ...

ozmor39 said...

I found the solution and uprage to 4.0.2. Thanks android to be and a2b.

a2b said...

What was the problem ?

ozmor39 said...

the problem was:

The program cant start because AdbWinApi.dll is missing from your computer. Try reinstalling the program to fix this problem.

the solution is:

http://forum.xda-developers.com/showthread.php?t=781386&page=2

UsrX said...

Thank you very much! I sent my phone on service due to sleep of death problem. Got it back with a service note, "upgraded software". When I booted the phone the padlock was unlocked and the system was at 4.0.1. Good job... Thanks to your guide I've both upgraded and locked my phone! I'm deeply thankful!

a2b said...

@UsrX

It's bad news ... and a little bit surprising as the procedure is coming from Google itself in order to restore a factory image

As you can see, 2 versions of the factory images are available from the link that has been given in JB Queru's post : 4.0.1 and 4.0.2.

Are you sure you've got the right factory image, for the right phone model, and the right version of the ROM ? Are you sure you have followed the instructions ? And finally, are you sure your phone had a battery level of at least 50% and was plugged into the power supply during all the upgrade ?

Anyway, now that your phone is back to 4.0.1, it should automatically upgrade itself to 4.0.3 through OTA.

UsrX said...

@a2b

Oh, I'm afraid you misinterpreted my post. When I reread it I can see it's posible to interpret it as ironic. "The good job..." was to the service company. Not my intention! Sorry for that!

Your instruction helped me for real!
The sleep of death problem was BEFORE! And I sent it for service because of that problem. And the service company resent me the phone unlocked. Which if I had unlocked it myself would have void the warranty. I Googled how to lock it and found your post! :)

Sorry again! I AM deeply thankful, for real! :)

a2b said...

@UsrX

I'm sorry to have misinterpreted your post.
And I'm happy to know everything is ok now.

Enjoy ;-)

TheTraversFamily said...

Very helpful guide. Thanks - worked a treat

a2b said...

@TheTraversFamily

Thanks

a2b said...

I'd like to thank all the sites that referenced this post in their posts.

Among them :
[Download] Google Releases Full Flashable OS Images Of Android 4.0.4 (IMM76D) For GSM Galaxy Nexus (yakju) And GSM Nexus S (soju)

Google publie des images de restauration d’Android 4.0.4 pour les Nexus S et Galaxy Nexus

Android 4.0.4 Factory Images Released for GSM Nexus S and Galaxy Nexus

Images de restauration d'ICS pour les Galaxy Nexus/S

These are the posts I'm aware of, but there may be others who I don't know of. Forgive me in advance

a2b said...

I've been surprised (and very proud to be honest) to discover that XDA-developers put a link on this post in one of their Nexus S thread : Nexus S Official factory images for 9020t & 9023 - post #12 (http://forum.xda-developers.com/showpost.php?p=24217997&postcount=12)