Version 1.2.1 ~~~~~~~~~~~~~ * Development release "Let's get this going." * Changes: - Fix Python 3 support - Add more lockdown error codes - Add new lockdownd_pair_with_options() function - Fix GnuTLS support with iOS 10 - Make sure sockets only listen locally due to security reasons - Plug various memory leaks - Fix SSL version negotiation for newer versions of OpenSSL - Optimize lockdown pair record handling - Return proper error code when a lockdown pair record is missing - Fix building with MingGW - Store application information in Info.plist using idevicebackup2 - Fix application backup handling to allow the device to restore applications that were installed using idevicebackup2 - Make idevicebackup2 reboot after restore the default to allow the device to migrate data correctly and thus improve the restored device data state - Improve console frontend information output in idevicebackup2 - Extend ideviceprovision tool to allow retrieving and removing all provisioning profiles - Fix parsing large provisioning profile using ideviceprovision - Fix receiving large property lists in property list service - Propagate lower level errors to callers instead of returning IDEVICE_E_UNKNOWN_ERROR - API: Add IDEVICE_DEVICE_PAIRED event type - Detect screenshot format to support png, tiff and dat formats using idevicescreenshot tool - API: Add mobileactivation service implementation - Wait for passcode entry if required using idevicesyslog - Add HDMI option to diagnostics command for idevicediagnostics - Fix IORegistry command for iOS 11+ devices in idevicediagnostics - Remove 40-digit character limit for UDID in tools to support newer devices - Fix broken validate command in idevicepair with iOS 11+ - Fix OpenSSL version checks for configure target when using LibreSSL - Migrate latest improved common code from libusbmuxd - Convert README file to markdown format - Fix idevicecrashreport tool to work with iOS 13+ - Fix various errors in SSL communication logic - API: Add preboard service implementation - Output hint to user to enter passcode when changing password using idevicebackup2 - Cython: Fix and improve debugserver and diagnostics service bindings - API: Add WiFi device support via new idevice_new_with_options() function - API: Add idevice_get_device_list_extended() to also list network devices - API: Add lockdown_strerror() helper to get error representation as string - Add network device support to idevicesyslog and ideviceinfo tools - Make debug output consistently output to stderr - Add new idevicesetlocation tool (requires mounted developer image) - Add option to exit if device disconnects in idevicesyslog - API: Add syslog_relay_start_capture_raw() for raw syslog capture - Add color output and process filter support to idevicesyslog - API: Add companion_proxy service implementation - Bump dependency to libusbmuxd 2.0.1 - Bump dependency to libplist 2.1.0 - Improve error handling and reporting in library and tools - Fix various memory leaks in library and tools Version 1.2.0 ~~~~~~~~~~~~~ * Stable release "It took you so long baby!" * Changes: - Require autoconf 2.64 or later - Remove dev tools, will return either as proper tools or website examples - Refactor installation proxy service implementation and normalize code - API: Added instproxy_lookup() to efficiently lookup app information - API: Added instproxy_check_capabilities_match() to check device capabilities - API: Added various instproxy command and status plist getters - API: Make debugserver_client_set_ack_mode() public - Fix handling of clients reconnecting in idevicedebugserverproxy which previously didn't work properly - Flush stdout for every line in idevicesyslog - Fix shutdown of idevicedebugserverproxy tool which could hang - Notify user when erroneously using idevicebackup with iOS 4 or later - Enable build of idevicecrashreport on WIN32 - Fix thread handle leaks on WIN32 adding thread_new and thread_free - cython: Add receive/receive_timeout methods for iDeviceConnection to receive raw data from a connection - cython: Add new FILE_RELAY_E_PERMISSION_DENIED(-6) error - API: Refactor lockdown service internal error checking and add a bunch of new native errors - Convert int16_t macro error types into enum within common module, too - Add new "idevicenotificationproxy" tool to post or observe notifications - Fix overlong blocking in np_client_free() - Improve maintainability and Requires of pkg-config file - API: Add new LOCKDOWN_E_SERVICE_LIMIT error to detect service limit states - API: Remove const argv requirement for debugserver_command_new - cython: Add get_path_for_bundle_identifier() method to InstallationProxyClient - cython: Add DebugServerClient class to communicate with debugserver - Comply to strict function prototypes by using (void) instead of just () - Fix notification proxy shutdown process which was incorrectly implemented - Fix linking problems on OS X - Fix missing debug output which broke with the last release - Unify and improve various debug messages - Fix re-pairing if pairing with existing pair record failed initially - Skip printing long plist (16kb+) files to prevent excessive debug output - Move a few common helpers from backup tools to common utility helper code - Remove incorrect flags from afc_file_open() documentation - Fix various memory leaks Version 1.1.7 ~~~~~~~~~~~~~ * Development release "Cleaning up the yard." * Changes: - Fix broken app args, environment handling and memory leaks in idevicedebug - Make all tools print an error if lockdown connection fails - Convert int16_t macro error types into enum for better type-checking and for various debugging benefits - Avoid exporting non-public symbols for better ABI stability - Fix failing backup process for devices having a passcode set and entering lock state during the process in idevicebackup2 - API: Added lockdownd_start_service_with_escrow_bag() - API: Added afc_remove_path_and_contents() for recursive deletion - Fix last memory leak with OpenSSL through proper library deinitialization - Add new idevicedebug tool to interact with debugserver on a device - API: Add debugserver service implementation - Handle new PermissionDenied error of file_relay due new security in iOS 8+ - Fix retry loop problem when device requests 0 files in idevicebackup2 - Add trust dialog related error codes to Cython bindings - Fix various memory leaks in AFC implementation - Fix disk image upload with latest iOS 8 in ideviceimagemounter - Add new "dump" command to print information about a provisioning profile in ideviceprovision - Refactor plist print helper code and move it into common module for better reuse accross the tools - Do not crash if retrieving the system buid fails - API: Make generic "propery_list_service_client" public - Moved doc comments from private to public headers - Fix possible segfault when using lockdownd_get_value() due to always returning success - Do not read files entirely into memory during restore in idevicebackup - Plug a few memory leaks and fix invalid password check in idevicebackup2 - Add support for file sizes > 4GB on Win32 in idevicebackup2 - Fix declaration for DllMain on Win32 - Silence various compiler warnings - Fix assert within pairing logic * API is UNSTABLE Version 1.1.6 ~~~~~~~~~~~~~ * Development release "Way too overdue." * Changes: - Remove segmentation code from afc_file_read() to provide raw interface and more control to API consumer I/O logic - Implement global thread safe library initialization, especially to control SSL backend lifecycle - Major refactoring of pair record code and logic to use new usbmuxd pair record management interface - Replace user level with system wide pair record file handling - Bump dependency to libplist 1.11 and remove use of "plist_dict_insert_item" - Bump dependency to libusbmuxd 1.0.9 - Finish pair record and trust dialog handling for iOS 7+ - Improve AFC write performance and memory usage - Add support for custom output filename to idevicescreenshot - Fix detection and compilation for Python 3.x - API: Added file_relay_request_sources_timeout() - Fix broken HouseArrestClient class in cython bindings - Add new idevicecrashreport tool to retrieve crash reports and logs from a device - Prevent "Failed to restart/shutdown device" messages in idevicediagnostics - Link against ws2_32.dll on Win32 - Add support for iOS 7+ disk image mounting to ideviceimagemounter - Add new idevicename tool to get or set the device name - Allow unbacking of encrypted backups with a given password to idevicebackup2 - Remove sending "Goodbye" request on lockdown - Add support for newer PLIST_REAL based time type to idevicedate - Add note about setting time not working on iOS 6+ to idevicedate - Handle partial SSL reads correctly now to prevent random crashes - Fix duplicated output in ideviceinfo output - Remove a bunch of dead code - Fix deprecated OpenSSL "RSA_generate_key" with "RSA_generate_key_ex" which is available since OpenSSL 0.9.8 (July 2005) - Improve debug messages - Enforce "-fsigned-char" to fix issues on embedded platforms - Fix compilation with Clang/LLVM - Avoid versioning for shared library on Win32 - Add experimental support for controlling cloud backup mode to idevicebackup2 - Save EscrowBag when starting service for automatic unlocking in pair record - Remove pairing logic which is obsoleted by usbmuxd's preflight handler - Fix shutdown of SSL connection to be correct and no longer generate errors on device - Add support for GnuTLS 3.x and fix broken GnuTLS backend - Add extensions to generated certificates to match native ones - Add "systembuid" command to idevicepair - Allow starting service without the need for a running SSL session - Refactor more code into common module - Add option to filerelaytest to specify a source to request - Fix support for partial messages in webinspector implementation - Implement support for encrypted backups in idevicebackup2 - API: Export SSL control functions for idevice_connection_t - API: Make generic service client public to allow external service implementations - Implement *_start_service() helper for easier creation of service clients - Add public *_SERVICE_NAME defines for each service - Fix a great bunch of memory leaks after intensive valgrind session - Security: Fix insecure use of the /tmp directory (CVE-2013-2142) - A bunch of memory leak fixes - Python: Various fixes and support for "with" statement for AfcFile class - Python: Add Afc2Client class to allow jailbroken filesystem access - Fix linking issue with newer libtool as reported for Ubuntu - Fix stuck thread in idevicesyslog which broke quit from within the tool - Add syslog_relay service implementation and use it in idevicesyslog - API: Add instproxy_client_get_path_for_bundle_identifier() helper - API: Add afc_dictionary_free() helper - Move thread, socket, debug and userpref code to "common" source directory in order to improve code reuse - Fix broken byte order detection in configure.ac which could lead to broken AFC protocol communication on platforms without endian.h (Raspberry PI) * API is UNSTABLE Version 1.1.5 ~~~~~~~~~~~~~ * Development release * Changes: - Implement automatic reconnecting in idevicesyslog - Refactor all services to use new base service - Add new generic service_client_factory_start_service() helper - Implement a base service that all services inherit from - API: Refactor use of "port numbers" into a "service descriptor" which is a needed change as all services must now transparently support SSL. Fortunately, only minor changes are needed to migrate your code properly. - Add experimental ideviceheartbeat to allow service checkin over the network - Add heartbeat service implementation to keep alive network connections - Add webinspector service implementation for WebKit remote debugging - Fix idevicebackup2 failing due to integer overflow in free disk space calculation on 32 bit architectures and large disk capacities - Add support for encrypted and password protected backups to idevicebackup2 - Fix major "too long filename received" bug in idevicebackup2 - Various fixes for proper and tested WIN32 support including MinGW building - Fix various crashers and improve quality of idevicebackup2 tool - Add endianness helpers for systems lacking support - Fix idevicedate to work on iOS 6+ - Add idevicediagnostics tool - Add diagnostics_relay service implementation - Add idevicedebugserverproxy tool for remote lldb debugging - Add ideviceprovision tool - Add misagent service implementation to manage provisioning profiles - Fix crash if $HOME is empty or not defined - Fix non-ASCII characters being stripped when using plist communication - Improve compile support for cython and check it at configure time - Bump cython requirement to 0.17.0+ - Fix compilation of cython bindings - Python bindings now cover all C APIs - Fix iOS 6 compatibility for mobilesync, mobilebackup, mobilebackup2 and screenshotr by bumping device link protocol version number - Do not strip non_ASCII characters from XML plists - Fix possible crash when using OpenSSL * API is UNSTABLE Version 1.1.4 ~~~~~~~~~~~~~ * Development release * Changes: - Fix a bug in idevicesyslog causing the connection to close after timeout - Bump soname revision * API is UNSTABLE Version 1.1.3 ~~~~~~~~~~~~~ * Development release * Changes: - Bump libusbmuxd dependency to 1.0.8 - Fix reading from syslog_relay and remove null characters - Relicense ideviceimagemounter and idevicescreenshot to LGPL - Fix a crash when using restored_client_free() - API: Add sbservices_get_interface_orientation() - Update man pages and code comments for documentation - Minor cleanup * API is UNSTABLE Version 1.1.2 ~~~~~~~~~~~~~ * Development release * Changes: - Add Python bindings generated by Cython - Bump libplist requirement to latest 1.8 - Add support for OpenSSL with fallback to GNUTLS - Improvements and various fixes for Win32 and OS X build - Remove glib dependency - Improve restored implementation - Fix various memory leaks - Fix support for iOS 5 and later * SWIG Python Bindings are removed * API is UNSTABLE Version 1.1.1 ~~~~~~~~~~~~~ * Development release * Changes: - Add new idevicebackup2 tool for full backup and restore support on iOS 4+ - Add a workaround for a bug in iOS 4.3 affecting lockdown_get_value() which most prominently affected libgpod, gvfs, ideviceinfo and some other tools - Read ProxyDeath message to preventing obsolete messages in device syslog - Rework SWIG detection and includes - Add new idevicedate tool to get or set the clock on iDevices - API: Add mobilesync_clear_all_records_on_device() - API: Change device_link_service_disconnect() to accept a message - Add manpages for ideviceenterrecovery, idevicepair, idevicebackup2 and idevicedate - Add missing libgen.h include to silence compiler warnings - Fix a segfault that might occour if locally stored certs could not be read - Fix various memory leaks - Update documentation * Python Bindings will get refactored completely * API is UNSTABLE Version 1.1.0 ~~~~~~~~~~~~~ * Development release * Changes: - Implement restoring backups using idevicebackup - Allow connecting without pairing using "ideviceinfo -s" - Add ideviceenterrecovery tool - Add mobilesync service implementation - Add restored service implementation for restore mode - Add home_arrest service implementation for document sharing - Add API afc_client_new_from_connection() - Support to fetch wallpaper in sbservices - Support for formatVersion 2 of iOS 4+ in sbservices - Add new lockdownd domains to ideviceinfo - Give the device time to prepare backup data to prevent abort - Improve idevicebackup output - notification_proxy fixes and new notification type - Silence some 64bit compiler warnings - Fix various memory leaks - Update documentation * Python Bindings will get refactored completely * API is UNSTABLE Version 1.0.7 ~~~~~~~~~~~~~ * Maintenance release of stable series * Changes: - Fix SWIG 2.x detection - Fix support for iOS 5 and later - Flush output of idevicesyslog immediately - Replace deprecated GNUTLS functions properly - Fix segfaults in library and some tools - Fix memory leaks - Build fixes Version 1.0.6 ~~~~~~~~~~~~~ * Quick follow up release * Changes: - Add ideviceenterrecovery which was missing in last release by accident Version 1.0.5 ~~~~~~~~~~~~~ * Maintenance release of stable series * Changes: - Add a workaround for a bug in iOS 4.3 affecting lockdown_get_value() which most prominently affected libgpod, gvfs, ideviceinfo and some other tools - Read ProxyDeath message to preventing obsolete messages in device syslog - Rework SWIG detection and includes - Add manpages for ideviceenterrecovery and idevicepair - Add missing libgen.h include to silence compiler warnings Version 1.0.4 ~~~~~~~~~~~~~ * Maintenance release of stable series * Changes: - Fix a possible crash in lockdownd_client_new_with_handshake() - Do not not check for Swig/Python if --without-swig is set - Fail with an error message if libgcrypt is not found - Pass host certificate with GNUTLS correctly - Fix connecting to iOS 4.2.1+ devices Version 1.0.3 ~~~~~~~~~~~~~ * Maintenance release of stable series * Changes: - Terminate idevicesyslog on receive errors (like device unplug) - Bugfixes for idevicebackup tool - Hopefully the last fixes for big endian machines - Build fixes for FreeBSD Python support - Fix build on Mac OS X Version 1.0.2 ~~~~~~~~~~~~~ * Maintenance release of stable series * Changes: - Backport new idevicepair tool to manage pairings - Fix a bug causing bad backup data - Silence 64bit compiler warnings - Plug some memory leaks Version 1.0.1 ~~~~~~~~~~~~~ * Maintenance release of stable series * Changes: - Cleanup includes of files - Use glib instead of netinet for endianess - Fix installation_proxy not adding client options correctly - idevicebackup: better handle broken or missing plist files - Fix some memory leaks in pairing/handshake process - Fix label not being used in lockdownd_client_new() - Update AUTHORS, README and installation instructions Version 1.0.0 ~~~~~~~~~~~~~ * Changes: - Update and fix documentation for full coverage - Add man pages for tools - Extend mobilebackup interface - Add user data argument to notification callback function - Fix broken Python bindings - Add Python bindings for notification proxy interface - Add screenshotr interface and tool - Add mobile_image_mounter interface and tool - Remove HAL fdi rules Version 0.9.7 (RC1) ~~~~~~~~~~~~~~~~~~~ * Project is now called libimobiledevice due to legal reasons * Changes: - Project renamed to libimobiledevice - Add soname versioning for future releases - Fix regression causing never paired devices to not work by adding auto-pairing for devices in lockdownd_client_new_with_handshake - Add file_relay service implementation and dev test tool - Minor device link service fixes - New idevicebackup tool with support for full and incremental backups - Add mobilebackup service implementation Version 0.9.6 ~~~~~~~~~~~~~ * Changes: - Minor public API changes to prepare for 1.0 release: * lockdownd_client_new -> lockdownd_client_new_with_handshake * fooservice_recv -> fooservice_receive * iphone_device_send/_recv -> iphone_connection_send/_receive - Rename some code for consistency - Refactor pairing to allow custom pair records - Move SSL handling out of lockdownd code - Refactor lockdown session handling code - Remove debug mask support - No longer do a full lockdown handshake on client_new - Refactor debug code to be consistent and easier to use - Run validate_pair by default during lockdown handshake - Allow retrieving the type for lockdown query_type request - Add new property_list_service and device_link_service abstractions - Detect pairing failure due to having a password set on the device - Implement lockdown phone activation and deactivation - Fix iphoneinfo not printing values in key/value mode - Implement lockdownd_unpair() request - Add more notification ids and lockdown domains - Implement label support for lockdown requests - Add new installation_proxy interface - Add new sbservices interface - Implement lockdownd_validate_pair() request - Add endian safety to AFC - Make lockdown sessions without SSL work - Fix linking on Mandriva Linux - Minor bugfixes and documentation updates Version 0.9.5 ~~~~~~~~~~~~~ * Changes: - Updated to the latest libplist 0.16 API - Fixed various minor leaks and issues - Updated Python bindings and module name Version 0.9.4 ~~~~~~~~~~~~~ * Changes: - Update to libplist 0.15 API rework - Update Python bindings - Bufixes around usbmuxd daemon usage - Use automake 1.11 silent rules if available - Various bugfixes Version 0.9.3 ~~~~~~~~~~~~~ * Changes: - Bump libplist requirement to 0.13 and remove deprecated code Version 0.9.2 ~~~~~~~~~~~~~ * Changes: - Migrate to use the new usbmuxd daemon - Refactor whole API - Add iPhone 3GS support - Add hard/symlink support for AFC - New iphone_id tool to list connected devices and get the device name - iphoneinfo now allows plist/xml output and queries by domain/key - Fix a lot of bugs/crashes, compiler warnings and comments Version 0.9.1 ~~~~~~~~~~~~~ * Changes: - Fix make distcheck - Bump libplist requirement to 0.12 and remove deprecated code - A bunch of autotools fixes Version 0.9.0 ~~~~~~~~~~~~~ * Changes: - Fix pkg-config dependancies - Fix Python binding generation - AFC cleanup and improved error handling - Add support for the notification proxy service - Add tools to show device information and relay syslog - More robust pairing implementation - Remove libiphone-initconf, SSL implementation handles it at runtime now - Fix receive of plists larger than a packet - Return an error if failed to start a service on the device - Fix usb enumeration - Fix udev rule to catch usb hubs, too - Add large file support - Move out plist handling into libplist and depend on it - Add Python bindings - Lots of bugfixes Version 0.1.0 ~~~~~~~~~~~~~ * Changes: - Use udev to set usb configuration; iphone kmod is obsolete now - Remove HAL mounting - Bugfixes