Il post nerd: Installare kernel e ripristino dati di fabbrica per Samsung Galaxys S GT-I9000 con Heimdall

Ok, lo ammetto prima o poi il mio animo nerd doveva venire fuori, ancora non gliene era stata offerta la piena possibilità, ma era soltanto una questione di tempo. Siccome ho passato gli ultimi tre giorni (o forse sarebbe meglio dire le ultime tre mezze giornate) a cercare di installare una mod per il mio Galaxy S (che ultimamente era un po’ bizzoso) e non essendoci riuscito a ripristinare la condizione originaria con la ROM di STOCK. Quello che ho notato è come la maggior parte delle guide in circolazione consiglino l’utilizzo del programma Odin, che però ha due grossi inconvenienti: in primo luogo richiede quel cancro alle gambe di Samsung Kies installato, che fa abbastanza schifo e poi è solo per Windows, quando ormai è sempre più frequente avere pc con altri sistemi operativi. Ad esempio io sul mio netbook, dopo quattro anni di XP per ridargli un po’ di vitalità non ho potuto fare a meno di installarci una (de facto due, ma questa è una lunga storia) distro di Linux.

Quindi come dicevo per ovviare il problema del sistema operativo e scrivere una cosa che de facto vada bene per tutti il mio consiglio è di usare il programma Heimdall. Questo infatti si rivela, a mio avviso assai più versatile, personalizzabile e affidabile di Odin in quanto gestibile in tutto e per tutto da riga di comando. Quindi per prima cosa a seconda del vostro sistema operativo scaricate la vostra versione di Heimdall:

Ho scritto Linux perché così si trova scritto in giro, ma de facto il download che vi propongo vi rimanda ad un file .deb, quindi si suppone che stiate usando un Linux Debian-based, per esempio (a parte Debian medesimo ovviamente) Ubuntu o Mint. Per installare i pacchetti sul vostro Debian-based Linux sarà poi sufficiente mettersi nella cartella in cui si trova il file .deb digitare nel terminale:

sudo dpkg -i heimdall_1.3.2_i386.deb

oppure

sudo dpkg -i heimdall_1.3.1_amd64.deb

Per Windows le cose sono un po’ meno semplici perché purtroppo sono richiesti dei driver aggiuntivi, da installare nel vostro telefono. Per farlo dovete mandarlo in Download Mode. Nel caso del Samsung Galaxy S per mandare il telefono in download mode è necessario premere contemporaneamente Vol-down + home + power. La combinazione cambia di telefono in telefono, il contenuto di questo tutorial è relativamente generico e penso si possa trasportare di telefono in telefono, ma tenete presente che tutto questo io l’ho provato solo con un Galaxy S (GT-I9000). Eseguite allora i seguenti passaggi:

  1. Mettete il telefono in Download Mode come descritto sopra e collegatelo al pc con cavo usb.
  2. Poi scompattate il file .zip che contiene Heimdall.
  3. Dentro la cartella Heimdall Suite ci sarà una sottocartella chiamata Drivers. Apritela e avviate il programma zadig.exe.
  4. Dal menù scegliete Options » List All Devices e nel menù a tendina scegliete Samsung USB Composite Device oppure Gadget Serial.
  5. Quindi cliccate in basso a destra sul pulsante Install Drivers.

Per fare tutti questi passaggi non è fondamentale avere Kies, ma penso sia conveniente avere i driver Samsung per cellulari, qua trovate la versione 1.5.6.0, tuttavia non credo sia strettamente necessario (io per sicurezza li metterei così il computer riuscirà a riconoscere più facilmente cosa gli state collegando e farete protestare meno quel cazzone di Windows).

A questo punto abbiamo Heimdall e possiamo usarlo. Di questo programma purtroppo esiste una documentazione interna solo riguardo alla versione grafica, chiamata heimdall-frontend che a me non ha mai funzionato neanche piangendo in cinese, quindi a mio avviso è preferibile usare il comando heimdall da riga di comando, in qualunque ambiente siamo. Capire bene la struttura del comando heimdall ci permette di fare il flash del nostro telefono in modo assai rapido o anche di fare una recovery totale, magari con una ROM STOCK. Il comando heimdall accetta vari argomenti, digitando

heimdall

ne avremo la lista completa, io elencherò ora i più importanti, ossia quelli che dovremo usare per effettuare le operazioni più comuni:

  • detect: detect è il primo comando da usare. Qualunque operazione vorremo fare con Heimdall mettiamo in Download Mode e colleghiamolo via cavo usb e poi da terminale digitiamo:

    heimdall detect

    Se la risposta che abbiamo è

    Device detected

    allora possiamo usare tranquillamente Heimdall.
  • download-pit: comando molto importante perché scarica il PIT del dispositivo che vede attaccato. Il PIT del telefono ci serve per se vogliamo fare il flash ripartizionando, quindi è molto utile se vogliamo fare un ripristino di una ROM STOCK. La sintassi precisa del programma è la seguente:

    heimdall download-pit --output "outputfile"

    Consiglio di salvare il file in estensione .pit (non so se sia fondamentale, anche perché ad esempio in Unix l’estensione del file non conta, ma per evitare errori nei passaggi successivi penso sia auspicabile farlo). Il file viene ovviamente salvato nella cartella nella quale vi trovate.
  • flash: è il comando che permette di fare il flash del firmware al vostro telefono, accetta innumerevoli argomenti. In primo luogo bisogna dire che si può ripartizionare o meno, nel caso del ripartizionamento la sintassi tipo è questa (le parti in quadre sono opzionali):

    heimdall flash --repartition --pit "filename"
    [--factoryfs "filename"] [--cache "filename"]
    [--dbdata "filename"] [--primary-boot "filename"]
    [--secondary-boot "filename"] [--param "filename"]
    [--kernel "filename"] [--modem "filename"]
    [--normal-boot "filename"] [--system "filename"]
    [--user-data "filename"] [--fota "filename"]
    [--data "filename"] [--ums "filename"]
    [--emmc "filename"] [--"partition identifier" "filename"]

    oppure nel caso non volessimo ripartizionare:

    heimdall flash [--factoryfs "filename"] [--cache "filename"]
    [--dbdata "filename"] [--primary-boot "filename"]
    [--secondary-boot "filename"] [--secondary-boot-backup "filename"]
    [--param "filename"] [--kernel "filename"]
    [--recovery "filename"] [--modem "filename"]
    [--efs "filename"] [--normal-boot "filename"]
    [--system "filename"] [--user-data "filename"]
    [--fota "filename"] [--hidden "filename"]
    [--movinand "filename"] [--data "filename"]
    [--ums "filename"] [--emmc "filename"]
    [--"partition identifier" "filename"]

Con tutte queste scelte capite bene che c’è da sbizzarrirsi. In generale direi che per usare correttamente Heimdall dopo aver scaricato i file di cui si intende fare il flash, di solito compressi, per prima cosa occorre scompattarli il più possibile e cercare di riconoscere in essi le categorie dei campi opzionali dell’argomento flash e poi effettuare il flash. Per spiegare meglio questa situazione penso sia opportuno considerare un paio di esempi concreti.

Supponiamo di voler sostituire il nostro kernel, ad esempio di voler passare dal kernel Samsung ufficiale a uno moddato, come ad esempio il famoso hardcore speedmod kernel che serve per installare CyanogenMOD. Allora una volta installato Heimdall ci basta fare i seguenti passaggi:

  1. Effettuare un backup di tutti i dati di cui si desidera salvare (non è strettamente necessario, ma per sicurezza lo consiglierei), quali SMS, MMS, registro delle chiamate, preferiti, applicazioni e dati delle applicazioni medesime. Per fare il backup delle applicazioni ci sono vari programmi come Titanium Backup oppure Astro File Manager
  2. Scaricare hardcore speedmode kernel
  3. Scompattare il file in una cartella, dovremmo avere un file chiamato zImage (senza estensione sì! è corretto!).
  4. Mettere il cellulare in Download mode e collegarlo tramite USB al computer. Verificare poi che sia stato visto correttamente da Heimdall con il comando detect, deve comparirvi:

    heimdall detect
    Device detected

    Se non vi dovesse leggere il dispositivo provare a cambiare USB e/o a riavviare il terminale.
  5. Con il terminale andare nella cartella dove si è scompattato il contenuto dell’archivio e digitare:

    heimdall flash --kernel zImage
  6. Apparirà una barra di caricamento sul cellulare che ci indicherà lo stato dell’operazione, una volta terminata si riavvierà.
  7. Controllare che il nuovo kernel sia installato da Menù » Impostazioni » Info sul dispositivo.

Supponiamo poi di voler fare una cosa più complessa, ad esempio di voler riportare il cellulare alla ROM di STOCK magari perché ci siamo rotti le palle di una moddata o dobbiamo far finta di non avergli fatto niente oppure rimediare a qualche casino (il mio era l’ultimo di questi casi). In questo caso occorre scaricare una delle ROM di STOCK del vostro cellulare, nel caso del Galaxy S le trovate qua (le versioni qua sono quelle sbrandizzate, ossia senza loghi e applicazioni dedicate di varie compagnie telefoniche, Vodafone, TIM e Wind). Ad esempio supponiamo di voler mettere il firmware ufficiale italiano della versione di Android 2.3.3, ovvero I9000RSJV3. Allora dobbiamo fare i seguenti passaggi:

  1. Effettuare un backup di tutti i dati di cui si desidera salvare (in questo caso è necessario, in quanto l’operazione distruggere tutti i dati utente del sistema), quali SMS, MMS, registro delle chiamate, preferiti, applicazioni e dati delle applicazioni medesime. Per fare il backup delle applicazioni ci sono vari programmi come Titanium Backup oppure Astro File Manager
  2. Scarichiamo il firmware che è in formato .rar.
  3. Scompattiamo i file in una cartella, dovremmo avere nove file:
    1. boot.bin
    2. cache.rfs
    3. dbdata.rfs
    4. factoryfs.rfs
    5. modem.bin
    6. param.lfs
    7. Sbl.bin
    8. zImage
  4. Mettiamo il cellulare in download mode e colleghiamolo al pc con il cavo USB.
  5. Apriamo il terminale e andiamo sulla cartella dove abbiamo scompattato i file. Verificare poi che sia stato visto correttamente da Heimdall con il comando detect, deve comparirvi:

    heimdall detect
    Device detected

    Se non vi dovesse leggere il dispositivo provare a cambiare USB e/o a riavviare il terminale.
  6. Scarichiamo il PIT, salvandolo su un file che chiameremo pitgalaxysi9000.pit:

    heimdall download-pit --outputfile pitgalaxysi9000.pit
  7. Siamo pronti per fare il flash. Come si può notare non avremo bisogno di tutti i campi che vorrebbe il comando flash. Io nel fare il flash del mio non ho usato nè il file boot.bin (che plausibilmente va usato solo se si vuole specificare un boot diverso dall’usuale) e il file Sbl.bin che su vari altri tutorial è effettivamente detto non essere strettamente necessario. Digitiamo quindi:

    heimdall flash --repartition pitgalaxysi9000.pit
    --factoryfs factoryfs.rfs --cache cache.rfs
    --dbdata dbdata.rfs --param param.lfs
    --kernel zImage --modem modem.bin

    aspettiamo che si sia caricata la barra che comparirà sul cellulare.
  8. Finito il caricamento il cellulare si riavverà con il nuovo sistema.

Con questo abbiamo finito la procedura, che potrà esservi parecchio utile nel caso di aver combinato casini (come avevo fatto io) oppure semplicemente di resettare il vostro cellulare causa vari malfunzionamenti.

Ricordate poi che finché riuscirete a vincere voi contro la tecnologia andrà tutto bene, il giorno in cui questo smetterà di avvenire allora saremo arrivati a Obsolete dei Fear Factory.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...