New in the Journal

Archive of all articles

From my feed reader

Microblog

Journal

Samsung Galaxy Nexus auf Original-Firmware ITL41F flashen

Ich bin seit ein paar Tagen stolzer Besitzer eines Samsung Galaxy Nexus mit dem neuen Android 4.0 (ICS). Leider war die Geduld nicht groß genug und ich habe am ersten Tag der Verfügbarkeit in Deutschland die Gelegenheit im Saturn-Markt ergriffen. Das Problem: die erste Charge von Saturn / Media Markt wurde wohl von Samsung eilig vor der Deutschen Markteinführung mit einem eigenen Build (ITL41F.I9250XWKK8) geflasht, in dem das Lautstärke-Problem bereits behoben ist. Dieser Build weicht vom offiziellen Google-Build (ITL41F) ab – unter anderem sind die Google-Anwendungen wie Google Maps und Google+ nicht mit dem offiziellen Zertifikat von Google signiert. In der Praxis führt das dazu, dass das Update auf Google Maps 6.0 mit einer Fehlermeldung “Die Paketdatei war nicht richtig signiert.” abbricht. Für das Problem gibt es bereits ein Ticket im Android-Bugtracker. Da neuere Chargen aber alle mittlerweile den “offiziellen” Build haben und Samsung ein Update-Tool für Windows veröffentlicht hat, mit dem man den offiziellen Build unter Windows flashen kann, ist die Hoffnung gering, dass das Problem mittels OTA-Update behoben wird. Deshalb musste ich mich notgedrungen an die Arbeit machen, mein Galaxy Nexus unter Ubuntu auf das “Stock” image zu flashen, um den kaputten Samsung-Build loszuwerden.

Achtung: bei diesem Vorgang werden sämtliche Daten auf dem Gerät gelöscht! Sie müssen also vorher gesichert werden! Der Vorgang geschieht außerdem auf eigene Gefahr!

Ich hatte bereits das Android-SDK in meinem Home-Verzeichnis unter ~/bin/android-sdk-linux installiert und die Verzeichnisse tools und platform-tools dem PATH hinzugefügt (dies wird u.a. auch in dieser Anleitung erklärt). Das SDK bringt leider nicht das Tool fastboot mit, das zum Flashen des originalen Android-Images notwendig ist. Die Binaries von Fastboot und ADB (letzteres ist aber auch im SDK enthalten) können über den zuvor genannten Link heruntergeladen werden. Ich habe einfach die fastboot-Binary in mein “platform-tools”-Verzeichnis im SDK-Ordner entpackt und die adb-Binary aus dem aktuellen SDK verwendet.

Nun muss das offizielle Image von Google heruntergeladen und entpackt werden. Wichtig: hier die Version “4.0.1 (ITL41F)” verwenden – denn in dieser ist der Lautstärke-Bug behoben. In diesem Verzeichnis sind Bootloader-, Baseband- und ein Android-Image sowie ein Shell-Skript zum Flashen enthalten.

Die weitere Prozedur kann auch in diesem Beitrag nachvollzogen werden: Bei den betroffenen Geräten ist der Bootloader bereits entsperrt (was an einem offenen Schloss beim Booten unterhalb des Google-Logos zu sehen ist). Um im Bootloader-Modus zu starten, muss das Gerät ausgeschaltet werden, anschließend Volume-Up- und Down-Regler gedrückt halten und das Gerät bei gedrückten Tasten einschalten. Das Gerät startet mit einem grünen Androiden im Bootloader-Modus. Daraufhin das Gerät per USB an den PC anschließen.

Um festzustellen, ob fastboot das Gerät erkennt, reicht ein fastboot devices auf der Konsole. Wird es nicht erkannt, erfolgt keine Ausgabe – falls doch, folgt eine Ausgabe mit der Seriennummer des Geräts. Bei mir war es notwendig, fastboot mittels sudo aufzurufen – woraufhin fastboot nicht mehr im PATH war – also musste ich ganz ausführlich werden: sudo /home/raphael/bin/android-sdk-linux/platform-tools/fastboot devices – dann wurde das Gerät angezeigt. Jetzt müssen eigentlich nur nacheinander die Befehle aus dem Shell-Skript im entpackten Ordner der Original Google-Images ausgeführt werden. Die Datei “flash-all.sh” kann man einfach in einem Texteditor öffnen und falls nötig die fastboot-Befehle anpassen. Original sieht die Datei so aus:

#!/bin/sh

# Copyright (C) 2011 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

fastboot flash bootloader bootloader-maguro-primekj10.img
fastboot reboot-bootloader
sleep 5
fastboot flash radio radio-maguro-i9250xxkk1.img
fastboot reboot-bootloader
sleep 5
fastboot -w update image-yakju-itl41f.zip

Ich habe – wie erwähnt – einfach die Befehle einzeln ausgeführt und “fastboot” jeweils ersetzt, also nicht direkt das Shell-Skript verwendet. Ich bin also in den Ordner mit den Images gewechselt, habe einfach folgende Befehle nacheinander auf der Konsole ausgeführt und auf eine positive Bestätigung bzw. den Neustart des Geräts in den Bootloader abgewartet, damit entfallen die sleep-Zeilen aus dem Original-Shellscript.

cd /home/raphael/Downloads/yakju-itl41f # in den Ordner, in den die Images entpackt wurden, wechseln
sudo /home/raphael/bin/android-sdk-linux/platform-tools/fastboot flash bootloader bootloader-maguro-primekj10.img
sudo /home/raphael/bin/android-sdk-linux/platform-tools/fastboot reboot-bootloader
sudo /home/raphael/bin/android-sdk-linux/platform-tools/fastboot flash radio radio-maguro-i9250xxkk1.img
sudo /home/raphael/bin/android-sdk-linux/platform-tools/fastboot reboot-bootloader
sudo /home/raphael/bin/android-sdk-linux/platform-tools/fastboot -w update image-yakju-itl41f.zip

Das letzte Kommando – das Flashen des Systems – dauerte bei mir etwa zwei Minuten, Bootloader- und Baseband-Flashen dauerte nur wenige Sekungen. Danach startet das Gerät neu – mit dem richtigen Android-Build von Google! Nun beginnt die Arbeit, alles wieder neu einzurichten…

comments powered by Disqus