Highlights
⚡ Faster USB device discovery on macOS
remote start-tunnel, tunneld and anything else that looks for a USB-connected device's RSD endpoint now finds it in the IORegistry, the same way macOS's own remoted does, instead of waiting on a bonjour browse across every interface. Finding the devices takes milliseconds rather than the full 3 s browse window, and when no device is connected the command returns immediately without suspending remoted. The IORegistry lookup works on macOS 26 and 27. Linux keeps using bonjour.
sudo pymobiledevice3 remote start-tunnel⚡ tunneld picks up USB devices sooner
On macOS, tunneld now watches the IORegistry for USB devices' RSD addresses and retries a device that isn't ready yet with backoff, starting every 2 s. It no longer waits for the next full rescan, so a rebooted device gets its tunnel back about 15 s sooner. Bonjour browses no longer probe utun/tun interfaces at all.
✨ Readable device prompts
When a command asks you to pick a device, tunnel entries now show the product, iOS version, UDID and address instead of a bare object repr.
🛠 Linux VM forwards usbmuxd directly
misc/linux-vm/run.sh now forwards the host's usbmuxd socket into the Lima VM over SSH and no longer needs a TCP forwarder. The VM's default Python is now 3.15.
What's Changed
- 59c27b7 tunnel_service: Show the device in CoreDeviceTunnelService's repr (#2076) (@doronz88)
- 550fb24 tunneld: Watch USB devices' RSD addresses through IORegistry on macOS (#2076) (@doronz88)
- 040a3c7 bonjour: Let a browse leave interfaces out (#2076) (@doronz88)
- f3d0212 remote: Find USB RSD endpoints through IORegistry instead of bonjour on macOS (#2076) (@doronz88)
- 3403a0b misc: Forward usbmuxd's socket into the Linux VM and default to Python 3.15 (#2075) (@doronz88)
Full Changelog: v11.40.3...v11.41.0