github doronz88/pymobiledevice3 v11.0.0

latest releases: v11.27.2, v11.27.1, v11.27.0...
one month ago

Highlights

✨ macOS: a no-root native tunnel that piggybacks Apple's remoted

iOS 17+ developer/DVT commands need an RSD tunnel. On macOS pymobiledevice3 can now reach one by riding Apple's own remoted tunnel via the base-OS remotepairingd service — no root, no entitlement, no Xcode — and it leaves remoted running, so it coexists with Xcode/devicectl (unlike the kernel/bonjour path, which has to suspend remoted). It rides the kernel-routable tunnel, so it is faster host→device and lower latency than the userspace tunnel. It is now the default transport on macOS (native → userspace → tunneld), and available explicitly as --native:

# Specify explicitly
pymobiledevice3 developer dvt ls / --native

# Will implicitly choose the native fallback on macOS
pymobiledevice3 developer dvt ls /

This was based on the amazing work done by @olevar! (https://frida.re/news/2024/05/31/frida-16-3-0-released/)

✨ Pick the transport: PYMOBILEDEVICE3_DEFAULT_FALLBACK and PreferredRsdTunnel

PYMOBILEDEVICE3_DEFAULT_FALLBACK=native|userspace|tunneld overrides which transport the automatic selection prefers (built-in default: native on macOS, userspace elsewhere). From your own code, PreferredRsdTunnel picks the best no-root transport for the host:

from pymobiledevice3.remote.rsd_tunnel import PreferredRsdTunnel

async with PreferredRsdTunnel(serial=udid) as rsd:
    ...  # native on macOS, userspace elsewhere — no root

💥 Breaking: PYMOBILEDEVICE3_PREFER_TUNNELD removed

The PYMOBILEDEVICE3_PREFER_TUNNELD environment variable is gone. Use PYMOBILEDEVICE3_DEFAULT_FALLBACK=tunneld instead.

What's Changed

Full Changelog: v10.11.5...v11.0.0

Don't miss a new pymobiledevice3 release

NewReleases is sending notifications on new releases.