Heute ist mein neues Tablet angekommen: ein 8 Zoll Sony Xperia z3 Tablet. Da mein Nexus 7 inzwischen etwas in die Jahre gekommen ist, habe ich mich entschieden, dass ein Nachfolger her muss. Bisher war ich treuer Samsung-Kunde. Da ich meine Geräte allerdings immer am Tag 1 mit einem Custom-ROM ausstatte, hat sich Samsung mein seinem Knox-Schutz für die nächsten Jahre disqualifiziert. Erkennt dieser nämlich Root oder ein CustomROM, werden unumkehrbar ein Register überschrieben und damit einige Funktionen für immer unbrauchbar gemacht.
Sony macht es dem Custom-ROM-Nutzer recht einfach, man kann offiziell einen Code zum entsperren des Bootloaders anfordern. Allerdings hat auch dieser seinen Preis: Beim Entsperren des Bootloaders wird eine Partition mit DRM-Schlüssel überschrieben, an denen auch einige Funktionen des Original-ROMs hängen. Da es sich dabei um eine reine Software-Maßnahme handelt, sollte der Prozess jedoch umkehrbar sein.
Root werden
Zunächst gilt es, das Z3 zu rooten, ohne den Bootloader dazu entsperren zu müssen. Die passende Anleitung im XDA-Developers-Forum ist schnell gefunden. Zunächst ist der Entwicklermodus zu aktivieren (Einstellungen -> Über das Tablet -> ein paarmal auf die Build-Nummer klicken), dann USB-Debugging zu aktivieren (Einstellungen -> Entwickleroptionen) sowie Apps unbekannter Herkunft zu erlauben (Einstellungen -> Sicherheit).
Anschließend das EasyRootTool aus dem Forumsbeitrag downloaden und entpacken. Da ich mit Linux unterwegs bin, entfällt der Teil mit der USB-Treiber-Installation. Ein „sudo sh install.sh“ sollte mit nun Root verschaffen. Tut es aber leider nicht, es hängt bei:
libzxploit.so created
doing the magic
creating vm (loljavasucks)
Das Problem ist die recht aktuelle Firmware 23.0.1.A.167, welche immun gegen den Root-Exploit aus dem EasyRootTool ist. Also muss eine ältere Firmware drauf. Beim googeln bin ich dann aber auf diesen Thread gestoßen. Mit KingRoot klappt das Rooten tatsächlich volautomatisch innerhalb weniger Minuten.
TA-Partition (DRM-Keys) sichern
Jetzt noch BusyBox installiert („BusyBox“ von „Stephen (Stericson)“ aus dem Playstore, das Backup-TA-Script für Linux gedownloaded und ausgeführt – schon liegt eine 1:1-Kopie der TA-Partition im Verzeichnis. Sicherheitshalber sollte nochmal verifiziert werden, dass das im Script hart-codierte Device „/dev/block/mmcblk0p1“ wirklich die TA-Partition ist:
#> adb shell
#> find /dev -name TA
#> ls -al /dev/block/platform/msm_sdcc.1/by-name/TA
# lrwxrwxrwx root root 1970-02-02 13:51 TA -> /dev/block/mmcblk0p1
Passt 😉
Das Windows-Script macht noch jede Menge Voodoo drum herum, das sichern der gesamten Partition via „dd“ erscheint mir aber recht plausibel. Update: ein wenig Unsicherheit blieb, daher hab ich mir das Windows-Script angeschaut. Es macht auch ein „dd“ der Partition. Die vielen „grep“ sollen prüfen, ob man wirklich die TA-Partition erwischt hat.
Der gesamte Prozess ist hier nochmal beschrieben. Wichtig ist, dass die TA-Partition auf der selben Android-Version wiederhergestellt werden muss, von der sie gebackupt wurde. Da die 23.0.1.A.167 schon jetzt nicht zu finden ist, spiele ich das System-Update auf Android 5 ein und wiederhole den gesamten Prozess. Da ich das Gerät gerootet habe, werden die OTA-Updates verweigert. Daher verwende ich XperiFirm, um die Firmware zu downloaden und Flashtool, um sie zu flashen. Eine schöne Anleitung dazu gibt es hier.
Das 5.0.2er Android (23.1.A.0.690) lässt sich weiterhin mit KingRoot rooten, anschließend wird die gesamte TA-Prozedur wiederholt. Der Inhalt der TA-Partition hat sich tatsächlich verändert 😉
Nun wieder die Original-Firmware 23.1.A.0.690 mittels Flashtool aufspielen. Das Update auf 23.4.A.1.232 via OT klappt ohne Probleme – das bedeutet, dass nach der Root-Aktion die TA-Partition noch intakt ist. Da ich sowohl 23.1.A.0.690 als auch 23.4.A.1.232 heruntergeladen habe, kann ich die OTA-Funktionalität und damit die Unversehrtheit der TA-Partition nun jederzeit verifizieren.
Das 5.1.1er Android lässt sich aktuell nicht mehr mit KingRoot rooten. Daher ist es Zeit für…
Cyanogenmod installieren …
Zunächst muss der Bootloader entsperrt werden. Dazu ist die entsprechende Seite von Sony aufzurufen und der Gerätecode einzugeben. Damit verfährt man wie in der Cyanogenmod-Anleitung. Leider lässt mich diese ein paar Schritte im Regen stehen. Das installierte boot.img ist das Cyanogenmod Recovery. Da ich nach Anleitung das Gerät gewiped habe, ist kein CM-Image mehr auf der SD-Karte. Das System lässt sich auch nicht mehr booten, CM Recovery ist zu verbuggt, um ein funktionierendes Sideload zu machen. Also erstmal TRWP für mein Device gezogen und mit „fastboot flash boot twrp-2.8.7.0-scorpion_windy.img“fastboot flash boot(ACHTUNG, nicht „fastboot flash recovery“ – das Recovery ist bei dem Gerät im normalen Boot-Kernel). Mit TWRP lässt sich CM als Sideload flashen und auch via ADB uploaden.
Bevor jedoch _irgenwas_ geht, muss „data“ formatiert werden. Der Bootloader-Entsperr-Vorgang hat das leider in einem nicht mountbaren Zustand hinterlassen, so das quasi nichts funktiert. Nach dem formatieren im TWRP geht alles wieder wie gewohnt.
.. und wieder entfernen
Cyanogenmod läuft, alles geht – bis auf die Kamera. Diese fokussiert nicht. Ausgiebiges googeln bringt keine Lösung. Das einzige zu dem Thema ist ein Thread im XDA-Development-Forum von jemandem, der das Problem auch hat – ohne Lösung. Nach ein paar halbherzigen Versuchen, das Problem zu lösen (anderer Kernel, anderes CM-Build), habe ich entschieden erstmal mit der Stock-ROM zu starten, bis das Kamera-Problem gelöst ist.
Der Weg zurück ist einfach – inzwischen habe ich genügend über verschiedene Stolpersteine gelesen:
- Flashen der 23.1.A.0.690 Firmware mit Flashtool. Der Bootloader bleibt dabei entsperrt.
- Booten. Es hagelt massig Fehler von abgestürtzen Prozessen. Geduldig wegklicken bis in die Einstellungen, von dort aus ein Werksreset machen
- Booten. Das ROM startet sauber
- RDM-Keys verifizieren (via ServiceMenü -> Service checks -> Security, hier darf nirgends „unknown error“ stehen) -> DRM-Keys sind weg
- In das Service-Menü kommt man auch mit dieser Anleitung
- KingRoot via adb installieren, Rooten
- ta-tool starten, TA-Partition wiederherstellen, Rebooten.
- RDM-Keys verifizieren -> nun sind sie wieder da.
Nun läuft ein gerootetes Android 5.0.1 mit offenem Bootloader und Root auf dem Tablet. Der offene Bootloader ist kein Problem, solange man keinen CustomKernel damit lädt – dann werden die DRM-Keys wieder gelöscht.
Leider führt obiges Verfahren mit Android 5.1.1 nicht zum Ziel, da das Rooten nicht klappen wird.
Stock Android 5.1.1 mit Root und DRM-Keys?
Ein Thread XDA-Developer-Forum berschreibt, wie es gehen kann. Anstatt zu versuchen, das laufende System zu rooten oder ein Custom-Recovery laufen zu lassen, wird das Stock-Rom mit Super-SU ausgestattet und installiert. Anschließend kann die TA-Partition wiederhergestellt werden, so dass die DRM-Keys zur Verfügung stehen. Soweit zur Theorie, ich probiere es aus. Um etwas abzukürzen, verwende ich die pre-rooted Firmware von hier:
- Tablet ins den Bootloader booten
- Bootloader via fastboot unlocken (ja, nachdem die DRM-Keys drauf sind, ist er wieder gelockt – das Tablet ist bis auf root tatsächlich wie ab Werk)
- fastboot oem unlock 0xKEY
- TWRP Recovery flashen: fastboot flash boot Z3TC-stock-twrp.img
- Ins Recovery booten.
- /data formatieren – das Unlock hat es mal wieder unbrauchbar gemacht
- Pre-rooted firmware via adb push hochladen und mit TWRP flashen, Wipe Cache/Dalvik Cache
- ins System Booten (dauert ewig – ich glaube das übliche „Optimizing App 99/321“ wird von der Sony-Lade-Animation verborgen)
- USB Debugging aktivieren
- TA-Partition via ta-tool wiederherstellen (ich habe die aus der Firmware 23.1.A.0.690 / Android 5.0.1 verwendet, da ich noch keine Möglichkeit gefunden habe, aus der 5.1.1 heraus zu sichern)
- Rebooten
- RDM-Keys verifizieren -> nun sind sie wieder da.
Damit habe ich ein 5.1.1er Strock-Android mit Root und DRM-Keys. Zur Sicherheit mache ich noch ein komplettes Werks-Reset aus dem System heraus (Einstellungen -> Sichern&Wiederherstellen).