This is basically a tl;dr thread.
I don't want to make a thread that everyone will lazy to read.
Team Win Recovery Project 3.x, or twrp3 for short, is a custom recovery built with ease of use and customization in mind. It's a fully touch driven user interface; no more volume rocker or power buttons to mash. The GUI is also fully XML driven and completely theme-able. You can change just about every aspect of the look and feel.
* Your warranty is... still valid?
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this RECOVERY
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
ASUS ZenFone Max Pro (M1) ZB601/2KL (of course)
Unlocked bootloader, in either ways (official, unofficial)
Some knowledge on how to deal with your device... and patience.
I assume you've done (very) basic steps on preparing to flash your device.
Reboot device to bootloader. If device is powered off, press and hold Power + Volume Up button until ASUS logo with "FASTBOOT MODE" message appears.
Under same directory as TWRP image and ADB/Fastboot executables (if ever required), type this command:
k4.4: Due to QTI keymaster's behavior, only specific stock firmware as well as custom ROMs with same platform security patch level that can only be decrypted by TWRP. Applicable versions will be indicated explicitly in the changelog.
k4.14: Recovery may start with very low vibration level. You can adjust vibration intensity in settings later.
k4.14: Recovery can only decrypt userdata partition encrypted using AES-256-XTS algorithm. Only ROMs using Qualcomm's Inline Crypto Engine (ICE) with 4.14 kernel may also be decrypted by the recovery as well. This can be assumed an intended behavior since implementation of fscrypt_ice on msm-4.14 and msm-4.19 kernels are completely different. Tell ROM maintainers wanting to switch to FBE to use AES-256-XTS instead.
Dees_Troy and everyone behind TWRP
shakalaca - base device tree used for older releases
Ankit Gourav - his work on whyred
Shivam Kumar Jha - person who kickstarted ZenFone Max Pro (M1) development
Everyone involved in testing numbers of test builds.
Another TWRP thread? Why?
I like to keep discussions about my builds separate. Moreover, the existing TWRP that already available on XDA before doesn't seem to be maintained anymore.
I flashed via fastboot but it always fails.
Check or change your cable, use other USB slot (especially 2.0 one if 3.0+ doesn't work), or if needed try to flash recovery with USB connected to a hub.
Merged TWRP source changes up to 25 April 2021 (UTC+8)
Builds are now splitted for devices running FDE (targetting stock, running 4.4 kernel) and FBE encryption (targetting custom ROMs, running 4.14 kernel, only works with ROMs using AES-256-XTS encryption)
FDE: Can decrypt 16.2017.2009.087 stock firmware and any custom ROM with 5 September 2020 security patch
Restored ability to backup system and vendor partition (images backup for these partitions are recommended)
Switched to build system libraries from source
Added persist partition backup support
Added support for NFC availability check in recovery
Added support for formatting asusfw partition in GUI
Updated set_version script to match up Android 10's system-as-root behavior
FBE: Updated crypto blobs from 17.2017.2012.438 stock firmware
Merged TWRP source changes up to 11 June 2020 (UTC+8)
Can decrypt 16.2017.2005.082 stock firmware and any custom ROM with 5 May 2020 security patch
Switched f2fs-tools to latest AOSP master
Only allow user to backup system and vendor images
set_version script doesn't longer touch persist partition; script now has hardcoded SKU and version instead in case ASUS props can't be found
Updated prebuilt kernel based on S082 source drop
F2FS kernel driver updated to 5.3-rc1 with backports up to 5.7-rc1 from 4.9
Switched to arter97's fork of exFAT
Switched from NTFS kernel driver to FUSE ntfs-3g due to incomplete write support
Fixed stock ROM flashing due to missing prop
Fixed FDE decryption
Updated F2FS on kernel to 5.2-rc1
TWRP 3.3.1 + upstream changes
Updated base to android-9.0
Updated blobs from 16.2017.1903.050
Support for flashing unmodified stock firmware (please read notes!)
Rebased kernel to S050 source drop
Updated F2FS on kernel to 5.1-rc1
TWRP 3.3.0 + upstream changes
Now based on whyred official TWRP tree
Reverted kernel to stock-based as-released (S339) with F2FS upstream and sdFAT included
(this should fix USB-OTG support while retaining support with latest f2fs-tools)
I'll try to always keep this recovery updated especially when ASUS releases firmware update that also updates AOSP security patch. Security patch set in TWRP needs to match stock firmware used so TWRP can decrypt data partition. This isn't possible with current state as the bump is useless.
Unmodified Stock Firmware Support
With introduction of unmodified stock firmware support, I need to clear up some confusions you've if any. Notes below are copy-pasta from my post elsewhere:
Starting this build, recovery supports flashing stock firmware without modifying the updater-script. In order for it to be possible, ro.product.device has to be set to ASUS_X00TD.
This, however, breaks flashing of custom ROMs that check for either X00TD or X00T.
Simply supporting it doesn't mean that you can flash stock firmware directly; you need to be at least on stock when you flash the recovery, so required properties can be exported to /persist which then will be set on every recovery boot up.
Still not sure though, as some ROMs check for ro.product.device and then fallback to ro.build.product for matching devices.
Flashing incremental OTAs are supported but not recommended, since you'll most likely flash verity disabler at the minimum and get the flashing failed upon patching boot.
In plain text:
The recovery has ro.product.device set to ASUS_X00TD that may break custom ROM flashing.
You need to be on stock before booting the recovery for the first time, then afterwards you can flash any stock firmware. 21 June 2020 UPDATE: Now not required, as it's now hardcoded in the script itself and since touching persist is never a good idea to begin with.
If you modify your system in any ways and don't have any system backup to restore, don't flash incremental OTAs. This also includes TWRP tampering system to prevent stock recovery from overwriting TWRP.
Verifying released builds
This was originally posted on KudProject's Telegram channel and copy pasted here with minor edits for easier access.
Following TeamWin's stance about unofficial TWRP downloads here, all release builds from KudProject will start to be signed using my GPG key to ensure that you get a copy of legitimate builds directly from me.
You can download both of my currently active public keys here. Importing from PGP keyserver will be made available in the future.
To import on Linux:
gpg --import krascgq.gpg
To verify builds on Linux:
gpg --verify <build-name>.sig <build-name>
Windows users will need to search for compatible tools.