Monday, June 4, 2012

Android 4.0.4 OTA update

A couple days ago, I started getting notifications that a system update was ready for install. This was the IMM76K (Android 4.0.4) OTA update that people had been impatiently waiting on for a while.  After making a nandroid backup (via CWM), I decided to give it a try.

The system rebooted, and went to the screen with the android's belly open and the blue spinny thing. Then he was on his back, with the dreaded red triangle.  I wasn't surprised that the OTA update wasn't going to work with my modified phone.

This excellent post on xda-developers gave links to the official OTA updates for the different versions of the G-Nex. So I downloaded the mysid IMM76K from ICL53F, and adb push'd it to /sdcard. Rebooting into CWM recovery, I tried to install the update, but it failed with:

assert failed: apply_patch_check("/system/app/VZWBackupAssistant.apk".....

I knew why it was failing. I had removed some of the VZW garbage apps that cam pre-installed. Luckily, I didn't actually delete them, I had just renamed them to .apk.REMOVED.  After putting them back1 the update installed successfully.

Another thing to note - I didn't realize it, but the xda post pointed out this important detail: Verizon OTA updates include a script that runs every boot, whose purpose is to restore the recovery image if it is not the expected stock image.  The script is at /system/etc/ and the recovery image (for flashing) is /system/recovery-from-boot.p.   Thus, if you don't wan't to lose CWM (or other custom recovery), you need to rename these files.

1 - I didn't realize it, but ADB is supported in CWM. When I looked in device manager while my phone was connected and in CWM, I saw one device just named "Full".  I manually specified the same Samsung drivers (already installed) from before, and bingo, my phone showed up in adb devices.