HTC One M8 won't take OTA Lollipop update

I opened a support request for this, but they suggested I ask here...

My HTC One M8 has been rooted, s-off, bootloader unlocked. Running stock Android 4.4.4 (HTC stock rom 3.31.651.2) except for root. In the past, I have been able to take the OTA updates by flashing the stock recovery.

This time it doesn't work. Anyone have ideas why? I get a notice that the OTA update 4.20.651.10 (Lollipop) is available. When I click to install, the phone will boot to recovery, and the green progress bar will move forward for a few minutes then a red (!) in a triangle. The only way I can reboot the phone at that point is to hold power/vol-up/vol-down for a few seconds. It reboots back into 3.31.651.2 just fine.

I have downloaded the update a couple times now, the MD5 sum is identical. I know I can wipe and manually flash the zip, but was hoping to upgrade in place and not have to reinstall all my apps.




  • Jon, have you found a ssolution for this? I'm having a similar problem.

  • David,

    With Lollipop, rooted phones will no longer accept the OTA update.  You either have to return your phone to stock, manually flash the new version using the factory image, or find a root kit that will do it for you automatically.


  • Thanks for the comment, DC, however I wasn't on Lollipop yet, and I did flash the original recovery for the previous version Kitkat 4.4.4. What is it about having root that will prevent Lollipop from taking OTA? is it the presence of a supersu app? unlocked bootloader? s-off? In the past all I had to do was restore the recovery to stock and the OTA would take.

    In any event, I got around the problem by wiping the phone and manually flashing the zip from adb. I first pulled out the recovery.img in case I need to restore it. I was trying to avoid a complete wipe, but in the end I didn't.

    After flashing lollipop, since I'm s-off, flashing TWRP recovery and regaining root was simple.

  • Jonathan,

    Short Answer:  Prior to Lollipop, the OTA code checked certain system files and as long as those particular files were intact and had not been modified (as would happen with custom recoveries and custom versions of Android), would let the OTA proceed even if the phone was rooted.  With Lollipop, the OTA code does a much more thorough check of system files looking for changes.  Something about the root process causes a change that the OTA code doesn't like, so it aborts the OTA.

    Long Answer:  See the forums on XDA.  There are threads about this issue.


Please sign in to leave a comment.