I have been waiting for AT&T to push ICS to my Google Nexus S since last December. Google started rolling out ICS at that time but stopped it because of phones being bricked by some bugs. In March 2012, they released another version after ironing out the bugs. Since then many carriers and handset makers pushed the update but AT&T seems to be not interested. Many internet article and even Google+ posts by Google engineers clearly mentioned that update is available from Google but when I chatted with a customer representative of AT&T he blatantly lied that they did not receive any update. I did not expect any better from AT&T but, in retrospective, for some unknown reason I foolishly believed AT&T will push the update in near future. Eventually my patience wore out and I started to find how to install the latest ICS myself. I found it surprisingly easy. It is so easy that I am wondering why I waited for a company, well known to ignore its customers, for so long. Anyway, here are the steps to follow to install Android 4.0.4 on my Google Nexus S:
DISCLAIMER: Be advised that this process involves risk of losing data or bricking the phone and I won't be responsible for any mishap. Please proceed at your own will.
1. Download and install Android SDK.
2. Download fastboot.
3. Unzip fastboot and copy it inside the "tools" directory.
4. Add "fastboot" to the PATH.
5. Download the Android image. Choose the image based on your phone's radio. You can find it by going to "Settings" -> "About Phone".
6. Unzip it.
7. Enable USB debugging on your phone.
8. Connect your phone to your computer and make a full backup.
9. Power off your phone and boot it in the bootloader mode by holding Volume Up and Power buttons simultaneously.
10. Open a terminal and run: "fastboot oem unlock" (this may void your warranty).
11. cd into the unzipped Android image directory.
12. Run "./flash-all.sh".
13. The phone will take some time to install the image and reboot. Finish the setup process by going through the steps prompted by Android (e.g. signing in to your Google account).
Its a good idea to lock the bootloader again. So do the following to do that:
14. Enable USB debugging.
15. Connect phone to your computer.
16. On terminal, run "fastboot oem lock".
17. Reboot your phone.
If you have small data plan then you may want to connect to WiFi before signing into your Google account because after signing in Android will download and install all the apps you installed from Google Play before.