[NEWBIE GUIDE] MIUI ROMs, TWRPs, ZIPs, UNLOCK, BACKUP, ROOT, FLASH, RESTORE

prathameshsd

Senior Member
Feb 7, 2013
318
1,212
0
pdstack.wordpress.com
GUIDE SECTIONS QUICK LINKS
#1 - MIUI ROM, Types of MIUI ROM
#2 - TWRP, Types of TWRP, Flashing TWRP
#3 - Unlock, Root, Flashing via TWRP
#4 - Custom ROM, Types of custom ROMs

MIUI ROM

MIUI (pronounced as Me-You-I) is Xiaomi's custom built firmware like Samsung's OneUI, HTC's SenseUI, OnePlus's OxygenOS which is built on top of Android's AOSP base with its own modifications and features. At first glance it resembles like a hybrid between Google's Material Design and Apple's iOS. But unlike Stock Android or iOS, MIUI is very intuitive, feature rich and has multiple tweaking options. MIUI is updated regularly depending on the development branch. Xiaomi gathers reports, feedbacks and suggestions from the community, addresses the bug-fixes and integrates new features upon request. Most of Xiaomi devices are regularly patched with security updates every 2-3 months. The flagship "Mi" series like Mi9 receive quicker Android version updates than their budget "Redmi" series like Redmi 7, Redmi Note 7 Pro etc.



TYPES OF MIUI ROM
There are 2 development branches of MIUI ROMs for all Xiaomi devices.
A) Stable Builds

  • It is updated on a monthly basis or longer
  • New features are added slowly after testing
  • Higher system stability and less bugs than Beta ROMs
  • It has a four digit numbering scheme (X.X.X.X)
  • For eg. 8.X.X.X is MIUI8 Stable Build
  • Stable builds come in 2 variants

1. MIUI China Stable ROM
This ROM is pre-installed on all Xiaomi devices sold in China.
It is made for the Chinese market & contains Chinese MIUI apps.
Google Apps are absent. You can install them manually.
It supports Chinese & English languages.

2. MIUI Global Stable ROM
This ROM is pre-installed on all Xiaomi devices sold outside China.
It is made for the International market & contains English MIUI apps.
Google apps are pre-installed by default.
It supports 50+ languages.

B) Beta Builds

  • It is updated on a weekly/bi-weekly basis or longer.
  • New features are added quickly for testing.
  • Lower system stability and more bugs than Stable builds.
  • It has a three digit numbering scheme (X.X.X)
  • For eg. 6.11.21 is MIUI8 Beta build for 21th Nov, 2016.
  • This ROM is not pre-installed on any Xiaomi device.
  • You can install Beta build over Stable build manually.
  • Beta/Developer builds come in 2 variants.

1. MIUI China Beta ROM
It is made for the Chinese market & contains Chinese MIUI apps.
Google Apps are absent. You can install them manually.
It supports Chinese & English language.

2. MIUI Global Beta ROM
It is made for the International market & contains English MIUI apps.
Google apps are pre-installed by default.
Supports more than 50+ languages.
 
Last edited:

prathameshsd

Senior Member
Feb 7, 2013
318
1,212
0
pdstack.wordpress.com
TWRP
Team Win Recovery Project is a custom recovery which is flashed over the stock recovery as it gives user more options such as flashing custom ROMs, kernels & scripts, take full system backups, restore backups, root etc.

TYPES OF TWRP
1. TWRP by iscle: https://forum.xda-developers.com/mi-max-2/development/recovery-twrp-3-1-1-0-touch-recovery-t3652762
  • Based on Stock TWRP 3.1.1-0 with no modifications.
  • Ported from Redmi Note 4 (mido)
  • English language as default
  • Need to flash dm-verity zip immediately after flashing this TWRP, else your phone wont boot.

2. TWRP by xuefer: https://forum.xda-developers.com/mi-max-2/development/twrp-max2-oxygen-t3634437
  • Built using LineageOS 14.1 source
  • Built and tweaked for Mi Max 2 (oxygen)
  • Decryption support added for /data
  • Faster transfer using adb push
  • Extra fonts added

FLASHING TWRP
  • Unlock bootloader here: https://forum.xda-developers.com/mi-max-2/how-to/guide-unlocking-bootloader-mi-max-2-t3641257
  • Install "Minimal ADB+Fastboot Drivers": https://forum.xda-developers.com/showthread.php?t=2317790
  • Download TWRP file and copy the file in the C:\Program Files (x86)\Minimal ADB and Fastboot folder
  • Download dm-verity disabler and copy the file in your phone: https://build.nethunter.com/android-tools/no-verity-opt-encrypt/
  • Switch off phone. Hold Power + Volume Down to boot into fastboot mode. Connect it to PC.
  • Inside the folder where TWRP file is present, open command prompt window.
  • Type "fastboot devices". Your phone will get detected with serial number.
  • Type "fastboot flash recovery <recovery_name.img>". TWRP will get flashed on your device.
  • E.g. "fastboot flash recovery twrp_3.1.1-0.img".
  • Type "fastboot boot <recovery_name.img>". You will boot into TWRP. Disconnect phone from PC.
  • E.g. "fastboot boot twrp_3.1.1-0.img".
  • On the screen, swipe to allow modifications and select your language. Uncheck "Keep system read-only"
  • Select Install and then choose the dm-verity disabler zip and swipe to flash.
  • Select Backup and check all partitions. Swipe to backup. The backup will be stored in "TWRP" folder
  • Select Reboot and then system. You will be asked if you want to disable the stock recovery. Swipe to disable.
  • You will boot into MIUI with TWRP installed.

TWRP ZIPs
These zips are meant to be flashed with TWRP with a specific order. Before flashing any zip make sure you have taken full backup of your device partitions using TWRP.

1. no-verity-opt-encrypt: https://build.nethunter.com/android-tools/no-verity-opt-encrypt/
  • Also called as dm-verity disabler/lazy flasher
  • "dm-verity" is a feature in the MIUI kernel which checks and prevents the phone from booting normally if you modify the phone. (e.g. flash TWRP)
  • To prevent that, you need to flash the dm-verity disabler zip which removes dm-verity check and also decrypts the /data partition so that you can boot into MIUI normally.
  • Else you can flash a custom ROM immediately after flashing TWRP which removes the MIUI system and kernel

2. Xiaomi.EU ROM Patch: https://forum.xda-developers.com/mi-max-2/development/xiaomi-eu-rom-patches-dpi-change-t3656296
  • You need to install Xiaomi.EU ROM before installing these zips via TWRP.
  • MIUI to Google Apps: Replaces default MIUI apps with Google apps.
  • Google Now/Pixel Launcher: Replaces stock MIUI launcher and enables Google Assistant via build.prop tweak.
  • DPI changer: Change values from stock 440 (low res, bigger) to 325 (high res, smaller).

3. Hardware Key Disabler : https://forum.xda-developers.com/mi-max-2/themes/mod-disable-hardware-keys-lineageos-rom-t3696108
  • This mod enables on screen navigation bar and disables the hardware keys
  • You can revert back to stock configuration by flashing "enable_HWkeys.zip"
 
Last edited:

prathameshsd

Senior Member
Feb 7, 2013
318
1,212
0
pdstack.wordpress.com
FLASHING VIA TWRP

Some important terms to remember:

  • Formatting data: Factory resets the phone, will erase internal storage, will remove encryption
  • Wiping data: Factory resets the phone, will not erase internal storage, will not remove encryption
  • Clean flash: Flashing a new ROM or an updated version of the same ROM by wiping or formatting data of current ROM in TWRP. Cache & dalvik is automatically wiped in TWRP.
  • Dirty flash: Flashing an updated version of the same ROM without wiping or formatting data of current ROM in TWRP. Cache & dalvik wipe is recommended in TWRP.
  • Treble TWRP: Custom TWRP which uses existing /cust partition and formats it into /vendor partition which is needed for non-MIUI Oreo and Pie ROMs where Treble is used.
Notes:


  • Always read the entire post & comments of the custom ROM page before asking any questions, chances are your query has already been answered.
  • You do not need to wipe /system partition manually, it its automatically wiped when a ROM is flashed by the updater-script inside the ROM zip. General rule of thumb is always clean flash any ROM, unless mentioned by the ROM developer or maintainer that dirty flashing is okay.


Requirements:
  • Unlocked bootloader with TWRP installed
  • Phone partition backup using TWRP
  • All data backup from internal storage (sms, contacts, files etc.)
  • Official MIUI ROM encrypts /data partition, you will need to Wipe > Format Data to decrypt it completely else need to flash dm-verity disabler zip or Magisk zip.

1. Rooting MIUI / non-MIUI ROM
  1. Boot into TWRP (Power+Volume Up)
  2. Install > Magisk zip
  3. Reboot > System

2. Flashing official MIUI recovery ROM
  • Boot into TWRP
  • Wipe > Format data (if storage is encrypted)
  • Reboot > Recovery
  • Install > MIUI ROM zip + Magisk Zip
  • Reboot > System

3. Flashing custom MIUI ROM (Xiaomi.EU / RevOS / Mi Globe)

  • Boot into TWRP
  • Wipe > Format data (if storage is encrypted)
  • Reboot > Recovery
  • Wipe > Factory reset
  • Install > Custom MIUI ROM zip
  • Reboot > System

4. Flashing LineageOS/AOSP ROMs (Non-Treble)

  • Boot into TWRP
  • Wipe > Format data and Reboot > Recovery (if storage is encrypted)
  • Wipe > Factory reset
  • Install > Firmware + ROM Zip + Google Apps Zip
  • Reboot > System
5. Flashing LineageOS/AOSP ROMs (Treble)

  • Boot into Treble TWRP
  • Wipe > Format data (if storage is encrypted)
  • Reboot > Recovery
  • Wipe > Factory reset
  • Install > Firmware + ROM Zip + Google Apps Zip
  • Reboot > System
 
Last edited:

prathameshsd

Senior Member
Feb 7, 2013
318
1,212
0
pdstack.wordpress.com
TYPES OF CUSTOM ROMs
There are mainly two types of custom ROMs for any Android device. You need to flash them on your phone using custom recovery such as TWRP.

1. Stock based ROMs
They are based on the factory ROM which came pre-installed on your device. In case of Xiaomi devices, developers take the stock China Stable/Beta MIUI ROMs as base, perform modifications and tweaking and then re-pack it. Examples of stock based MIUI ROMs.


2. Custom based ROMs
They are typically based on either AOSP or LineageOS code. They can either be ported from similar devices or built using the kernel source code of a particular device. Xiaomi has not yet released kernel source code for Mi Max 2. Kernel source codes are needed for relatively stable and bug-free experience on custom ROMs. Examples of some popular custom ROMs
A) AOSP based ROMs
B) LineageOS based ROMs
 
Last edited:

rjsk37

Member
Jul 15, 2014
21
5
0
Hi,
I flashed TWRP from PC using above procedure & tried to install no-verity-opt-encrypt (version 5.1.zip).
I got below error while installing :
Error: unpacking ramdisk failed

Phone booted normally & TWRP is not there.
How to fix this issue?
 
Last edited:

alexep

Senior Member
Mar 23, 2013
91
29
0
Porto
I know these questions are sometimes annoying, but for someone who hasn't been following Android development since Android 4.4.4, I'm a little overwhelmed by all this information. What does the "Oxygen" mean? Is it just a certain model of the Mi Max 2? I see all ROMs say Oxygen but none explain what it means. If it's a model of the Max 2, how can I know if the version I have is Oxygen?

Thanks and sorry if it's a dumb question
 

frulex

Senior Member
Apr 13, 2008
372
109
0
Zagreb
It's a code name for Max 2, so you don't mistakenly flash the wrong ROM, if it says Oxygen, than you're sure it's for your model, not for i.e. Mi Max...

Sent from my Mi Max 2 using Tapatalk
 
  • Like
Reactions: alexep

androik

Senior Member
Dec 21, 2012
64
4
8
Hello,
I have a Mimax 2 bootloader unlocked, rooted, SuperSU, twrp 3.1.0-0 (cofface) installed. I installed, after some difficulties, the rom xiaomi.eu 7.12.28. When I'm in recovery, after the flash I sometimes have a red line that says "... no-verity-opt-encrypt ..." blah blah. But the phone boot normally, everything works fine. Do I have to install lazyflasher-no-verity-opt-encrypt or can I do without it?
thank you and sorry for my bad english
 

frulex

Senior Member
Apr 13, 2008
372
109
0
Zagreb
Hi, I have unlocked BL and installed Developer ROM 7.12.28. for a few weeks now. Can I install latest 8.1.4 developer ROM with TWRP without wiping cache/dalvik and will I keep my data/apps that way?
Thanks.

Sent from my Mi Max 2 using Tapatalk
 

androik

Senior Member
Dec 21, 2012
64
4
8
@frulex, I installed the 8.1.4 (via updater) after using the 7.12.28, without any problem. That you erase the cache where not, you will not lose the data of your apps
 

frulex

Senior Member
Apr 13, 2008
372
109
0
Zagreb
What was the size of that update file you installed? I first got notification of 8.1.4 update and it said it's something like 95 MB file size. Tried to install it twice via updater, it starts updating, boots to TWRP and ends with error without installing. After reboot notification changed and now it offers update of full 1.5 GB 8.1.4 version ROM. I didn't have time to download and try that but I wonder will that also end in error and that's why I ask about downloading .zip and flashing through TWRP.

Sent from my Mi Max 2 using Tapatalk
 

androik

Senior Member
Dec 21, 2012
64
4
8
These are the roms I used, as you see 8.1.4 weighs 1.2 Go



edit: I had uploaded an image of the explorer but it does not appear! (decidedly i'm struggling with this forum, lol)
 
Last edited:

ZHNN

Member
Jan 27, 2018
31
12
0
Hi there! Thanks for the excellent thread and collection of links. I started here and found a setting on this phone's NVRAM that I have not seen mentioned anywhere else, and you will need it for LTE unlocking.

Below are the exact steps, many taken from this guide, that I used to go from a phone with an unlocked bootloader to flipping the LTE B2 and LTE B4 bits on. After I did it and rebooted, I suddenly had a working LTE connection!

I cannot yet PROVE that this actually enabled the bands, but it hasn't hurt anything. I will test for that in a couple days, because the only dumb thing I did was afterwards, when I accidentally re-locked the bootloader by not paying attention to what I was doing. If you use the MiFlash program to install a ROM, don't forget to change the setting in the lower right corner!

Notes for those wishing to use this as a guide:
  • I don't think you can brick the phone completely playing with just these settings, but you should be prepared to restore everything. Take backups where I mention them, and if you need the device working, you should have a current MIUI fastboot flashable image, available from the official website, on hand.
  • This is LTE only and there are different settings for GSM that work the same way.
  • The steps are numbered, but you should also understand mostly what they do.
  • You may ignore the VM part and just boot your normal Win7 with driver signature checking DISABLED (F8 on boot). I use Linux and I'm security-conscious about downloading programs that I can't verify, so I'm using a VM.
  • There is a dialpad option for opening the diag port (if you have root), but it did not work for me, so I have provided a method that I know works and it clears itself upon reboot
  • QXDM's NV browser has a checkbox for "DUAL SIM". You don't need to check it for this process, you won't lose SIM2.

Downloads section:

(REQUIRED) Most are in the links provided by OP:
  1. MiFlash (official one)
  2. QPST 2.7.460
  3. QXDM 3.12.714
  4. Minimal adb and fastboot
  5. no-verity-opt-encrypt-6.0.zip
  6. twrp-3.2.1-0-oxygen.zip
  7. SuperSU-v2.82-201705271822.zip

(OPTIONAL, needed if you mess up. I chose to have it ready to go.):
  1. From MIUI official site, go to the ROMs for the Max 2. The one on the download button here is NOT what you want.
  2. Select Flashing guide, then on on the left hand side select FastBoot.
  3. Download the image for your device. I have a copy of oxygen_global_images_V9.0.3.0.NDDMIEI_20171209.0000.00_7.1_global_298fd5f49c.tgz


SETUP SECTION (install tools and root phone):
  1. Enable developer mode and USB debugging on phone
  2. Boot into a Windows VM, pressing F8 to go into unsigned drivers mode
  3. Install MiFlash, just to get the drivers
  4. Install QPST and QXDM for later
  5. Install adb and fastboot
  6. Pass USB port through to VM and check adb is working by twice typing
    Code:
    adb devices
  7. Shutdown phone and remove SD card from phone.
  8. Add no-verity-opt-encrypt-6.0.zip and SuperSU-v2.82-201705271822.zip to SD card
  9. Put SD card back in phone
  10. Reboot phone into fastboot mode using PWR & VOL-, and re-pass to VM if needed
  11. From cmd terminal in adb folder,
    Code:
    fastboot flash recovery twrp-3.2.1-0-oxygen.img
  12. Code:
    fastboot boot twrp-3.2.1-0-oxygen.img
  13. Once TWRP comes up, install no-verity-opt-encrypt-6.0.zip
  14. (OPTIONAL) Make a backup. I didn't because I don't want the ROM that's on there anyway.
  15. Reboot and ensure MIUI loads
  16. Shutdown phone and reboot into TWRP using PWR & VOL+
  17. Install SuperSU as a system app
  18. Reboot into MIUI

Access and edit the NVRAM:
  1. Connect the device back to the computer, pass to VM if necessary
  2. From your terminal in the adb folder,
  3. Code:
    adb devices
  4. Grant debug permission on the device, if it asks again
  5. Code:
    adb shell
  6. Code:
    $su
  7. Grant permission in superSU popup
  8. Code:
    #setprop sys.usb.config diag,adb
  9. When the device reconnects, re-pass to VM if needed, and it may install another driver
  10. Open QPST Configuration and make sure the device's port is enabled.
  11. At the top, go to "start clients" and open "software download"
  12. In the "Backup" tab, choose a location to save your file and hit Start, just in case you do break something
  13. Once finished, close "software download" but leave QPST Configuration running
  14. Open QXDM Professional
  15. Under Options->Communications, make sure your phone is set "active" then set "target port" to the port it's on, then press OK
  16. Go to NV Browser in the dropdown on the upper left.
  17. Scroll down to 06828 :"nv_lte_bc_config_type.lte_bc_config"
  18. Press READ and save this value somewhere in case you forget which bits you set! Mine was: 2061584302293
  19. It's little-endian, and I wanted to flip bits from 0 to 1 to enable bands {2} and {4}, so I added 2^({2}-1)+2^({4}-1) = 10 to get a value of 2061584302303
  20. Enter your new value in the "value" field and press "write"
  21. Now, scroll down to the corresponding LTE prefs value at 65633
  22. Read again. This should be the same number you had before, in hexadecimal format. Mine was 0x1E0000000D5, so to add B2 and B4 (Combined value 0xA), I changed it to 0x1E0000000DF
  23. Again, enter your new value in the "value" field and press "write"
  24. I doubt this requires any sort of "safe shutdown," but I hit "offline" then closed QXDM, then closed QPST, then rebooted the phone.

For a quick test, you can set network preferences to "LTE ONLY" by going to the dialpad and hitting *#*#INFO#*#*, then selecting your SIM card and using the dropdown in there. Mine was preferring HSPAP because the signal was stronger, even though the data was blocked.

Further testing I want to do when I get the bootloader unlocked again:
  • Use an app that shows what bands are in use to prove I'm on B2 or B4
  • Try disabling bands I will never use that have similar frequencies to the bands I want to see if signal improves
 
  • Like
Reactions: jbmc83

Absalom34

Senior Member
Apr 20, 2017
88
4
0
TWRP ZIPs
These zips are meant to be flashed with TWRP with a specific order. Before flashing any zip make sure you have taken full backup of your device partitions using TWRP.

1. no-verity-opt-encrypt: https://build.nethunter.com/android-...y-opt-encrypt/
Also called as dm-verity disabler/lazy flasher
"dm-verity" is a feature in the MIUI kernel which checks and prevents the phone from booting normally if you modify the phone. (e.g. flash TWRP)
To prevent that, you need to flash the dm-verity disabler zip which removes dm-verity check and also decrypts the /data partition so that you can boot into MIUI normally.
Else you can flash a custom ROM immediately after flashing TWRP which removes the MIUI system and kernel

2. Xiaomi.EU ROM Patch: https://forum.xda-developers.com/mi-...hange-t3656296
You need to install Xiaomi.EU ROM before installing these zips via TWRP.
MIUI to Google Apps: Replaces default MIUI apps with Google apps.
Google Now/Pixel Launcher: Replaces stock MIUI launcher and enables Google Assistant via build.prop tweak.
DPI changer: Change values from stock 440 (low res, bigger) to 325 (high res, smaller).

What does It mean??