LibIMobileDevice

 

LibIMobileDevice

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

      

About:

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.

News:

  • 26.04.2017: libplist 2.0.0 has been released featuring a completely new parser, dropped libxml2 dependency, various improvements, bugfixes and many security fixes. More releases coming up.
  • 05.07.2016: Yep, libimobiledevice works with iOS 10.
  • 03.11.2015: Apple removed the ability to archive apps from an iOS device with iOS 9. Added Apple TV 4G and iPad Pro as supported devices.
  • 10.06.2015: Yep, libimobiledevice works with iOS 9.
  • 28.01.2015: Proud to announce libimobiledevice-1.2.0.tar.bz2 (stable). This marks an important milestone with proper iOS 8 support that is packed with new features, tools, speed improvements, code refactoring, crash fixes, memory leak fixes and much more. Thanks to all the contributors! New releases of libplist and usbmuxd will follow soon.
  • 14.12.2014: Follow us on Twitter for development and release news.
  • 17.10.2014: usbmuxd-1.1.0.tar.bz2 has been officially released.
  • 15.10.2014: Release spree! libplist-1.12.tar.bz2libusbmuxd-1.0.10.tar.bz2usbmuxd-1.0.9.tar.bz2libimobiledevice-1.1.7.tar.bz2 (unstable)ideviceinstaller-1.1.0.tar.bz2 and libideviceactivation-1.0.0.tar.bz2 have been officially released.
  • 27.05.2014: New releases are coming with great improvements, a big announcement and a new website.
  • 22.03.2014: Release time! Proud to announce libimobiledevice-1.1.6.tar.bz2 (unstable) after more than a year of development. Furthermore there are new releases of libplist-1.11.tar.bz2 and libusbmuxd-1.0.9.tar.bz2. This marks an important refactoring effort for proper iOS 7 support. It's packed with new features, tools, speed improvements, code refactoring, crash fixes, memory leak fixes and much more.
  • 01.03.2014: ifuse-1.1.3.tar.bz2 has been officially released.
  • 24.12.2013: Merry christmas and happy holidays to everyone!
  • 04.12.2013: Superb, Ruby bindings for libimobiledevice! The guys from blueboxsecurity have announced open-source Ruby bindings for libimobiledevice. Check them out on github.com here.
  • 03.11.2013: Connectivity with iPad Air and 5S is available and the tools work. However, firmware restore is not supported due to different file formats. Work in progress...
  • 20.08.2013: iOS 7 is working but we want it to work beautifully. There is need for refactoring of the architecture a bit on Linux, too. The next release of version 1.1.6 will provide proper support without the hickups.
  • 13.07.2013: Reports on the mailing list indicate libimobiledevice works just fine with upcoming iOS 7.
  • 28.06.2013: The libimobiledevice stack can now also be found mirrored at github.com/libimobiledevice. Feel free to spam us with your pull requests and issue tickets.
  • 19.03.2013: libimobiledevice-1.1.5.tar.bz2 (unstable) for developers has been officially released. This release contains major additions like an improved idevicebackup2 tool, various new tools, better cross-platform building, crash fixes, iOS 6+ compatibility fixes and an important API change related to service lifecycle management. Grab it while it's hot. The next release is near aswell and we hope to have 1.2.0 stable ready asap.
  • 19.03.2013: libplist 1.10 has been released as a follow-up to 1.9 where cython bindings were broken. This update should also reflect the entire API in C++ and Python bindings (cython and swig) now. Additionally, plutil has been renamed to plistutil.
  • 18.03.2013: libplist 1.9 has been released featuring various bugfixes and support for the UID node type.
  • 04.05.2013: It is time again for Google's Summer of Code in 2013. The KDE folks are proposing a project idea to provide a tight integration between iOS and KDE using libimobiledevice! Read more about it on the KDE Community Wiki.
  • 23.02.2013: iOS 6.1.2 works fine with libimobiledevice. A new service protocol implementation useful for WebKit remote debugging was merged into master.
  • 24.09.2012: iPhone 5 is tested and works fine, a fix for running idevicebackup2 with iOS 6.0 will be ready soon, too.
  • 20.09.2012: iOS 6.0 works fine with libimobiledevice except idevicebackup2 which needs an update (WIP). iPhone 5 is yet untested but will hopefully be tomorrow.
  • 11.04.2012: ideviceinstaller-1.0.1.tar.bz2 has been officially released.
  • 09.04.2012: ifuse-1.1.2.tar.bz2 has been officially released.
  • 08.04.2012: libimobiledevice-1.1.4.tar.bz2 (unstable) for developers has been officially released alongside required usbmuxd 1.0.8 with a couple of important fixes.
  • 22.03.2012: libimobiledevice-1.1.2.tar.bz2 (unstable) for developers has been officially released. Most prominent is iOS 5 support, OpenSSL support, improved Python bindings, removed glib dependency, API improvements and various minor fixes. Thanks to all contributors and supporters.
  • 22.03.2012: libimobiledevice 1.0.7 has been released. Most prominent changes are fixes to work fine with iOS 5 and later.
  • 13.03.2012: iOS 5.1 works fine with libimobiledevice including the "new" iPad.
  • 12.01.2012: Nikias (@pimskeks) has taken over maintainership of the usbmuxd project. The official git repository is now here. Thanks to Hector Martin (@marcan42) for his great work and support!
  • 11.01.2012: Happy New Year! libplist 1.8 has been released fixing a memory corruption bug and adding cython based bindings. Please mind that the library and tools also work with the iPhone 4S right now.
  • 14.10.2011: iOS 5 music sync has a lot of changes. Linux users who want to sponsor the required implementations feel free to donate.
  • 12.10.2011: libimobiledevice git master works with iOS 5 just fine. You might have to run "idevicepair unpair && idevicepair pair" if you should have trouble connecting after an upgrade.
  • 16.09.2011: libimobiledevice is still in the works. The 1.2.0 release is targeted at the end of October. Features like new Python API and remote GDB debugging are on the list.
  • 07.06.2011: libimobiledevice works with iOS 5 Beta 1. A small fix was required to make it work which was pushed to master and will be available in the next release. Further testing to come.
  • 28.04.2011: libimobiledevice-1.1.1.tar.bz2 (unstable) for developers has been officially released to lead to the 1.2.0 stable series. Most prominent is full backup/restore support on iOS 4+ and compatibility for iOS 4.3. Thanks to all contributors and supporters.
  • 31.03.2011: Some inoffical ports of libimobiledevice for Windows (shared DLL and static LIB) for developers are available here.
  • 27.03.2011: libimobiledevice git master has gained a new "idevicedate" tool which allows to get and set the device clock aswell as sync your system time to the device clock.
  • 26.03.2011: libimobiledevice 1.0.6 has been released (obsoleting previous 1.0.5). It introduces a workaround for a bug in iOS 4.3 which should prevent crashes in libgpod enabled applications and using tools.
  • 22.03.2011: A nice HOWTO shows how to create ringtones for your iPhone using Linux.
  • 22.03.2011: First code to push contacts of Evolution addressbooks into any iDevice using native protocols. Looking for contributors to turn it into a full two way synchronization Evolution plugin.
  • 22.03.2011: usbmuxd 1.0.7 has been released adding inotify, iPad 2 and next generation iPhone support.
  • 20.03.2011: libplist 1.4 has been released fixing memory leaks and a bug in writing binary plists. On Mac OS X, libimobiledevice and related libraries are now packaged by the Fink Project.
  • 19.03.2011: ideviceinstaller 1.0.0 has been released.
  • 13.03.2011: Reports say iOS 4.3 connectivity is working but there are a few minor quirks to fix in the tools.
  • 12.02.2011: libplist maintainership has been transfered to this project. Official master sourcecode repository of libplist can now be tracked here. Thanks to Jonathan Beck for writing this excellent library and also thanks to the contributors. Following this, the release of libplist 1.4 is next.
  • 12.01.2011: ifuse-1.1.1.tar.bz2 has been officially released mainly adding iTunes filesharing support. Thanks to all contributors and supporters.
  • 03.01.2011: Happy New Year! German c't Magazin Issue 2/2011 which is available in stores now features a nice article about in-depth libimobiledevice usage on page 128 onwards for German readers.
  • 28.12.2010: If you use the GNOME Desktop you might be interested in the Totem AirPlay Plugin. This should allow any iOS 4.2.1+ capable device to stream video to your desktop as well as control it using AirPlay.
  • 17.12.2010: libimobiledevice-1.1.0.tar.bz2 (unstable) for developers has been officially released to lead to the 1.2.0 stable series. Mind that the API is subject to change and the Python bindings will be replaced. Thanks to all contributors and supporters.
  • 09.12.2010: Connecting to the new Apple TV has been tested and works fine. Not all services are available on the device though (for instance backup and springboard services are obviously not available).
  • 02.12.2010: Some users report that they are still unable to connect with iOS 4.2.1 on libimobiledevice 1.0.4. Reports have shown that running "idevicepair unpair" fixes the connection issue for them.
  • 27.11.2010: libimobiledevice 1.0.4 has been released. One important change is a fix to connect to iOS 4.2.1 devices.
  • 26.11.2010: iDevices with iOS 4.2.1 fail to establish a SSL connection. Apparently, GNUTLS has a bug (we verified that it works when using OpenSSL instead) which prevents libimobiledevice to do SSL communication with an iDevice. We are debugging GNUTLS and if you like to help join #libimobiledevice on freenode.
  • 06.11.2010: An implementation for application document sharing (also known as "iTunes Filesharing") has landed in git master. iFuse has been extended to use this functionality.
  • 24.10.2010: usbmuxd 1.0.6 has been released.
  • 12.10.2010: Some clarification: While we managed to copy music to iPhone 4 and iPad devices, however getting a clean implementation of our code into libgpod will take some time.
  • 04.10.2010: libimobiledevice 1.0.3 has been released. Conduit has been updated with udev support (obsoleting HAL) and picked up some of our PIM synchronization code! Great news for those who wait to synchronize their devices with for instance Evolution.
  • 21.09.2010: We got hold of iPad and iPhone 4 devices for testing. Adjusting sbmanager to work with the iPad is already in progress. No public code available yet. Backup for iOS 4+ devices has been implemented, working on restore to bring it on par with pre iOS 4 idevicebackup.
  • 23.08.2010: First attempt at iOS 4 music synchronization with an iPhone 4 has succeeded. The new hash algorythm is reversed. Some time will pass though to clean it up and make iPhone 4 and iPad owners happy again.
  • 31.07.2010: iOS 4 music syncing for last-gen devices works just fine. sbmanager has gained support for the iPhone 4 and managing of folders.
  • 22.07.2010: usbmuxd 1.0.5 has been released.
  • 22.06.2010: iOS 4 is released and basic libimobiledevice functionality works fine. libgpod music syncing is broken right now but should work soon for all last-gen iOS 4 devices. What we know for sure is that iPad and iPhone 4 music syncing is not supported.
  • 20.06.2010: iOS 4 and iPhone 4 release is approaching thus a reminder for donations. libimobiledevice 1.0.2 has been released.
  • 10.06.2010: nautilus-ideviceinfo 0.1.0 has been released.
  • 10.06.2010: Several milestones have been met. Backup including restore is now in git master. Tools are available for software update/restore and device activation. Last step is mobile synchronization.
  • 29.05.2010: The security flaw is unrelated to Ubuntu/Linux/libimobiledevice as described here and only applies if device is powered off unlocked.
  • 27.05.2010: Some security sites report that even passcode enabled devices get auto-mounted. We could not reproduce this yet. However it might point at some bug during boot in the iPhone OS. Accessing a passcode enabled device the first time does not work in our tests as one would expect. Devices taking more time booting might be affected though, on any OS.
  • 18.05.2010: usbmuxd recognizes devices in recovery mode and flashing an ipsw has succeeded.
  • 13.05.2010: A working interface for the mobilesync service has been pushed to master. This should help implementing a two-way PIM synchronization solution.
  • 12.05.2010: libimobiledevice 1.0.1 has been released fixing memory leaks and some minor issues.
  • 11.05.2010: usbmuxd 1.0.4 has been released fixing two crash bugs.
  • 24.04.2010: First KDE desktop integration using kio_afc by Jonathan Beck.
  • 07.04.2010: Initial testing shows libimobiledevice supports the iPad just fine.
  • 31.03.2010: GNOME 2.30 has been released and features libimobiledevice support.
  • 22.03.2010: usbmuxd 1.0.3 has been released.
  • 21.03.2010: Official 1.0.0 release of libimobiledevice and ifuse.

Project:

Packages:

Contribute:

Sources and Dependencies:

 

Status:

FeatureStatusiOSNotes
Filesystem AccessDone10.3Using iFuse with fuse, on GNOME using GVFS >= 1.5.1 or kio_afc on KDE.
Document SharingDone (1.1.1+)10.3Use iFuse with the "--documents APPID" argument to mount a document folder of an application and simply manage your files as needed.
Music/Video SynchronizationDBVersion <= 44.3.5Rhythmbox, 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 SupportWIP10.3Allow libimobiledevice to talk to a device over the network (aka iTunes WiFi Sync).
Software Update/RestoreDone (1.1.0+)10.3Using idevicerestore and libirecovery, updating and restoring devices is possible.
Phone ActivationDone10.3Using ideviceactivation activating or deactivating your device is possible.
Camera/Photo SynchronizationNo10.3PTP photo access works. Camera roll management needs implementation to parse the file format.
Calendar SynchronizationPartly (One way)8.3.0Experimental Conduit module exists. Python implementations can dump the data as iCalendar.
Contacts SynchronizationWIP8.3.0Experimental Conduit module exists. Python implementations can dump the data as vCard. Evolution Addressbook to iDevice
Notes SynchronizationPartly (One way)8.3.0Experimental Conduit module exists. Python implementations can dump the data as XML notes.
Bookmarks SynchronizationPartly (One way)8.3.0Experimental Conduit module exists. Python implementations can dump the data as XBEL bookmarks.
USB Internet TetheringDone10.3Use 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 TunnelingDone10.3Use the iproxy tool provided by usbmuxd. This for instance allows accessing SSH or a device webserver locally.
ApplicationsDone10.3Use ideviceinstaller to list, install, uninstall and archive (< iOS 9) your own apps or to install carrier profiles.
Manage SpringBoardDone10.3Use sbmanager to arrange icons on the device using drag and drop. iPad support is WIP.
Backup/RestoreDone (1.1.1+)10.3Use the idevicebackup tool for full and incremental native backups and restoring from them. Use idevicebackup2 on iOS 4+.
Remote SyslogDone10.3Use idevicesyslog tool to view the syslog in realtime.
Date and TimeDone (1.1.1+)10.3Use 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.
ProvisioningDone (1.1.5+)10.3Use the ideviceprovision tool to manage provisioning profiles of a device.
DiagnosticsDone (1.1.5+)10.3Use the idevicediagnostics tool to restart, shutdown and sleep the device alongside retrieval of diagnostics information and the IORegistry.
Developer ImagesDone10.3Use the ideviceimagemounter tool to mount and use developer disk images. iOS 8 support requires (1.1.7+).
DebuggingDone (1.1.5+)10.3Use the idevicedebugserverproxy tool to remote debug applications using LLDB. Developer image needs to be mounted using ideviceimagemounter.
Packet CaptureWIP10.3Use a tool to capture live network traffic in pcap format from a device.
Crash ReportsDone (1.1.7+)10.3Use the idevicecrashreport tool to retrieve crash logs from a device.
InstrumentsWIP10.3Use 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 DebuggingDone (1.1.5+)10.3Use the idevicewebinspectorproxy tool to remote debug MobileSafari (WebKit Remote Debugging Protocol).

FAQ:

  • Just installed the library, now what? Nothing happens.
    Most likely you will also need to update the applications that use libimobiledevice for it to become useful. For instance GVFS >= 1.5.1 needs to be updated to allow filesystem access and the same goes for libgpod4 for music synchronization. After updating the stack and related libraries you might want to restart your desktop session (logout/login or restart). To test if you installed everything correctly plug in your device and run "ideviceinfo" within a terminal. Congratulations if it prints a lot of details about your device.
  • I can see my iPhone/iPod Touch in Rhythmbox, move over music and I know it is was copied to the device but it never shows up on the device!
    Make sure you see the "Sync in Progress" screen on your device before unplugging it. It is that screen which will make your device recognize the tracks you copied over. Unplugging the device earlier will leave the files on the device, however never update the device media player's music database. Currently Rhythmbox does not have an optimal workflow syncing the changes and this is being worked on (like syncing directly after all tracks are finished copied). Also make sure you have an "iTunes_Control/Device" folder. If not, follow step 5 from here.
  • My iPhone/iPod Touch never shows up on the desktop! What is wrong?
    There are three prominent causes: 1. You might simply need to restart your desktop after a fresh install. 2. If you have a passcode enabled on the device, disable it when connecting the first time to your computer. 3. Make sure to use a good USB cable, as some cheap cables from Asia have shown to cause communication issues. 4. Try connecting using a different USB port and do not connect using a hub, this can cause hardware related issuse in some rare cases (this should be evident in your system log). 5. Report your issue on our Bug Tracker. This helps you and others.
  • My GNOME desktop shows two iPhone/iPod Touch icons! Why?
    The devices expose a standard PTP (Picture Transfer Protocol) USB interface which the GVFS libgphoto2 backend uses to access pictures. Due to the addition of accessing the device using libimobiledevice, two icons show up. However, this issue is already fixed in the latest GVFS release along GNOME 2.30 where only one icon will show up.
  • Do I need to use iFuse to mount the device?
    iFuse is only useful if you want to mount the device manually and if you do not have GNOME and GVFS installed. Otherwise it is useless since GNOME's GVFS supports accessing the device directly and creates a fuse mount in ~/.gvfs/, too.
  • Does the library to device communication break everytime a new iOS® is out?
    The library has shown to be compatible with firmware releases going back to the 1.x series up to todays without issues. At rare times, bugs introduced by the firmware had to be worked around with simple fixes but nothing major prevented it from working. Thus in effect, the implementation proves very stable and compatible among firmware releases.

Links:

 

Credits/Sponsors:

  • The library has been developed by a bunch of smart and nice people and is currently maintained by Martin Szulecki. Please see the AUTHORS file in the release tarballs.
  • © 2007-2015 by the contributors of libimobiledevice - All rights reserved.

This library is free open source software and licensed under the LGPL 2.1.
Apple, iOS, iPhone, iPod, iPad, iPod Touch, Apple TV and iTunes are trademarks of Apple Inc.
This project is an independent software library and has not been authorized, sponsored, or otherwise approved by Apple Inc.
The library has not been sponsored by and is not affilated with Ubuntu or Canonical Ltd.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值