pymobiledevice3 patch index¶
Upstream pinned: see UPSTREAM_VERSION. Workflow
and rationale are in README.md.
This file is the source of truth for what we have modified in
pymobiledevice3. Every patch must have a row here. When we remove
Python entirely, each row's Go-Rewrite-Note must have been
addressed before the row (and the corresponding .patch file)
disappears.
Active patches¶
0001 — iosmux spike: env-var override for advertised tunnel endpoint¶
- Patch file:
0001-iosmux-spike-tunneld-endpoint-override.patch - Upstream files touched:
pymobiledevice3/tunneld/server.py(thelist_tunnelshandler at the@app.get("/")route) - Activation: environment variable
IOSMUX_SPIKE=1on the tunneld process. OptionalIOSMUX_SPIKE_PORT=<int>overrides the default port (34719). Unset = stock behavior. - Why: when active, the tunneld HTTP API response at
/returnstunnel-address="::1"andtunnel-port=$IOSMUX_SPIKE_PORTinstead of the real RSD endpoint. This lets us plant a local capture listener on[::1]:<port>and have CoreDeviceService connect there (thinking it's the iPhone tunnel), so we can observe the raw HTTP/2 bytes CDS emits. Needed for the Stage S2 Phase C self-experiment to resolve blockers X (protocol capture), Y (which CDS process actually opens the pair connection), and Z (SCM_RIGHTS sandbox probe) in one unified run. - Go-Rewrite-Note: Not needed in the Go port. This is a pure research/spike mechanism that exists only so the Go rewrite can be written against empirically-captured protocol bytes rather than guesses. When Python is removed, this patch disappears along with the rest of this directory. No production behavior depends on it.
- Future-us note (not a Go-rewrite concern): the advertised
address is currently hard-coded to IPv6 loopback
::1. If we ever want to run the spike listener on a different machine than the tunneld process (for example, to accept that pair-action network traffic from a remote CDS over a network segment), introduce anIOSMUX_SPIKE_ADDRenv var alongsideIOSMUX_SPIKE_PORTand thread it through the same conditional. Trivial extension; not needed for the current single-VM self-experiment.
Removed patches¶
None yet. When a patch is dropped, move its row here with a note on why it's no longer needed and the commit hash that removed it.