diff --git a/packages/hdwallet-keepkey-nodewebusb/src/adapter.ts b/packages/hdwallet-keepkey-nodewebusb/src/adapter.ts index 51a0a7d1..07d43c2b 100644 --- a/packages/hdwallet-keepkey-nodewebusb/src/adapter.ts +++ b/packages/hdwallet-keepkey-nodewebusb/src/adapter.ts @@ -10,10 +10,14 @@ export const NodeWebUSBAdapterDelegate = { return devices.filter((x) => x.vendorId === VENDOR_ID && [WEBUSB_PRODUCT_ID, HID_PRODUCT_ID].includes(x.productId)); }, async getDevice(serialNumber?: string): Promise { + // Only match the WebUSB PID (0x0002). The TransportDelegate ctor rejects any + // other PID with FirmwareUpdateRequired, so matching legacy 0x0001 here just + // produced a doomed pair attempt + a misleading "Firmware 6.1.0 required" + // before the caller's HID fallback. Old (PID 0x0001) devices now skip WebUSB + // cleanly and pair over HID. (getDevices() still lists 0x0001 for detection.) const out = await webusb.requestDevice({ filters: [ { vendorId: VENDOR_ID, productId: WEBUSB_PRODUCT_ID, serialNumber }, - { vendorId: VENDOR_ID, productId: HID_PRODUCT_ID, serialNumber }, ], }); if (out.serialNumber === undefined) throw new Error("expected serial number");