Highlights
✨ Keep IPSWs in a directory you choose, with resume and verification
restore commands no longer throw away the 10+ GB IPSW after every run. Point --ipsw-dir (or PYMOBILEDEVICE3_IPSW_DIR, ~ expanded) at a directory and downloads are kept there under Apple's filenames:
- An IPSW already in the directory is reused as-is, and the build picker marks it
(local). - New downloads go to
<name>.part, resume after an interruption, and are renamed into place only once they match the SHA-256 Apple's CDN publishes for the file. - A single Ctrl-C stops a download and keeps what was downloaded so far. Previously it took two.
Downloads without --ipsw-dir, including --ipsw <url>, are now verified the same way. (#2138, #2139)
export PYMOBILEDEVICE3_IPSW_DIR=~/ipsw
pymobiledevice3 restore update✨ Restore beta builds with --beta
ipsw.me lists only release builds. --beta lists the newest beta builds that have an IPSW for the connected device instead, from AppleDB, in about a second (for example, 27.2 beta 4: 24B5110a). Builds AppleDB reports as unsigned are marked (unsigned). That's only a hint: Apple's signing server still decides during the restore. (#2139)
pymobiledevice3 restore update --beta✨ debugserver lldb works over the default userspace tunnel
developer debugserver lldb used to refuse to run over the userspace tunnel, which is the default transport, so debugging needed a root tunneld. It now forwards debugserver to a local port and points lldb there, which works over every transport with no root needed. The forwarder adds no measurable latency: about 1.49 ms per round trip with or without it. (#2136)
pymobiledevice3 developer debugserver lldb com.example.app --launch -b myFunction🐛 Fixes
debugserver lldb --launchnow continues an app that was already running after attaching, instead of leaving it stopped. (#2137)debugserver lldbinstalls the app on the selected device, not the first USB one. (#2136)file_downloadno longer saves an HTTP error page as the requested file. (#2138)
What's Changed
- cba9a15 restore: Expand ~ in --ipsw-dir (#2139) (@doronz88)
- 6656db1 restore: Offer beta builds with --beta (#2139) (@doronz88)
- 3575c82 restore: Make IPSW downloads cancellable, resumable and SHA-256 verified (#2138) (@doronz88)
- cb9977d utils: Let file_download resume a partial file and stop on request (#2138) (@doronz88)
- e7b5c43 restore: Keep downloaded IPSWs in a reusable --ipsw-dir (#2138) (@doronz88)
- 1db6580 utils: Fail file_download on HTTP errors and read in 1 MiB chunks (#2138) (@doronz88)
- 96e8b20 debugserver: Continue an already-running app after attaching with --launch (#2137) (@doronz88)
- 458b150 debugserver: Install the lldb target through the selected device (#2136) (@doronz88)
- 6a4eb9e debugserver: Run lldb over any transport via a loopback forwarder (#2136) (@doronz88)
Full Changelog: v11.46.0...v11.47.0