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.
Tested with iPod Touch 1G/2G/3G/4G/5G, iPhone 1G/2G/3G/3GS/4/4S/5/5C/5S, iPad 1/2/3/4/Mini/Air and Apple TV 2G/3G running up to firmware 8.0 on Linux, Mac OS X and Windows.
|Filesystem Access||Done||8.0||Using iFuse with fuse, on GNOME using GVFS >= 1.5.1 or kio_afc on KDE.|
|Document Sharing||Done (1.1.1+)||8.0||Use iFuse with the "--documents 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||8.0||Allow libimobiledevice to talk to a device over the network (aka iTunes WiFi Sync).|
|Software Update/Restore||Done (1.1.0+)||8.0||Using idevicerestore and libirecovery, updating and restoring devices is possible. iPhone 5S/iPad Air support is WIP.|
|Phone Activation||WIP||8.0||Using ideviceactivate, activating your device is now possible. A different project is in the works to expose this feature in a library.|
|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)||8.0||Experimental Conduit module exists. Python implementations can dump the data as iCalendar.|
|Contacts Synchronization||WIP||8.0||Experimental Conduit module exists. Python implementations can dump the data as vCard. Evolution Addressbook to iDevice|
|Notes Synchronization||Partly (One way)||8.0||Experimental Conduit module exists. Python implementations can dump the data as XML notes.|
|Bookmarks Synchronization||Partly (One way)||8.0||Experimental Conduit module exists. Python implementations can dump the data as XBEL bookmarks.|
|USB Internet Tethering||Done||7.1.2||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||8.0||Use the iproxy tool provided by usbmuxd. This for instance allows accessing SSH or a device webserver locally.|
|Applications||Done||8.0||Use ideviceinstaller to list, install, uninstall and archive your own apps or to install carrier profiles.|
|Manage SpringBoard||Done||8.0||Use sbmanager to arrange icons on the device using drag and drop. iPad support is WIP.|
|Backup/Restore||Done (1.1.1+)||8.0||Use the idevicebackup tool for full and incremental native backups and restoring from them. Use idevicebackup2 on iOS 4+.|
|Remote Syslog||Done||8.0||Use idevicesyslog tool to view the syslog in realtime.|
|Date and Time||Done (1.1.1+)||8.0||Use the idevicedate tool to get or set the device time aswell as synchronization of your system time with the device. iOS 6 and later only support setting the time before a device is activated.|
|Provisioning||Done (1.1.5+)||8.0||Use the ideviceprovision tool to manage provisioning profiles of a device.|
|Diagnostics||Done (1.1.5+)||8.0||Use the idevicediagnostics tool to restart, shutdown and sleep the device alongside retrieval of diagnostics information and the IORegistry.|
|Developer Images||Done||8.0 (git master)||Use the ideviceimagemounter tool to mount and use developer disk images.|
|Debugging||Done (1.1.5+)||8.0||Use the idevicedebugserverproxy tool to remote debug applications using LLDB. Developer image needs to be mounted using ideviceimagemounter.|
|Crash Reports||Done (git)||8.0||Use the idevicecrashreport tool to retrieve crash logs from a device.|
|Instruments||WIP||8.0||Use various developer services and metrics of the instruments tool programmatically on all platforms through native protocols (No XCode/Instruments required).
Working implementation is a separately licensed project and supports latest iOS down to iOS 4.
Contact these guys to be notified when released publically.
|WebKit Debugging||Done (1.1.5+)||8.0||Use the idevicewebinspectorproxy tool to remote debug MobileSafari.|