There are lots of forums explaining how to upgrade or root a Nexus S but it took me hours to find all needed parts and get it running with ICS and rooting it afterwards. So I decided to summarize my experience – of course you follow my steps on your own risk and I’m not responsible for bricked phones or lost warranties:
First I was waiting for an OTA update but nothing happened and after looking for a way to manually do it I found some links to Google full ROMs under http://forum.xda-developers.com/showthread.php?t=1445635 and decided to try the update. I chose the “Android 4.0.3/IML74K/XXKI1 Radio/KL1 Bootloader” full rom and downloaded the package.
With this image on the sdcard of my phone, copied over USB, I rebooted my phone into the bootloader by holding power and up button to power it on. As I’ve already unlocked (fastboot oem unlock) my bootloader before I skipped this step now and there are dozens of howtos for this – but mentioned that most of these forums told me unlocking the bootloader voids warranty. In the menu I chose recovery, mounted the sd card and installed the downloaded package. After a reboot i had ICS :-)
But trying to get back into recovery I had to find out that the upgrade broke my recovery image. So I looked for the latest recovery image for crespo under http://download.clockworkmod.com/recoveries/ which was recovery-clockwork-188.8.131.52-crespo.img. I downloaded this file and flashed it with fastboot which only works if you are in the bootloader. I copied the image to my plattform-tools folder of the Android-SDK before
# verify that phone is available ./fastboot devices ... # flash new recovery ./fastboot flash recovery recovery-clockwork-184.108.40.206-crespo.img
Now it was possible to get back into recovery. But only till next boot of the phone. There is a script installing the broken image on every boot. This can be stopped by renaming install-recovery.sh in /system/etc of the phone. I mounted /system in the recovery menu then run these commands:
./adb shell cd /system/etc mv install-recovery.sh install-recovery.sh.old
Now the phone was running with stock ROM without root access.
I downloaded Superuser-3.0.7-efghi-signed.zip from http://androidsu.com/superuser/. There are different versions but only one for ICS. Icopied this file into the plattform-tools folder of my SDK, booted the phone into recovery, mounted the sdcard and then run this command to copy the file to the phone:
# copy the file to phone ./adb push Superuser-3.0.7-efghi-signed.zip /sdcard
Then I installed the file over the recovery menu and rebooted it. Now I have a rooted Nexus S with Android 4.0.3 and custom recovery.
I shouldn’t have booted ICS after every single step to see if it is still working and to appreciate my work. All steps should be combinable by copying all needed files mentioned above to the sdcard (no matter how) and then doing the following – every step is explained above:
- Boot into bootloader and choose recovery in the menu
- Install new ROM
- Reboot the phone into bootloader or get back to bootloader in another way
- Flash recovery
- Choose recovery in the menu
- Rename install-recovery.sh
- Install Superuser package
- Reboot the phone normally