Skip to content

Trigger DFU on any Type-C data port, not just the UART-harness port#7

Merged
fcjr merged 1 commit into
mainfrom
dfu-all-ports
Jul 13, 2026
Merged

Trigger DFU on any Type-C data port, not just the UART-harness port#7
fcjr merged 1 commit into
mainfrom
dfu-all-ports

Conversation

@fcjr

@fcjr fcjr commented Jul 13, 2026

Copy link
Copy Markdown
Owner

restorekit gated DFU-capable ports on the uart-hpm-rids device-tree property, but that's the serial/UART debug-harness subset (often a single port), not the set of ports that can send a DFU VDM. Every USB-C data port's HPM controller can send the Apple vendor DFU/reboot Vendor Defined Message — verified by driving each port controller into DBMa debug mode. So a target cabled to any port other than the harness one was invisible to --port and to detection.

Mark every host port DFU-capable: host_ports() entries are exactly the HPM controllers backed by a USB data controller, and all of those can trigger DFU. Power-only PD controllers (e.g. MagSafe) have no USB controller, so they're already excluded and won't resolve as --port targets. uart-hpm-rids now only selects the Auto/default port and gates the serial console; rename dfu_capable_rids to default_dfu_rids to match.

Also add a hidden probe-ports command that enters and leaves each port controller's DBMa mode and reports which ports accept the DFU/VDM path — the non-destructive diagnostic used to confirm the above.

restorekit gated DFU-capable ports on the `uart-hpm-rids` device-tree property,
but that's the serial/UART debug-harness subset (often a single port), not the
set of ports that can send a DFU VDM. Every USB-C data port's HPM controller can
send the Apple vendor DFU/reboot Vendor Defined Message — verified by driving
each port controller into DBMa debug mode. So a target cabled to any port other
than the harness one was invisible to `--port` and to detection.

Mark every host port DFU-capable: `host_ports()` entries are exactly the HPM
controllers backed by a USB data controller, and all of those can trigger DFU.
Power-only PD controllers (e.g. MagSafe) have no USB controller, so they're
already excluded and won't resolve as `--port` targets. `uart-hpm-rids` now only
selects the Auto/default port and gates the serial console; rename
`dfu_capable_rids` to `default_dfu_rids` to match.

Also add a hidden `probe-ports` command that enters and leaves each port
controller's DBMa mode and reports which ports accept the DFU/VDM path — the
non-destructive diagnostic used to confirm the above.
@fcjr
fcjr merged commit ba92f86 into main Jul 13, 2026
@fcjr
fcjr deleted the dfu-all-ports branch July 13, 2026 17:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant