We were finding that the transport for the newer webusb library was causing issues in Linux environments. It worked in Mac and Windows, but in Linux, when we called TransportWebUSB.close(), we got an “unable to release interface” error. The work around was to catch the error and just log it, which doesn’t seem ideal.
Here are the bug details:
Ledger firmware version: 2.1.0
Ledger app versions: Bitcoin 2.0.6, Bitcoin Test 2.1.0
Browser type and version: Chrome 110.0.5481.100
OS type and version: Linux 6.0.6 and 6.1.12
js lib version that works: hw-transport-webusb@5.53.0 (only tested with Ledger Bitcoin 2.0.6)
js lib version that’s broken: hw-transport-webusb@6.27.12
error code(s):
DOMException: Failed to execute ‘releaseInterface’ on ‘USBDevice’: Unable to release interface.
journalctl log warning: kernel: usb 3-6.4.2: usbfs: process 3983 (chrome) did not claim interface 1 before use
An error 0x6b00 was seen twice on a session, but that might have been an anomaly.
Expected behavior
TransportWebUSB.close() can be called without throwing.
Impacted Library name
@ledgerhq/hw-transport-webusb
Impacted Library version
6.27.12
Describe the bug
We were finding that the transport for the newer webusb library was causing issues in Linux environments. It worked in Mac and Windows, but in Linux, when we called
TransportWebUSB.close()
, we got an “unable to release interface” error. The work around was to catch the error and just log it, which doesn’t seem ideal.Here are the bug details: Ledger firmware version: 2.1.0 Ledger app versions: Bitcoin 2.0.6, Bitcoin Test 2.1.0 Browser type and version: Chrome 110.0.5481.100 OS type and version: Linux 6.0.6 and 6.1.12 js lib version that works: hw-transport-webusb@5.53.0 (only tested with Ledger Bitcoin 2.0.6) js lib version that’s broken: hw-transport-webusb@6.27.12 error code(s):
DOMException: Failed to execute ‘releaseInterface’ on ‘USBDevice’: Unable to release interface.
kernel: usb 3-6.4.2: usbfs: process 3983 (chrome) did not claim interface 1 before use
Expected behavior
TransportWebUSB.close()
can be called without throwing.Additional context
No response