Cerca nel blog

Loading

7 gennaio 2011

Primo approccio a libimobiledevice



Dopo la sfuriata di ieri circa iTunes, oggi mi sono detto: "Basta essere disfattisti. Se iTunes non lo sopporti, o cerchi un'alternativa valida oppure prendi un bel digestivo e ti adegui". Ieri vi preannunciavo che avevo trovato una libreria per linux chiamata libimobiledevice che stando a quello che dicono gli auturi dovrebbe essere in grado di fare tutto quello che fa iTunes senza usare codice proprietario Apple. L'idea di base dietro a questa libreria è di rendere utilizzabile l'iPhone e gli altri iCosi di ultima generazione da parte di quelle applicazioni già installate sul vostro desktop linux e che comunemente utilizzate per gestire la musica, le fotografie, i contatti e via discorrendo.

Caratteristiche

Tra le caratteristiche più importanti di questa libreria, vi riporto quelle che secondo me sono fondamentali:
  • Supporta iPhone, iPod Touch e iPad. Quindi non è una cosa solo per i vecchi (sic!) iPod fino all'ultima versione di iOS. Sembra esserci ancora qualche problemino di compatibilità con iPhone 4G di cui però non posso dirvi altro perché sono sprovvisto dell'hardware necessario per testarlo.
  • Non serve avere dispositivi Jailbroken. Che in altre parole significa che qualunque iPhone gli attacate dovrebbe funzionare senza altri problemi.
  • Eseguire backup e restore. Altra caratteristica importante. iTunes permette sì di eseguire backup e di ripristinarli, ma non è direttamente possibile verifcare il contenuto della copia di sicurezza se non utilizzando altri software.
  • Attivazione del dispositivo. Sapete che la prima cosa che dovete fare quando acquistate il vostro nuovo iPhone è collegarlo al pc e far partire il tanto odiato iTunes. libimobiledevice è in grado di farlo autonomamente.
  • Sincronizzazione audio / video e tethering. Ovviamente lo scopo principale per cui state cercando un'alternativa a iTunes è gestire in modo più facile le vostre librerie. Altra nota positiva è il tethering, ovvero la possibilità di utilizzare il vostro iPhone collegato via USB come un'interfaccia di rete e quindi andare in internet dal vostro computer usando l'iPhone come modem. 

Architettura


E per fare tutto questo, gli sviluppatori si basano sull'architettura proposta nel diagramma qui sotto. Se non siete troppo esperti o interessati potete passare direttamente al prossimo paragrafo.

Architettura di libimobiledevice direttamente dal loro sito.

L'idea di base è che non appena collegate il vostro iCoso, la libreria per la gestione dell'usb ceda il controllo ad un demone usbmuxd che trasferisce le chiamate alla libreria e che, a sua volta, rende disponibili le risorse all'utente tramite libgpod o GVFS o iFuse. Per farla semplice, quando collegate l'iPhone, il sistema operativo non lo riconoscerà come un dispositivo di storage, ma come una macchina fotografica e un dispositivo per la riproduzione multimediale.


Primo impatto

Fin qui la teoria, bella e luccicante come sempre. Ma adesso andiamo a fare un po' di pratica. Come prima cosa installo la libreria e verifico di avere tutte le dipendenze. Con mia grande sorpresa vedo che Fedora 13 (KDE) di default installa già l'ultima versione di questa libreria con tutte le sue dipendenze.  Prendo in prestito l'iPhone di mia moglie e lo collego al volo. Stando a quanto scritto nelle Faq mi sarei dovuto aspettare di vedere comparire due dispositivi: una macchina fotografica e un lettore multimediale. Invece mi compare solo la fotocamera. Stando sempre alle informazioni (scarse) fornite sul sito, avrei dovuto vedere comparire l'iPhone tra i dispositivi sfogliabili del computer e invece anche in questo caso nulla.

Faccio i primi test, vuol dire provo con i pochi comandi da terminale che permettono di verificare il funzionamento della libreria. In particolare il comando:

> ideviceinfo

E finalmente trovo un risultato positivo. Sul terminale mi compaiono tutte le info dell'iPhone, compreso il numero di telefono e la versione del firmware. Questo risultato positivo mi incoraggia ad andare avanti e così faccio partire Amarok, l'applicativo per la gestione della libreria musicale su KDE. Appena Amarok parte l'iPhone vibra ancora, come aveva fatto appena connesso al Pc. Ho pensato che adesso avesse riconosciuto la parte "multimediale". Infatti in Amarok trovo l'iPhone tra le risorse locali, ma gli unici tre contenuti che mostra sono tre note registrate, ma niente musica.

Per la serie sono più duro io a morire che tu a farmi usare iTunes, ho fatto un po' di ricerche su google e ho scoperto due cose importanti:
  • Amarok supporterà in modo adeguato gli iCosi solo a partire dalla versione 2.4 ora disponibile solo in beta. Io sto utilizzando la 2.3.2 quindi non potevo aspettarmi che funzionasse out-of-the-box. 
  • KDE e libimobiledevice non vanno troppo d'accordo. La libreria è stata sviluppata per Gnome (il concorrente di KDE) e solo in quell'ambiente l'iPhone verrà automaticamente montato e reso disponibile. Gli utenti KDE devono installare un pacchetto a parte (kio_afc) compilandolo dalla sorgente per poter navigare nel contenuto dell'iPhone da Dolphin. Infatti se scrivo afc:// nella barra dell'indirizzo di Dolphin vedo l'iPhone. Ma non risolve nessuno dei miei problemi.
Il passo successivo è quello di chiedere aiuto agli sviluppatori attraverso la mailing list, illustro il mio problema e mi confermano che su Fedora Gnome funziona tutto alla perfezione e che con KDE si deve installare anche iFuse. Questo si trova già impacchettato insieme al repositorio di Fedora e lo provo. Anche questa volta - come dimostra lo screenshot qui sotto - riesco a vedere la struttura del filesystem dell'iPhone, ma niente sincronizzazione.


A questo punto mi convinco che per fare passi in avanti, l'unica soluzione è provare con Gnome. Visto che avevo già tra le mani un CD con Ubuntu 10.10 - distribuzione basata su Gnome - lo faccio partire e vado in modalità live, ovvero senza installare nulla. Chiaramente le performance non sono un granché vista la ridotta RAM del mio pc, ma sufficienti per una prova veloce.

I risultati sono subito incoraggianti. Tutto funziona come dovrebbe. Vedo comparire due dispositivi e tutto come nel video dimostrativo che ho postato ieri. Adesso dovrei fare delle prove più approfondite, ma per questo una versione life non è certo sufficiente. Quindi preparo una virtual machine e domani vi aggiorno. Ok?

    Chiunque può lasciare commenti su questo blog, ammesso che vengano rispettate due regole fondamentali: la buona educazione e il rispetto per gli altri.

    Per commentare potete utilizzare diversi modi di autenticazione, da Google a Facebook e Twitter se non volete farvi un account su Disqus che resta sempre la nostra scelta consigliata.

    Potete utilizzare tag HTML <b>, <i> e <a> per mettere in grassetto, in corsivo il testo ed inserire link ipertestuali come spiegato in questo tutorial. Per aggiungere un'immagine potete trascinarla dal vostro pc sopra lo spazio commenti.

    A questo indirizzo trovate indicazioni su come ricevere notifiche via email sui nuovi commenti pubblicati.

    2 commenti:

    1. Il fatto che "non serve avere dispositivi Jailbroken" mi incuriosisce e mi costringe a darci un'occhiatina. Tnx della dritta. :)

      LeNny

      ;)

      RispondiElimina
    2. Sto preparando una super guida che ti lascerà a bocca aperta...

      RispondiElimina

    Chiunque può lasciare commenti su questo blog, ammesso che vengano rispettate due regole fondamentali: la buona educazione e il rispetto per gli altri.

    Per commentare potete utilizzare diversi modi di autenticazione, da Google a Facebook e Twitter se non volete farvi un account su Disqus che resta sempre la nostra scelta consigliata.

    Potete utilizzare tag HTML <b>, <i> e <a> per mettere in grassetto, in corsivo il testo ed inserire link ipertestuali come spiegato in questo tutorial. Per aggiungere un'immagine potete trascinarla dal vostro pc sopra lo spazio commenti.

    A questo indirizzo trovate indicazioni su come ricevere notifiche via email sui nuovi commenti pubblicati.

    Related Posts Plugin for WordPress, Blogger...