Tag Archives: upgrade

Android Marshmallow

Android Lollipop to Marshmallow (6.0)

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 ( 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.

Here’s the XDA post that has a link to the boot.img file. The beta file is found here.

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.

Yosemite install on USB

Create a Mac OS X bootable USB Thumb Drive (using createinstallmedia)

Apple stopped making their software available on CD/DVD ages ago. Applications including the entire OS is downloaded only through their App Store.

When you download and install the OS from their App store, it performs an upgrade to the existing operating system. Your applications and a large majority of your settings are preserved. But what if you want to perform a clean install? Wipe everything off and start anew? Well to do that, you’ll need to have the installer on another media. Such as another hard drive you can connect to, a CD/DVD, or flash memory (thumb drive, SD card, etc.).

To transfer the OS installer to a secondary storage media requires more than just copying the installer to the media. It has to be bootable. You will need to install the OS on the secondary media. The general method is to format the target destination (flash memory, hard drive, etc.) and run the installer on the target.

createinstallmedia is an easy way of installing the operating system to the secondary storage media. This was introduced in Mavericks. (Unfortunately I didn’t know about it until now because I skipped Mavericks.) createinstallmedia is packaged in their OS installer. There is no need to download it separately. createinstallmedia is a program that needs to be run in Terminal.

There are numerous tutorials available online (video and writeup). From what I’ve read and seen, the steps require downloading the OS installer, formatting the target media, copying the code and pasting into Terminal, and then executing the code. The tutorial steps are straight forward. If you don’t deviate from them, then you will succeed with a bootable system.

For my tutorial, I’m targeting the command line averse. The method I employ gives more leeway. For example, the majority of the tutorials online have you download the installer from the App Store and leave it alone (that is, don’t move it from the Applications folder). Well, say you’ve downloaded the OS already and have is stored in another folder or another volume (a different hard drive)? If you try to execute the command based on their tutorial, it will fail because the path is wrong. The method I use will ensure the path is filled out correctly. I’m using a USB flash/thumb drive as my target destination, but this should work on any other form of flash memory or external hard drive. The only caveat is the target destination must be large enough to accept the OS (min is about 6GB; 8GB is ideal).


Nexus 5 manual update to 5.1

I encountered issues when I updated my rooted Nexus 5 from 5.0 to 5.01:

archive does not contain 'boot.sig'
archive does not contain 'recovery.sig'

(You can read about that here: blog post). For the 5.1 update, I decided to manually flash all the files, so as to avoid running into the same errors.

The following is a step by step process of how I updated my rooted Nexus 5.

Notice: If you don’t know how to use adb and fastboot, you should just stop right here. You’ll have to reference another tutorial. For those that proceed, you are responsible for your phone. If you brick it, it’s on YOU!


  • download and install adb & fastboot
  • download latest TWRP recovery (openrecovery-twrp-
  • download 5.1 factory image (“hammerhead”)
  • download and prep Chainfire’s CF-Auto-Root (XDA link)
  • run a Nandroid backup and transfer a copy of the backup to your computer
  • (optional) run a full Titanium backup of all your apps and transfer the copies to your computer

Prep of 5.1 factory image

  1. expand the hammerhead-lmy47d-factory-6c1ad81e.tgz file
  2. expand the image-hammerhead-lmy47d.zip file
  3. rename the folder for easier reference (e.g.: extractedZip)
  4. move/copy bootloader-hammerhead-hhz12f.img and radio-hammerhead-m8974a- files to the extractedZip folder
    • the img files are found in the expanded tgz file from step 1
expanded hammerhead-lmy47d-factory-6c1ad81e.tgz

This is the expanded hammerhead-lmy47d-factory-6c1ad81e.tgz file with the three important files highlighted

final modified folder

The folder contents of the extracted zip file, including the relocated bootloader & radio .img files from the .tgz factory image

5.1 update via manual flash

  1. connect computer to phone via USB and boot phone into bootloader
    • command: adb reboot bootloader
  2. install bootloader-hammerhead-hhz12f.img
    • command: fastboot flash bootloader bootloader-hammerhead-hhz12f.img
  3. install radio-hammerhead-m8974a-
    • command: fastboot flash radio radio-hammerhead-m8974a-
  4. install system.img
    • command: fastboot flash system system.img
  5. install userdata.img
    • command: fastboot flash userdata userdata.img
  6. install boot.img
    • command: fastboot flash boot boot.img
  7. install recovery.img
    • command: fastboot flash recovery recovery.img
  8. delete the cache
    • command: fastboot erase cache
  9. from the phone, boot into Recovery
    • background image is of an Android on its back with chest open and red triangle (default system recovery)
  10. press Power + Volume Up buttons to enter into Recovery options
    • note: do NOT press and hold the buttons too long, as this will result in booting into the system (the phone), which will not boot… you’ll be stuck with the boot animation
      • if done accidentally, reboot back into bootloader: Volume Up + Volume Down + Power and continue from step 9
  11. select Wipe data/factory data reset
  12. reboot phone when data wipe is completed
    • booting into a newly installed system will take awhile — be patient!

After installing 5.1 update: Re-root & install custom Recovery

After the update, your phone has a fresh and clean install of Android 5.1… meaning there is no custom recovery, nor root access. However, Bootloader will still be unlocked. The default settings will not have USB Debugging enabled. USB Debugging enables you to run commands from your computer to your phone via USB.

Install TWRP recovery and Chainfire SuperSU:

  1. setup the phone with your existing Gmail account
    • recommend setting up as a new device and use Titanium Backup to reinstall your apps
  2. setup USB Debugging
  3. connect computer to phone via USB and reboot phone into bootloader
  4. flash TWRP recovery: openrecovery-twrp-
    • command: fastboot flash recovery openrecovery-twrp-
  5. execute Chainfire’s CF-Auto-Root
    • Mac command: ./root-mac.sh
      • on a Mac, this will require the admin password of the Mac computer
    • the background will have a red pirate android
    • when complete, the phone will automatically reboot
  6. in Google Play store, update SuperSU to the current version
  7. SuperSU requires updating binary
    • select “Normal” and reboot when finished

Reinstall apps & check phone settings

To reinstall apps, download Titanium Backup and restore from there. If you have issues, I would recommend also using Nandroid Manager (Google Play Store Link). I resolved most of my issues by using Nandroid Manager to install the app and Titanium Backup to install the data.

I recommend checking the phone settings. I’m on Ting (MVNO provider on the Sprint network; CDMA), so I updated my PRL and profile. The default for “Preferred network type” is set to Global; I had to update that to LTE.