Summary
Please add a way to restart a Passport Prime — both as a UI action and as a usb-debug/MCP command. Today the only power action is a full shutdown, and on a remotely-driven device that is a one-way door.
What exists today
- On device: a long power-press opens the control center, and its only power action is "Shut Down". There is no Restart.
- Over usb-debug:
foundation-passport-drive has power (short = lock, --long = control center) and reboot-samba. There is no ordinary reboot. reboot_to_samba is a bootloader/flashing mode, not a warm restart, and is not something you want to land in on a device you cannot physically reach.
So "turn it off and on again" — the first recovery step for any device — is currently only available to someone holding the device.
Why this matters beyond convenience
A shutdown cannot be undone remotely: once the device is off it no longer enumerates on USB, so no host command can bring it back. Combined with two other behaviours, an attended-only recovery becomes an unattended-run killer:
- usb-debug refuses UI commands while the device is locked. Verified just now:
get_version and get_process_list still answer, while screenshot, power_button and input are refused with "device is locked". That is sound security and I am not asking you to change it — but it does mean a lock cannot be undone from the host either, because entering the PIN is input.
- Modal system alerts cannot be driven. The grant-on-first-use permission sheet is drawn by
gui-app-alerts (a separate process from the app), and neither tap nor swipe reaches it — 0.00% of content pixels change across before/after captures, while the identical injected tap dismisses the same sheet in the hosted simulator. So an app awaiting a first-use grant blocks the whole screen until a human touches it.
Put together: a device can reach a state where the screen is blocked by something the host cannot dismiss, and the only remedies are a physical touch or a shutdown that ends remote access entirely. That is exactly where ours is right now.
Request
-
"Restart" in the control center, alongside "Shut Down". Useful for every user, not just automation — restarting is a normal recovery step and today it costs a shutdown plus a physical power-on.
-
A reboot command over usb-debug/MCP — a normal warm restart, explicitly not SAM-BA. Developer-Mode gated, exactly like the rest of the interface.
-
Please consider allowing (2) while the device is locked. This is the part that actually unblocks remote operation, so it is worth stating the reasoning rather than just asking:
- A reboot reveals nothing and grants nothing — the device comes back locked and PIN-gated, data at rest untouched. It is not a read primitive.
- The alternative recovery available to a host today is the shutdown, which is strictly more destructive to availability and is already permitted from the control center.
- The realistic threat is denial-of-service by someone with physical USB access and Developer Mode enabled — who can already pull the cable, or hold the power button.
If you would rather keep every command behind the unlock, that is a defensible call and I would understand it; in that case (1) alone still helps, and I would ask that the refusal message say so explicitly.
Context
We drive full UI suites against real hardware over usb-debug (the harness behind our sideloaded apps), and this session ran a 14-leg regression board on-device unattended. The gap only shows up when something goes wrong: with no restart, an automated run that meets a modal sheet or a stray lock cannot recover without someone in the room.
Related: #9 (permission denial aborts apps), #13 (simulator input injection, now shipped — thank you), #15 (file read/write over MCP). Happy to test a build against our suites, as before.
Summary
Please add a way to restart a Passport Prime — both as a UI action and as a usb-debug/MCP command. Today the only power action is a full shutdown, and on a remotely-driven device that is a one-way door.
What exists today
foundation-passport-drivehaspower(short = lock,--long= control center) andreboot-samba. There is no ordinary reboot.reboot_to_sambais a bootloader/flashing mode, not a warm restart, and is not something you want to land in on a device you cannot physically reach.So "turn it off and on again" — the first recovery step for any device — is currently only available to someone holding the device.
Why this matters beyond convenience
A shutdown cannot be undone remotely: once the device is off it no longer enumerates on USB, so no host command can bring it back. Combined with two other behaviours, an attended-only recovery becomes an unattended-run killer:
get_versionandget_process_liststill answer, whilescreenshot,power_buttonand input are refused with "device is locked". That is sound security and I am not asking you to change it — but it does mean a lock cannot be undone from the host either, because entering the PIN is input.gui-app-alerts(a separate process from the app), and neithertapnorswipereaches it — 0.00% of content pixels change across before/after captures, while the identical injected tap dismisses the same sheet in the hosted simulator. So an app awaiting a first-use grant blocks the whole screen until a human touches it.Put together: a device can reach a state where the screen is blocked by something the host cannot dismiss, and the only remedies are a physical touch or a shutdown that ends remote access entirely. That is exactly where ours is right now.
Request
"Restart" in the control center, alongside "Shut Down". Useful for every user, not just automation — restarting is a normal recovery step and today it costs a shutdown plus a physical power-on.
A
rebootcommand over usb-debug/MCP — a normal warm restart, explicitly not SAM-BA. Developer-Mode gated, exactly like the rest of the interface.Please consider allowing (2) while the device is locked. This is the part that actually unblocks remote operation, so it is worth stating the reasoning rather than just asking:
If you would rather keep every command behind the unlock, that is a defensible call and I would understand it; in that case (1) alone still helps, and I would ask that the refusal message say so explicitly.
Context
We drive full UI suites against real hardware over usb-debug (the harness behind our sideloaded apps), and this session ran a 14-leg regression board on-device unattended. The gap only shows up when something goes wrong: with no restart, an automated run that meets a modal sheet or a stray lock cannot recover without someone in the room.
Related: #9 (permission denial aborts apps), #13 (simulator input injection, now shipped — thank you), #15 (file read/write over MCP). Happy to test a build against our suites, as before.