A cross-platform software protocol library and tools to communicate with iOS® devices natively.

GNOME desktop icon GVFS support Manage SpringBoard icons Extended device information Experimental syncing Command line backup Syslog viewing


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.

Latest Release: 1.0.7

Development/Unstable Release: 1.1.6

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.





Sources and Dependencies:


Feature Status iOS Notes
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.



We'll miss you, Steve.

Steve Jobs, 1955 - 2011