More findings, while for these tests cases:
am5 host (Arch) & am4 client (Qubes): communication doesn’t work
am5 host (Arch) & am5 client (Arch): communication doesn’t work
Trezor Suite didn’t work, I just tested with trezorctl
and it does work correctly (No reconnect needed as well). Debug logs indicate that webusb is indeed being used (and not HID), so this looks like an issue with trezord
/trezor-bridge
.
[2025-03-21 16:13:48,766] trezorlib.transport.hid INFO: HID transport is disabled: No module named 'hid'
[2025-03-21 16:13:48,789] trezorlib.transport INFO: Enumerating WebUsbTransport: found 1 devices
[2025-03-21 16:13:48,791] trezorlib.transport INFO: Enumerating BridgeTransport: found 0 devices
[2025-03-21 16:13:48,791] trezorlib.transport INFO: Enumerating UdpTransport: found 0 devices
[2025-03-21 16:13:48,792] trezorlib.client INFO: creating client instance for device: webusb:001:1
@d-arcy can you check if it does work on your setup as well? Passthrough trezor from sys-usb to appvm then run trezorctl commands (ie: trezorctl device authenticate
).
EDIT:
Good news! After checking trezord
options I see there’s one:
-r Reset USB device on session acquiring. Enabled by default (to prevent wrong device states); set to false if you plan to connect to debug link outside of bridge. (default true)
Then after running trezord -r=false
both Trezor Suite
and Chrome wallets (which uses Trezor Connect) works as expected without any need for reconnect under all setups.
You can get the binary from the appimage using ./Trezor-AppImage --appimage-extract
then navigating to ./squashfs-root/resources/bin/bridge/trezord
For AppVMs that intend to connect to trezor, we can create a systemd service that runs trezord
(you can grab it from here)
/etc/systemd/system/trezord.service
[Unit]
Description=Trezor Bridge
After=network.target
[Service]
Type=simple
ExecStart=/opt/trezor/bin/trezord -r=false
User=user
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
then on /rw/config/rc.local
:
modprobe vhci-hcd # Only if AppVM is running as PVH
systemctl enable --now trezord