sparrowwallet / sparrow

Desktop Bitcoin Wallet focused on security and privacy. Free and open source.
https://sparrowwallet.com/
Apache License 2.0
1.29k stars 185 forks source link

Failed to execute script 'hwi' due to unhandled exception! #1081

Closed daedalus1215 closed 1 year ago

daedalus1215 commented 1 year ago

I can unlock the Trezor with Sparrow (separately with Trezor suite). But when I try to sign with the Trezor One it keeps erroring out.

2023-08-26 18:14:24,640 ERROR [Thread-22] c.s.s.i.Hwi [null:-1] Error executing hwi-2.2.1
java.io.IOException: Traceback (most recent call last):
  File "hwi.py", line 7, in <module>
  File "hwilib/_cli.py", line 304, in main
  File "hwilib/_cli.py", line 270, in process_commands
  File "hwilib/_cli.py", line 63, in enumerate_handler
  File "hwilib/commands.py", line 117, in enumerate
  File "hwilib/devices/trezor.py", line 895, in enumerate
  File "hwilib/devices/trezor.py", line 171, in func
  File "hwilib/devices/trezor.py", line 790, in close
  File "hwilib/devices/trezorlib/client.py", line 137, in close
  File "hwilib/devices/trezorlib/transport/protocol.py", line 120, in end_session
  File "hwilib/devices/trezorlib/transport/protocol.py", line 91, in end_session
  File "hwilib/devices/trezorlib/transport/webusb.py", line 61, in close
  File "usb1/__init__.py", line 1156, in releaseInterface
  File "usb1/__init__.py", line 128, in mayRaiseUSBError
  File "usb1/__init__.py", line 120, in raiseUSBError
usb1.USBErrorNotFound: LIBUSB_ERROR_NOT_FOUND [-5]
[34066] Failed to execute script 'hwi' due to unhandled exception!

    at com.sparrowwallet.sparrow@1.7.8/com.sparrowwallet.sparrow.io.Hwi.getProcessOutput(Unknown Source)
    at com.sparrowwallet.sparrow@1.7.8/com.sparrowwallet.sparrow.io.Hwi.execute(Unknown Source)
    at com.sparrowwallet.sparrow@1.7.8/com.sparrowwallet.sparrow.io.Hwi.enumerateUsb(Unknown Source)
    at com.sparrowwallet.sparrow@1.7.8/com.sparrowwallet.sparrow.io.Hwi.enumerate(Unknown Source)
    at com.sparrowwallet.sparrow@1.7.8/com.sparrowwallet.sparrow.io.Hwi$EnumerateService$1.call(Unknown Source)
    at com.sparrowwallet.sparrow@1.7.8/com.sparrowwallet.sparrow.io.Hwi$EnumerateService$1.call(Unknown Source)
    at javafx.graphics@18/javafx.concurrent.Task$TaskCallable.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at javafx.graphics@18/javafx.concurrent.Service.lambda$executeTask$6(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at javafx.graphics@18/javafx.concurrent.Service.lambda$executeTask$7(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
2023-08-26 18:14:57,165 ERROR [JavaFX Application Thread] c.s.s.c.DevicePane [null:-1] Signing Error: Cannot sign external inputs
com.sparrowwallet.sparrow.io.SignTransactionException: Cannot sign external inputs
    at com.sparrowwallet.sparrow@1.7.8/com.sparrowwallet.sparrow.io.Hwi.signPSBT(Unknown Source)
    at com.sparrowwallet.sparrow@1.7.8/com.sparrowwallet.sparrow.io.Hwi$SignPSBTService$1.call(Unknown Source)
    at com.sparrowwallet.sparrow@1.7.8/com.sparrowwallet.sparrow.io.Hwi$SignPSBTService$1.call(Unknown Source)
    at javafx.graphics@18/javafx.concurrent.Task$TaskCallable.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at javafx.graphics@18/javafx.concurrent.Service.lambda$executeTask$6(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at javafx.graphics@18/javafx.concurrent.Service.lambda$executeTask$7(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)

Not sure what to do.

Any help would be greatly appreciated 🙏

craigraw commented 1 year ago

This error message is produced by the Trezor code in HWI when it does not recognise one or more of the transaction inputs as it's own. See https://github.com/bitcoin-core/HWI/blob/c3a94b6f9d696b3a669153dcda2bfdad9c80583e/hwilib/devices/trezor.py#L507.

This may be due to the use of a non-standard derivation path. If this is the case, you can try to reduce this this derivation path checking to a prompt using trezorctl:

trezorctl set safety-checks prompt

daedalus1215 commented 1 year ago

@craigraw As always, much appreciation 🙏.