This is for the Xiaomi Mi MIX only, do not flash on other models!
WARNING: As of Android Marshmallow, factory boot images have dm-verity enabled, which prevents you from booting if you swipe to enable system modifications! SOLUTION: Follow the full rooting steps below in order to allow system modifications without the risk of a boot loop!
WHAT IS TWRP?
Oh come on, you know what it is - don't try to fool me!
In case you're serious, though...
Team Win Recovery Project is a custom recovery for Android devices.
It allows you to back up and restore your data, flash custom ROMs to your device, repair broken file systems, and root your device.
You can find up to date fastboot & adb binaries here!
FULL STEPS FOR OBTAINING ROOT
Follow these instructions until someone nice comes along and makes a video from them (without ads):
You must first unlock your device. To do this, follow the instructions on the MIUI forums. (tedious, I know)
Extract adb & fastboot to your computer.
Download TWRP for Xiaomi Mi MIX (lithium).
Reboot your device into fastboot mode. To do this, select reboot from the power menu and hold the [Volume Down] + [Power] buttons while your device reboots.
Once you're in fastboot mode, you're ready to flash TWRP. To do this, run these commands in order: fastboot flash recovery twrp.img
fastboot boot twrp.img
At this point, you will reach the screen asking you if you want to allow system modifications. By swiping right, you will trigger dm-verity, and if you don't follow the next step you will be unable to boot!
If you are going to root your device and follow the rest of these steps, then it is safe to swipe right and enable modifications.
If you want to be rooted with SuperSU:
Download the latest SuperSU by Chainfire.
Without exiting TWRP, transfer the SuperSU zip to your device over MTP* and flash it using [Install] in TWRP.
If you want to be rooted with something else or just want a bootable system:
Download the latest dm-verity and forced encryption disabler zip.
Without exiting TWRP, transfer the no-verity-opt-encrypt zip to your device over MTP* and flash it using [Install] in TWRP.
This will also allow you to use [Format Data] to completely disable your encryption if desired.
Go to [Reboot] -> [System].
Wait 2-5 minutes for your device to finish setting itself up. (SuperSU will reboot you a few times)
* MTP, known as Media Transfer Protocol, is the same way you transfer files from your PC to your device when booted into system.
v3.0.2-0 - Official release on twrp.me
v3.0.2-0-rc1 - Initial release candidate and first XDA build
USB Mass Storage support
Micro SDcard and USB OTG storage support
f2fs file system support (read, write, format, backup & restore)
exFAT file system support (read, write, format, backup & restore)
NTFS file system support (read, write, format)
Full SELinux support
Built in android 6.0 tree
There's absolutely none that I know of. Rejoice. You even have working hardware encryption!
CONTACT & SUPPORT
You can find us on IRC at #twrp on chat.freenode.net.
You can also post in this thread and I will attempt to answer any questions you may have.
if you like you can read why i've begun a dev from the scratch here and here and here.
The goal is also to not modify a TWRP every time Xiaomi or LOS-Team changes their kernel(-settings).
Also be aware that not every user of this forum is as skilled as you or willing to manually replace the kernel.
In result you found a good working solution for yourself.
... my approach is a litte different:
I like the idea to have a solution for the community and setup possibilities optimize the result by collaborating via github for everyone who's interested or likes to share some code snippets.
I hope this helps to not reinvent the wheel (again) - source files and setup instructions for build environment will be published within a couple of days.
But collaboration means also feedback - there is a little lack of that in the past days compared to the beginning of my research.
The idea is to get more reactions once the sources are published on github. - Because of the essential weight of feedback in development and bug fixing by the community and devs.
The main thing that really bugged me about the old TWRP version we have is that the clock was always wrong, so I've made the latest TWRP 3.3.1 for our device updated with Pie kernel. My device is not encrypted so I can't test that, but everything else works ok. https://www.androidfilehost.com/?fid=1899786940962579411