I received an over-the-air notification on my Nexus 5 for Marshmallow (Android 6.0) a few days ago. I put off on doing the update until today. I wanted to make sure I had enough time to migrate all my apps and time to troubleshoot any issues.
In this post, I’m just going to give a quick overview of my update from Lollipop (5.1.1) to Marshmallow (6.0.0). I’ll also provide links to the downloads.
I ran a backup of all user apps using Titanium Backup. Instead of re-downloading the apps from Google Play, I reinstalled the apps from the backup.
Since this is a major upgrade, I also ran a full Nandroid backup of Lollipop via TWRP.
My Nexus is rooted. I’ve had issues with updating the various Lollipop versions. My resolve was to manually flash each of the system files. I approached the Marshmallow upgrade with the same technique. I downloaded the factory image and ran through the steps (see this post for the steps). Here’s the link to the factory image.
This was also a straight forward process. I used the most current version (18.104.22.168). This is the same version I used on the last Lollipop update. Here’s the TWRP Nexus 5 (hammerhead) link.
Reestablishing root was where I came across a problem. I used the Lollipop rerooting method (see this post). I was able to boot into Marshmallow without any issues. The problem was when I tried to update SuperSU via Google Play–it failed. I did a quick search and found Chainfire’s SuperSU 2.52 beta file. I sideloaded that… bad decision. I was stuck in Marshmallow’s boot animation (boot loop). I had to do more digging and found that there is a corresponding
boot.img file that needs to be flashed in tandem with the SuperSU beta file.
I got out of my boot loop by holding the volume up & down, and the power buttons together. The resulting key combo boots into bootloader. I connected my Nexus to my Mac and flashed the
boot.img file. I then booted into recovery, and installed Chainfire’s SuperSU beta file.
Bonus: workaround for Android Pay credit card input issue
To input a credit card to the Android Pay app, you’ll need to disable root (there’s a checkbox that needs unchecking; check the settings in SuperSU app). Input the credit card info and then reestablish root by checking the box again. I was able to input my credit card using this method. I haven’t tested Android Pay. There’s a possibility this will still fail.