Adingüklemek

Slzii.com Gözlemek

https://libimobiledevice.org

libimobiledevice · A cross-platform FOSS library written in C to communicate with iOS devices natively.
Linux, iOS, iPhone, iPod Touch, iPad, iPad mini, Apple TV, iTunes, development, library, afc, lockdownd, libplist, installation_proxy, usbmux, plist, libirecovery, idevicerestore, iTunesCDB, tethering, backup, restore, C/C++, instruments, MDM, mobileconfig, provisioning, FOSS
libimobiledevice is a software library that talks the protocols to support iPhone, iPod Touch, iPad and Apple TV devices running iOS on Linux without the need for jailbreaking.
libimobiledevice · A cross-platform FOSS library written in C to communicate with iOS devices natively. libimobiledevice · A cross-platform FOSS library written in C to communicate with iOS devices natively. v1.4.0 Home (current) News Download Community FAQ Status Documentation Get Started Features Examples All Documentation libimobiledevice API libplist API libimobiledevice-glue API libusbmuxd API libirecovery API libtatsu API libideviceactivation API Resources v1.4.0 A cross-platform FOSS library written in C to communicate with iOS devices natively. ... and a bunch of libraries and command-line utilities.  Get Started  Download Toggle Dropdown ifuse 1.2.0 usbmuxd 1.1.1 libplist 2.7.0 libtatsu 1.0.5 libusbmuxd 2.1.1 libirecovery 1.3.1 idevicerestore 1.0.0 libimobiledevice 1.4.0 ideviceinstaller 1.2.0 libideviceactivation 1.1.1 libimobiledevice-glue 1.3.2 Features Native Protocols The library implements the native protocols needed to communicate with services running on iOS devices. Due to the reimplemention it does not depend on using or bundling any existing libraries from Apple. Cross-Platform The C programming language enables cross-platform use of the library. It has already been built and run on  Linux,  Mac,  Windows,  Android and embedded  ARM SoCs. Architecture The architecture of the library and dependencies has been designed with an OOP approach in mind. Thus bindings for other programming languages are easier to create and allow an OOP based API. Motivation Linux enthusiasts were not amused about great but incompatible hardware like the iPhone 2G. As iTunes was not available for Linux libiphone was born. This became libimobiledevice with the goal to bring freedom and "allow penguins to talk to fruits". Command-Line Many command-line utilities come bundled with the library that allow interacting with iOS device services already. This covers retrieving basic device information up to restoring official firmware images. Network Support Devices that have "Wifi Sync" enabled can be accessed wirelessly and do not require a wired USB connection anymore with iOS 11 and later. Years of Research Due to being in development since 2007 the library supports the range from the first to the latest iOS device. This is an achievement of many years of research and development. Scalability Being integrated by popular community projects as well as large implementations which interact with more than 10.000+ of devices provide a good reference point for high scalability and efficiency of this solution. Native Protocols Control devices running latest iOS firmware The library has been architected for easy access to native device features using an object-oriented higher-level API. This allows interacting with various native device service APIs to manage Apps, Backup, Filesystem, Debugging, Activation, Provisioning, SpringBoard, Syslog, Firmware Updates and much more. You can also use the bundled command-line utilities for these if you do not actually develop an application.  Get Started Connect (C)Read (C)Utilities (Console) ... #include /* Unique Device Identifier */ static char *udid = NULL; /* Device Handle */ idevice_t device = NULL; /* Try to connect to first USB device */ if (idevice_new_with_options(&device, NULL, IDEVICE_LOOKUP_USBMUX) != IDEVICE_E_SUCCESS) { printf("ERROR: No device found!\n"); return -1; } /* Retrieve the udid of the connected device */ if (idevice_get_udid(device, &udid) != IDEVICE_E_SUCCESS) { printf("ERROR: Unable to get the device UDID.\n"); idevice_free(device); return -1; } /* Outputs device identifier */ printf("Connected with UDID: %s\n", udid); /* Cleanup */ idevice_free(device); free(udid); ... ... #include #include /* Lockdown Service Handle */ lockdownd_client_t lockdown = NULL; /* Handshake with lockdownd */ lockdownd_client_new_with_handshake(device, &lockdown, "myapp"); /* Use the plist format */ plist_t node = NULL; /* Our result */ char *value = NULL; /* Retrieve "DeviceColor" setting value from device */ if(lockdownd_get_value(lockdown, NULL, "DeviceColor", &node) != LOCKDOWN_E_SUCCESS) { lockdownd_client_free(lockdown); idevice_free(device); printf("ERROR: Unable to retrieve setting key DeviceColor from device.\n"); return -1; } /* Get string value from node */ plist_get_string_val(node, &value); /* Output device color value */ printf("%s value is: %s\n", "DeviceColor", value); /* Cleanup */ plist_free(node); free(value); lockdownd_client_free(lockdown); ... $ ideviceinfo -k ProductVersion 12.4 $ ideviceinfo -s BasebandCertId: xxxxxxxxxx BasebandKeyHashInformation: AKeyStatus: 2 SKeyHash: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx SKeyStatus: 0 BasebandSerialNumber: xxxxxxxx BasebandVersion: 7.80.04 BoardId: 4 BuildVersion: 16G77 ChipID: 28672 DeviceClass: iPhone DeviceColor: #e1e4e3 DeviceName: iPhone 6 Plus DieID: xxxxxxxxxxxxxxx HardwareModel: N56AP HasSiDP: true PartitionType: GUID_partition_scheme ProductName: iPhone OS ProductType: iPhone7,1 ProductVersion: 12.4 ProductionSOC: true ProtocolVersion: 2 TelephonyCapability: true UniqueChipID: xxxxxxxxxxxxxxx UniqueDeviceID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx WiFiAddress: xx:xx:xx:xx:xx:xx $ ideviceactivation state ActivationState: Activated $ idevicediagnostics restart Restarting device. Download Please select a component to view download, release, and dependency information of the latest release.  libimobiledevice 1.4.0 A cross-platform protocol library to communicate with iOS devices Download (tar.bz2) LGPL-2.1 License Depends on: libusbmuxd libplist libimobiledevice-glue libtatsu libgnutls libtasn1 openssl readline 1.4.0 (2025-10-10) Development release. From now on, releases will be made more frequently. Changes Add support for MbedTLS Add Reverse Proxy implementation Add support for wireless pairing (AppleTV) Embed 3rd party libraries for ed25519 and SRP6a Fixes in idevicedebug idevicecrashreport: Allow filtering crash reports by filename Add idevicedevmodectl tool Fixes for idevicebackup2 Add property_list_client_get_service_client() and service_get_connection() functions Add idevicebtlogger tool Add new idevice_events_subscribe/unsubscribe API Move LIBIMOBILEDEVICE_API to public headers Add afc_strerror function Add libimobiledevice_version() function Use libimobiledevice-glue's SHA1 implementation Add support for iOS 17+ Personalized Developer Disk image mounting Fix compilation on MSVC Add idevice_strerror() to interface Add new idevice_get_device_version() to interface Add os_trace_relay service implementation Fixes for idevicesyslog afc: Add afc_get_file_info_plist and afc_get_device_info_plist functions ... and several other internal changes Bug fixes definitely some, it has been to long to go through everything  libplist 2.7.0 A library to handle Apple Property List format in binary or XML Download (tar.bz2) LGPL-2.1 License 2.7.0 (2025-05-14) Changes Add plist_new_unix_date, plist_get_unix_date_val, plist_set_unix_date_val functions that work with int64_t values representing a UNIX timestamp instead of using the 'MAC epoch'. These new functions should be used instead of plist_new_date, plist_get_date_val, and plist_set_date_val, which are now marked deprecated and might be removed in a future version of libplist. Allow building the library without tool(s) Switch to more generic global initializer method json: Allow e+/E+ in exponent as per RFC 8259 C++: Add more convenience functions to the interface C++: Add more type variants to different constructors and operators Bugfixes: Fix segmentation fault when calling plist_sort() on an empty dictionary Fix compilation on MSVC C++: Fix bug in internal helper function of Array class C++: Fix String::GetValue memory leaking and support assignment of const char*  libimobiledevice-glue 1.3.2 A library with common code used by libraries and tools around the libimobiledevice project Download (tar.bz2) LGPL-2.1 License Depends on: libplist 1.3.2 (2025-06-04) Changes socket: [macOS] Fix build on older macOS socket: [Windows] Prevent crash by properly initializing memory buffers Switch to better initializer strategy Fix compilation on MSVC Add extern "C" guards to public headers socket: Improve error message output/verbose logging socket: [Windows] Make sure errno is set in error conditions socket: Allow setting debug level via environment variable socket: [Windows] Use WSAAddressToStringA (ANSI version) socket: [Windows] Use inet_ntop instead of WSAAddressToStringA for >= Vista  libusbmuxd 2.1.1 A client library to multiplex connections from and to iOS devices Download (tar.bz2) LGPL-2.1 License Depends on: libplist libimobiledevice-glue 2.1.1 (2025-06-04) Changes tools: Fix potential issue with select() in case the network fd is higher than the usbmux fd Switch to better initializer strategy Fix compilation on MSVC iproxy: Make sure to print correct socket error messages inetcat: Make sure to report correct error messages  usbmuxd 1.1.1 A socket daemon to multiplex connections from and to iOS devices Download (tar.bz2) GPL-2.0 License Depends on: libimobiledevice libplist libusb 1.1.1 (2020-06-15) Maintenance release. Features Make use of libusb hotplug events for device discovery Get correct USB device speed instead of hardcoded value Bump libusb dependency to 1.0.9 Use non-blocking sockets for client communication to avoid hanging Use correct manual section (8) for manpage Log pid of connecting clients if supported Implement device discovery using libusb hotplug events Log error message if writing a config file fails Tag all udev events with systemd tag Set socket options for client connections to improve performance Implement ListListeners usbmux command handling Bump libimobiledevice dependency to 1.3.0 Bump libplist dependency to 2.2.0 Add support for iPhone XS/XR UDID format Add option to allow logging to dedicated logfile Convert README file to markdown format Add support for connecting with T2 chip Show actual libusb version in debug message on startup Enable libusb debugging output Log client process name alongside pid if possible on Linux Unify and improve log message output Improve README.md with project description, installation, contributing and usage sections Bug Fixes Use clock_gettime() instead of gettimeofday() to avoid timing issues when calculating packet timeouts Fix wrong timeout value in debug messages Fix blocking by using libusb asynchronous I/O for getting initial device information Fix occasional USB reconfiguration due to udev rules being run again Fix wrong timestamps when running in foreground Fix USB reconnection issues on virtual machines with iOS 11+ devices Various memory leak, deadlock and invalid free fixes  ideviceinstaller 1.2.0 Manage apps of iOS devices Download (tar.bz2) GPL-2.0 License Depends on: libimobiledevice libplist libzip 1.2.0 (2025-10-30) Breaking changes Command line options are now using subcommands like install, list, etc. instead of the old -i, -l Changes Add options for using external sinf and iTunes metadata Add JSON output capability Use CFBundleShortVersionString to display the app version Add -a command line switch to specify return attributes for 'list' command Add -b, --bundle-identifier command line switch to allow querying for bundle identifier Bug Fixes: Fix picking wrong app directory from zip/ipa when there are other directories Fix wrong exit code on specific output format (xml or json) Make sure to always return an error code if something goes wrong  libirecovery 1.3.1 Library and utility to talk to iBoot/iBSS via USB on Mac OS X, Windows, and Linux Download (tar.bz2) LGPL-2.1 License Depends on: libimobiledevice-glue libusb 1.3.1 (2025-10-17) Device database changes Support iPad Pro M5 family devices Support Apple Vision Pro M5 Support MacBook Pro 14-inch M5 Bug Fixes Fix array initialization compatibility with MSVC  libtatsu 1.0.5 Library handling the communication with Apple's Tatsu Signing Server (TSS) Download (tar.bz2) LGPL-2.1 License Depends on: libplist libcurl 1.0.5 (2025-06-04) Changes: Fix compilation on MSVC Add extern "C" guards to public headers Update auth client version  libideviceactivation 1.1.1 A library to handle the activation process of iOS devices Download (tar.bz2) LGPL-2.1 License Depends on: libimobiledevice libplist libcurl libxml2 1.1.1 (2020-06-15) Maintenance release. Breaking Rename library and all related files by adding an API version resulting in libideviceactivation-1.0 Features Add --network and --version options to ideviceactivation tool Bump libimobiledevice dependency to 1.3.0 Bump libplist dependency to 2.2.0 Improve README.md with project description, installation, contributing and usage sections Bug Fixes Ignore SIGPIPE signal  idevicerestore 1.0.0 Restore/upgrade firmware of iOS devices Download (tar.bz2) LGPL-3.0 License Depends on: libirecovery libimobiledevice libplist libcurl libzip openssl zlib 1.0.0 (2020-06-15) First official public release! Features Restore firmware files to iOS devices Use official IPSW firmware archive file or directory Updates the device by default or allows full restore erasing all data Download latest available firmware for device on demand Cache downloaded firmware files Restore using custom firmware files (requires bootrom exploit) Skip NOR/Baseband upgrade Fetch TSS records as .shsh files Put devices in pwned DFU mode (limera1n devices only) Use custom AP ticket from file Developed since 2010  ifuse 1.2.0 A fuse filesystem to access the contents of iOS devices Download (tar.bz2) LGPL-2.1 License Depends on: libimobiledevice libplist libfuse 1.2.0 (2025-10-14) Changes Switch to libfuse 3 Require libimobiledevice 1.4.0 Get Started Please choose your platform of choice below to see instructions on how to get started.  Linux Mac Windows Pi From Source (Debian) Using Ubuntu Using openSUSE Open Terminal Open a command-line terminal on your machine. Install Dependencies Enter the commands provided below. $ sudo apt-get install \ build-essential \ checkinstall \ git \ autoconf \ automake \ libtool-bin \ libplist-dev \ libimobiledevice-glue-dev \ libusbmuxd-dev \ libssl-dev \ usbmuxd Build Enter the commands provided below. $ ./autogen.sh \ --prefix=/opt/local \ --enable-debug $ make Install Enter the commands provided below. $ sudo make install Open Terminal Open a command-line terminal on your machine. Installation Enter the commands provided below. $ sudo apt-get install usbmuxd libimobiledevice6 libimobiledevice-utils Open Terminal Open a command-line terminal on your machine. Installation Enter the commands provided below. $ sudo zypper install libimobiledevice6 usbmuxd From Source (recommended) Using Macports Using Homebrew Building from source The provided build script will build the entire libimobiledevice stack with the least amount of external dependencies for macOS. Make sure to have Xcode Command Line Tools installed. It will build the latest code of every single libimobiledevice sub-project. Installation Open a terminal and type the following commands. During the process you will be asked for your user password which has the purpose of allowing the installation of the built libraries and tools to /usr/local/lib and /usr/local/bin via sudo. $ mkdir -p limd-build $ cd limd-build $ curl -Ls -o limd-build-macos.sh https://is.gd/limdmacos $ bash ./limd-build-macos.sh The script can be reviewed here. Open Terminal Open a command-line terminal on your machine. Installation Enter the commands provided below. $ sudo port install libimobiledevice Open Terminal Open a command-line terminal on your machine. Installation Enter the commands provided below. $ brew install libimobiledevice MSYS2 (recommended) Building from source Using MSYS2 is the official way of compiling this project on Windows. Download the MSYS2 installer and follow the installation steps. The provided build script will build the entire libimobiledevice stack with the least amount of external dependencies for Windows. Prerequesites It is recommended to use the MSYS2 MinGW 64-bit shell. Run it and make sure the required dependencies are installed: pacman -S base-devel \ git \ mingw-w64-x86_64-gcc \ make \ libtool \ autoconf \ automake-wrapper Note that usbmuxd is currently not fully supported on Windows. To use this library you need to have Apple Mobile Device Support package installed (part of iTunes). Installation In the MSYS2 MinGW shell, type the following commands: $ mkdir -p limd-build $ cd limd-build $ curl -Ls -o limd-build-msys2.sh https://is.gd/limdmsys2 $ bash ./limd-build-msys2.sh The script can be reviewed here. From Source (Pi OS) Using Raspberry Pi OS Open Terminal Open a command-line terminal on your machine. Install Dependencies Enter the commands provided below. $ sudo apt-get install \ build-essential \ checkinstall \ git \ autoconf \ automake \ libtool-bin \ libplist-dev \ libusbmuxd-dev \ libssl-dev \ usbmuxd Build Enter the commands provided below. $ ./autogen.sh \ --prefix=/opt/local \ --enable-debug $ make Install Enter the commands provided below. $ sudo make install Open Terminal Open a command-line terminal on your machine. Installation Enter the commands provided below. $ sudo apt-get install usbmuxd libimobiledevice6 libimobiledevice-utils Sponsor this project Want features to get implemented faster? Want to thank us for our countless hours of work? Want to help us to support newer devices and firmware versions? ... or help us to buy cables that just break so fast? Become a Patron  Support Development  Donate (web hosting) Latest News ideviceinstaller 1.2.0 ideviceinstaller 1.2.0 has been released. Breaking changes Command line options are now using subcommands like install, list, etc. instead of the old -i, -l Oct 30, 2025, 8:24 PM Updated Documentation The libimobiledevice API documentation has been updated for the latest 1.4.0 release, Oct 24, 2025, 3:21 AM libirecovery 1.3.1 libirecovery 1.3.1 has been released. Oct 17, 2025, 7:35 PM View all FAQ Just installed the library, now what? Nothing happens! 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. Feel free to checkout the documentation or dive into the source code. How do I copy music to my device? Sorry, music synchronization with newer devices is currently not supported but if you are a keen developer why not contribute a new service implementation for the ATC Service? Do I need to use ifuse to access files on my 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 "$XDG_RUNTIME_DIR/.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. Team Nikias Bassen @nikias Martin Szulecki @FunkyM Resources Our growing community created a wide variety of applications, language bindings, binary builds, integrations and other resources that can be helpful. Below is a collection of links to some of the most popular resources and related people. Projects  Automate any native, hybrid or mobile web application on iOS with Selenium using libimobiledevice. PIM sync using libimobiledevice. Provides a Conduit module. Another PIM Python sync "imobilesync" library. Provides a Conduit module. Show device information details in a Nautilus property page on Gdesktops. Manage SpringBoard Icons using libimobiledevice. KDE KIO Slave filesystem access using libimobiledevice. People  "Inventor" Matt Colyer Hector Martin, creator of a custom usbmuxd implementation Trusted Partners  Mirell Development provides solutions, software services, support and training around libimobiledevice. Join the Community We are thrilled that you would like to contribute to this project. Your help is essential for keeping it great. Contribute on GitHub Warm welcome for pull requests and technical stuff. Discuss on Mailing List The classic way by E-Mail. Ask on Stackoverflow Best for general questions and support. Follow on Twitter For latest updates in a birdly manner. Chat on Telegram Get hands on with developers. Chat on IRC Get hands on in ASCII style. We'll miss you, Steve. Steve Jobs, 1955 - 2011 © 2025 libimobiledevice. All rights reserved. Logo, Artwork & UI by Martin Szulecki. Generated by Cecil v5.x-dev on Mon, 03 Nov 2025 02:31:56 +0100
en
en
1773395404
https://libimobiledevice.org

Sahypaňyzy redaktirläňmi?

Näme edýärsiň?

0.0055670738220215


Web direktory
Web direktory

Web direktory
libimobiledevice is a software library that talks the protocols to support iPhone, iPod Touch, iPad and Apple TV devices running iOS on Linu...
Web direktory