How to defeat Android KitKat update force-feed & nag screens, Verizon HTC One
Oops. On my HTC One (M7), it's actually trying to push JellyBean 4.3 on top of JellyBean 4.2.2 that was out-of-the-box.
EXECUTIVE SUMMARY: (1) Allow the .zip file containing the update to download into the phone’s protected cache partition. (2) Reboot the phone into its low-level “RecoveryMode” and flush the cache. (3) Reboot the phone into its normal mode and allow the installation to continue. The installation will fail, for lack of the installation file, and the nag screens disappear (as if the installation had succeeded). The phone does NOT have to be rooted.
INTRODUCTION: When an Android firmware update is outstanding, the phone begins to display, almost constantly, a devilish nag screen describing the pending update, with the choices “Install Now” and “Install Later” at bottom. If you choose “Install Later,” the phone offers up a ‘spinner clock,’ allowing you to schedule the installation … and a check box as to whether you the update should proceed at that time automatically (or not). You can stall off the update for about 4 or 5 days using the spinner (and not selecting ‘automatic’) but eventually the downloading of the .zip file containing the firmware update will begin anyway … and without warning. To get rid of the persistent nag screen … and the entire update process, follow these three steps:
STEP ONE: Practice the flushing of the protected cache partition.
It’s a bit tricky and you will need a dry run or two so that you know exactly how it works. First turn the phone’s FastBoot option off. (With this option turned off, re-powering-up the phone off effects a full cold restart. With it on, the phone boots with some RAM, drivers, etc. retrieved from a boot cache to save time. It’s probably better to have this function off anyway, so that when you re power up the phone, it’s a “fresh start.”) Tap Settings/Power. Uncheck the FastBoot option.
Next, power down the phone in a way so it re-boots into its “Bootloader” low-level system mode; this is similar in concept to rebooting a PC using F8. Hold down the VolumeDown button, then hold down the Power button at the same time. Keep holding. Eventually a countdown message will appear predicting the shutdown of the phone. When the screen goes black, release the Power button, but continue to hold the VolumeDown button. The phone will quickly reboot into a system level menu, with choices such as a FactoryReset, Bootloader, PowerDown, Recovery, etc. Use the volume keys to toggle to “Recovery.” Then press the Power button to select it. (Normally this would lead to a direct display of the Recovery menu, however Verizon has attempted to defeat endusers from accessing it, so some additional keystrokes are needed to access Recovery Mode on a Verizon HTC One.)
After selecting RecoveryMode, the phone will briefly display an HTC flashscreen. Then the screen will go nearly, but not entirely, black. At this point press the Power, VolumeUp AND VolumeDown buttons simultaneously then quickly release them together. Unless this is done very precisely, it will not work. Fortunately the nearly-black screen will allow multiple attempts for about 30 seconds (before the phone moves on into a normal reboot). You may well find it takes quite a few attempts before it is done correctly.
When the triple-button press & release has been executed correctly, some very very puny typed characters begin to appear on screen in yellow. That confirms you are now in RecoveryMode. There will be some more ‘yellow chatter,” then a menu in blue type characters will appear. You’ll need a magnifying glass to read it, but it says:
Android system recovery
Volume up/down to move highlight:
power button to select.
reboot system now
apply update from ADB
update/recover from SD card
wipe data/factory reset
wipe data partition
Use the VolumeUp & VolumeDown keys to choose “wipe data partition.” Select it with the Power button. A confirming message that the protected cache partition has been flushed will appear. (I did it twice for good measure.) Then use the VolumeUp & VolumeDown keys to choose “reboot system now.” Select it with the Power button. The phone will then reboot into a normal condition.
STEP TWO: Allow the .zip file containing the firmware update to download into the protected cache partition.
Determine what Android version you are running by tapping Settings/About/Software Information/Android Version. Jot the version number down. When the nag screen appears, choose “Install Now.” The Notification Bar will begin to show an animated DownArrow, indicating the .zip file containing the firmware update is downloading. Pulling the Notification Bar down reveals a blue progress bar titled “Downloading Firmware” that reports the progress of the download.
Allow the download to complete. The same nag screen will then reappear. Use the Back button to escape from the nag screen. At this point, power down the phone into BootLoader mode, enter RecoveryMode and flush the protected cache partition as practiced in StepOne.
STEP THREE: Allow the rest of the installation to run and fail.
When the phone is rebooted into a normal condition, and when the nag screen next appears, choose “Install Now.” The installation will almost immediately display a failure message … since the required installation file is no longer in the protected cache partition. Tap “OK.” The installation procedure, at its start-up, reset the flag in the Updater procedure to reflect that the installation actually occurred. Hence, the nag screen procedure has now been ‘tricked’ into thinking the installation was completed and it will not reappear. Confirm you are still running the same Android version by again tapping to Settings/About/Software Information/Android Version.
PS: If you have not done the three steps, and you suddenly see the DownArrow proceeding to download the .zip file with the firmware, you can delay the process by putting the phone into AirplaneMode then rebooting the phone into a normal condition. The download process then will be stopped "midstream" ... and that will "buy you time" until you have had a chance to execute the three steps. Merely clearing the protected cache partition at this point will NOT terminate the download-in-process--it will just start downloading the file all over again when you turn off AirplaneMode. You will have to execute ALL of the aforementioned steps to entirely end the update process.
[UPDATE]: Drat! Three days, later, exactly at noon, the update download process started all over again, without warning.
[UPDATE]: I've successfully defeated the nag--for now--by following instructions found elsewhere. EXECUTIVE SUMMARY: Install WeakSauce 1.0.1.apk (& SuperSU) to obtain a temporary rooting. Backup, then delete from the \system\app folder (using a product such as ES File Explorer), the following four files: DMCommandService.apk, HtcCdmaMccProvider.apk, HtcOMADM_SettingsPlugin_VZW.apk & HtcOMADM_VZW.apk. The defeat will hold until the phone is reset. WeakSauce loses the temporary root at reset for about 30 seconds ... before it takes control of root again. When it does, just go back and delete the four files again.