HTC Desire flashen (2)

Dit verhaal zal voor vrijwel niemand relevant zijn. Het gaat namelijk over een smartphone van 5 jaar oud. (Maar mocht je nog ergens zo’n telefoon hebben liggen: laat het me weten, en gooi ‘m nog niet weg; als mijn huidige stuk gaat, ben ik er erg blij mee.)
Alles dat ik hieronder beschrijf, heb ik op een Linux-laptop gedaan; waar nodig zul je zelf de vertaalslag moeten maken naar Windows of Mac.

Zo’n anderhalf jaar geleden beschreef ik al hoe ik een HTC Desire flashte. Toen ging het erom dat ik een Desire had gekregen waarop een custom ROM stond, en ik terug moest naar een stock ROM (maar dan wel met root).
Die telefoon heeft het zware buitenleven van een zwerver uiteindelijk niet overleefd, maar onlangs kreeg ik een kerstkadootje: een nieuwe tweedehands Desire.

Deze nieuwe telefoon was nog helemaal zoals hij uit de fabriek was gekomen, met Froyo (Android 2.2) als besturingssysteem. Het was dus aan mij om het apparaat te rooten (beheerdersrechten verkrijgen), en hem direct te upgraden naar Android 2.3 (Gingerbread).
De 2 belangrijkste redenen om root te willen hebben, zijn voor mij het kunnen installeren van een firewall, en het kunnen verwijderen van een aantal systeemapplicaties; en met ‘systeemapplicaties’ bedoel ik dan die applicaties die door de fabrikant op de systeempartitie geïnstalleerd zijn, maar die alleen maar ontwikkeld zijn om mijn privacy te schenden, zoals ‘Aandelen’, ‘Nieuws en weer’, ‘Gmail’, ‘Facebook’, ‘Twitter’, enzovoort.

Als je het verhaaltje hieronder leest, denk je waarschijnlijk ‘dat is een eitje’. Ik moet eerlijk zeggen dat het me enige dagen gekost heeft voordat ik eindelijk zover was.
In eerste instantie was ik begonnen met wat nu stap 2 is (het verkrijgen van root). Het duurde even voordat ik doorhad dat ik, zelfs als ik de systeempartitie read-write gemount had, niet naar die partitie kon schrijven, en dus geen permanent root kon krijgen. Hiervoor moest ik eerst S-OFF (security off) zien te krijgen. Maar om S-OFF te krijgen, moest ik eerst root hebben. Uiteindelijk was het de fabrikant zelf die me uit deze kip-ei-situatie hielp.

Voordat ik begin, wil ik nog even 2 dingen zeggen:

Allereerst heb ik niets van wat ik hieronder beschrijf zelf verzonnen of ontwikkeld. Ik heb alleen informatie verzameld van heel veel verschillende websites, en die gebundeld in dit verhaaltje. Het echte werk is gedaan door anderen.

En allertweedst moet ik even melden dat ik geen enkele verantwoording accepteer voor wat jij doet of nalaat naar aanleiding van dit verhaaltje. Als jouw telefoon, na het al dan niet juist opvolgen van deze aanwijzingen, veranderd is in een hele dure baksteen, dan heb jij er die baksteen van gemaakt, en niet ik.
Ik adviseer je van harte je telefoon zo te laten als de fabrikant hem bedoeld heeft.

Stap 0: voorbereiding

Als je het op dezelfde manier doet als ik, kost de voorbereiding je een dag of wat: zoek alles op dat je op internet kunt vinden over het rooten van de HTC Desire, en lees dat een keer of 3, liefst in een onlogische, en steeds andere volgorde.

Wil je er iets minder tijd aan besteden, installeer dan adb en fastboot. Deze 2 programmaatjes maken deel uit van de Android SDK (Software Development Kit). Als je Arch Linux gebruikt, hoef je niet de hele SDK te installeren, maar kun je android-sdk-platform-tools uit de AUR halen.

Doe na de installatie even

# adb --help

en

# fastboot --help

om te zien wat je precies geïnstalleerd hebt.
Beide programma’s gebruik je om met de telefoon te communiceren; adb als de telefoon gewoon aan staat, en fastboot als de telefoon in de bootloader staat. Uiteraard moet in beide gevallen de telefoon met een USB-kabel aangesloten zijn op je computer, en in de telefoon moet USB-foutopsporing ingeschakeld zijn (Instellingen / Applicaties / Ontwikkeling).
Beide programma’s voer je uit als root.

Hoe ik een geroote ROM gemaakt heb, heb ik bij mijn vorige flash al beschreven, dus daar ga ik niet te diep op in. In het kort: ROM downloaden van shipped-roms.com, en aanpassen met Android Kitchen.

Eén van de stappen hieronder vereist een SD-kaart in de telefoon (ik ben vergeten welke stap). Ik heb echter ook ergens de waarschuwing gelezen dat tijdens het proces de SD-kaart geformatteerd zou kunnen worden. Zorg dus dat er een SD-kaart in de telefoon zit waarvan het niet erg is als je de data die erop staat, kwijtraakt.

Stap 1: unlock bootloader

Zoals ik in mijn inleiding al schreef, liep ik tegen een kip-ei-dingetje aan: om het apparaat te kunnen rooten, moest ik S-OFF hebben, en om S-OFF te kunnen krijgen, had ik root nodig.
In mijn vorige leven, als ICT’er, zou ik een paar dagen vrij genomen hebben, een krat bier en een paar dozen frituursnacks aangeschaft, en Arnoud gebeld; ik twijfel er niet aan dat we erdoorheen gebroken zouden zijn.
Nu, zwervend door Frankrijk, met niet meer dan een 10-inch netbook, Arnoud op 1200 kilometer afstand, en bier en snacks ruimschoots boven mijn budget, was ik blij dat HTC zelf te hulp schoot.

De fabrikant van mijn telefoon heeft besloten 1 laagje van de verschillende laagjes beveiliging te verwijderen voor mensen die echt heel graag een andere ROM willen installeren. Als je daar gebruik van wilt maken, ga je naar de pagina Unlock Bootloader op HTCdev.com. Volg daar de aanwijzingen, en je telefoon is klaar om geroot te worden.

Stap 1½: update ROM

Het kan zijn dat je tijdens dat proces ziet dat je eerst een update moet installeren op je telefoon. Gelukkig was dat bij mij het geval, want dat maakte het toch nog een beetje interessant.

Want hoewel het unlocken van de bootloader door HTC netjes wordt ondersteunt voor de 3 belangrijkste besturingssystemen (Windows, Mac, Linux), is de update er alleen als .exe-bestand voor Windows. Maar dat wil natuurlijk niet zeggen dat ik die niet geïnstalleerd krijg…

Eerst halen we de ROM uit dat bestand, zoals ik dat ook in mijn vorige verhaaltje al beschreef:
Start het .exe-bestand met Wine. Klik niet door als de InstallShield Wizard is gestart; hij zal crashen. Laat in plaats daarvan het venster open staan, en zoek het bestand rom.zip op:

$ find ~/.wine/c_drive/ -type f -name rom.zip -print

Kopieer het gevonden bestand naar een andere directory, en druk op Cancel in de installer.

Koppel nu je telefoon aan je computer (USB-foutopsporing aan), en installeer de ROM:

# adb reboot bootloader
# fastboot oem rebootRUU
# fastboot flash zip rom.zip
# fastboot reboot

(En rom.zip is dan natuurlijk het bestand dat je daarnet uit de installer gepulkt hebt.)

Hierna kun je op HTCdev.com verder met het unlocken van je bootloader.

Stap 2: root

Voor het rooten van je telefoon kun je verschillende programma’s en apps downloaden. Maar ik zit hier inmiddels zo diep in met mijn hoofd, dat ik het liever vanaf mijn vertrouwde command line doe; dan hoef ik ook niet te zoeken naar een programma dat specifiek voor Linux geschreven is.

Ik download daarom SuperOneClick versie 1.7 van deze pagina; dat was een vrij willekeurige, maar daarom nog geen verkeerde keuze. SuperOneClick is een .NET-applicatie, maar dat maakt niet uit, want we gebruiken het toch niet… We halen er alleen een paar bestandjes uit, en zetten die op de telefoon.

# unzip SuperOneClickv1.7-ShortFuse.zip
# cd SuperOneClickv1.7-ShortFuse
# adb install Superuser.apk
# adb push psneuter /data/local/tmp/
# adb push su-v3 /data/local/tmp/

We hebben nu 1 app op de telefoon geïnstalleerd, en 2 bestanden naar de telefoon gekopieerd. De app gebruiken we straks om andere applicaties root-rechten te geven, maar dan moeten we eerst root-rechten op de telefoon hebben:

# adb shell
 $ chmod 755 /data/local/tmp/psneuter
 $ /data/local/tmp/psneuter

(Nu word je er even uitgeknikkerd, dus log opnieuw in; je bent dan root.)

# adb shell
 # mount -o remount,rw /dev/block/mtdblock3 /system
 # cat /data/local/tmp/su-v3 > /system/bin/su
 # chmod 755 /system/bin/su
 # exit
# adb reboot

Met psneuter hebben we tijdelijk root gekregen (wie wil weten hoe dat werkt, kan hier kijken), en vervolgens hebben we de systeempartitie read-write geremount (heb je voor die remount wel even gecontroleerd of je inderdaad /dev/block/mtdblock3 moest hebben?), om daar vervolgens su naartoe te kopiëren, zodat we na een reboot ook nog root kunnen krijgen.
Om dat te checken, kun je nu van de Playstore (dat heet in mijn telefoon trouwens nog Market) een willekeurige terminal emulator installeren, die starten, en dan su intikken. Als de $ prompt verandert in een # prompt, is het gelukt.

Stap 3: custom recovery

Nu we root hebben, kunnen we een custom recovery installeren. Die recovery hebben we sowieso nodig om straks onze eigen ROM te kunnen installeren, maar daarbij zijn de mogelijkheden van de standaard recovery nogal minimaal.

Download de ClockworkMod Touch recovery voor jouw model. (Of natuurlijk de andere, als de Touch er niet is voor jouw model.)

Installeren is een eitje:

# adb reboot bootloader
# fastboot flash recovery recovery-clockwork-touch-5.8.0.2-bravo.img
# fastboot reboot

En vervolgens reboot je in recovery om te zien wat je nou eigenlijk geïnstalleerd hebt:

# adb reboot recovery

(Je kunt ook booten in recovery door je telefoon uit te zetten, en ‘m vervolgens weer aan te zetten terwijl je de ‘Volume omlaag’-toets ingedrukt houdt.)

Kijk een beetje rond, en maak vooral ook een backup. Dat laatste is best belangrijk, want daarmee kun je straks weer terug naar je huidige configuratie, als de installatie van je aangepaste ROM onverhoopt ontploft.
Kies tot slot de optie ‘reboot system now‘.

Stap 4: backup veiligstellen

Je hebt net in Recovery een backup gemaakt (toch?). Die gaan we even veiligstellen. Als het goed is, kun je straks met deze backup terug naar nu, als dat nodig mocht zijn.

# adb shell ls /mnt/sdcard/clockworkmod/backup
 > 2016-01-15.15.07.54
# mkdir -p ~/htc-desire.backups/2016-01-15.15.07.54
# cd ~/htc-desire.backups/2016-01-15.15.07.54
# adb pull -a /mnt/sdcard/clockworkmod/backup/2016-01-15.15.07.54
# md5sum -c ./nandroid.md5

Als md5sum bij een of meer bestanden aangeeft dat er iets mis is, ga je terug naar Recovery, en maak je een nieuwe backup.

Stap 5: nieuwe ROM installeren

Hèhè, daar gaan we eindelijk…

Vervang ‘rom.zip’ door de naam van de ROM die je met Android Kitchen gebrouwen hebt:

# adb push rom.zip /mnt/sdcard/
# adb reboot recovery

En selecteer dan achtereenvolgens op je telefoon:

  • wipe data/factory reset
  • wipe cache partition
  • advanced
  • wipe dalvik cache
  • terug
  • install zip from sdcard
  • choose zip from sdcard
  • selecteer je ROM
  • terug
  • reboot system now

En als alles goed gegaan is, heb je nu een nieuw besturingssysteem op je HTC Desire. Gefeliciteerd!

Stap 6: klaar

# adb kill-server

(Anders blijft adb resources van je pc vreten.)

Dit bericht is geplaatst in Nerd stuff. Bookmark de permalink.