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.2.0

Tested with iPod Touch 1G/2G/3G/4G/5G/6G, iPhone 1G/2G/3G/3GS/4/4S/5/5C/5S/6/6+/6S/6S+/7/7+, iPad 1/2/3/4/Mini/Mini 3/Mini 4/Air/Air 2/Pro and Apple TV 2G/3G/4G running up to firmware 10.3 on Linux, Mac OS X and Windows.





Sources and Dependencies:


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.


Feature Status iOS Notes
Filesystem Access Done 10.3 Using iFuse with fuse, on GNOME using GVFS >= 1.5.1 or kio_afc on KDE.
Document Sharing Done (1.1.1+) 10.3 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 10.3 Allow libimobiledevice to talk to a device over the network (aka iTunes WiFi Sync).
Software Update/Restore Done (1.1.0+) 10.3 Using idevicerestore and libirecovery, updating and restoring devices is possible.
Phone Activation Done 10.3 Using ideviceactivation activating or deactivating your device is possible.
Camera/Photo Synchronization No 10.3 PTP photo access works. Camera roll management needs implementation to parse the file format.
Calendar Synchronization Partly (One way) 8.3.0 Experimental Conduit module exists. Python implementations can dump the data as iCalendar.
Contacts Synchronization WIP 8.3.0 Experimental Conduit module exists. Python implementations can dump the data as vCard. Evolution Addressbook to iDevice
Notes Synchronization Partly (One way) 8.3.0 Experimental Conduit module exists. Python implementations can dump the data as XML notes.
Bookmarks Synchronization Partly (One way) 8.3.0 Experimental Conduit module exists. Python implementations can dump the data as XBEL bookmarks.
USB Internet Tethering Done 10.3 Use the iPhone Ethernet Kernel Driver. Included with the kernel since 2.6.34. If it fails, make sure "Personal Hotspot" is activated. Some reports suggests the kernel drvier is outdated.
TCP Tunneling Done 10.3 Use the iproxy tool provided by usbmuxd. This for instance allows accessing SSH or a device webserver locally.
Applications Done 10.3 Use ideviceinstaller to list, install, uninstall and archive (< iOS 9) your own apps or to install carrier profiles.
Manage SpringBoard Done 10.3 Use sbmanager to arrange icons on the device using drag and drop. iPad support is WIP.
Backup/Restore Done (1.1.1+) 10.3 Use the idevicebackup tool for full and incremental native backups and restoring from them. Use idevicebackup2 on iOS 4+.
Remote Syslog Done 10.3 Use idevicesyslog tool to view the syslog in realtime.
Date and Time Done (1.1.1+) 10.3 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+) 10.3 Use the ideviceprovision tool to manage provisioning profiles of a device.
Diagnostics Done (1.1.5+) 10.3 Use the idevicediagnostics tool to restart, shutdown and sleep the device alongside retrieval of diagnostics information and the IORegistry.
Developer Images Done 10.3 Use the ideviceimagemounter tool to mount and use developer disk images. iOS 8 support requires (1.1.7+).
Debugging Done (1.1.5+) 10.3 Use the idevicedebugserverproxy tool to remote debug applications using LLDB. Developer image needs to be mounted using ideviceimagemounter.
Packet Capture WIP 10.3 Use a tool to capture live network traffic in pcap format from a device.
Crash Reports Done (1.1.7+) 10.3 Use the idevicecrashreport tool to retrieve crash logs from a device.
Instruments WIP 10.3 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+) 10.3 Use the idevicewebinspectorproxy tool to remote debug MobileSafari (WebKit Remote Debugging Protocol).



We'll miss you, Steve.

Steve Jobs, 1955 - 2011