Quando ho iniziato a sviluppare applicazioni per Android, mi sono informato su quale fosse il telefonino Android di riferimento per i programmatori. Ne avevo bisogno come strumento di lavoro per il testing e lo sviluppo delle applicazioni stesse.

Di Google Nexus One avevo naturalmente già sentito parlare. Il Nexus One, oltre ad avere il marchio Google stampato sul retro, essere piuttosto costoso e abbastanza difficile da trovare in Italia, ha il noioso difetto della frequente rottura del tasto di accensione. Difetto che, nel mio caso, non avrebbe dovuto incidere più di tanto: il telefono si può accendere anche togliendo e rimettendo la batteria.

Ho così acquistato ad un buon prezzo un Nexus One con il tasto di accensione fuori uso. Poi la necessità e curiosità di installarci diverse versioni del sistema operativo mi ha portato alla scoperta… che il tasto di accensione serve a navigare il menù del bootloader! (@$#!)

Questo articolo (per esperti e smanettoni appassionati) racconta come fare ad aggiornare la ROM del Nexus One (unlocked) con gli strumenti standard e il tasto accensione fuori uso. È un utile riferimento anche per chi ha il tasto funzionante, vista l’enorme, frammentaria e dispersiva mole di informazioni che si trova in rete sull’argomento.

Attenzione: aggiornare la ROM comporta la cancellazione di tutti i dati del telefono!

Il problema

Con il tasto accensione rotto non si può attivare il recovery mode, a meno di non avere installato una custom recovery image.

Ci sono due modi per entrare in recovery mode.

Il primo è scegliere l’opzione RECOVERY dal menu del bootloader. Ma con il tasto power rotto è impossibile perché non si può confermare la scelta del menu di boot.

Il secondo è usare dal terminale del computer (con telefono collegato e acceso) il comando adb reboot recovery. Con il tasto accensione rotto questo è possibile solo con una custom recovery image, perché le ROM stock in modalità recovery mostrano un’immagine con l’Androide Verde assieme a un punto esclamativo e da lì bisognerebbe di premere Volume UP + Power Button per entrare nel menu di recovery.

Come se non bastasse, quando si spegne il telefonino il sistema rimpiazza l’immagine di recovery con quella che c’era quando è stato acceso. Di conseguenza un aggiornamento contenente anche un’immagine di recovery applicato su un Nexus One con il tasto Power rotto sostituirà quest’ultima in maniera irreversibile!

Gli strumenti

Ci servono due strumenti della SDK Android: adb e fastboot. fastboot però viene distribuito da Google solo come sorgente. L’eseguibile per Linux, Windows e OS X si può scaricare dall’HTC Developer Center. Per usare adb bisogna abilitare l’opzione

Impostazioni > Applicazioni > Sviluppo > Debug USB

Procedimento

Esistono due tipi di aggiornamento ROM: full image e update.

Una full image è un file zip che contiene in genere 4 immagini di filesystem che vanno flashate (sui forum: “cucinate”) sul telefonino, cancellando completamente i filesystem presenti.

  • boot.img
  • recovery.img
  • system.img
  • userdata.img

Un update è un file zip contenente i file aggiornati e uno script che viene usato per aggiornare il sistema a partire dalla modalità recovery.

Per aggiornare il nostro Nexus One con il tasto rotto dobbiamo prima applicare una ROM full, quindi sostituire la recovery con una immagine custom e infine ricordarsi per ogni update di cancellare dall’archivio zip la directory recovery.

Applicare una full image

Si collega il telefono al computer e lo si accende tenendo premuta la trackball. Si scompatta lo zip e dalla directory che si ottiene e da un terminale del computer si eseguono i comandi:

$ fastboot erase cache
$ fastboot erase userdata
$ fastboot flash boot boot.img
$ fastboot flash recovery recovery.img
$ fastboot flash system system.img
$ fastboot flash userdata userdata.img
$ fastboot reboot

Se si vuole preservare una custom recovery installata in precedenza basta saltare il passo corrispondente.

Esiste un secondo sistema per applicare una full ROM. Funziona (credo) solo con ROM originali per via dei controlli sulle firme digitali degli aggiornamenti. Se lo usiamo nel nostro caso perché non avremo più modo di sostituire la recovery image, ma può essere utile per installare pure Stock ROM.

Consiste in chiamare lo zip contenente i file .img con il nome PASSIMG.zip, copiarlo sulla root della SD Card con

$ adb push signed-passion-img-GRI40.zip /mnt/sdcard/PASSIMG.zip

e riavviare il telefono (togliendo e rimettendo la batteria) mentre si tiene premuto il tasto Volume Down. Dopo qualche secondo il bootloader installa automaticamente il file.

Aggiornare con un update

Per aggiornare con una update bisogna avere la possibilità di fare boot in recovery mode.

Bisogna copiare il file .zip di aggiornamento sulla SD Card, ad esempio:

$ adb push update-cm-7.0.0-N1-signed.zip /mnt/sdcard

e poi entrare in recovery mode.

Con il tasto power funzionante si accende il telefono con il tasto Volume Down premuto e si sceglie RECOVERY dal menu.

Con il tasto power rotto si deve eseguire il comando

adb reboot recovery

da terminale.

Poi si cancella la cache e gli altri dati e si installa il file tramite il menu Install update from sdcard del recovery mode.

Le fonti di informazioni

Questi procedimenti non sono troppo complicati ma non essendoci fonti ufficiali ed organiche diventa faticoso raggiungere le informazioni davvero rilevanti. Le fonti principali su cui mi sono basato sono: