Highlights
✨ Guided DFU mode, and restores that install the RecoveryOS
restore enter-dfu walks you through the DFU button sequence for your model, counting each step down and watching the device over USB, so it moves on the moment the screen goes black and tells you what to change if the device lands in Recovery or boots normally. restore update --dfu runs it before restoring. iOS restores now install the RecoveryOS the way Apple Configurator does (with its own RecoveryOS ticket), and the new experimental --exclusive-usb (macOS) keeps deviceinterfaced from grabbing the device mid-restore. (#2135, #2130)
pymobiledevice3 restore enter-dfu
pymobiledevice3 restore update -i iPhone.ipsw --dfu✨ Sync contacts, calendars, bookmarks and mail accounts
A new mobilesync client reads every record of a data class and can add, modify and delete records on the device. (#2118, #2127)
pymobiledevice3 mobilesync dump contacts
pymobiledevice3 mobilesync push contacts changes.json
pymobiledevice3 mobilesync delete contacts <record-id>✨ Supervised device management
profile gained request-unlock-token, clear-passcode, clear-restrictions-password, security-info and set-wallpaper for supervised devices (escalated with --keybag). Clearing the passcode drops the host's pairing; re-pair with lockdown pair-supervised. (#2126)
✨ More device controls
developer core-device universal-hid-service multi-tap/multi-drag: multi-finger touch (pinch, rotate, two-finger tap). (#2129)developer accessibility element-attributes: read the label, identifier, value and more of the focused element. (#2125)amfi trust-app-signer <profile-uuid>: trust the developer of an installed provisioning profile. (#2124)backup2 cloud on|off: turn iCloud Backup on or off. (#2116)lockdown auto-answer on|off: toggle Accessibility's Auto-Answer Calls. (#2133)crash clear --match <regex>: remove only matching crash reports. (#2123)- AFC: whole-tree removal in one request, file hashes, set-time, truncate and positional I/O, plus
sha1sum,touchandtruncatein the AFC shell. (#2114, #2128)
🐛 Fixes
lockdown unpairdeletes this host's pair records (locally and in usbmuxd), andpair/unpair/remotepairingprompt for a device when several are connected. (#2113)- Per-call service connections (heartbeat, companion, simulate-location, AMFI, crash flush, activation) are closed instead of leaking a file descriptor each. (#2132)
- The TLS handshake timeout is 30 s, so a service launchd is relaunching (mobilesync, for one) is not cut off. (#2117)
- syslog lines with
vis(3)escapes are decoded (#2122); OPACK back-references decode with opack2 0.2.0 (#2131); restores handle a second ASR Initiate (#2120), advertise async data types for macOS too (#2121), and know Mac18,5's chip ID (#2119).
♻️ irecv and typing
irecv is now a package with a transport per mode (Recovery, DFU) that owns the USB device, a typed UsbDevice, and fixes for an unbounded DFU wait and leaked USB handles (#2135). ipsw-parser 1.9.0 ships its types, so the restore code dropped its casts (#2134).
What's Changed
- 5f85e2c restore: Catch the reboot as it happens in the DFU guide (#2135) (@doronz88)
- f4e62e7 restore: Watch for DFU mode through IOKit on macOS (#2135) (@doronz88)
- 9dce89f restore: Guide the user into DFU mode (enter-dfu, update --dfu) (#2135) (@doronz88)
- 3321aef irecv: Give each mode a transport that owns the USB device (#2135) (@doronz88)
- 5da3112 irecv: Type the USB device instead of passing Any (#2135) (@doronz88)
- d9dc09b irecv: Split into a package of device info, transfers and the client (#2135) (@doronz88)
- 21fdcde docs: Describe --exclusive-usb (#2130) (@doronz88)
- 505c3d2 restore: Add --exclusive-usb to keep deviceinterfaced off the device (#2130) (@doronz88)
- 6e5d7af restore: Serve the iOS RecoveryOS data requests (#2130) (@doronz88)
- 2e74dbf restore: Require ipsw_parser 1.9.0 and drop the casts its types make redundant (#2134) (@doronz88)
- bceaf1e lockdown: Add auto-answer to toggle Accessibility's Auto-Answer Calls (#2133) (@doronz88)
- 0238334 mobilesync: Push added, modified and deleted records to the device (#2127) (@doronz88)
- 3166b12 afc: Add hash, set-time, truncate, tell and positional I/O operations (#2128) (@doronz88)
- e6d4287 mobile_config: Skip the AgeAssurance and DeviceFeaturesTour setup panes (#2126) (@doronz88)
- b3785ed mobile_config: Add wallpaper setting (#2126) (@doronz88)
- bc2f897 mobile_config: Add the SecurityInfo query (#2126) (@doronz88)
- 630e188 mobile_config: Add unlock-token, clear-passcode and Screen Time passcode requests (#2126) (@doronz88)
- fad284b services: Close per-call service connections (#2132) (@doronz88)
- 73c2251 deps: Require opack2 0.2.0 for OPACK back-references (#2131) (@doronz88)
- 8847bde crash: Add --match to clear for removing matching reports only (#2123) (@doronz88)
- 9f5b8fd hid: Add multi-finger touch (multi-tap, multi-drag) (#2129) (@doronz88)
- fb22930 skills: Mention accessibility element attributes in the device-operator task map (#2125) (@doronz88)
- 2c16b68 accessibilityaudit: Read accessibility element attributes (#2125) (@doronz88)
- cf8cc2c amfi: Add trust-app-signer (action 4) (#2124) (@doronz88)
- f1fe66b syslog: Decode vis(3) escapes in syslog_relay lines (#2122) (@doronz88)
- 322808b restore: Advertise SupportedAsyncDataTypes for macOS restores too (#2121) (@doronz88)
- 18a2b1b asr: Support a second Initiate request during validation (#2120) (@doronz88)
- 1e29b1e irecv_devices: Fix the chip ID for Mac18,5 (#2119) (@doronz88)
- cf11dd4 docs: Add the mobilesync CLI reference page to the nav (#2118) (@doronz88)
- 1a3de9a mobilesync: Add a read-only com.apple.mobilesync client (#2118) (@doronz88)
- ff4d285 service_connection: Raise the TLS handshake timeout to 30 seconds (#2117) (@doronz88)
- e8b8b9c backup2: Add cloud command to turn iCloud Backup on or off (#2116) (@doronz88)
- 6fb48c5 cli: Prompt for the device in pair, unpair and remotepairing (#2113) (@doronz88)
- fae0f7d lockdown: Delete this host's pair records on unpair (#2113) (@doronz88)
- 085f156 afc: Remove whole trees with RemovePathAndContents (#2114) (@doronz88)
Full Changelog: v11.45.1...v11.46.0