Sorry for starting a new thread, but I struggled a lot finding the right steps, so this might help someone (or at least the future me).
Preparations
I was using MacOS something (should not matter).
I already had some old-ish version of platform-tools
(adb
, fastboot
& co), the version should not matter, as long as it is from this decade. (See the note later about mke2fs
on MacOS.)
Stuff downloaded:
vendor.img
(https://github.com/ubports-xiaomi-sdm660/artifacts/releases/download/v0.1/vendor.img; a newer one gave me checksum error)- TWRP (https://eu.dl.twrp.me/jasmine_sprout/twrp-3.5.2_9-0-jasmine_sprout.img.html; I tried different versions, but this one worked fine; also tried the stock recovery, but it was complaining about the new build being older)
- Android 9 stock image (https://github.com/ubports-xiaomi-sdm660/artifacts/releases/download/v0.1/jasmine_sprout_stock_android9.zip; as I was starting from 10)
- installer (https://devices.ubuntu-touch.io/installer/dmg)
Steps
Unlocked bootloader by becoming "a developer", enabled USB debug and OEM unlock, then booted in Fastboot, then
./fastboot flashing unlock
./fastboot flashing unlock_critical
If if gets locked again (it dod for me somehow), just check status with ./fastboot oem device-info
and unlock what is locked...
Booted in TWRP from Fastboot
./fastboot boot ~/Downloads/twrp-3.5.2_9-0-jasmine_sprout.img
TWRP asks about mounting stuff read-only, I just went with "no".
Not sure about wiping any cache/data, as my phone was empty, I just wiped everything if I got stuck, might not be necessary.
The phone has 2 "slots" (A & B). I had to install Android 9 on both. (You can check the active slot with ./fastboot getvar current-slot
, and select a slot with ./fastboot --set-active=<a|b>
, but as TWRP installs the new image on the passive slot and makes it active after, I just repeated the steps again to install Android 9 on the other slot.)
Then in the TWRP menu I went with "Advanced">"ADB Sideload", then
./adb sideload ./jasmine_sprout_stock_android9.zip
Wait.
Reboot into Fastboot, then TWRP.
Repeat.
Thanks to Apple's "security" at this point I had to do a ./fastboot -w
to run mke2fs
and get it blocked by MacOS, then allow it from "System Preferences">"Security and Privacy", otherwise the UBports installer might fail.
Finally on stock Android 9, I started the UBports installer, followed the steps exactly, and got UBports installed.
Misc notes
- Neither "Mi Unlock Tool", nor "rooting" was necessary.
- For some reason after a point the device was detected as
jasmine
, I did not care, just selected "Xiaomi Mi A2" from the list. - I tried to use
vendor.img
from the latest stable artifacts (https://github.com/ubports-xiaomi-sdm660/artifacts/releases/tag/20211023), it gave me a checksum error, but as I was retrying a few times after using thevendor.img
the installer says, idk if it would work or not. - If the phone bootloops/etc. don't panic, just go back to Fastboot and repeat.
- At one point my PC did not detect the phone in Fastboot, but doing a random combination of "phone restart", "USB unplug/plug" and factory reset using the stock recovery fixed it, idk...
- Getting into the menu of the stock recovery is tricky, I do not have any good advice. My technique is to press power+vol up/down furiously until the menu appears