Tested with iPod Touch 1G/2G/3G/4G, iPhone 1G/2G/3G/3GS/4/4S/5, iPad 1/2/3rd Gen and Apple TV running up to firmware 6.1.3 on Linux, Mac OS X and Windows.
libimobiledevice is a cross-platform software library that talks the protocols to support iPhone®, iPod Touch®, iPad® and Apple TV® devices. Unlike other projects, it does not depend on using any existing proprietary libraries and does not require jailbreaking. It allows other software to easily access the device's filesystem, retrieve information about the device and it's internals, backup/restore the device, manage SpringBoard® icons, manage installed applications, retrieve addressbook/calendars/notes and bookmarks and (using libgpod) synchronize music and video to the device. The library is in development since August 2007 with the goal to bring support for these devices to the Linux Desktop.
Want features to get implemented faster? Want to thank for our countless hours of work? Want to help us improve support for newer devices and system versions? Then feel free to donate.
|Filesystem Access||Done||6.1.3||Using iFuse with fuse, on GNOME using GVFS >= 1.5.1 or kio_afc on KDE.|
|Document Sharing||Done (1.1.1+)||6.1.3||Use iFuse with the "--appid APPID" argument to mount a document folder of an application and simply manage your files as needed.|
|Music/Video Synchronization||DBVersion <= 4||4.3.5||Rhythmbox, gtkpod and Amarok sync with latest libgpod >= 0.7.90. The iPhone 4/4S, iPod Touch 4, iPad 1/2/3rd Gen and Apple TV do NOT work.
Any device with DBVersion > 4 does NOT work. To check your DBVersion run "ideviceinfo -q com.apple.mobile.iTunes -k DBVersion". WIP.
|Network Support||WIP||6.1.3||Allow libimobiledevice to talk to a device over the network.|
|Software Update/Restore||Done (1.1.0+)||6.1.3||Using idevicerestore and libirecovery, updating and restoring devices is now possible.|
|Phone Activation||Done||6.1.3||Using ideviceactivate, activating your device is now possible.|
|Camera/Photo Synchronization||No||N/A||PTP photo access works. Camera roll management needs implementation to parse the file format.|
|Calendar Synchronization||Partly (One way)||6.1.3||Experimental Conduit module exists. Python implementations can dump the data as iCalendar.|
|Contacts Synchronization||WIP||6.1.3||Experimental Conduit module exists. Python implementations can dump the data as vCard. Evolution Addressbook to iDevice|
|Notes Synchronization||Partly (One way)||6.1.3||Experimental Conduit module exists. Python implementations can dump the data as XML notes.|
|Bookmarks Synchronization||Partly (One way)||6.1.3||Experimental Conduit module exists. Python implementations can dump the data as XBEL bookmarks.|
|USB Internet Tethering||Done||6.1.3||Use the iPhone Ethernet Kernel Driver. Included with the kernel since 2.6.34. If it fails, make sure "Personal Hotspot" is activated.|
|TCP Tunneling||Done||6.1.3||Use the iproxy tool provided by usbmuxd. This for instance allows accessing SSH or a device webserver locally.|
|Applications||Done||6.1.3||Use ideviceinstaller to list, install, uninstall and archive your own apps or to install carrier profiles.|
|Manage SpringBoard||Done||6.1.3||Use sbmanager to arrange icons on the device using drag and drop. iPad support is WIP.|
|Backup/Restore||Done (1.1.1+)||6.1.3||Use the idevicebackup tool for full and incremental native backups and restoring from them. Use idevicebackup2 on iOS 4+.|
|Remote Syslog||Done||6.1.3||Use idevicesyslog tool to view the syslog in realtime.|
|Date and Time||Done (1.1.1+)||6.1.3||Use the idevicedate tool to get or set the device time aswell as synchronization of your system time with the device.|
|Provisioning||Done (master)||6.1.3||Use the ideviceprovision tool to manage provisioning profiles of a device.|
|Diagnostics||Done (master)||6.1.3||Use the idevicediagnostics tool to restart, shutdown and sleep the device alongside retrieval of diagnostics information and the IORegistry.|
|Developer Images||Done||6.1.3||Use the ideviceimagemounter tool to mount and use developer disk images.|
|Debugging||Done (master)||6.1.3||Use the idevicedebugserverproxy tool to remote debug applications using LLDB. Developer image needs to be mounted using ideviceimagemounter.|
|Profiling||WIP||N/A||Related service protocol is unimplemented.|
|WebKit Debugging||Done (master)||6.1.3||Use the idevicewebinspectorproxy tool to remote debug MobileSafari.|