Howto: Deutsches G1 rooten & CyanogenMod+Theme installieren

CyanogenMod Logo Ich will mal versuchen den Weg, den ich beschritten habe, um mein G1 mit Standard Android 1.5 (Cupcake, RC37) zu rooten und das alternative Betriebssystem Cyanogen zu installieren, hier zusammen zu fassen. Ich kann und will keine Garantie dafür übernehmen, dass bei euch irgendetwas kaputt geht, die Gefahr besteht immer. Allerdings haben es bereits viele gemacht, daher gehe ich davon aus, dass die Wahrscheinlichkeit ziemlich gering ist. Trotzdem: wer nicht weiß, was rooten bedeutet oder sich unsicher ist, wofür das ganze gut ist, der sollte es vielleicht lieber lassen.

Zum Zeitaufwand: Wenn alles einigermaßen glatt läuft solltet ihr in ~2 Stunden euer G1 wieder funktionsfähig und grundlegend eingerichtet vor euch finden. Ich habe sehr viel länger gebraucht, habe allerdings auch viel rumprobiert.

Aktuelle Info: Ich habe vor ca. einer Woche mein G1 gerootet, da gab es noch keine Bedenken mit Cyanogen. Mittlerweile hat sich Google beschwert, dass dort auch die lizenzrechtlich geschützten Programme wie Gmail, Maps und Market mit ausgeliefert werden. Angestrebt ist momentan, Ersatzsoftware dafür zu schreiben bzw. einzubinden. Mehr bei heise.de und auf der offiziellen Seite.
Aufgrund dieser Lizenzprobleme wurden die Downloads entfernt. Am Ende des Artikels habe ich noch kurz etwas zu Alternativen geschrieben.

Aber nun zur Anleitung…

Inhalt:


Vorbereitungen

An Downloads braucht ihr:

  • Alternativen Bootloader (HardSPL)
       [link] [lokal] (177 KB) [md5: 6502af25b9e9fbe1322cc405559af1ca]
  • UK_RC7-Build der Firmware zum Downgraden
       [link] [lokal] (43 MB) [md5: b253b71fad2ed0352bcb58c4966b9a25]
  • cm-recovery.img zum flexiblen Installieren von ROMs
       [link] [lokal] (4 MB) [md5: f5135a878c705215f4012786e4261cfe]
  • Aktuelle Version von CyanogenMod1
       [link] [lokal] (48 MB) [md5: 8c5a4ed37a8856054f22988372295fc8]

Das ganze funktioniert ohne einen speziellen Kartenleser, das G1 reicht dazu vollkommen aus. Am besten sichert ihr euch vorher die SD-Karte und schreibt euch wichtige Einstellungen auf2 — es wird alles gelöscht sein hinterher.

Ich empfehle, dass der Akku vollständig geladen ist und ihr zusätzlich eine externe Stromversorgung anhängt. Wenn zwischendurch der Akku leer gehen sollte und dadurch ein Update abbricht kann das G1 kaputt gehen.

Ich werde mich im Laufe der Anleitung rein auf Linux beschränken. Wenn ihr keines zur Verfügung habt, empfehle ich eine Live-CD wie Knoppix oder Ubuntu.

Goldcard-Image generieren

Neben den obigen Downloads braucht ihr auch noch ein Image für die Goldcard. Die Goldcard ist eine modifizierte Speicherkarte, mit der sich beliebige Updates installieren lassen. Wir brauchen sie nur einmal, um einen alternativen Bootloader zu installieren. Der wird sich dann nicht mehr darum scheren, von welcher Karte die Updates kommen.

Die CID der Speicherkarte auslesen Also, installiert euch den Astro File Manager, startet ihn und geht ins Verzeichnis /sys/class/mmc_host/mmc1/mmc1:XXXX/ wobei die XXXX irgendwelche hexadezimalen Zahlen sind. Öffnet die Datei “cid” als Text und schreibt euch die Zahlenkolonne, die dort steht, ab.3

Bei mir kommt da folgende Zahlenkolonne, die ich in 2er-Grüppchen teile:
035344535530314780601c619e00822e
03 53 44 53 55 30 31 47 80 60 1c 61 9e 00 82 2e

Diese 2er-Grüppchen müsst ihr jetzt umdrehen, so dass ihr (für meinen Fall z.B.) folgendes erhaltet:
2e 82 00 9e 61 1c 60 80 47 31 30 55 53 44 53 03
2e82009e611c60804731305553445303

Mit dieser Zahlen-Buchstaben-Kombination und eurer Email-Adresse könnt ihr euch auf dieser Seite ein Image für die Goldcard (goldcard.img) zuschicken lassen. Nicht über die Seite wundern, sie ist … ähm … simpel, aber es funktioniert. Zumindest sagen das auch ziemlich viele Foren-Berichte, die ich gelesen habe.


Vorbereiten der Speicherkarte

Die Speicherkarte muss als FAT32 mit 4096 Bit Blockgröße formatiert sein, damit der neue Bootloader erkannt wird und installiert werden kann. Steckt das G1 an den PC und gebt die USB-Verbindung frei. Mit dem Befehl4 mount erhaltet ihr eine Auflistung über die momentan eingehangenen Geräte. Das Relevante liefert bei mir folgende Zeile:
/dev/sdh1 on /media/disk type vfat ↩
(rw,nosuid,nodev,uhelper=hal,shortname=mixed,uid=1000, ↩
utf8,umask=077,flush)

Das gesuchte Gerät ist also unter /dev/sdh abgelegt, die Partition ist unter /dev/sdh1 zu finden. Um fortzufahren muss das Gerät ausgehangen sein, z.B. macht ihr das durch einen Rechtsklick auf das Gerät im Dateibrowser und sagt dort sowas wie “aushängen” oder durch den Befehl sudo umount /dev/sdh.

Bei mir hat es ziemlich lange daran gehapert, dass zwar die Karte auf FAT32 formatiert war, die Partitionstabelle aber FAT16 gesagt hat. Also überprüfen wir das mit fdisk:
andre@andre-pc:~$ sudo fdisk /dev/sdh

Mit “p” erhaltet ihr einen Überblick, wie das Medium momentan Partitioniert ist, bei mir sah das so aus:
Gerät boot. Anfang Ende Blöcke Id System
/dev/sdh1 1 984 991747+ 6 FAT16

Wenn da statt “FAT16″ “W95 FAT32″ steht könnt ihr direkt mit Strg+C das Programm verlassen und weiter mit dem Formatieren machen. Ansonsten müsst ihr durch drücken von “t” den Partitionstyp auf den Hexcode “b” ändern. Anschließend sollte die Übersicht dann (“p” drücken) so aussehen:
Gerät boot. Anfang Ende Blöcke Id System
/dev/sdh1 1 984 991747+ b W95 FAT32

Um die Änderungen zu speichern mit “w” beenden.

Anschließend könnt ihr die Karte formatieren:
andre@andre-pc:~$ sudo mkfs.vfat -F 32 -s 8 /dev/sdh1

Neben dem Formatieren müssen wir die Karte noch zu einer Goldcard machen. Das hat den Hintergrund, dass wir hier ein Update5 sowie den alternativen Bootloader einspielen wollen, dass eigentlich gar nicht vom Hersteller gewollt ist. Mit einer Goldcard übergeht man die Überprüfung, ob es sich um ein zertifiziertes Update handelt. Der später installierte HardSPL (SPL für Second Program Loader) ist eine Weiterentwicklung des SPLs für das Entwickler-G1 und benötigt keine Goldcard mehr.6

Um die Goldcard zu erstellen das Image mit “dd” in die ersten Sektoren der Karte schreiben.7 Wichtig: sdh nicht sdh1!
andre@andre-pc:~$ sudo dd if=goldcard.img of=/dev/sdh

Um die Karte wieder beschreiben zu können beendet am Besten im G1 die USB-Freigabe und erteilt sie direkt danach wieder. Jetzt sollte auch wieder die SD-Karte gemountet sein und ihr könnt folgende Dateien auf die Karte kopieren:

  • cm-recovery-1.4.img
  • update.zip
  • DREAIMG.NBH (aus dem entpackten DREAMIMG-RC7.zip)

Beachtet, dass ihr das DREAMIMG-RC7.zip Archiv vorher entpacken müsst und die Dateinamen genau so sein müssen.


Downgraden

Bootloader (erreichbar über Power+Kamera) Ihr schaltet das G1 jetzt aus und startet es danach mit den Buttons für Power+Kamera.8 Danach solltet ihr in den Bootloader mit den Regenbogenfarben kommen, der dann hoffentlich das DREAIMG.NBH erkennt.
Wenn nicht (bei mir stand z.B. ganz kurz “Image not found” und dann wieder Regenbogenfarben), dann habt ihr beim Erstellen der SD-Karte etwas falsch gemacht und der Bootloader will das Image zum Downgraden nicht finden. Ist nicht weiter schlimm, wiederholt dann einfach die Schritte oben und achtet z.B. auf Tippfehler bei der CID.

Downgraden - Image wird installiert Downgraden - Image zum Downgraden gefunden Dass es geklappt hat seht ihr daran, dass ihr die Auswahl bekommt, mit dem Power-Button das Update zu starten.

Nach dem flashen sollte wieder der Regenbogenbildschirm auftauchen und ihr könnt das G1 mit Aufnehmen + Ablegen + Home gleichzeitig neustarten. Tadaaa! Erster Schritt erfolgreich, ihr habt nun auf die Version RC7 gedowngraded.9


Rooten und Recovery-ROM

telnetd starten Der Sinn des Downgraden ist, dass wir einen Bug ausnutzen können, um das Handy zu rooten, also Root-Zugriff zu erlangen. Wenn ihr im normalen Home-Screen (Einrichtung überspringen Einrichtung kann leider in der Version noch nicht übersprungen werden, der Zwang wurde erst später entfernt. Denkt an die APN-Einstellungen!) seid, drückt ihr auf der Tastatur zweimal Enter und danach “telnetd” und noch einmal Enter. Dabei öffnen sich die Kontakte, nicht wundern, das ist vollkommen normal.

Das Handy sollte bei euch im privaten WLAN sein und ihr solltet die IP kennen (ich habe dazu einfach eine feste IP in den WLAN-Einstellungen vergeben). Auf dem Linux-Rechner verbindet ihr euch dann mit dem Befehl
andre@andre-pc:~$ telnet 192.168.1.42 zum G1, wobei natürlich die IP durch die zu ersetzen ist, die euer G1 nutzt. Ihr solltet nun eine Eingabeaufforderung mit einer führenden # haben. Danach wird mit den folgenden Befehlen das Image für die Recovery-Konsole geladen (und somit Root-Zugang verschafft):
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd sdcard
flash_image recovery cm-recovery-1.4.img
cat cm-recovery-1.4.img > /system/recovery.img

Herzlichen Glückwunsch, euer G1 hat jetzt Root und eine alternative Recovery-Konsole, die sich über nicht-signierte Updates nicht schert.


Alternativen Bootloader (HardSPL) installieren

Dieser Schritt kann angeblich übersprungen werden, wenn ihr eh nur CyanogenMod installieren wollt. Wenn ihr euch aber die Möglichkeit, andere ROMs wie z.B. die ebenfalls weit verbreitete JesusFreke-ROM installieren zu können, offenhalten wollt, dann müsst ihr das machen.10

Der Vorgang des Einspielens des Updates Die Recovery-Konsole, von der aus Updates eingespielt werden können Schaltet das G1 aus und mit Power+Home wieder ein. Dadurch gelangt ihr in die Recovery-Konsole, in der ihr Updates installieren könnt. Hier wählt ihr [Alt+S] apply sdcard:update.zip mit den Trackball oder Alt+S auf der Tastatur aus, so dass der HardSPL mit der update.zip installiert wird. Anschließend mit Home+Zurück zum Booten fortfahren.


Alternatives ROM (CyanogenMod) installieren

Das installieren von alternativen ROMs ist immer gleich: Zip runterladen, in das Wurzelverzeichnis (also kein Unterordner) der Speicherkarte legen, mit Power+Home in die Recovery-Konsole starten und dort das Update installieren.
Da Cyanogen Apps-to-SD unterstützt bereiten wir aber erst unsere Speicherkarte vor. Die Programme können nur auf die Speicherkarte gelegt werden, wenn eine ext3-Partition11 vorhanden ist. Da Kamera etc. die Daten aber auf der FAT32-Partition ablegen wollen, empfiehlt es sich, auch eine mit FAT32 zu erstellen.

Findet heraus, wie die Speicherkarte unter Linux eingebunden wird12 und startet wieder fdisk:
andre@andre-pc:~$ sudo fdisk /dev/sdg

Anschließend löscht ihr mit “d” die bestehende Partition und erstellt mit “n” zwei neue Partitionen. Ich empfehle ~500 MB für die Programm-Partition und den Rest für FAT32. Außerdem sollte die FAT32-Partition die erste sein — vielleicht klappt es auch anders rum, aber sicher ist sicher. Mit t könnt ihr den Typ der Partition ändern (“b” für FAT32) und am Ende sollte es dann in etwa so aussehen wie bei mir:
Befehl (m für Hilfe): p
[...]
Gerät boot. Anfang Ende Blöcke Id System
/dev/sdg1 2 46247 1433626 b W95 FAT32
/dev/sdg2 46248 62298 497581 83 Linux

Schnell noch Formatieren mit:
andre@andre-pc:~$ sudo mkfs.vfat -F 32 /dev/sdg1
andre@andre-pc:~$ sudo mkfs.ext3 -m 0 /dev/sdg2

USB-Verbindung trennen und wieder herstellen, damit die Karte eingebunden wird. Auf den FAT32-Bereich könnt ihr jetzt Backups wie z.B. gemachte Fotos etc. kopieren sowie in das Wurzelverzeichnis das Archiv für das ROM, also in unserem Fall die update-cm-4.0.4-signed.zip.

Die Recovery-Konsole, von der aus Updates eingespielt werden können Schaltet das G1 aus und mit Power+Home wieder ein, so dass ihr in die Recovery-Konsole gelangt. Zunächst solltet ihr das bisherige Betriebssystem löschen, um Fehler beim Updaten zu vermeiden.13 Das macht ihr durch den Menüpunkt [Alt+W] wipe data/factory reset, den ihr entweder mit dem Bällchen oder durch Alt+” auf der Tastatur ansteuern könnt.
Danach wählt ihr den Punkt [Alt+A] apply any zip from sd und sucht in der nächsten Anzeige das Archiv für das alternative Betriebssystem auf der Speicherkarte. Installiert es gemäß den Anweisungen auf dem Bildschirm und startet danach neu.

Neuer Bootscreen des CyanogenMod-ROMs Der erste Neustart kann etwas länger dauern, wundert euch also nicht. Nach der Einrichtung14 seid ihr fertig und könnt unter den Einstellungen unter Telefoninfo begutachten, dass ihr jetzt ein alternatives Betriebssystem installiert hab. Auch der Speicherbedarf unter Speicherkarte zeigt nun ein erfreulicheres Bild, da das Betriebssystem nun die Programme automatisch auf die Speicherkarte installiert.

Solltet ihr wieder zurück zur Orginalfirmware und ohne Root-Zugriff wollen, einfach die Schritte bis zum Installieren der DREAMIMG.NBH wiederholen. Anstatt dann Telnet zu starten und das Handy zu rooten die angebotenen Updates der Reihe nach einspielen und ihr solltet euch wieder im Ausgangszustand befinden.


CM-Updater & Theme installieren

Der CM-Updater zum aktuell halten und Themes installieren Um das System aktuell zu halten gibt es den CM-Updater, den ihr als Installationspaket von der Website runterladen und installieren könnt. Über diesen Updater könnt ihr auch Themes installieren, entweder indem ihr das Archiv auf der Speicherkarte ablegt oder einen entsprechenden 2D-Barcode mit dem Barcodescanner auslest. Nach der Installation eines Themes startet das G1 neu und ihr habt einen neuen, frischen Look.15

Die Themes bekommt ihr am Besten über das Forum xda-developers – achtet nur darauf, dass das Theme auch zu eurer Versionsnummer passt (steht meistens im Titel).

     Mein Home-Bildschirm    Der Beweis: es ist CyanogenMod installiert    Die Anwendungen wandern auf die Speicherkarte -> Jede Menge Platz


Alternativen zu CyanogenMod

Wie oben erwähnt gibt es momentan (nachvollziehbare) Lizenzstreitigkeiten zwischen Google und dem Entwickler der Cyanogen-ROM.

Soweit ich das sehe betrifft das nicht die Recovery-Konsole, so dass diese ziemlich sicher weiterhin verfügbar sein wird. Notfalls gibt es aber auch die etwas abgespecktere, auf der die cm-recovery.img basiert:16 [link] [lokal] [md5: 8d055734022496906244b71f849a6b6d].

Als alternatives Betriebssystem könnt ihr z.B. das weit verbreitete JF (von JesusFreke) verwenden, näheres dazu gibt es hier bzw. hier.


… noch ein paar Links

- Offizielle Seite des CyanogenMod-Betriebssystems: [link]
- Interessante Foren: [englisch] [deutsch]
- Für die APN-Einstellungen ganz hilfreich: [link]
- Jede Menge Themes: [link] (und das Theme, das ich benutze: [link])
- Das Howto, das ich im Wesentlichen benutzt habe: [link]

 

Fußnoten

  1. Download wegen Lizenstreitigkeiten entfernt []
  2. Zumindest das, was ihr braucht. Ich habe mir z.B. meine installierten Programme rausgeschrieben. []
  3. Ich habe den gesamten Text aus Faulheit kopiert und ihn mir per Mail geschickt. []
  4. Alle Befehle werden in einer Konsole bzw. in einem Terminal eingegeben. []
  5. bzw. eigentlich eher ein Downgrade []
  6. Entwickler sollen eben die Freiheit haben, auch alternative Sachen installieren und ausprobieren zu können. []
  7. Ihr solltet euch dabei im Pfad befinden, wo die goldcard.img gespeichert ist. Pfad wechseln macht ihr mit “cd”. []
  8. gleichzeitig natürlich ;) []
  9. Horror, diese gedenglischten Wörter… []
  10. z.B. auch wegen der aktuellen Probleme mit CyanogenMod. []
  11. Alternativ geht auch ext2 und ext4 []
  12. siehe oben []
  13. Bei mir wollte das G1 danach nicht mehr starten und hing beim Bootscreen — in die Recovery-Konsole kam ich aber noch. []
  14. denkt an eventuelle APN-Einstellungen! []
  15. Das ist jetzt etwas kürzer, weil mich so langsam die Lust verlässt und es eigentlich auch nicht so schwer ist. []
  16. mit der ich zuerst gearbeitet habe []