libimobiledevice
More actions
| Original author(s) | Matt Colyer |
|---|---|
| Developer(s) | |
| Initial release | 29 July 2008[1] |
| Stable release | 1.4.0
/ 10 October 2025 |
| Repository | github |
| Operating system | macOS, Linux, Windows |
| Available in | English |
| Type | Library |
| License | |
| Website | libimobiledevice |
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 release of iTunes 7.3, the first version to support the iPhone.[2] On 21 August 2007, Matt Colyer announced in a blog post that he was investigating the underlying USB protocol.[3] On 23 August 2007, he released iphone-module, a Linux kernel driver that allowed the device to charge when attached to a computer.[4]
On 16 December 2007, 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, libiphone was updated to use his library.[6] On 13 April 2009, 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 and 13 April 2009, respectively.[8][9]
On 26 April 2009, 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, the branches were merged, making usbmuxd part of the libiphone project.[11]
On 29 January 2010, libiphone was renamed to libimobiledevice.[12] Colyer made his final commit to the project on 22 March 2010.[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.
External links
References
- ^ https://github.com/libimobiledevice/libimobiledevice/commit/e2ff1128351d75eafd5426af7f96f9719c1af3e6
- ^ https://web.archive.org/web/20071006131227/http://iphone.fiveforty.net/wiki/index.php/MobileDevice_Decompile
- ^ https://matt.colyer.name/2007/08/21/iphone-linux-support/
- ^ http://matt.colyer.name/2007/08/23/iphone-now-charges-in-linux/
- ^ https://matt.colyer.name/2007/12/16/iphone-linux-driver/
- ^ https://github.com/libimobiledevice/libimobiledevice/commit/4301ef9bb8e9d06ffa4e9172191d58ede5e16f5d
- ^ https://libiphone.lighthouseapp.com/projects/27916/tickets/2-merge-libiphone-libplist
- ^ https://github.com/libimobiledevice/libimobiledevice/commit/ef98ef7211bc6277e9a87349f0405957ab264936
- ^ https://github.com/libimobiledevice/libimobiledevice/commit/708029463ed4f1e8aa83ca1c98a0ea658247ef7a
- ^ https://github.com/libimobiledevice/usbmuxd/commit/677fa91e376b98d871bb238ecb84685dd4f33ebd
- ^ https://github.com/libimobiledevice/usbmuxd/commit/1a0c58e4062da7db73b4c08963f741cf016f6aa5
- ^ https://github.com/libimobiledevice/libimobiledevice/commit/96101a1231a4ddfeb40fd738a24e108a3a904048
- ^ https://github.com/libimobiledevice/libimobiledevice/commit/eced427b5e69e7422e5f16bf367be34668224f88
