How to Flash OTA Updates on Rooted Zenfone Max Pro M1

The Asus Zenfone Max Pro M1 is a flagship device released earlier this year. It comes equipped with 6GB of RAM and 64GB internal storage, and Android Oreo 8.1, running on the Qualcomm Snapdragon 636 SoC. Overall it’s a good balance between premium and mid-range specs, at a mid-range price level.

As with all rooted devices, you cannot normally install OTA updates once you are rooted. This will typically lead to bootloops as the system performs binary checks upon boot. In this Appuals guide, we will show you how to manually flash OTA updates on a rooted Zenfone Max Pro M1, so you do not need to unroot the device first, which is typically quite hard to do, and most people would try to perform a flash of a completely fresh stock ROM before OTA upgrading.


Modified OTA Downloads:

First download the full stock ROM and OTA update and save them on your Zenfone Max Pro M1, preferably the SD card.

Go to your /data/cache folder and copy the file named dlpkgfile somewhere to your SD card, then rename it to

Extract the (MiXPlorer woulds great) and then in the extracted folder, go to META-INF\com\google\android, and open the updater-script.txt in the native text editor.

Remove the following lines from the file:

containprop(getprop("ro.product.device")) || abort("E3004: This package is for \"ASUS_X00TD\" devices; this is a \"" + getprop("ro.product.device") + "\".");

getprop("") == "WW" || abort("E3009: This package is for sku: \"WW\"; this is a sku: \"" + getprop("") + "\".");

ui_print("Source: Android/sdm660_64/sdm660_64:8.1.0/OPM1/14.2016.1804.252-20180428:user/release-keys");

ui_print("Target: Android/sdm660_64/sdm660_64:8.1.0/OPM1/14.2016.1804.305-20180521:user/release-keys");

ui_print("Verifying current system...");

containprop(getprop("")) ||

abort("E3001: Package expects build fingerprint of Android/sdm660_64/sdm660_64:8.1.0/OPM1/14.2016.1804.252-20180428:user/release-keys or Android/sdm660_64/sdm660_64:8.1.0/OPM1/14.2016.1804.305-20180521:user/release-keys; this device has " + getprop("") + ".");

apply_patch_check("EMMC:/dev/block/bootdevice/by-name/boot:47510824:9ca7a29f3b90af90492bfa0c07275390f72f397d:47502632:80fbccb727c484733397429a9df38a499dee67fe") || abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/boot:47510824:9ca7a29f3b90af90492bfa0c07275390f72f397d:47502632:80fbccb727c484733397429a9df38a499dee67fe\" has unexpected contents.");

Now save the text document, and re-archive the folder into

If you have stock fastboot images, you can skip the next step.

Extract the stock ROM zip and go to go to META-INF\com\google\android , open updater-script in text editor and remove these lines from it:

(!less_than_int(1524926024, getprop(""))) || abort("E3003: Can't install this package (Sat Apr 28 22:33:44 CST 2018) over newer build (" + getprop("") + ").");

containprop(getprop("ro.product.device")) || abort("E3004: This package is for \"ASUS_X00TD\" devices; this is a \"" + getprop("ro.product.device") + "\".");

ui_print("Target: Android/sdm660_64/sdm660_64:8.1.0/OPM1/14.2016.1804.252-20180428:user/release-keys");

show_progress(0.650000, 0);

ui_print("Patching system image unconditionally...");

Save the text file, and re-zip the stock ROM.

Now reboot to the bootloader and flash system.img, vendor.img, boot.img, and the modified twrp.img if you have correct version of fastboot ROM. Otherwise you can flash the modified TWRP.img and force a reboot to recovery by pressing and holding Volume Down + Power together.

When you are in the recovery, flash the stock ROM .zip you modified, and following that, flash the – once that is completed, create a backup of Boot, Modem, System Image, and Vendor Image.

If you had decrypted data partition priorly, you can flash normal TWRP using the modified TWRP, or you can boot into fastboot and flash again.

If you want a rooted system without TWRP, and easy OTA updates in the future, you can flash Magisk and stock recovery using the modified TWRP, and reboot. After this, you will be able to flash OTA with root and no further issues.

Kamil Anwar
Kamil is a certified MCITP, CCNA (W), CCNA (S) and a former British Computer Society Member with over 9 years of experience Configuring, Deploying and Managing Switches, Firewalls and Domain Controllers also an old-school still active on FreeNode.