As an ever vigilant pursuer of the most modern yet stable – oh the paradox – software for my daily carry mobile device, I sprung for the Google Pixel around seven months ago. Having received it five-ish months ago – like most everyone else I waited forever from order / wait to in-hand – I immediately rooted it. Thereby effectively paving the way for continuing my hobby of riding the edge of brick-dom by manually flashing firmware updates. OTA updates don’t work for us hackers.
As any Google branded device owner will attest, the monthly Android OS updates are a tremendous perk over the other guys. So, with my rooted Pixel, these very updates have become a monthly trial. Albeit considering my previous LG and Samsung devices, this trial continues to be more or less safe – no more bootloader unlock dev community goodluckery. Indeed, the practice is relatively routine now that I’ve performed it four such times, and put together a set of instructions that outlines the generalities as well as the odd foibles involved.
Do note that I decided to keep stock recovery awhile back; I forget the posts that convinced me of this, though many safely use TWRP as their primary recovery. With that said, the rest of this has worked very well for me, whom simply needs root, and doesn’t want to reset from factory every update. Perhaps this step-by-step – to update to the latest android, root, and keep stock recovery – will help others. Please have a working adb install and your bootloader unlocked before hand.
Disclaimer: I am NOT responsible if your brick your phone. Seriously, this isn’t for the meek, it voids your warranty, and may scare your children though this depends on how you handle stress.
- Download latest image for your pixel variant — sailfish for 5″, marlin for 5.5″(developers.google.com)
- Unzip the image, and edit flash-all(.bat or .sh – depending on your environment) and remove -w flag to prevent the wiping of all your data.
- Enable USB debugging (in developer options)
- From CLI, execute:
adb reboot bootloader sh flash-all.sh
- WAIT for it to do its thing! The process doesn’t give much feedback between steps. Do not ctrl+c. This may take five to 10 minutes where it looks like nothing is happening. The phone will reboot several times, you’ll get a bunch of ‘OKAY’ output in your cmd terminal. Afterwards you’ll be upgraded (w/o root); go check ‘About Phone’ after login (and also to let the upgrade finish after boot) to confirm android version change.
- Download TWRP (for pixel / android oreo)
- Download Magisk (Magisk v16)
- Copy the magisk zip file to your device
- adb reboot bootloader then fastboot boot <twrp.img>
- Install / flash the magisk zip, then reboot
- TWRP was patched on 3/8/18; step #6 now works again.
Instead, have magisk patch boot.img and flash it by following instructions originally found here . Download MagiskManager-v5.5.3.apk directly to your phone and install it. Download the Android 8.1 Oreo boot image taken from the official firmware and place it on your phone. (In my case, it is the boot.img file located in the image-sailfish-opm1.171019.016.zip) Open MagiskManager and then click on “Install“ and direct magisk to the boot.img you just put on your phone. MagiskManager will patch this boot image. Copy the patched boot image to your PC. The patched boot image would named patched_boot.img located in /sdcard/MagiskManager/ Connect your phone to your computer and use ADB to reboot and flash the patched boot image. adb reboot bootloader fastboot flash boot patched_boot.img fastboot reboot
- And you are rooted running the latest Android Oreo.
Begin optional stuff, for the restless.
- FYI, you can get to the bootloader through these manual commands (as opposed to adb reboot bootloader) — with phone off, turn phone back on holding volume down + power buttons
- Flash other stuff custom kernel, busybox, xposed, etc and whatever other root things you may desire
Tethering / Hot Spot capability is all but required for most folks these days. With root, these are the basic steps to disable the bullshit carrier impositions on my “unlimited data” plan.
$ adb shell $ su # mount -o rw,remount /system # echo "net.tethering.noprovisioning=true" >> /system/build.prop # settings put global tether_dun_required 0
then, reboot and profit (by keeping your ~$150/year for the privilege of using your data plan how you choose.)
Add more media volume levels
$ adb shell $ su # mount -o rw,remount /system # echo "ro.config.media_vol_steps=25" >> /system/build.prop
Post Last Updated for March ’18 release of Android (Oreo) 8.1, same procedure worked for April ’18 release.