Early last week, I messed around with a GSM Nexus S that Rich (@rmanalan) sent me. It had Firefox OS (a.k.a. Boot to Gecko) on it, but I couldn’t get the wifi functioning, making it pretty much a brick.
Rather than try to upgrade to the latest Firefox OS, which does look sweet, I decided instead to take on Rich’s challenge: put Android 4.0 on it. Not much of a challenge really, just two lazy dudes being lazy.
I got around to that today and what follows is the process I took. As with other similar posts, I document this type of stuff as much for my own reusability as for your consumption.
Flashing an Android phone isn’t very difficult, but finding the right information is. Just like Linux or other technical subjects, there is a mountain of information that may or may not be what you need.
Starting Point: Gingerbread
I essentially had a bricked phone, with no connectivity. So, first I updated the Android SDK on my Ubuntu box to work with the phone. I could connect to it with adb, so all was good. Time to get the right ROM.
After some searching, I found this tutorial, which gave me everything I needed, easy peasy. According to the steps, I needed to start with Gingerbread, then upgrade to ICS.
If you have been modding or installing custom ROMs on your phone, you need to ensure you are on stock Android 2.3.6 before attempting to update to Android 4.x. (Having a rooted Android 2.3.6 is okay.)
No worries. The problem was getting the stock Gingerbread package onto the phone’s SD card. First I tried the put utility in ddms, but that failed due to permissions. So, I used adb push instead, the same method I used to get root on my Galaxy Tab.
Perfect, now to follow the flash sequence: 1. Boot into Fastboot mode, 2. Pick Recovery, 3. Choose the update on the SD card.
Protip: Booting into Fastboot is super easy using:
adb reboot bootloader
Don’t waste time with all that rebooting and holding down buttons dance. Trust me on this one.
There’s a problem though with that final step, i.e.
Your phone will reboot after which you will be in Recovery Mode, which shows a little green Android buddy and a white triangle with a yellow exclamation mark inside. Hold the Power button while pressing the Volume Up button.
If you’re not following exactly, you’ll have trouble here. I did, over and over. Finally, I got it: hold the Power button down, then press the Volume Up button. Don’t try to do them together or too quickly.
Anyway, after finally getting that right, I had a functional, stock Gingerbread ROM installed.
Next Up: Ice Cream Sandwich
The process was nearly identical for ICS. Now that I had a working Android OS on it, I could push files to the SD card through standard means, i.e. USB.
So, I put the ICS stock package on the SD card and booted into Fastboot. Rinse, repeat and after a bit of updating, I had a stock ICS ROM.
Your move Mr. Manalang.
Finally: Jelly Bean
Not content with ICS, I wanted to go for Jelly Bean, the latest and greatest Android, which features, among other things, Google Now, which I’m itching to try. I’ve also had a wretched experience with ICS on my CDMA Nexus S 4G, just horrible.
Jelly Bean happens to be available for the GSM Nexus S, not the CDMA one, so lucky me.
Initially, I tried the same basic process, as documented here.
However, during the flashing process, I got this error:
E:Error in /tmp/sideload/package.zip (Status 7) Installation aborted.
Some digging told me this meant I had the wrong ROM, but rather than fish around for the right one all day, I decided to pull down the Jelly Bean OTA update directly from ICS, bit of a Eureka moment frankly. Surprised I didn’t go down the Google rathole chasing that one.
This worked like a charm, and I’m now rocking Jelly Bean on Rich’s GSM Nexus S. Aside from being a test phone, I might actually find this guy useful if I have to travel internationally; I’ve never really liked the network lock-in of a CDMA phone, and I’m relieved to have a modern, unlocked (w00t!) smartphone should my travels take me abroad.
Presumably, flashing Gingerbread should have erased the phone’s local data stores. Right?
Maybe not. I noticed that ICS remembered wifi networks the phone had joined while it was running B2G, which I found spooky. Note to self the next time I factory reset a phone.
Anyway, stay tuned for my next adventure with this phone, Google Now.
Find the comments.