Jump to content
Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Log in or create an account to edit The Apple Wiki.

libimobiledevice

From The Apple Wiki

libimobiledevice
Original author(s)Matt Colyer
Developer(s)
Initial release29 July 2008 (2008-07-29); 18 years ago[1]
Stable release
1.4.0 / 10 October 2025 (2025-10-10); 10 months ago
Repositorygithub.com/libimobiledevice
Operating systemmacOS, Linux, Windows
Available inEnglish
TypeLibrary
License
Websitelibimobiledevice.org

libimobiledevice is an open-source cross-platform set of libraries that replace Apple's MobileDevice Library. It provides comprehensive functionality for working with iOS devices over USB and Wi-Fi.

It is widely adopted by tools that provide maintenance or forensic access to an attached iOS device. It is also used by Linux desktop environments such as GNOME to support integrations such as viewing files on the device, and by jailbreak and firmware downgrade tools.

History

Community discussions on reverse engineering MobileDevice (then named iTunesMobileDevice) first occurred shortly after the 29 June 2007 (2007-06-29) release of iTunes 7.3, the first version to support the iPhone.[2] On 21 August 2007 (2007-08-21), Matt Colyer announced in a blog post that he was investigating the underlying USB protocol.[3] On 23 August 2007 (2007-08-23), he released iphone-module, a Linux kernel driver that allowed the device to charge when attached to a computer.[4]

On 16 December 2007 (2007-12-16), Colyer announced the iphone-linux project.[5] Initially including ifuse, a FUSE driver that provides access to media on the device via AFC, it was extended to include libiphone,[when?] aiming to develop an open-source reimplementation of iTunesMobileDevice.

Around early 2008, Jonathan Beck split libiphone's plist parser out to its own library, libplist. On 13 December 2008 (2008-12-13), libiphone was updated to use his library.[6] On 13 April 2009 (2009-04-13), it became part of the libiphone project.[7]

The current project maintainers, pimskeks (Nikias Bassen) and FunkyM (Martin Szulecki), began contributing to the project on 8 January 2009 (2009-01-08) and 13 April 2009 (2009-04-13), respectively.[8][9]

On 26 April 2009 (2009-04-26), marcan made the initial commit to the usbmuxd project.[10] A "nikias" branch was developed,[when?] allowing it to be used by libiphone. On 20 August 2009 (2009-08-20), the branches were merged, making usbmuxd part of the libiphone project.[11]

On 29 January 2010 (2010-01-29), libiphone was renamed to libimobiledevice.[12] Colyer made his final commit to the project on 22 March 2010 (2010-03-22).[13]

Components

libimobiledevice is split into several components:

Project Description
ideviceinstaller Manages installed apps
idevicerestore Firmware restore/upgrade tool
ifuse FUSE filesystem driver to access contents of a device
libideviceactivation Tool to manage activation of a device
libimobiledevice Main protocol library
libimobiledevice-glue Common code used by libimobiledevice components
libirecovery Library and utility to talk to iBoot/iBSS via USB
libplist PList File Format parser
libtatsu Handles communication with Tatsu Signing Server (TSS)
libusbmuxd Multiplexes connections from and to iOS devices
usbmuxd Daemon that manages access to libusbmuxd sockets

The project formerly included gnome-plist-editor (GUI for editing property lists), sbmanager (GUI for editing home screen icon layout), and totem-plugin-airplay (plugin to use Totem as an AirPlay receiver), all of which are abandoned.

References