Since ADP1, I've always been a big fan of Google's Nexus devices. In fact, I've only ever used Nexus devices: Nexus One, Nexus S, Galaxy Nexus, Nexus Q, Nexus 7, and... once I get my hands on them, Nexus 4 and Nexus 10. Ok, so I love the Nexus brand. Not only because it's pure, but also because these devices have much more utility (and longer shelf-life), due to the Nexus software update promise. And with yesterday's release of Android 4.2, I wanted to cash-in on that promise.
While I tend to build my own ROMs from AOSP source, this is not for everybody. It's not trivial to set up the build environment, and AOSP does not include Google Play/apps.
Thankfully, Google provides pre-built Nexus factory images, that can be directly flashed onto our devices, with very little setup, except that we need the fastboot command-line utility. The "only" down-side is that fastboot-based flashing requires that the device bootloader be unlocked. This is easy to do (fastboot oem unlock), but it results all of our data being erased. And for security reasones, we want to re-lock (fastboot oem lock) our bootloader after the flashing step, which means that every upgrade forces us to start over.
All this seems like a lot of pain, which is exactly what OTA updates are for. New releases are supposed to be simply pushed to your devices when they become available, and then the Android's recovery system takes care of flashing the new ROM in a way that preserves our data. Sounds great! Except that we seem to be at the mercy of carrier/OEM/Google as to when these OTA updates actually happen, and patience does not seem to be one of the virtues of most Nexus users. We may try to go to Settings -> About Phone/Tablet -> System Updates -> Check now, but that does not seem to ever do anything, at least not for me.
Fortunately, there seems to be a way to cheat the system (for now), so that it gives our device priority for the next OTA update. Before I tell you how, I just want to give you the standard disclaimer that I'm not responsible for any damaged/broken devices as a result of going through these steps. Anything that you do is at your own risk:
- Put your device into air-plane mode (i.e. disable all connectivity options)
- Go to Settings -> Apps -> All (tab) -> Google Services Framework
- Click on Clear cache (if enabled)
- Click on Clear data (and OK the warning)
- Click on Force stop (and OK the warning)
- Disable air-plane mode (e.g. enable WiFI)
- Check that you have access to the network
- Wait (usually no more than a couple of minutes)
- Optionally, go back to Settings -> About Phone/Tablet -> System Updates -> Check now
- You should get a prompt to apply the new update (assuming there is one available for your device)
I hope you find this useful.