Install Paranoid Android 7.3.1 on the Google Pixel XL (marlin)

Paranoid Android — the popular alternative Android operating system — added support for the original Google Pixel XL (marlin) earlier this year. The final Nougat-based build, 7.3.1, was released at the end of October, bringing fixes for almost all outstanding bugs, improvements to the custom camera app, improved translations, and security patches for things like the KRACK vulnerability.

The ROM is in great shape!

The only trouble is the Pixel XL is a weird phone. It doesn’t work quite like any other device, and even seasoned power users can have difficulties monkeying with it. To further complicate things, the installation instructions in the official XDA thread were copied from another device — a normal one — and so don’t actually explain how to flash AOSPA to Google’s weirdass Pixels.

Oops.

Backup Now

Installing a new ROM will replace the old one. You should expect that any apps and data installed to your phone will vanish. Make sure you back up anything important to you before continuing.

Prerequisites

To flash custom ROMs, firmware, and other special tools, you’ll need to install the Android Debug Bridge and fastboot to your computer. Ubuntu users can run the following:

# Install from the official repo.
sudo apt-get install adb fastboot

For other operating systems, the tools can be downloaded straight from Google:

The tools work the same way regardless of your operating system, but you may need to mentally substitute any mention of adb or fastboot below with a full path to the binaries on your system, e.g. C:\android\adb.exe.

Aside from the administrative tools, you’ll also need to download all the things we’ll be flashing:

  • Paranoid Android: Make sure you check the release dates and build numbers; the newest should be at the top of the page.
  • OpenGApps: If you want to be able to access the Play Store, you’ll need to flash this. If you hate Google, you can skip this. This link should prepopulate the choices for you (ARM64, 7.1, Pico), but if not, that’s what you’ll want.
  • TWRP: If you do not already have TWRP installed, download both the bootable img and also the flashable zip for the latest version (3.1.1-1 at publication time).
  • SuperSU: AOSPA does not come rooted. If you want to root your device, download this, otherwise you can skip it. At publication time, the SSL certificate has expired for the domain. You can still download the necessary files, but make sure you verify the checksum before installing to make sure it wasn’t maliciously modified by a third-party. Version 2.82-SR5 has an MD5 of f20d6d46b454cb74470977cb445eb8e4.

AOSPA does not bundle vendor or radio components with its releases; you’ll need to sort those out separately. If you are coming from another 7.1-based Android OS, you can probably just grab the extracted NZH54D vendor image from Dirty Unicorn. Otherwise, you’ll need to perform a full factory reset and flash a fresh copy of the official Google ROM before proceeding. Google hosts an archive of factory images, along with instructions, here.

So go on, get all these downloads queued up on your computer, and grab yourself a cup of coffee.

Enable ADB

By default, when you connect your phone to your computer with a USB cable, it will simply charge. To actually get ADB talking with it, you need to enable the debug functionality on your phone. This is kind of fun:

  1. On your phone, go to Settings > About Phone.
  2. Scroll down that list until you find the “Build number”, and start tapping it.
  3. After 7 quick taps, you’ll unlock a new “Developer options” menu.
  4. Go back to the main Settings screen and you should see this new menu near the bottom. Click it.
  5. Scroll through the options, looking for something along the lines of “USB debugging”, and enable it.
  6. If you haven’t already done so, connect your phone to your computer. You should get a popup asking you to authorize the computer for debugging. Authorize it.

ADB should now be enabled on your phone. To verify it is working, type the following from your computer’s console:

sudo adb devices
# You should see something like:
# HT6990204606	device

If you do not, you might need to install device drivers on your computer or update a configuration file. This ends up being very specific, so just search Google if you need help.

Fastboot will also need to be able to see your phone, but that only works when your phone has been rebooted to its bootloader. The easiest way to check is:

# First, reboot to the bootloader.
sudo adb reboot bootloader

# Once it has rebooted, try:
sudo fastboot devices -l

(Again, if this doesn’t work, you might need additional drivers on your computer.)

From the Bootloader

First things first, you’ll need to unlock your phone’s bootloader. If you are already running some other custom ROM, this is probably already done. But if not, type the following into your console:

# Unlock it.
sudo fastboot flashing unlock

# Reboot.
sudo fastboot reboot bootloader

You can ignore the somewhat scary warning your phone will issue each time it boots, asking you to relock the bootloader. Haha.

Okay, now we need to boot into TWRP recovery. This is easy:

sudo fastboot boot /path/to/your/twrp.img

From TWRP

Assuming you are here via the the fastboot boot command, you’ll need to make TWRP more permanent. From your phone, click “Advanced”, then “ADB Sideload”. Then from your computer’s terminal, type:

sudo adb sideload /path/to/your/twrp.zip

When this is done, reboot back to recovery.

Now it is time to KILL EVERYTHING. From your phone, click “Wipe”. From here you can either perform a basic factory reset, or click “Advanced Wipe” to do that and wipe the Internal Storage. I’ll leave that up to you, but recommend wiping everything anytime a totally different OS is being installed.

Once all your precious data has been erased, we can start installing things! To that end, let’s transfer all the files you downloaded to your phone. Specifically, transfer Paranoid Android and the TWRP zip, and any optional components you downloaded (OpenGApps, SuperSu, and the vendor image). This can be done via ADB, using the syntax adb push [local] [remote]. Transfer files one at a time like:

# Copy PA to the internal storage root on your phone.
sudo adb push /path/to/pa_marlin-7.3.1-RELEASE-20171030-signed.zip /sdcard/

This is the point at which the Pixel XL becomes a little weird. Unlike most other phones, the Pixel has multiple “boot slots”. Because of this, installation requires a few reboots to get all the slots stuffed correctly.

From your phone, click “Install”. If you need to update the vendor image, do that first. Just locate the image, click it, and when asked, tick the “vendor” box. Once you’ve done that, get back to the main TWRP screen and click “Install” again.

For round one, we’ll want to queue up three things: Paranoid Android, OpenGApps, and TWRP. In that order. Find the first zip from the install screen, click it, then click “Add Another Zip”, find the second, etc. Once you select TWRP, you can run the actual installation.

The phone will reboot when this is done. If TWRP pops a warning about there not being an operating system, you can disregard it (you just installed one). Let your phone fully boot into the system. If you receive any activation/setup prompts, follow those, but more detailed configurations, app downloads, etc., can wait until later.

Round Two

Assuming you are installing OpenGApps or SuperSu, or you flashed the vendor image earlier, you’ll need to go back to recovery. Because this is a new operating system, you’ll probably need to manually re-enable ADB; just repeat the instructions provided earlier. Once ADB is working again, type sudo adb reboot recovery to get back to TWRP.

If you flashed the vendor image earlier, repeat those steps to flash it again to the new slot. (You don’t need to reboot after this.)

If you installed OpenGApps previously, you might need to do that again too. Haha. If not, you can skip to the next section.

Click “Install”, find the OpenGApps zip, install it, and reboot back to the system. If everything worked, you should see a Play Store icon in your apps list.

Round Three

If you want to root your phone, re-re-reboot back to recovery. Click “Install”, locate SuperSu, install it, and reboot back to the system. Your phone might appear to crash midway through the first boot and reset itself; this is normal. The system should load the second time around.

All Done!

All done! Your Pixel XL should now be running Paranoid Android and look that much cooler in your pocket!

The Future

The update process is very similar to the installation process. In the event a new AOSPA release comes out, download it along with a fresh copy of OpenGApps and a new vendor image, if applicable. Once you have those files, reboot to recovery.

  1. Flash the vendor image, if applicable.
  2. Flash Paranoid Android, OpenGApps, then TWRP (in that order).
  3. Reboot the system and let it load and update whatever it needs to.
  4. Reboot back to recovery.
  5. Flash the vendor image again, if applicable.
  6. Flash OpenGApps again, if applicable.
  7. Reboot to the system, let it load, then re-reboot to recovery.
  8. To re-root your phone, flash SuperSu again.
  9. Reboot to the system.
  10. Be thankful you don’t have to do this very often.