Es ist wieder diese Zeit im Jahr, ein neues Update steht in das Haus der Nexus Geräte, Android 4.2.2 seines Zeichens. Es wird, wie immer ungeduldig, auf das OTA Update gewartet und schnell festgestellt, manuell hat man es sofort – also das OTA-Update schnell aus dem Netz gezogen und per adb sideload installiert…
Pustekuchen, der muntere nichtssagende ADB Sideload 'Error: Closed' grinst uns an, was soll man nun also tun?
Lösung: Auf meinem Ubuntu 12.10 System hilft es in diesem Fall einfach mittels adb usb den Daemon nochmal durchzustarten, danach funktioniert adb sideload immer.
Keine langen Worte, daher ein Quick Tip, ich hoffe es hilft euch weiter, wenn ihr vor dem selben Problem steht. Sollte natürlich ebenfalls unter Windows oder MacOS klappen, kann aber in meinem Fall nur zu Ubuntu eine Aussage machen!!
Habt ihr eurer Gerät gerootet, keine Custom Kernel drauf, kein Custom ROM, aber das Update schlägt trotzdem fehl, dann kann das an einer ganz simplen Tatsache liegen: ihr habt eine oder mehrere Apps entfernt, die mitgeliefert wurden, zum Beispiel Google Currents auf dem Nexus 4, nur um ein Beispiel zu nennen.
Der in der Einleitung genannte Fehler drückt sich im Recovery/adb sideload in folgender Form aus: 'android update check failed due to...'. Wenn hier nun noch eine APK genannt wird, dann habt ihr exakt das beschriebene Problem. Hierzu gibt es glücklicherweise zwei Lösungen, entweder flasht ihr das komplette Stock ROM, dann klappt das Update ohne Probleme oder ihr schnappt euch die entsprechende APK aus dem Stock ROM und schiebt sie wieder in /system/app.
Um eine Datei aus einem Image zu ziehen müsst ihr ein paar Voraussetzungen schaffen:
ihr braucht ein Linuxsystem (ein virtuelles System reicht aus)
simg2img muss vorhanden sein
[wpfilebase tag=file id=1 tpl=download-button /]
Holt euch das Stock ROM, im hier beschriebenen Fall beziehe ich es auf eines der Nexus Geräte, also Nexus 4, Nexus 7 oder Nexus 10 usw., diese gibt es als Download direkt von Google.
Alles brav entpacken, bis man die system.img hat, die zusammen mit simg2img in ein Verzeichnis kommt.
Macht simg2img ausführbar: chmod +x simg2img
Wenn das getan ist, kann es an die tatsächliche Arbeit gehen, sprich das aktuelle Image konvertieren und mounten:
Erstellt ein Verzeichnis in das gemountet werden soll: mkdir temp
./simg2img system.img system.raw
sudo mount -t ext4 -o loop sys.raw temp/
Damit habt ihr Zugriff auf alle Daten und könnt recht entspannt die fehlende APK auf das angeschlossene Gerät pushen.
Das geht dann mit adb push Paketname.apk /system/app (vorausgesetzt ihr befindet euch im entsprechenden Ordner, in dem sich die gesuchte Datei befindet und adb ist im Pfad
Es ist vollbracht, auf dem Motorola Milestone ist der Root Zugang möglich.
Mittels der Signatur eines legitimen Updates für das Motorola Milestone ist es gelungen den Fehler der Android 2.0 Version auszunutzen und Root Zugriff zu erlangen.
In Zusammenarbeit mit SeraphimSerapis (Sera-Apps.de), Natron und Andrea Baccega (Androidiani.com), haben wir den Root Zugriff hergestellt.
Ein Samsung Galaxy zu rooten ist kein Hexenwerk, den Weg zum erfolgreich freigeschalteten Smartphone möchte ich hier kurz vorstellen. Ich nutze Ubuntu, jede andere beliebige Linuxdistribution ist genauso benutzbar, Windows übrigens auch.
Warum braucht man Root überhaupt? Es gibt einige Funktionen, die im Standard Android so nicht verfügbar sind und nur mit Root Zugang funktionieren. Tethering über Bluetooth zum Beispiel, oder die Nutzung eines VPN Clients. Ausserdem gibt es für gerootete Android-Geräte nützliche Backup Applikationen, die absolut alles sichern, oder das Programm aNetShare, wodurch das Galaxy im Handumdrehen zu einem Wireless Access Point wird und man sich WiFi Geräten (Notebooks, PDAs, usw.) mit dem Galxy als AP verbinden kann und dessen UMTS Verbindung zum Surfen nutzen kann. Die Möglichkeiten sind umfangreich, man sollte allerdings auch dazu sagen, dass man durch den Root Zugang viel kaputt machen kann, wenn man an der falschen Stelle unterwegs ist. Dem normalen User dürfte das nicht passieren, der ist aller Wahrscheinlichkeit nach nicht per Konsole auf dem Galaxy unterwegs und löscht ausversehen systemrelevante Dinge. Die Applikationen, die Root Zugang erfordern, können natürlich ebenfalls Schaden anrichten, sollte sie nicht richtig programmiert sein.
Soviel zur Warnung, nun geht es los! Eine Anmerkung noch: Alle eure installierten Programme, sowie eure Einstellungen, SMS‘ usw. bleiben vorhanden. Es wird lediglich der Root-Zugang aktiviert, aber nichts gelöscht.
Download entpacken und die Datei recovery.img in den tools Ordner des SDK kopieren
Das Handy per USB mit dem PC verbinden (im normal angeschalteten Zustand)
Den Befehl: „./fastboot flash recovery recovery.img“ ausführen und das Handy abschalten („waiting for device“ wird angezeigt)
Galaxy in den Fastboot Modus starten. Abgeschaltetes Handy mit „Abheben“ und „Auflegen-/Powertaste“ gleichtzeitig gedrückt, starten. (Flash war erfolgreich wenn „writing ‚recovery‘ …OKAY“ angezeigt wird)
Galaxy startet wieder normal, dann per adb die RECTOOLS.tar.gz auf das Handy kopieren (Debug Modus muss aktiviert sein), der Befehl hierfür lautet: „./adb push rectools.tar.gz /sdcard/“, per sync sicherstellen dass die Daten vollständig auf den internen Flashspeicher geladen wurden: „./adb shell sync“
Handy abschalten und in den Recovery Modus starten (Lautstärke leiser Taste + Abheben + Auflegen)
Im Recovery Modus „enable su“ auswählen (siehe Foto, zum Vergrössern klicken), zur Bestätigung die Home Taste drücken (die kleine Taste zwischen zurück und Auflegen) und dann das Handy über „reboot system now“ neu starten
Das war es schon, das Galaxy kann nun Programme, die Root Zugriff erfordern ausführen. In den Anwendungen befindet sich nun das Programm „Superuser Whitelist“ welches eure Zustimmung abfragt, sobald ein Programm Root-Zugriff anfragt. Man kann das entsprechende Programm dann einmalig zulassen, oder ablehnen oder immer zulassen.
Sollte es Fragen zum Vorgehen geben, einfach einen Kommentar hinterlassen.