This article is my checklist to install the monthly Android security updates into my Nexus 5X.
Since my phone is cursed with the Bootloop of Death (BLOD) hardware problem, I cannot install the vanilla OTA updates. Instead, I have to manually download the official Android image from Google, edit it to apply the fix, and then flash the fixed image into the phone.
About the bootloop: One day, while using my Nexus 5X, it suddenly restarted and became unusable, stuck in an endless boot process (bootloop). Unfortunately, this is a known hardware problem that occurs in both the Nexus 5X and Nexus 6P phones. There is a hacky fix: via software, you should disable two of the six available cores in the phone processor (SoC). Read more about it here, here and here.
Step 1 - Unlock the bootloader
The phone’s bootloader must be unlocked so you can flash the fixed images.
Tutorial: How to unlock the Nexus 5X bootloader
Step 2 - Download the necessary files
Download and unzip the official Android SDK Platform Tools, which contains the required
Download the Python script used to modify the Android boot images, disabling the faulty hardware:
Download from Google the official, most recent Android image for the Nexus 5X (nicknamed bullhead):
Step 3 - Prepare the files
Unzip the Android image into a new folder. This will be our work folder.
Inside there will be another zip file which contains the boot images. Unzip that too.
# Using Oreo 8.1 files as an example unzip bullhead-opm1.171019.011-factory-3be6fd1c.zip cd bullhead-opm1.171019.011 unzip image-bullhead-opm1.171019.011.zip
Now copy here the downloaded Python script:
cp ~/Downloads/disable_cpu_cores.py .
Also copy here the
cp ~/Downloads/platform-tools/fastboot .
At this point, all the necessary files are on the same folder:
android-info.txt boot.img bootloader-bullhead-bhz31a.img disable_cpu_cores.py fastboot flash-all.bat flash-all.sh flash-base.sh radio-bullhead-m8994f-188.8.131.52.04.img recovery.img system.img vendor.img
Step 4 - Apply the image fix
Run the Python script on both the boot and recovery images:
python disable_cpu_cores.py boot.img boot_4c.img python disable_cpu_cores.py recovery.img recovery_4c.img
Note that the fixed files have a
_4c suffix to make it clear that those are the modified images (limited to 4 cores).
Step 5 - Prepare the phone
Put the phone in Fastboot Mode: turn off the phone and hold Volume Down and Power buttons until the fastboot screen appears.
Tutorial: Nexus 5X: How to Boot into Fastboot Mode
Plug the phone to your computer and make sure it is listed as an available device:
If nothing appears, try using another cable. Some cables I tried here were charging-only.
Step 6 - Flash all the images to your phone
Run the official Google script to install the base system images to your phone (bootloader and radio):
Now flash all the other images, making sure your are using the
_4c version for the boot and recovery images.
./fastboot flash boot boot_4c.img ./fastboot flash recovery recovery_4c.img ./fastboot flash system system.img ./fastboot flash vendor vendor.img
Now just reboot your phone and enjoy the updated Android!
Troubleshooting: Clear cache partition
Only one time this update process failed on me and I was back stuck on the bootloop. The fix was simple: booting into Recovery Mode and clearing the cache partition.