Poco tempo fa ho avuto modo di rinnovare totalmente il mio computer, e, con una decisione che ora ritengo oltremodo saggia e furba, ho acquistato componenti che mi permettessero di usufruire in tutto e per tutto di Mac OSX Snow Leopard. L’esperimento è riuscito bene e tutto è funzionante (pur se con qualche leggero intoppo qua e là, ma che non disturbano l’utilizzo). Riguardo questo, però, scriverò appositamente un articolo e una guida il più semplice possibile, come ho promesso già a qualcuno.
Quello di cui parlo oggi riguarda sempre la griffe della mela morsicata, ma si sposta sul versante iPhone.
Qualche tempo fa (più di un anno, se non ricordo male) un tizio, tale planetbeing, cominciò un lavoro che sembrava quasi impossibile: effettuare il porting di Android sull’iPhone. Ricordo di essermi interessato con entusiasmo, dato che questo apriva scenari eccezionali. Per molto tempo, però, il lavoro è proseguito in sordina, seguito quasi esclusivamente da chi aveva il coraggio di intrufolarsi tra i termini quasi incomprensibili che costellavano i lavori in corso, sul blog del progetto.
Ebbene, 2 mesi fa, su tale blog uscì un post rivoluzionario che attirò le attenzioni di quasi tutti i blog inerenti l’iPhone (e non solo – è significativa in questo senso la differenza nel numero dei commenti tra i post precedenti e quelli successivi): planetbeing era riuscito nell’intento di portare e rendere utilizzabile Android sul device Apple!
Sono tornato a capofitto sul progetto e, navigando nel forum appositamente creato per il progetto, incrociai un altro progetto chiamato “iPhoDroid“: nientepopodimenochè un installer completamente automatizzato che provvedesse dapprima all’avvio temporaneo di Android sull’iPhone, poi, nelle ultime release, anche all’installazione totale del sistema operativo di Google. Ecco una panoramica di questo programma e qualche riflessione:
iPhoDroid è scritto in AppleScript, ed è dunque fruibile solo con computer che montano MacOSX. In alternativa, per i possessori di Linux, è possibile trovare su quel forum anche il Succa installer, che fa più o meno le stesse cose ed è uno script automatizzato per Linux.
E’ ormai da qualche tempo che sono in contatto con l’ideatore nonchè realizzatore di iPhoDroid: sergiomcfly. Parlando con lui ho proposto diverse idee e posso ritenermi soddisfatto di aver aiutato iPhoDroid a raggiungere la sua forma attuale (benchè lungi dall’essere definitiva).
L’idea di oggi riguardava il fatto che dopo aver completato i vari trasferimenti dei file necessari all’avvio di Android, l’iPhone deve essere messo in modalità di recovery, cosicchè OpeniBoot possa essere installato (o che comunque, Android possa venire avviato). Qual è il compito di OpeniBoot? Tale applicativo non fa altro che rimpiazzare il boot di iOS (come lo ha recentemente ribattezzato Steve Jobs) installando una schermata di scelta. L’obbiettivo reale di OpeniBoot era quello di rendere avviabile qualsiasi distribuzione Linux sui device Apple, ma è ovvio che ora gli sforzi si siano concentrati sull’avvio corretto di Android.
Come funziona iPhoDroid? In sostanza, alla release attuale (0.6 R7) si compone di 15 steps, tutti atti al trasferimento e al managing dei vari file che ci permettono di avviare Android. La nuova interfaccia grafica (GUI) è veramente carina e ci permette di scegliere se utilizzare iPhoDroid per un iPhone 2g o 3g (il 3gs non è ancora supportato da OpeniBoot), inoltre è supportata, come dicevo prima, l’installazione di OpeniBoot.
In tutto questo, l’intervento dell’utente è pari a zero, o quasi. Si deve infatti intervenire, al termine dei 15 steps, solo nel momento di mandare il device in recovery mode (chiamato “scroll mode”) e con la semplice pressione prolungata dei tasti home e power. Dopodichè, finisce tutto da sè.
Quindi, come ridurre l’intervento dell’utente pari a zero? In tutto questo potrebbe rimanere utile l’integrazione di iRecovery, una libreria appositamente costruita per mandare l’iPhone in modalità di recovery o DFU direttamente con comandi da terminale. Mandando il comando tramite l’AppleScript si potrebbe evitare qualsiasi intervento manuale. Sergio obiettava di aver già avuto quest’idea di integrare iRecovery in iPhoDroid, ma di averla accantonata perchè OpeniBoot viene installato in modalità hard write (dato che per installarlo bisogna flashare la NOR – di cui tra l’altro viene fatto il backup, durante l’installazione) invalidando così i comandi di iRecovery. Ciò che però ha tralasciato è che durante la prima installazione, ancora il flash della NOR non è stato fatto, quindi i comandi sono ancora validi.
Ciò che lui ipotizzava era:
Scroll Mode = Recovery Mode + OpeniBoot Console
mentre ciò che io dicevo era:
15 steps THEN iRecovery THEN openiboot console, then let’s embed a check: if openiboot is already installed then go for the manual scroll mode. Otherwise, try with iRecovery. Set a timeout: if in 30 sec (i.e.) the iPhone is not in scroll mode, then go for the manual mode.
L’idea è quella di implementare le istruzioni di iRecovery e attivarle se OpeniBoot non è ancora stato installato. In caso fosse così, le istruzioni vengono eseguite, altrimenti viene richiesto di mettere in recovery mode il device manualmente. In ogni caso, viene impostato un timeout: se dopo, ad esempio (dato che non conosco le reali velocità di esecuzione di iRecovery), 30 secondi le istruzioni di iRecovery non sono ancora state eseguite (se l’iPhone cioè non è entrato in scroll mode), viene richiesto l’intervento manuale.
Una soluzione piuttosto semplice da implementare e funzionale, ma che lascia comunque scoperti nella possibilità che la NOR sia già stata flashata. Su questo, bisognerà ancora lavorare.


