Recently I decided to try out Android Pay and found that my new phone doesn’t have NFC, and that the app refused to work on my old phone because it ran CyanogenMod. Fortunately after a little research I found restoring isn’t that hard.

SafetyNet API

Android Pay complained that the device has an unlocked bootloader, was rooted and ran a custom ROM. The documentation of the SafetyNet Attestation API suggests this means the app is looking for the ctsProfileMatch check as opposed to the more forgiving basicIntegrity check. Most notably the former doesn’t allow a “device with custom ROM (not rooted)”. I wouldn’t miss the root access or the unlocked bootloader at all, but not being able to use a custom ROM is sad.

Restoring

The restoration isn’t complicated once I figured out how to do it, but the amount of information to wade through is overwhelming. To navigate the gazillion articles on the internet about this potentially risky topic, I started from XDA Developers.

As per Android Pay’s complaint I need to do 2 things:

  • Relock the bootloader
  • Reinstall an original version of the OS (and conveniently lose root access during the process)

After getting Flashtool and the firmware file (see below), just run Flashtool and follow the UI.

Flashtool

Flashtool can be used for both tasks. It’s opensource and supports Linux. Confusingly there are 2 releases available for download as of now, 0.9.18.6 and 0.9.23.2. Through trial and error I found that each works with different firmwares, presumably depending on how the firmware files are created.

“Original” Firmware

Next I need the firmware. There are plenty of posts on XDA Developers that show up in search results for “xperia zr stock rom”. I didn’t make a backup of a certain partition before installing CyanogenMod so I can’t have a completely original experience, in that I won’t be able to download OTA updates.

While trying I made the mistake of not checking and used an older version of Android that Android Pay doesn’t support. Flashtool also has a list of firmwares but the ones available for ZR are also old. I ended up using an Android 5.1.1 Lollipop build which works with Flashtool 0.9.23.2.