TWRP 3.4.0 enables OZIP decryption for Realme/OPPO devices and support for legacy devices upgraded to Android 10

TWRP 3.4.0 enables OZIP decryption for Realme/OPPO devices and support for legacy devices upgraded to Android 10

Whether you are an experienced flashaholic or just a newcomer to the flashing scene, you likely have used Team Win Recovery Project, or TWRP for short, at some point. The custom recovery solution officially supports hundreds of Android-powered devices (including TV Boxes and smartwatches). On the other hand, the modding community has managed to integrate unique features like true dual booting in the unofficial builds. Thanks to the ever-changing world of Android, TWRP needs to adapt to newer partition schemes and encryption logics while retaining compatibility with legacy devices. The project has now received a major update that bumps TWRP’s version number to 3.4.0.


As many of you are aware, TWRP developers faced several challenges on their way to make the custom recovery fully compatible with Android 10. A significant portion of the TWRP codebase needed to be revised to support the changes Google introduced in AOSP’s recovery implementation. TWRP 3.4.0 does not yet bring support for dynamic/logical partitions, which is required to support devices that launch with Android 10. It does, however, fix support for legacy devices that upgraded to Android 10, but retain the old partition scheme.

Besides featuring an enhanced decryption module, the latest version of TWRP comes with a bunch of improvements in System-as-Root and A/B dual partitions handling. The A/B installer zip format is completely re-written from scratch based on the contributions of XDA Senior Recognized Developer osm0sis and XDA Recognized Developer arter97. Moreover, OZIP decryption is now natively supported, courtesy of XDA Recognized Developer mauronofrio. It means that OPPO and Realme smartphone users can flash official firmware packages directly from TWRP without converting them to standard ZIP files beforehand.

The full changelog for the update can be found below:

TWRP 3.4.0-0 Changelog

  • System As Root (SAR)
    • Fix backup and restore using SAR – dianlujitao
    • System mount point – Chaosmaster
    • ORS – Chaosmaster
    • Zip install – Chaosmaster
    • system_root bind mount to /system – Chaosmaster
    • Autodetection of SAR – Chaosmaster
  • Digest
    • fix creation of digests for sub-partitions (was bugfix applied to many devices since last year) – Bigbiff
  • Encryption
    • ext4Crypt Wrapped Key Update – Peter Cai
    • Fix upgrading encryption key if export fails – Peter Cai
    • Fix wrapped key support for devices without metadata partition – mauronofrio
    • Don’t skip decryption when using block map file in order to write to /data in ORS – CaptainThrowback
    • FDE – Decrypt master key first – AndroidableDroid
    • vold_decrypt – set Android version and patch level automatically – CaptainThrowback
    • Set wrapped decrypt support by twrp flag – Peter Cai
    • Don’t try wrapped support unless needed – mauronofrio
    • restore ext4 policy on /data/cache – Bigbiff
    • multiuser decryption – Noah Jacobson
    • FDE retry – AndroidableDroid
  • TWRP App
    • unmount system after checking for app – Bigbiff
  • Prebuilt updates –
  • Compilation Fixes:
    • TW_EXFAT_FUSE compilation fixes – Bigbiff
    • libuuid – cryptomilk
    • ‘system/etc/ld.config.txt’ not found error – Martin Dünkelmann
  • Language Updates:
    • Portugal – Vasco Machado
    • Dutch – Ian Macdonald
    • Turkish – Fatih Fırıncı
    • Localisation of Backup_Tar: Ian Macdonald
  • ld.config.txt
    • updates for 8.x trees – CaptainThrowback
    • fix search path for /sbin – CaptainThrowback
    • /sbin should come first in search path – Ian Macdonald
  • General Bugs
    • Fix persistent log storage – SyberHexen
    • Compress Persistent Logs – Bigbiff
    • FB2PNG compilation errors – Bigbiff
    • exclude per_boot from backups – Darth9
    • Unmount all directories that point to same block device – AndroidableDroid
    • Blank screen fixes – Sean hoyt
    • Toolbox is default on android-9+ – mauronofrio
  • Cleanup –
    • Typo fix in comment – VDavid003
    • newlines in ext4crypt – CaptainThrowback
    • TW_OEM_BUILD compilation issue – Patrick Zacharias
    • Fix Dependency requirements – Dees_Troy
    • Fix Symbolic links for BB and Toolbox – Dees_Troy
  • Bootloader Message
    • cleanup – Alessandro Astone
    • add configurable offsets
  • Error Cleanup
    • uevent errors and decryption error – mauronofrio
    • using copy_file to copy files from /etc – CaptainThrowback
    • ueventd access to /acct – early directory creation in init – cryptomilk
  • Haptics
    • TSP Driver – LameMonster82
    • QTI Input – AndroidableDroid
  • update_engine
    • read all asserts – Hernán Castañón
  • Resetprop
    • Add Resetprop from Magisk – CaptainThrowback & mauronofrio
    • compile from source – Chaosmaster
    • fix for android-7 and earlier – Chaosmaster
    • cleanup for spaces in properties – AndroidableDroid
  • Properties
    • Add Property override – Chaosmaster
  • Backuptool
    • mount system and vendor for A/B installs for backuptool – Chaosmaster
  • twrpTar
    • fix backup freezes when pigz and openaes are used – Fabrice Bellet
  • Zip Installs
    • Info for A/B zip installing to inactive slot – Chaosmaster
    • Reboot to system button now allows to be rebooted to different partitions after zip install
    • progressbar rework – Chaosmaster
  • Magisk updates
    • update binaries from source – AndroidableDroid
  • A/B Updater Zip Template
    • rewrite A/B installer zip from scratch using a new generic template and latest magiskboot – osm0sis
    • installer zip support for recovery_a/recovery_b partition ramdisks on newer 2SI SAR A/B devices – osm0sis
    • generate installer zips for all prod A/B devices – bigbiff
    • improve installer zip dump/write speed and add more error catching – arter97 & osm0sis
  • OZIP Encryption Support
    • add OZIP encryption – mauronofrio
  • File Selector
    • Support for more extensions in File Selector – mauronofrio

The resetprop support that has been added was used to create libresetprop in the TWRP source which allows read-only props to be easily overwritten by device maintainers. This helps ensure broad compatibility for stock ROMs, decryption, etc. but does not impact end-users.

You can download the latest build of the custom recovery for your device from the official website linked below. Don’t forget to take a look at the device-specific discussion threads as well, which are usually created under the respective XDA sub-forums.

Download TWRP for your device

The official TWRP app is another choice to download the latest version right from your device. With root access, the handy tool can also be used to install the updated TWRP build without rebooting to recovery.

Official TWRP App
Developer: Team Win LLC
Price: Free

About author

Skanda Hazarika
Skanda Hazarika

DIY enthusiast (i.e. salvager of old PC parts). An avid user of Android since the Eclair days, Skanda also likes to follow the recent development trends in the world of single-board computing.

We are reader supported. External links may earn us a commission.