Native iPhone/iPod Touch support arrives on the Linux Desktop

Last Sunday, after being in development since August 2007, Matt Colyer released version 1.0.0 of the libimobiledevice library (formerly known as libiphone).

libimobiledevice is a free open source software library that talks the protocols to support iPhone ® and iPod Touch ® devices natively on Linux.

Unlike other projects, it does not depend on using any existing proprietary libraries and does not require jailbreaking.

It was successfully tested with the iPhone and iPod Touch 1G, 2G, 3G and 3GS models running up to firmware 3.1.3.

So what does it mean for me as a desktop user?

It means you can sync your music/video, access the filesystem from your Linux Desktop, manage your SpringBoard, managed installed apps, create backups and a lot more; all without violating your warranty. Finally more freedom to use the bling bling device on Linux after one was forced to use iTunes on Windows or Mac OS X.

What does this mean for developers?

Developers are able to write applications for Linux which use the native capabilities provides by those devices. As we have successfully tested the library on Mac OS X and Windows aswell during development, other projects might take advantage of this in the future, aswell.

Wow, whom to thank for this?

Big thanks to Matt Colyer who started all this back in August 2007 and provided the first code to “talk” to the devices.

Further credits to all the nice developers of libimobiledevice who continuously worked hard to push code into various libraries (GVFS, libgpod/gtkpod, libusb 1.0) and are mostly responsible that plugging in an iPhone or iPod Touch and syncing your music is fun now. Thanks to the packagers of the various distributions who helped to upstream patches and helped to find bugs.

Contrary to a range of blog posts around the net, Ubuntu and Canonical Ltd. have nothing to do with the work. They just happen to have included the library in the recent Ubuntu Lucid release causing “OMG, suddenly my iPhone works!” reactions. Also this work has not been authorized, sponsored, or otherwise approved by Apple Inc.

So what happens now?

With this release I will be taking over maintainership for the library from Matt Colyer. We are going to continue to implement more of the left spots, especially the contacts/calendars/notes/bookmarks synchronization capabilities in order to be able to use the device as a fully fledged smartphone and media player with Linux. We won’t touch any DRM infested areas (thus don’t expect to sync any content bought from the iTunes Store) but continue to apply legal methods when implementing the remaining functionality.

Most distributions will feature the library in their next release: Ubuntu Lucid, Fedora 13, openSUSE 11.3 and Mandriva 2010.1 are among those who are more or less confirmed. There are also some backports available from the official site mentioned above for older distributions.

I will be doing a mini-feature here to present each of the various features the library offers in detail soon, so stay subscribed!

Where do I get more information and the library/tools?

Get the full information overload from the official website: http://www.libimobiledevice.org/

The icon is courtesy of Jonathan Zuniga under CC2.5.

24 thoughts on “Native iPhone/iPod Touch support arrives on the Linux Desktop”

  1. I have a problem with ideviceinstaller… in the make process i have this errors:
    make[2]: Entering directory `/home/msdark/Downloads/ideviceinstaller/src’
    CC ideviceinstaller-ideviceinstaller.o
    cc1: warnings being treated as errors
    ideviceinstaller.c: En la función ‘main’:
    ideviceinstaller.c:351: error: se pasa el argumento 2 de ‘np_set_notify_callback’ desde un tipo de puntero incompatible
    /usr/include/libimobiledevice/notification_proxy.h:82: nota: se esperaba ‘np_notify_cb_t’ pero el argumento es de tipo ‘void (*)(const char *, void *)’
    ideviceinstaller.c:351: error: demasiados argumentos para la función ‘np_set_notify_callback’
    make[2]: *** [ideviceinstaller-ideviceinstaller.o] Error 1

    And with python-idevicesync … the program request a module: iphone module but i can’t find it..

  2. @msdark: What does `pkg-config –modversion libimobiledevice-1.0` show you? If you have the latest libimobiledevice installed it must show 1.0.0. Tested, works here.

  3. Now KDE just needs to follow suit and make a good implementation of this, too.

    Amarokkers say they just interface with Solid. Solid metalworkers say they just use HAL/udev backends. HAL/udev doesn’t care as it’s the fuse mount we’re interested in, and not the device itself.

    The best way to transfer music to an iPhone in KDE is currently gtkpod. Despite Amarok 2 having the framework for media devices.

  4. @JR: From what we know Amarok 2.3 works if you have iFuse installed by using ifuse automatically. However, I agree that KDE should have it’s own KIOSlave implementation using afc.

  5. Thank you very much for this !
    It worked like a charm on Lucid (all from official repository) and Rhythmbox.
    SbManager also worked !
    Now I am having problems with the conduit modules (both) and the ideviceinstaller (couldn’t compile problem). Where can I ask for help to solve those problems ?

    My sugestion is to develop something like iPhoneCentral, to integrate all of then…

  6. Hi,

    I get this error message when running make for ideviceinstaller:
    make all-recursive
    make[1]: Entering directory `/home/simon/ideviceinstaller’
    Making all in src
    make[2]: Entering directory `/home/simon/ideviceinstaller/src’
    CC ideviceinstaller-ideviceinstaller.o
    cc1: warnings being treated as errors
    ideviceinstaller.c: In function ‘main’:
    ideviceinstaller.c:643: error: format ‘%d’ expects type ‘int’, but argument 4 has type ‘size_t’
    make[2]: *** [ideviceinstaller-ideviceinstaller.o] Error 1
    make[2]: Leaving directory `/home/simon/ideviceinstaller/src’
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/home/simon/ideviceinstaller’
    make: *** [all] Error 2

    pkg-config –modversion libimobiledevice-1.0 returns 1.0.0 and I got all the sources from the latest git repositories.

    Any idea?

    Thanks.

  7. Hi,

    while running ./configure on sbmanager I run into this error message:

    checking if msgfmt accepts -c… yes
    checking for gmsgfmt… /usr/bin/msgfmt
    checking for xgettext… /usr/bin/xgettext
    ./configure: line 12767: syntax error near unexpected token `0.35.0′
    ./configure: line 12767: `IT_PROG_INTLTOOL(0.35.0)’

    Any idea what that means?

    Thank you very much

  8. I have the same problem as Turi, but I have intltool installed… dpkg -l intltool gives me:
    ii intltool 0.41.0-0ubuntu Utility scripts for internationalizing XML

  9. Any update on USB transfer speeds? Haven’t upgrade to latest version of libmobiledevice as this is my main gripe. USB transfers have always been horrendously slow. Appreciate some response.

    However, great job guys!

  10. @ShapeshiftY: “slow” can be quite subjective. If you have crawling slow transfers then for sure something is wrong. I’d recommend adding a ticket to the project’s bugtracker or report your problem to the libimobiledevice mailing list. For me, it transfers faster than any other way of connecting to the phone. Also with a special branch of libgpod, music sync is even faster then with iTunes now.

  11. when I try to install your ideviceinstaller through your git i get an error: “No Package ‘libzip’ found”, I checked and I actually have “libzip1″ so can you help me searching wich is the issue?

  12. @Nico: If you compile stuff, it always refers to “development” packages. So not just libzip1 is required but especially libzip-devel or similar!

  13. Hello, good day:
    I installed “ideviceinstaller” in ubuntu 10.4 (64 bit) as I see in the handbook “ideviceinstaller man” to install an application must use “> ideviceinstaller-i .” Well, what kind of applications? I tried to install applications for the iphone. “ipa” but always gives me the error “Install – Error occurred: ApplicationVerificationFailed.” Any help please. Thanks

  14. Hello Admin,

    Thank you for the wonderful project. Would you be able to help with the below error?

    I get the below error every time I try to backup my 3gs. I have installed libimobiledevice v1.0.0.1 without any problem and I can use sbmanager, ideviceinstaller, gtkpod… But for some reason I can’t backup my phone. I wonder what is causing the error. I can also share, if necessary, the log from idevicesyslog when running idevicebackup.

    Here is the error I get:

    root@ubuntupc:~# idevicebackup backup /media/OS/pcubuntu/
    Backup directory is “/media/OS/pcubuntu/”
    Started “com.apple.mobilebackup” service on port 54613.
    Reading Info.plist from backup.
    Starting backup…
    Reading existing Manifest.
    Could not read Manifest.plist, switching to full backup mode.
    Creating Info.plist for new backup.
    Requesting backup from device…
    Full backup mode.
    Please wait. Device is preparing backup data…
    idevicebackup: /home/ubuntupc/Downloads/libplist-master/src/plist.c:544: plist_get_uint_val: Assertion `length == sizeof(uint64_t)’ failed.
    Aborted

  15. Pingback: fix credit

Comments are closed.