HTC magic van Android 1.5 naar Android 2.2

Een half jaar geleden kocht ik mij een telefoon. Niet zomaar een telefoon, maar een HTC Magic, met een Android-besturingssysteem. Met deze telefoon kan je bellen en SMS'en, maar dat is natuurlijk niet waarom ik die telefoon kocht. Wel omdat het eigenlijk een zeer draagbaar Linuxcomputertje is, waarmee je allerlei leuke dingen kan doen.

Ik heb voor een HTC Magic gekozen, omdat dat de enige Androidtelefoon was die de telefoonwinkel in de buurt kon bestellen. De HTC Magic kwam met Android 1.5. En ik was er heel tevreden mee. Je kan allerlei leuke toepassingen op installeren, ook gratis toepassingen, en toepassingen waar niet eerst een soort van Big Brother zoals Steve Jobs zijn fiat voor moet geven.

Android 1.5 dus. Maar ondertussen bestaat er ook al Android 2.2, dat er veel hipper uitziet, en veel leuke nieuwigheden heeft. Maar mijn telefoon kwam niet met het voorstel om te upgraden. Ik weet niet of dat aan de fabrikant van de telefoon ligt (HTC) of aan de provider van telefonie (Proximus), maar upgrades werden niet aangeboden. Jammer.

En toen kwam de dag dat ik het licht zag. :-) Ik was aan het luisteren naar episode 176 van Linux Outlaws (geweldige podcast overigens). In deze episode vertelde Dan hoe hij zijn HTC Desire upgradede naar Android 2.2, door CyanogenMod 6 op zijn HTC desire te 'flashen'. Dat ging naar verluidt vrij vlotjes. Dus ik dacht: dat kan ik ook.

Uiteraard kon ik niet dezelfde werkwijze volgen als hij. Blijkbaar is het voor ieder type telefoon een beetje anders. Dus moest ik op zoek naar informatie op het internet. Ik vond vanalles. Ik moest het alleen nog proberen.

Het blijft natuurlijk spannend. Ik heb genoeg betaald voor mijn telefoon, het zou jammer zijn moest ik hem om zeep helpen. Maar langs de andere kant had ik de telefoon niet gekocht om mee te bellen, maar wel om er leuke dingen mee te doen. Er zat niets anders op: ik moest upgraden. Een stap-voor-stap-handleiding had handig geweest. Maar die was er niet. Vandaar dat ik besloot om te documenteren hoe ik het gedaan had, voor het geval het nuttig zou zijn voor iemand anders.

Zoals gezegd, is deze procedure zeer hardware-afhankelijk. Als je hetzelfde type telefoon hebt als ik, kan je deze handleiding volgen. Zo niet, kijk je best naar de links onderaan deze post. (Uiteraard kan ik niet aansprakelijk gesteld worden moest er toch iets mis gaan. Maar bij mij is het alleszins op deze manier gelukt.)

BELANGRIJK: Backup voor de zekerheid eerst alle gegevens die je achteraf nog nodig denkt te hebben. Uiteraard was dat het eerste dat je deed toen je begon te overwegen je telefoon te upgraden. :-)

Eerst moet je dus te weten komen wat het type van je telefoon is. Hiervoor zet je hem volledig uit. Dan zet je hem opnieuw aan, terwijl je de 'terug'-knop induwt. Als alles goed loopt, krijg je dan een schermpje met 'skatende robots', en informatie die er ongeveer als volgt uitziet:

SAPPHIRE PVT 32A SHIP S-ON H
HBOOT-1.33.009 (SAPP10000)
CPLD-12
RADIO-3.22.20.17
MAY 8 2009,21:02:32

Wat van belang is is de '32A' en de 'H' op de eerste lijn, en ook de 'RADIO-3.22.x' wat verder naar beneden. Als ik goed begrepen heb wat ik op het internet heb gelezen, is dat voldoende om deze procedure te gebruiken. Herstart je telefoon.

De upgrade naar Android 2.2 zal in 2 stappen gebeuren. Eerst 'flashen' we een nieuwe 'recovery image' naar de telefoon. Daarna flashen we het 'echte' OS.

Je kan je telefoon booten in 'recovery mode'. Dat doe je door de telefoon uit te zetten, en tijdens het opnieuw aanzetten de knop met het huisje ('home') ingedrukt te houden. Maar je moet dat nu niet per se proberen, want je krijgt enkel een of andere afbeelding te zien, en verder doet je telefoon niets meer. Misschien omdat ik geen extern toetsenbord heb. Of misschien kan je nog wel dingen doen vanop je PC via de Android-SDK. Maar op het eerste zicht kreeg ik er geen leven in, en 'van armoe' heb ik dan maar de batterij uit de telefoon gehaald om hem terug te starten.

We gaan de originele 'recovery image' vervangen door iets zinvoller: de 'amon_ra-recovery'. Deze image maakt het mogelijk je huidig OS te backuppen (handig) en een ander operating system te flashen (ook handig). Ook interessant: je kan die recovery image eerst uittesten, alvorens je ze installeert.

Het vervangen van de recovery image zullen we doen vanop een PC, waar we de telefoon aan koppelen via de USB kabel. Op mijn computer draait Ubuntu 10.10. Maar als je een ander OS gebruikt, zou het ook moeten gaan.

Om dat allemaal in orde te krijgen, moet je eerst je telefoon zodanig instellen dat je er goed mee kan prutsen.

Ga via instellingen naar toepassingen, en vink aan dat er software van onbekende bronnen geïnstalleerd mag worden.

Ook onder 'instellingen', 'toepassingen' vind je 'Ontwikkeling'. Daaronder zet je ook 'USB-foutopsporing' aan.

En dan: aan de slag.

Download de 'amon_ra recovery image' van http://forum.xda-developers.com/showthread.php?t=530492. Onderaan vind je de downloads. Kies een van de recentste, met een 'H' in de naam (om wille van de H uit 'SAPPHIRE PVT 32A SHIP S-ON H'). Er zijn er zo 2, ik koos de image zonder 'cyan' in de naam.

Download de Android SDK. Die vind je op http://developer.android.com/sdk/. In mijn geval had ik het .tgz-bestand voor Linux nodig.

Download ook de 'fastboot tool' van http://developer.htc.com/adp.html#s2. Voor Linux is dat een zip-bestand met daarin een executable.

Pak het tgz-bestand uit, 'cd' naar 'android-sdk-linux_x86/tools', en zet daar de executable uit fastboot.zip

Herstart je telefoon terwijl je op de terugknop drukt, zodat je terug de skatende robots te zien krijgt. Connecteer je telefoon aan je PC via het USB-kabeltje.

Geef op je PC het volgende commando in vanuit de 'tools' directory:

fastboot boot /path/to/recovery-RA-sapphire-vxxxxH.img

(het juiste pad en de juiste bestandsnaam nemen, uiteraard).

Normaalgezien boot je telefoon nu in de nieuwe recovery mode. Je kan nu al een backup van je OS maken naar je sd-card. (Nandroid backup.)

Nu we gezien hebben dat de amon_ra image werkt op je telefoon, willen we deze image installeren als recovery image. Maar om dit te kunnen doen, heb je root-rechten nodig op je telefoon. Standaard is dat uitgeschakeld, maar met behulp van 'Androot' is dat gauw gefixt. Herstart je telefoon, download en installeer Androot van http://software2tech.com/tag/download-universal-androot/, start het op, en klik op de knop 'Root'.

Koppel je telefoon aan je PC via de kabel, maar zorg ervoor dat de sd-kaart niet 'gemount' wordt. 'cd' naar de 'tools'-folder van de android SDK, en...

  1. sudo ./adb devices Je telefoon wordt gedetecteerd. Waarschijnlijk wel, want anders had je daarnet de image ook niet kunnen booten.
  2. sudo ./adb push /path/to/recovery-RA-sapphire-vxxxxH.img /sdcard/recovery.img˙ (Niet zeker of die sudo hier nodig is.) Dit kopieert gewoon het imagebestand naar je sd-kaart. Maar dat werkt enkel op deze manier als de sd-kaart niet gekoppeld is, vandaar.
  3. sudo ./adb shell Dit opent een shell voor je telefoon.
  4. su Het lijkt alsof de shell blijft hangen, maar op het schermpje van je telefoon verschijnt de boodschap dat een proces su-rechten wil. Daar zal je moeten bevestigen. Hiervoor heb je een 10-tal seconden tijd. Ben je te laat, doe je het gewoon nog eens opnieuw.
  5. flash_image recovery /sdcard/recovery.img Dit overschrijft de recovery image van je telefoon.

Als je de telefoon nu reboot terwijl je het huisje ingedrukt houdt, zal je telefoon je nieuwe recovery image booten. Hoera!

Nu wordt het tijd dat we het OS gaan vervangen. Download het volgende van internet, en plaats de zip-bestanden op je sd-card (ofwel via adb push, ofwel door de kaart te mounten, en alles te kopieren).

  1. De recentste 'cyanogen mod' van http://wiki.cyanogenmod.com/index.php?title=Latest_version#HTC_Magic
  2. De 'EBI1'-kernel van http://wiki.cyanogenmod.com/index.php?title=Latest_version#EBI1

Herstart nu de telefoon in recovery mode.

  1. Kies achtereenvolgens 'Wipe', en 'Wipe data/factory reset'. (Volgens wat ik hier en daar las, zou 'wipe dalvik-cache' genoeg zijn, maar dat had ik de eerste keer geprobeerd, en dat lukte niet. Maar toen had ik ook de google apps geflasht, misschien veroorzaakte dat het probleem.)
  2. Daarna kies je 'Flash zip from sdcard', en selecteer je update-cm-blabla.zip (de image van cyanogen mod).
  3. De image wordt gecontroleerd en geflasht. Heel subtiel kan je op een progressbalkje in de achtergrond de vooruitgang zien.
  4. Doe hetzelfde voor de tweede zip die je downloadde.
  5. Herstart de telefoon. Zeker bij de eerste opstart kan het booten even duren.
  6. KLAAR!

Zoals gezegd, is het bij mij niet van de eerste keer gelukt. Het opstartscherm met de blauwe robot bleef maar opnieuw starten. Ik had toen enkel de 'dalvik cache' 'gewipet', en ik had ook geprobeerd de Google Apps te flashen via de 'tiny' image van http://wiki.cyanogenmod.com/index.php?title=Latest_Version#Google_Apps.

Toen heb ik heel het systeem 'gewipet', en enkel de cyanogenmod en de EBI1-kernel geflasht. Dat lukte wel.

Referenties:

Commentaar

Comments powered by Disqus