When you bought your phone it was cutting edge, had the latest version of Android, and made your heart sing. A year or more later, it doesn’t get the new updates and the performance is a little sluggish. Breathe new life into your phone by flashing it with a new custom ROM.
Why Do I Want to Do This?
There are many reasons why someone might wish to flash their phone with a new ROM, but the most common reason is that it is the only way for them to upgrade to the most current and optimized version of Android.
The sad reality is that most cellular carriers quickly abandon old devices and cease rolling out updates for them. Now while we understand the economics of the situation–it’s not profitable to pay the hardware company to create new updates and to support legacy phones–we still think it’s a shame that perfectly good phones are so quickly relegated to the support junk bin.
Take, for example, the phone we’ll be using for this tutorial, the Nexus S. When it was released in late 2010, it was Google’s flagship Android phone. Sure, technology marched on and it’s no longer the most cutting edge phone around, but it is still a perfectly capable little device. Rather than rely on carriers to provide us with updates (which are usually months behind the official Android releases and often buggy), we’ve come to rely on the large and fantastic community of phone modders and customizers to get our upgrade fixes. Thanks to active communities like those behind the CyanogenMod, we’re not stuck waiting on our provider to get around (if they ever do) to giving us the next Android update.
So if you have a phone that the carrier no longer loves, but that you still want Android updates, optimized apps, and other new-phone-perks for, then flashing a new ROM to your phone is the way to go.
Note: Any time you monkey around with the internals of your phone, tablet, or other device in a fashion the manufacturer and/or supplying carrier did not intend for you to, you void your warranty and you risk permanently bricking your device.
That said, we’ve been rooting, jailbreaking, unlocking, reflashing, and other wise modding phones, tablets, consoles, and other walled off electronics for years without so much as a single hiccup, let alone a bricked device. Read the instructions carefully and you’ll be fine.
What Do I Need?
First, it’s important to note that although we’re providing general guidelines for ROM flashing in this tutorial, we’re also using a specific phone as our template. Every single phone model will have its own quirks and requirements. You can’t simply take this guide for the Nexus S and apply it to the HTC One. The general concepts will transfer but you’ll need to do a little search engine exploration to double check on the requirements, quirks, and specific ROM files for the particular phone.
That said, there are basic steps involved in the flashing of any Android phone that you should always keep in mind when reading any instructions you find. The process, when starting from scratch with an unflashed phone, should always look roughly like:
- Backup your data
- Unlock the bootloader
- Install a custom recovery image
- Use the custom recovery image to install the new ROM
To that end, we’ll need a handful of free tools to help us crack open (virtually speaking) our Nexus S and install our custom ROM:
Note: There are two versions of the Nexus S, the standard Nexus S and the Nexus S 4G (the Sprint version of the device). While the instructions for flashing the two devices are identical, the files you start with are not. Make sure you download the correct files for your device. The codename for the regular Nexus S is “crespo”, and the codename for the Sprint version is “crespo4g”.
- A copy of the Android SDK
- A copy of the ClockworkMod Recovery (crespo / crespo4g)
- A copy of CyanaogenMod 10.0 (crespo / crespo4g)
- A copy of the Google Apps Pack for CyanogenMod 10.0
Armed with these tools, we’re ready to flash our phone with a custom ROM.
Unlocking the Bootloader with Android SDK
The first order of business is to backup your data. Unlocking the bootloader will completely wipe your phone. Unlike the ROM upgrades which will only alter the OS partition, the initial unlocking and flashing process will completely wipe the phone.
Make sure you’ve backed up everything of importance: you’ve copied over your photos and media, you’ve backed up application data with Titanium Backup or the like, and so on.
Again, for emphasis, unlocking the bootloader automatically wipes and factory resets the phone.
Once you are absolutely certain you’ve backed up everything important, synced your contacts and calendar data, etc. it’s time to unlock the Nexus S bootloader. In order to do that, we’ll need to use a few of the tools in the Android SDK. If you haven’t already installed it on your computer, take a moment to do so now.
Once the Android SDK is installed, browse to /Program Files/Android/android-sdk/platform-tools/. Within that directory are the two applications of importance to our task: adb.exe and fastbook.exe. Once you’ve confirmed the location of these two apps, go ahead and copy both the ClockworkMod Recovery image and the CynaogenMod image files into the directory (you either need to add the two apps to your PATH file or put the image files in the same directory as them, which is far more expedient).
Plug in your phone to the computer via the USB cable. Open a command prompt and navigate to the folder where adb.exe is located. At the command prompt enter the following command:
adb reboot bootloader
This will put the device into fastboot mode. Follow up with this command:
fastboot oem unlock
This command will unlock the bootloader. A warning will appear on the device itself (not on your computer screen). Use the volume rocker to move the selection and confirm you want to unlock the device by pressing the power button.
Your device will reboot; you can confirm the bootloader unlocking process was successful by watching for an open padlock under the Google logo during the boot process. If the padlock is closed, repeat the above steps.
To flash the ClockworkMod Recovery, enter the following command (drop the 4g portion of the file name if you’re flashing a non-Sprint Nexus S):
fastboot flash recovery-clockwork-18.104.22.168-crespo4g.img
After the file has finished installing, go ahead and reboot the device into the bootloader mode again:
adb reboot bootloader
Select Recovery in the bootloader menu. We’re not going to use ClockworkMod just yet, but we want to make sure it installed correctly. Everything look good? Great, it’s time to get down to installing the actual ROM.
Transferring and Installing CyanogenMod
In order to install CyanogenMod, we need to push it to the phone. Verify that you have the appropriate CyanogenMod image for your phone in the same directory as the adb.exe application. If it’s there, go ahead and enter the following command while the phone is tethered to your PC:
adb push cm-10.0.0-crespo4g.zip /sdcard/
adb push gapps-jb-20121011-signed.zip /sdcard/
This will copy both the primary ROM and the supplemental files (the Google Apps which are not included in the core CyanogenMod release) to your phone’s SD card/internal storage.
Reboot your phone one more time and enter back into the ClockworkMod Recovery:
adb reboot bootloader
In the ClockWordMod Recovery, select “wipe data/factory reset”. Although the phone was just wiped by the bootloader unlock, it’s always better to be safe than sorry and start with a nice clean slate. Once the wipe is finished, select “install zip from sdcard” and then select cm-10.0.0-crespo4g.zip.
Note: If you don’t see the SD card/internal storage as a selectable option, go back to the main menu and select “Mounts and Storage”. There you can select “mount /sdcard” to manually mount your phone’s storage.
After the ROM has finished installing, go ahead and select “install zip from sdcard” again and, this time, select gapps-jb-20121011-signed.zip.
At this point, you have both CyanogenMod and the core Google Apps installed. Navigate back to the main menu and select “reboot system now”. Your phone will reboot and you should be greeted by a flashy CyanongenMod themed loading animation before ending up in CyanogenMod.
That’s all there is to it! Play around with CyanogenMod. If you love it, keep it. If you want more… then hit up the various mod communities and forums like XDADevelopers and read up on new and different mods. There are mods optimized for speed, for specific carriers, for battery life, and everything in between. The next mod on our test-list, for example, is SlimBean–a highly optimized Jellybean release intended to boost performance on older Android devices.