Highlights
🐛 cryptex auto-install no longer crashes cryptexd below iOS 26.4
On iOS 26.0.1, pymobiledevice3 cryptex auto-install made the device's cryptexd crash with asset already present: Cryptex1,GenericVolume, and the command printed only Aborted. (#1991). iOS only installs the DeveloperDiskImage as a cryptex from 26.4. Two things in the firmware change in that release, and from then on they match iOS 27:
- Where
cryptexdmay mount. Below 26.4 the kernel's platform sandbox policy doesn't letcryptexdmount anything at/System/Developer, where the DDI goes. The reporter's iPad loggeddeny(1) file-mount /System/Developer. There the DDI has to go through the image mounter instead. - The device's asset-type table. The install names the disk image by its index in this table. iOS 26.4 reordered it, so on earlier versions the index we send names the image as a volume hash, which is what crashed
cryptexd.
cryptex auto-install now refuses below iOS 26.4 before contacting Apple or the device, and points to pymobiledevice3 mounter auto-mount, which mounts the Personalized image there. On iOS 26.4 and later nothing changes.
🐛 A connection dropped by the device is reported as such
When a device closed a RemoteXPC connection between messages, the raw end-of-stream error escaped, and the CLI printed nothing but Aborted.. It's now a terminated connection like any other. When cryptexd drops an install without replying, cryptex auto-install says so and points to pymobiledevice3 syslog live -m cryptexd.
What's Changed
- 652912f docs: State that the DeveloperDiskImage cryptex needs iOS 26.4 (#1993) (@doronz88)
- eb622ae cryptexd: Only install the DeveloperDiskImage cryptex from iOS 26.4 (#1993) (@doronz88)
- 4633c96 cryptexd: Explain an install that cryptexd dropped (#1993) (@doronz88)
- 3e01567 remotexpc: Treat EOF at a frame header as a terminated connection (#1993) (@doronz88)
Full Changelog: v11.19.3...v11.19.4