Highlights
🐛 cryptex auto-install no longer fails intermittently
Installing the DeveloperDiskImage cryptex sometimes ended with cryptexd closed the connection without replying. The device was aborting the image upload with an HTTP/2 GOAWAY (FLOW_CONTROL_ERROR): the RemoteXPC client counted only file-transfer data against the device's flow-control window, not the handshake and request frames, so every upload overran the window by a few hundred bytes. Whether the device noticed depended on timing, which made it fail roughly once in 10-20 installs on some devices.
Every DATA frame is now charged to the window. This applies to any RemoteXPC file upload, not only cryptexd.
pymobiledevice3 cryptex auto-install✨ Named cryptexd nonce domains and asset types
pymobiledevice3.services.cryptexd gains three enums in place of bare numbers:
NonceDomain: thenonce-domainindex (PDI,CRYPTEX,DDI,CRYPTEX1_GENERIC, ...).NonceDomainHandle: thenonce-domain-handle, i.e. a build identity'sCryptex1,NonceDomain.CryptexAssetType: theimage-type-index(valid from iOS 26.4).
Each docstring lists the sources its values were verified against. NONCE_DOMAIN_CRYPTEX is replaced by NonceDomain.PDI (the value, 2, was always the PDI domain) and DDI_IMAGE_TYPE_INDEX by CryptexAssetType.GDMG; defaults are unchanged.
pymobiledevice3 cryptex nonce --nonce-domain-handle 4What's Changed
- 2e25439 cryptexd: Document what the persistence values do (#2001) (@doronz88)
- e58bfbc cryptexd: Name the asset types (#2001) (@doronz88)
- 7828212 cryptexd: Name the nonce domains (#2001) (@doronz88)
- b93d256 remotexpc: Charge every DATA frame to the flow-control window (#2001) (@doronz88)
Full Changelog: v11.22.1...v11.23.0