Environment: Passport Prime (retail), KeyOS 1.4.0-beta3, Foundation SDK 1.0.0 re-cut (foundation 1.0.0 (039881500da0)). Host: Ubuntu 22.04.5, libusb via a udev rule for 1307:0165.
Summary
Developer Mode switches itself off on a plain power cycle, not only across a firmware update. While it's off the vendor debug interface isn't enumerated, so every foundation-passport-drive / foundation sideload / foundation logs command fails with an error that never mentions Developer Mode:
Error: Failed to open USB device
Caused by:
no vendor debug interface (class 0xFF) with both bulk endpoints
That message sends you looking at udev rules, cables, and libusb permissions — all the things a Linux USB failure usually means — when the actual cause is a device-side toggle that silently reverted.
This is a correction to note 1 of #14, where I reported the reset as firmware-update-related. That understated it: an update is a rare event, a power cycle is routine, so in practice you can hit this any session.
Reproduce
- Enable Settings > Apps > Developer Mode. Confirm the debug interface appears — the device re-enumerates live, no replug needed.
- Power the device off and on.
- Unlock, plug in USB, run any passport-drive command → the error above.
- Settings > Apps > Developer Mode is off. Toggle it on and the same command succeeds immediately.
The reliable host-side diagnostic
The USB interface count tells you which state you're in before you touch anything else:
$ lsusb -d 1307:0165 -v 2>/dev/null | grep -E "bNumInterfaces|bInterfaceClass"
bNumInterfaces 2 # Developer Mode OFF
bInterfaceClass 8 Mass Storage
bInterfaceClass 3 Human Interface Device
bNumInterfaces 3 # Developer Mode ON
bInterfaceClass 8 Mass Storage
bInterfaceClass 3 Human Interface Device
bInterfaceClass 255 Vendor Specific Class
What we'd like
Either of these would have saved the detour, and the first is a one-liner:
- Name Developer Mode in the error. Something like:
no vendor debug interface (class 0xFF) found — check that Developer Mode is enabled (Settings > Apps > Developer Mode); it resets when the device is powered off. The tooling already knows this is the only thing that exposes the interface, so it's the highest-probability cause by a wide margin.
- Document the power-cycle behaviour alongside the firmware-update case in the sideload/usb-debug docs.
If the reset is deliberate — I'd assume so, given it gates a debug channel and is presumably an encrypted setting — then this is purely a discoverability request, not a behaviour change. Happy either way; the toggle itself seems reasonable.
Environment: Passport Prime (retail), KeyOS 1.4.0-beta3, Foundation SDK 1.0.0 re-cut (
foundation 1.0.0 (039881500da0)). Host: Ubuntu 22.04.5, libusb via a udev rule for1307:0165.Summary
Developer Mode switches itself off on a plain power cycle, not only across a firmware update. While it's off the vendor debug interface isn't enumerated, so every
foundation-passport-drive/foundation sideload/foundation logscommand fails with an error that never mentions Developer Mode:That message sends you looking at udev rules, cables, and libusb permissions — all the things a Linux USB failure usually means — when the actual cause is a device-side toggle that silently reverted.
This is a correction to note 1 of #14, where I reported the reset as firmware-update-related. That understated it: an update is a rare event, a power cycle is routine, so in practice you can hit this any session.
Reproduce
The reliable host-side diagnostic
The USB interface count tells you which state you're in before you touch anything else:
What we'd like
Either of these would have saved the detour, and the first is a one-liner:
no vendor debug interface (class 0xFF) found — check that Developer Mode is enabled (Settings > Apps > Developer Mode); it resets when the device is powered off.The tooling already knows this is the only thing that exposes the interface, so it's the highest-probability cause by a wide margin.If the reset is deliberate — I'd assume so, given it gates a debug channel and is presumably an encrypted setting — then this is purely a discoverability request, not a behaviour change. Happy either way; the toggle itself seems reasonable.