github doronz88/pymobiledevice3 v11.25.0

one hour ago

Highlights

✨ Streaming app install

apps install --streaming sends an app through com.apple.streaming_zip_conduit, the way Xcode installs: the device extracts it while it arrives, instead of unpacking an .ipa uploaded over AFC. It takes an .ipa or an .app directory, and works over USB and over a tunnel.

pymobiledevice3 apps install --streaming MyApp.ipa
pymobiledevice3 apps install --streaming --developer build/MyApp.app

The library side is StreamingZipConduitService.

✨ Notification state (iOS 27.2+)

Since iOS 27.2 the notification proxy can read and write a notification's 64-bit notify(3) state, which system daemons use to publish a current value such as the lock state, the orientation or low power mode. Reading needs an RSD tunnel.

# Read current values
pymobiledevice3 notification get-state com.apple.springboard.lockstate com.apple.backboardd.orientation

# Set a value and post the notification; the device keeps it until you hit Ctrl+C
pymobiledevice3 notification set-state com.example.notification 1

The device holds a value that was set only while the setting connection stays open, and resets it to 0 afterwards.

✨ App console output

launch-application --console attaches to the launched app's stdout and stderr and prints them until the app exits, through the new OpenStdioSocketService (com.apple.coredevice.openstdiosocket). launch-application also no longer requires at least one app argument.

pymobiledevice3 developer core-device launch-application com.example.app --console

🐛 diagnostics restart --reconnect waits for the restart

The command printed "Device Reconnected" at once, before the device had gone down. The device only restarts when the connection that asked for it is closed, and the command kept that connection open while it waited. It now closes the connection, waits for the device to drop off usbmuxd, and returns once the device is back.

pymobiledevice3 diagnostics restart -r

🐛 Userspace tunnel closes its connections on the device

Over the userspace tunnel, the last connection a command closed never reached the device: the network stack stopped before the close left, so the device kept the connection open after the command had exited. Teardown now waits until the closes are sent, which adds about 20 ms to a command.

✨ StorageMounterBridgeService

com.apple.mobile.storage_mounter_proxy.bridge is the image mounter over RemoteXPC. It reports what MobileImageMounterService already does, so it is available as a library service with the read-only queries, without a CLI command.

What's Changed

Full Changelog: v11.24.0...v11.25.0

Don't miss a new pymobiledevice3 release

NewReleases is sending notifications on new releases.