China-Handy – Teil 2
Posted on Sa 16 Januar 2021 in Computer & Electronics
Die Woche ist vorbei und so wollen wir heute mal versuchen, ob wir den Bootloader meines neuen Redmi Note 9 Pro erfolgreich entsperren können und in den Genuss eines Custom-ROMs kommen.
Also wieder XMT anwerfen und same procedure as last week. Diesmal hat er offenbar das unlock Token bekommen und den Bootloader entsperrt. Unmittelbar nach dem Unlock musste ich erstmal das System wieder neu einrichten, wieder Developer werden und USB-Debugging aktivieren. Sobald XMT wieder Verbindung mit dem Handy hatte, wollte es TWRP recovery flashen. Leider hat es das passende TWRP File nicht selbst gefunden, so dass ich selber eines heruntergeladen habe, was dann aber nicht korrekt erkannt wurde. Nach etwas frickeln war TWRP installiert aber nach dem ROM-flashen bin ich immer wieder im TWRP gelandet, anstatt im Betriebssystem. Grumpf!
Also einen Schritt zurücktreten und die wesentlichen Schritte durchgehen. Die ganze Prozedur besteht aus drei Schritten:
- Bootloader entsperren
- TWRP recovery Image flashen
- Custom ROM Image flashen
So bequem der geführte Weg über XMT aussah – wir machen das nun schrittweise und mit Bordmitteln, soweit möglich. Da haben wir mehr Kontrolle was genau passiert bzw. schiefgeht. Und vermutlich ist das auch insofern besser, als sich vieles dann leichter auf Geräte anderer Hersteller übertragen lässt. Damit es besser nachvollziehbar ist, gebe ich im Folgenden den kompletten Ablauf wieder, auch die Dinge, die wir bereits im letzten Post erledigt hatten.
Bevor wir loslegen nochmal der Hinweis: Wir löschen alle Daten vom Handy. D.h. wenn da irgendwas von Bedeutung drauf ist, vorher sichern. Kein Backup? Kein Mitleid!
Android boot-Modi
Android kann in verschiedene Modi gebootet werden, die man kennen sollte und wissen,
wie man sie erreicht. Alle adb
und fastboot
Befehle funktionieren via USB – d.h.
das Handy muss via USB am Computer angeschlossen sein.
Normal
Der normale Betriebssystem-Start. Und so kommt man da hin:
- Handy ist aus:
Power
lang drücken - Handy läuft normal und USB-Debugging ist eingeschaltet:
adb reboot bootloader
- Handy ist im Fastboot-Mode:
fastboot reboot
Fastboot
Das ist der Service-Modus, in dem man das System flashen kann. D.h. das
brauchen wir, um mit dem original Xiaomi
Flash-Tool, XMT
oder fastboot
images zu flashen.
Bei Xiaomi Geräten sieht der Fastboot-Screen so aus:
Und so kommt man da rein:
- Handy ist aus:
Power
+Vol-
lang drücken - Handy läuft normal und USB-Debugging ist eingeschaltet:
adb reboot fastboot
Recovery
Der Recovery Mode erlaubt es z.B. einen Factory Reset durchzuführen. Wenn wir ein alternatives Recovery Tool flashen (z.B. TWRP), dann gehen noch viele anderes Dinge.
Und so kommt man da rein:
- Handy ist aus:
Power
+Vol+
lang drücken - Handy läuft normal und USB-Debugging ist eingeschaltet:
adb reboot recovery
Vorbereitungen
Als erstes brauchen wir etwas Werkzeug: ADB, Fastboot und XMT:
sudo apt install adb fastboot
XMT könnt Ihr hier herunter laden.
Dann sind ein paar Dinge auf dem Handy zu erledigen:
- Developer werden:
Settings / About phone
so lange auf die MIUI Versionsnummer tippen, bis er sagt "You are now a developer" - Nun in
Settings / Additional settings / developer options
:- USB-debugging aktivieren
- OEM-unlock aktivieren
Codename finden
Android Geräte haben einen codename. Wieso Codename? Ich weiß doch, dass mein Handy Redmi Note 9 pro heißt! Nun – unter dem Namen wird es verkauft. Intern hat es aber einen Codenamen und in der Tat gibt es unter obigem Handelsnamen mindestens die chinesische Version (codename curtana) und die internationale (codename joyeuse). Der Codename ist wichtig, damit wir auch wirklich kompatible Images runterladen, denn wenn das nicht zusammen passt geht garnix mehr. Um den Codename rauszufinden tun wir dies:
In den fastboot
-Mode booten und dann:
fastboot getvar product
Bei mir bekomme ich dies zur Antwort:
product: joyeuse
Und nun wieder in Android booten
fastboot reboot
Bootloader entsperren
Wenn Ihr wollt, könnt ihr erstaml prüfen, in welchem Status sich der Bootloaer befindet. Dazu in den Fastboot modus booten und
fastboot oem device-info
Die Antwort sieht dann in etwa so aus:
[...]
(bootloader) Verity mode: true
(bootloader) Device unlocked: false
(bootloader) Device critical unlocked: false
(bootloader) Charger screen enabled: true
OKAY [ 0.001s]
In diesem Fall: Ja der Bootloader ist gesperrt.
Eigentlich sieht Android vor, dass man den Bootloader nun so entsperren kann:
fastboot oem unlock
Aber wie schon erwähnt, geht das bei Xiaomi (und vielen anderen) nicht. D.h. die Antwort fällt so aus:
...
FAILED (remote: Token Verify Failed, Reboot the device
Also zurück zum Weg, der funktioniert:
- Falls noch nicht geschehen, SIM-Karte einlegen
- Im Handy MI Account anlegen und mit dem Handy verknüpfen.
- XMT starten
Unlock, lock bootloader and other
auswählen- Handy in der Liste auswählen
- In den MI-Account einloggen, wenn wir dazu aufgefordert werden.
- Nun sollte der Bootloader entsperrt werden
Und falls Ihr, so wie ich letztes Mal eine Wartezeit auferlegt bekommt, geduldig warten und dann das Ganze wiederholen.
TWRP
TWRP ist ein custom recovery tool, das erforderlich ist, um dann das eigentliche Custom-ROM flashen zu können.
Es ist wichtig, dass Ihr genau die richtige TWRP-Version für Euer Device nehmt und kein anderes. Hier das falsche zu erwischen ist ein schöner Weg, das Handy erstmal unbootbar zu machen.
Also auf zu androidfilehost.com und dort nach
"twrp joyeuse" suchen. Bei mir war es TWRP-joyeuse-12012021-12.04.19.zip
.
Nun packen wir das TWRP-Archiv aus:
unzip TWRP-joyeuse-12012021-12.04.19.zip
und erhalten so ein file names recovery.img
– evtl. habt Ihr ein solches auch
direkt irgendwo bekommen, also nicht in einem zip Archiv. Normalerweise flasht
man nun das twrp recovery image und ersetzt so das originale. Im Prinzip kann
man auch einfach einmalig in ein recovery image booten, ohne es zu flashen:
fastboot boot recovery.img
Allerdings scheint as bei neueren Versionen von Android nicht mehr zu
funktionieren – diese bringen fastbootd
anstatt fastboot
mit und da scheint
diese Möglichkeit nicht mehr unterstützt zu werden...
Also booten wir in den fastboot
-Mode:
adb reboot fastboot
Warten bis der fastboot
Bildschirm kommt und flashen das
Recovery-Image aus dem TWRP-Archiv:
fastboot flash recovery recovery.img
Der Output sieht dann ungefähr so aus:
target reported max download size of 805306368 bytes
sending 'recovery' (131072 KB)...
OKAY [ 3.478s]
writing 'recovery'...
OKAY [ 0.556s]
finished. total time: 4.034s
Sehr gut!
Custom ROM auf das Handy kopieren
Nun brauchen wir ein ROM-Image. Und wie Ihr Euch vielleicht erinnern
werdet, wollte ich xiaomi.eu
ausprobieren. Und zwar dieses:
xiaomi.eu_multi_HMNote9ProEU_V12.0.1.0.QJZMIXM_v12-10.zip
– gibt's direkt bei
xiaomi.eu.
Wenn Ihr unsicher seid, ob Ihr ein kompatibles ROM erwischt habt, dann packt
das ZIP-Archiv aus und schaut mal in META-INF/com/android/metadata
. Da sollte
irgendwo dies stehen:
pre-device=joyeuse
Und auch an diversen anderen Stellen kommt der Codename vor.
Aber wie bekommen wir das ROM nun auf's Handy? Das geht z.B. via ADB. Dazu booten wir das Handy ganz normal in Android und kopieren das gerade besorgte File auf das Gerät:
adb push xiaomi.eu_multi_HMNote9ProEU_V12.0.1.0.QJZMIXM_v12-10.zip /sdcard/
Custom ROM flashen
Nun das Handy in den recovery mode
booten, also in das vorhin installierte TWRP
recovery image.
Nun auf dem Handy in TWRP in Wipe
/ Advanced Wipe
und diese
Partition löschen:
- Data
- Cache
- Dalvik
Als nächstes im Hauptmenü auf Install
gehen ROM-File navigieren, selbiges
auswählen und installieren. Das dauert nun eine ganze Weile und Ihr könnt
interessiert zuschauen, wie diverse Messages an Euch vorbei ziehen.
Am Ende steht da
...done
Sehr gut.
Als letztes müssen wir nun noch wipe
/ Format data
machen, bevor wir das
Handy neu starten. Das geht erst jetzt, weil wir ja das zu flashende Image auf
er internen SD-Karte abgelegt hatten.
Nun rebooten: reboot
/ system
.
Die Spannung steigt ins Unermessliche!
Es hat geklappt! Cool!
Notfälle und Hintertürchen
Aber was, wenn mir das garnicht gefällt, oder irgendwas schiefgeht? Kein
Problem, denn man kann in der Regel wieder zurück zur Originial-Firmware. Am
einfachsten geht das, indem man sich ein sogenanntes Fastboot-image der
Original Firmware besorgt. Am leichtesten findet Ihr den korrekten Link zu
Eurem Image hier. Sucht nach Eurem
Handy-Modell (am besten via codename, bei mir "joyeuse"), wählt aus der Liste
die Version für Eure Region raus und nehmt das fastboot
Image. Das ist ein
tgz
File und das entpackt Ihr dann mit tar xzf xxxx.tgz
. Und los geht's:
cd joyeuse_global_images_V12.0.1.0.QJZMIXM_20201107.0000.00_10.0_global/
sh flash_all.sh
Ihr habt richtig gelesen – da sind nicht nur *.bat
Files für Windows drin,
sondern auch ein Linux Shell Script. Und das flasht nun schön die Stock-Firmware
auf das Handy.
Mit dieser Methode kommt Ihr aus so ziemlich jedem Schlamassel wieder raus – es sei denn, Ihr macht, das, was in der folgenden Sektion kommt...
Not to do
An dieser Stelle läuft alles. Aber es gibt noch ein paar Dinge, die Ihr auf keinen Fall tun solltet: Denn man kann sich den Spaß am neuen ROM gründlich verderben, wenn man auf die Idee kommen sollte, nach erfolgreicher Flash-Aktion den Bootloader wieder zu sperren. Wie das ginge?
Oh – das ist ganz einfach:
- Mit dem Xiaomi flash tool:
clean all and lock
- Mit ADB:
adb flashing lock
- Mit Fastboot:
fastboot oem lock
- Mit einem Fastboot ROM:
flash_all_lock.sh
bzw.flash_all_lock.bat
Der vierte Fall ist eher theoretisch, denn diese Skripte stammen aus den Xiaomi Stock-ROMs und dort wäre das erneute locken des Bootloaders vermutlich kein Problem.
"Aber warum soll ich das nicht machen?" wird der durchschnittlich neugierige Leser fragen. Es klingt doch erstmal nach einer guten Idee, den Bootloader wieder zu sperren, damit nicht jeder, der mein Handy in die Finger kriegt an meine Sachen kommt und/oder mein OS verändern kann.
Weil das Telefon danach so aussieht:
... und dann noch in etwa diesen Nutzwert hat:
Grumpf!
Der Versuch, im Anschluss ein neues ROM zu flashen scheitert dann spektakulär und man hat ohne Spezialkenntnisse und/oder einen besonders autorisierten Xiaomi-Account keine Chance mehr, das Gerät zum Leben zu erwecken. Offenbar zerstört die Firmware das System, wenn ein bootloader lock stattfindet während ein nicht signiertes ROM installiert ist.
Und jetzt fragt bitte nicht, woher ich das weiß...
Da ist guter Rat teuer. Das offizielle Miflash Tool kann zwar grundsätzlich solche gebrickten Geräte mit Stock-Firmware flashen, aber nur, wenn Ihr einen authorized account Euer Eigen nennt. Wie man so einen Account bekommt ist unklar. Zudem müsst Ihr dazu Euer Telefon öffnen, den Akku abklemmen und zwei Testpunkte überbrücken, während Ihr das USB-Kabel einsteckt, um in den emergency download (EDL) Mode zu kommen.
Grundsätzlich gäbe es noch den Weg die Firehose Files eines Stock-ROMs zu patchen, so dass sie keine Autorisierung von Xiaomi fordern, aber ich habe keine Ahnung, wie das geht und aktuell sind die entsprechenden Files für mein Telefon-Modell noch nicht in den entsprechenden Sammlungen enthalten.
Im Netz findet man freundliche Russen, die ihre Dienste zum remote-unbricken via Teamviewer anbieten, aber das ist mir ehrlich gesagt zu heiß, auch wenn die Preise nicht sehr hoch sind.
Kurz: da kann wohl aktuell nur noch der Xiaomi-Service helfen.
Fazit
Das Flashen des Custom-ROMs ging an sich ganz gut, nur dieser Mist mit der Wartezeit nervt gewaltig und macht mir Xiaomi nicht sympathischer. Und auch die Hürden, die Xiaomi einer Desaster-Recovery in den Weg legt finde ich sehr ärgerlich.
Sobald mein Gerät wieder geht, werde ich das xiaomi.eu ROM mal eine Weile testen und dann beschließen, ob ich es auf Dauer gut finde (und es wirklich zum Datenschutz beiträgt, so wie es mir vorstelle), oder noch was anderes ausprobiere.