Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failure to upgrade 1.0.29 to 1.0.33 #215

Open
Giszmo opened this issue Feb 11, 2025 · 1 comment
Open

Failure to upgrade 1.0.29 to 1.0.33 #215

Giszmo opened this issue Feb 11, 2025 · 1 comment

Comments

@Giszmo
Copy link

Giszmo commented Feb 11, 2025

I just setup a Jade with a new mnemonic and it appeared to work using Sparrow (received and sent BTC fine) but running the update CLI command is so far an unresolved struggle.

The second block should be the most helpful. This first block only shows what led up to the error I gave up at.

$ git clone https://github.com/Blockstream/Jade.git
$ cd Jade/
$ python3 -m venv .venv
$ source .venv/bin/activate
$ python3 -m pip install -r requirements.txt #if there is a requirements.txt file
$ sudo vim /etc/udev/rules.d/99-blockstream-jade.rules
$ sudo udevadm control --reload-rules
$ sudo udevadm trigger
$ python3 ./update_jade_fw.py
Current Jade fw: 1.0.29 - ble
-
Delta patches (faster)
-
Full firmware images
1)   1.0.33 - noradio
2)   1.0.33 - ble
-
Select firmware: 2
Save local copy of downloaded firmware? [y/N]y
Got fw file of length 854192 with expected uncompressed final fw length 1249280
Upload fw to connected Jade [Y/n]n
$ sha256sum 1.0.33_ble_1249280_fw.bin
41d0cf7ce238ccd6d682942335ec3b331e4697dcff62690f3c2f795061ea289a  1.0.33_ble_1249280_fw.bin
$ cat 1.0.33_ble_1249280_fw.bin.hash 
d76a0cf87df6900477b1fbd1512a6d0fc4bf99a7a4c80e04313eb2c1beb4d17c
$ python3 ./update_jade_fw.py --fwfile 1.0.33_ble_1249280_fw.bin
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 248, in <module>
    verinfo = jade.get_version_info()
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 409, in get_version_info
    return self._jadeRpc('get_version_info', params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2346, in make_rpc_call
    reply = self.read_response(long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2304, in read_response
    return self.read_cbor_message()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2251, in read_cbor_message
    message = cbor.load(self)
              ^^^^^^^^^^^^^^^


Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 248, in <module>
    verinfo = jade.get_version_info()
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 409, in get_version_info
    return self._jadeRpc('get_version_info', params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2346, in make_rpc_call
    reply = self.read_response(long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2304, in read_response
    return self.read_cbor_message()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2251, in read_cbor_message
    message = cbor.load(self)
              ^^^^^^^^^^^^^^^
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa2 in position 1: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 246, in <module>
    with JadeAPI.create_serial(device=args.serialport) as jade:
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 183, in __exit__
    self.disconnect(exc_type is not None)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 274, in disconnect
    self.jade.disconnect(drain)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2106, in disconnect
    self.drain()
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2120, in drain
    byte_ = self.impl.read(1)
            ^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade_serial.py", line 86, in read
    return self.ser.read(n)
           ^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/.venv/lib/python3.11/site-packages/serial/serialposix.py", line 595, in read
    raise SerialException(
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
$ python3 ./update_jade_fw.py --fwfile 1.0.33_ble_1249280_fw.bin
Got fw file of length 854192 with expected uncompressed final fw length 1249280
Upload fw to connected Jade [Y/n]
Please ensure Jade is unlocked
Please try again
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 278, in <module>
    ota(jade, verinfo, fwcmp, fwlen, fwhash, patchlen)
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 171, in ota
    while not jade.auth_user(network, epoch=int(time.time())):
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 831, in auth_user
    return self._jadeRpc('auth_user', params,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 367, in _jadeRpc
    return self._jadeRpc(
           ^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2347, in make_rpc_call
    self.validate_reply(request, reply)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2318, in validate_reply
    reply['id'] == '00' and 'error' in reply
                            ^^^^^^^^^^^^^^^^
^CTraceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 278, in <module>
    ota(jade, verinfo, fwcmp, fwlen, fwhash, patchlen)
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 171, in ota
    while not jade.auth_user(network, epoch=int(time.time())):
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 831, in auth_user
    return self._jadeRpc('auth_user', params,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 367, in _jadeRpc
    return self._jadeRpc(
           ^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2347, in make_rpc_call
    self.validate_reply(request, reply)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2318, in validate_reply
    reply['id'] == '00' and 'error' in reply
                            ^^^^^^^^^^^^^^^^
AssertionError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 277, in <module>
    with JadeAPI.create_serial(device=args.serialport) as jade:
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 183, in __exit__
    self.disconnect(exc_type is not None)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 274, in disconnect
    self.jade.disconnect(drain)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2106, in disconnect
    self.drain()
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2120, in drain
    byte_ = self.impl.read(1)
            ^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade_serial.py", line 86, in read
    return self.ser.read(n)
           ^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/.venv/lib/python3.11/site-packages/serial/serialposix.py", line 565, in read
    ready, _, _ = select.select([self.fd, self.pipe_abort_read_r], [], [], timeout.time_left())
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
$ python3 ./update_jade_fw.py --fwfile 1.0.33_ble_1249280_fw.bin
Got fw file of length 854192 with expected uncompressed final fw length 1249280
Upload fw to connected Jade [Y/n]
Please ensure Jade is unlocked
Please try again
Please try again
Please try again
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 278, in <module>
    ota(jade, verinfo, fwcmp, fwlen, fwhash, patchlen)
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 171, in ota
    while not jade.auth_user(network, epoch=int(time.time())):
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 831, in auth_user
    return self._jadeRpc('auth_user', params,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2347, in make_rpc_call
    self.validate_reply(request, reply)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2318, in validate_reply
    reply['id'] == '00' and 'error' in reply
                            ^^^^^^^^^^^^^^^^
Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 278, in <module>
    ota(jade, verinfo, fwcmp, fwlen, fwhash, patchlen)
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 171, in ota
    while not jade.auth_user(network, epoch=int(time.time())):
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 831, in auth_user
    return self._jadeRpc('auth_user', params,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2347, in make_rpc_call
    self.validate_reply(request, reply)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2318, in validate_reply
    reply['id'] == '00' and 'error' in reply
                            ^^^^^^^^^^^^^^^^
AssertionError
$ python3 ./update_jade_fw.py --fwfile 1.0.33_ble_1249280_fw.bin
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 248, in <module>
    verinfo = jade.get_version_info()
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 409, in get_version_info
    return self._jadeRpc('get_version_info', params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2347, in make_rpc_call
    self.validate_reply(request, reply)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2318, in validate_reply
    reply['id'] == '00' and 'error' in reply
                            ^^^^^^^^^^^^^^^^
Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 248, in <module>
    verinfo = jade.get_version_info()
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 409, in get_version_info
    return self._jadeRpc('get_version_info', params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2347, in make_rpc_call
    self.validate_reply(request, reply)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2318, in validate_reply
    reply['id'] == '00' and 'error' in reply
                            ^^^^^^^^^^^^^^^^
AssertionError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 246, in <module>
    with JadeAPI.create_serial(device=args.serialport) as jade:
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 183, in __exit__
    self.disconnect(exc_type is not None)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 274, in disconnect
    self.jade.disconnect(drain)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2106, in disconnect
    self.drain()
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2120, in drain
    byte_ = self.impl.read(1)
            ^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade_serial.py", line 86, in read
    return self.ser.read(n)
           ^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/.venv/lib/python3.11/site-packages/serial/serialposix.py", line 595, in read
    raise SerialException(
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
$ python3 ./update_jade_fw.py --fwfile 1.0.33_ble_1249280_fw.bin
Got fw file of length 854192 with expected uncompressed final fw length 1249280
Upload fw to connected Jade [Y/n]
Please ensure Jade is unlocked
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 278, in <module>
    ota(jade, verinfo, fwcmp, fwlen, fwhash, patchlen)
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 171, in ota
    while not jade.auth_user(network, epoch=int(time.time())):
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 831, in auth_user
    return self._jadeRpc('auth_user', params,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2346, in make_rpc_call
    reply = self.read_response(long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2304, in read_response
    return self.read_cbor_message()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2251, in read_cbor_message
    message = cbor.load(self)
              ^^^^^^^^^^^^^^^
Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 278, in <module>
    ota(jade, verinfo, fwcmp, fwlen, fwhash, patchlen)
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 171, in ota
    while not jade.auth_user(network, epoch=int(time.time())):
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 831, in auth_user
    return self._jadeRpc('auth_user', params,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2346, in make_rpc_call
    reply = self.read_response(long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2304, in read_response
    return self.read_cbor_message()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2251, in read_cbor_message
    message = cbor.load(self)
              ^^^^^^^^^^^^^^^
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 3: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 277, in <module>
    with JadeAPI.create_serial(device=args.serialport) as jade:
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 183, in __exit__
    self.disconnect(exc_type is not None)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 274, in disconnect
    self.jade.disconnect(drain)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2106, in disconnect
    self.drain()
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2120, in drain
    byte_ = self.impl.read(1)
            ^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade_serial.py", line 86, in read
    return self.ser.read(n)
           ^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/.venv/lib/python3.11/site-packages/serial/serialposix.py", line 595, in read
    raise SerialException(
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
$ python3 ./update_jade_fw.py --fwfile 1.0.33_ble_1249280_fw.bin
^C  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 248, in <module>
    verinfo = jade.get_version_info()
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 409, in get_version_info
    return self._jadeRpc('get_version_info', params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2346, in make_rpc_call
    reply = self.read_response(long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2304, in read_response
    return self.read_cbor_message()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2251, in read_cbor_message
    message = cbor.load(self)
              ^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2232, in read
    bytes_ = self.impl.read(n)
             ^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade_serial.py", line 86, in read
    return self.ser.read(n)
           ^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/.venv/lib/python3.11/site-packages/serial/serialposix.py", line 565, in read
    ready, _, _ = select.select([self.fd, self.pipe_abort_read_r], [], [], timeout.time_left())
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^CTraceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 248, in <module>
    verinfo = jade.get_version_info()
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 409, in get_version_info
    return self._jadeRpc('get_version_info', params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2346, in make_rpc_call
    reply = self.read_response(long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2304, in read_response
    return self.read_cbor_message()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2251, in read_cbor_message
    message = cbor.load(self)
              ^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2232, in read
    bytes_ = self.impl.read(n)
             ^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade_serial.py", line 86, in read
    return self.ser.read(n)
           ^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/.venv/lib/python3.11/site-packages/serial/serialposix.py", line 565, in read
    ready, _, _ = select.select([self.fd, self.pipe_abort_read_r], [], [], timeout.time_left())
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 246, in <module>
    with JadeAPI.create_serial(device=args.serialport) as jade:
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 183, in __exit__
    self.disconnect(exc_type is not None)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 274, in disconnect
    self.jade.disconnect(drain)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2106, in disconnect
    self.drain()
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2120, in drain
    byte_ = self.impl.read(1)
            ^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade_serial.py", line 86, in read
    return self.ser.read(n)
           ^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/.venv/lib/python3.11/site-packages/serial/serialposix.py", line 565, in read
    ready, _, _ = select.select([self.fd, self.pipe_abort_read_r], [], [], timeout.time_left())
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
$ python3 ./update_jade_fw.py --fwfile 1.0.33_ble_1249280_fw.bin
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 248, in <module>
    verinfo = jade.get_version_info()
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 409, in get_version_info
    return self._jadeRpc('get_version_info', params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2346, in make_rpc_call
    reply = self.read_response(long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2304, in read_response
    return self.read_cbor_message()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2251, in read_cbor_message
    message = cbor.load(self)
              ^^^^^^^^^^^^^^^
Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 248, in <module>
    verinfo = jade.get_version_info()
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 409, in get_version_info
    return self._jadeRpc('get_version_info', params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2346, in make_rpc_call
    reply = self.read_response(long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2304, in read_response
    return self.read_cbor_message()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2251, in read_cbor_message
    message = cbor.load(self)
              ^^^^^^^^^^^^^^^
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xac in position 3: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 246, in <module>
    with JadeAPI.create_serial(device=args.serialport) as jade:
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 183, in __exit__
    self.disconnect(exc_type is not None)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 274, in disconnect
    self.jade.disconnect(drain)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2106, in disconnect
    self.drain()
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2120, in drain
    byte_ = self.impl.read(1)
            ^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade_serial.py", line 86, in read
    return self.ser.read(n)
           ^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/.venv/lib/python3.11/site-packages/serial/serialposix.py", line 595, in read
    raise SerialException(
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
$ python3 ./update_jade_fw.py --fwfile 1.0.33_ble_1249280_fw.bin
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 248, in <module>
    verinfo = jade.get_version_info()
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 409, in get_version_info
    return self._jadeRpc('get_version_info', params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2346, in make_rpc_call
    reply = self.read_response(long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2304, in read_response
    return self.read_cbor_message()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2251, in read_cbor_message
    message = cbor.load(self)
              ^^^^^^^^^^^^^^^
^CTraceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 248, in <module>
    verinfo = jade.get_version_info()
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 409, in get_version_info
    return self._jadeRpc('get_version_info', params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2346, in make_rpc_call
    reply = self.read_response(long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2304, in read_response
    return self.read_cbor_message()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2251, in read_cbor_message
    message = cbor.load(self)
              ^^^^^^^^^^^^^^^
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xac in position 3: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 246, in <module>
    with JadeAPI.create_serial(device=args.serialport) as jade:
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 183, in __exit__
    self.disconnect(exc_type is not None)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 274, in disconnect
    self.jade.disconnect(drain)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2106, in disconnect
    self.drain()
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2120, in drain
    byte_ = self.impl.read(1)
            ^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade_serial.py", line 86, in read
    return self.ser.read(n)
           ^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/.venv/lib/python3.11/site-packages/serial/serialposix.py", line 565, in read
    ready, _, _ = select.select([self.fd, self.pipe_abort_read_r], [], [], timeout.time_left())
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
$ python3 ./update_jade_fw.py --fwfile 1.0.33_ble_1249280_fw.bin
Unhandled message received
5.1.2mCHIP_FEATURESh32
Unhandled message received
-17
Unhandled message received
-17
Unhandled message received
-17
Unhandled message received
-17
Unhandled message received
-17
Unhandled message received
-17
Unhandled message received
EFUSEMAC
Unhandled message received
34987AB5BEC8
Unhandled message received
BATTERY_STATUS
Unhandled message received
3
Unhandled message received
JADE_STATE
Unhandled message received
READY
Unhandled message received
JADE_NETWORKS
Unhandled message received
MAIN
Unhandled message received
JADE_HAS_PIN
Unhandled message received
True
Got fw file of length 854192 with expected uncompressed final fw length 1249280
Upload fw to connected Jade [Y/n]
Please approve the firmware update on the Jade device
749.47 b/s - progress 0.48% - 1134.26 seconds left
Written 4096b in 5.47s
7876.80 b/s - progress 0.96% - 618.10 seconds left
Written 8192b in 5.99s
60.94 b/s - progress 1.44% - 5015.18 seconds left
Written 12288b in 73.20s
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 278, in <module>
    ota(jade, verinfo, fwcmp, fwlen, fwhash, patchlen)
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 202, in ota
    result = jade.ota_update(fwcompressed, fwlength, chunksize, fwhash,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 537, in ota_update
    result = self._jadeRpc('ota_data', chunk)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2347, in make_rpc_call
    self.validate_reply(request, reply)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2318, in validate_reply
    reply['id'] == '00' and 'error' in reply
                            ^^^^^^^^^^^^^^^^
^CTraceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 278, in <module>
    ota(jade, verinfo, fwcmp, fwlen, fwhash, patchlen)
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 202, in ota
    result = jade.ota_update(fwcompressed, fwlength, chunksize, fwhash,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 537, in ota_update
    result = self._jadeRpc('ota_data', chunk)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2347, in make_rpc_call
    self.validate_reply(request, reply)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2318, in validate_reply
    reply['id'] == '00' and 'error' in reply
                            ^^^^^^^^^^^^^^^^
AssertionError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 277, in <module>
    with JadeAPI.create_serial(device=args.serialport) as jade:
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 183, in __exit__
    self.disconnect(exc_type is not None)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 274, in disconnect
    self.jade.disconnect(drain)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2106, in disconnect
    self.drain()
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2120, in drain
    byte_ = self.impl.read(1)
            ^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade_serial.py", line 86, in read
    return self.ser.read(n)
           ^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/.venv/lib/python3.11/site-packages/serial/serialposix.py", line 565, in read
    ready, _, _ = select.select([self.fd, self.pipe_abort_read_r], [], [], timeout.time_left())
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
$ python3 ./update_jade_fw.py --fwfile 1.0.33_ble_1249280_fw.bin
Got fw file of length 854192 with expected uncompressed final fw length 1249280
Upload fw to connected Jade [Y/n]
Please approve the firmware update on the Jade device
741.60 b/s - progress 0.48% - 1146.30 seconds left
Written 4096b in 5.52s
7875.82 b/s - progress 0.96% - 624.10 seconds left
Written 8192b in 6.04s
414.84 b/s - progress 1.44% - 1090.54 seconds left
Written 12288b in 15.92s
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 278, in <module>
    ota(jade, verinfo, fwcmp, fwlen, fwhash, patchlen)
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 202, in ota
    result = jade.ota_update(fwcompressed, fwlength, chunksize, fwhash,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 537, in ota_update
    result = self._jadeRpc('ota_data', chunk)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2347, in make_rpc_call
    self.validate_reply(request, reply)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2318, in validate_reply
    reply['id'] == '00' and 'error' in reply
                            ^^^^^^^^^^^^^^^^

The error:

$ python3 ./update_jade_fw.py --fwfile 1.0.33_ble_1249280_fw.bin --log DEBUG
args: Namespace(serialport=None, release=None, fwfile='1.0.33_ble_1249280_fw.bin', loglevel='DEBUG')
Sending: {'method': 'get_version_info', 'id': '359947'} as cbor of size 35
Sending: 35 bytes
Sent: 35 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 2 bytes...
Received: 2 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 6 bytes...
Received: 6 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 6 bytes...
Received: 6 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 12 bytes...
Received: 12 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 6 bytes...
Received: 6 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 18 bytes...
Received: 18 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 2 bytes...
Received: 2 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 11 bytes...
Received: 11 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 3 bytes...
Received: 3 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 10 bytes...
Received: 10 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 9 bytes...
Received: 9 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 13 bytes...
Received: 13 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 2 bytes...
Received: 2 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 11 bytes...
Received: 11 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 6 bytes...
Received: 6 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 13 bytes...
Received: 13 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 8 bytes...
Received: 8 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 8 bytes...
Received: 8 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 12 bytes...
Received: 12 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 14 bytes...
Received: 14 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 10 bytes...
Received: 10 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 6 bytes...
Received: 6 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 13 bytes...
Received: 13 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 4 bytes...
Received: 4 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 12 bytes...
Received: 12 bytes
Reading 1 bytes...
Received: 1 bytes
Received msg: {'id': '359947', 'result': {'JADE_VERSION': '1.0.29', 'JADE_OTA_MAX_CHUNK': 4096, 'JADE_CONFIG': 'BLE', 'BOARD_TYPE': 'JADE_V1.1', 'JADE_FEATURES': 'SB', 'IDF_VERSION': 'v5.1.2', 'CHIP_FEATURES': '32000000', 'EFUSEMAC': '34987AB5BEC8', 'BATTERY_STATUS': 4, 'JADE_STATE': 'LOCKED', 'JADE_NETWORKS': 'MAIN', 'JADE_HAS_PIN': True}}
Reading file 1.0.33_ble_1249280_fw.bin
Read 854192 bytes
Reading file 1.0.33_ble_1249280_fw.bin.hash
Read 64 bytes
Filename suggests full firmware : 1.0.33_ble_1249280_fw.bin
Final fw hash: d76a0cf87df6900477b1fbd1512a6d0fc4bf99a7a4c80e04313eb2c1beb4d17c
Got fw file of length 854192 with expected uncompressed final fw length 1249280
Upload fw to connected Jade [Y/n]
Jade OTA over serial
Running OTA on: {'JADE_VERSION': '1.0.29', 'JADE_OTA_MAX_CHUNK': 4096, 'JADE_CONFIG': 'BLE', 'BOARD_TYPE': 'JADE_V1.1', 'JADE_FEATURES': 'SB', 'IDF_VERSION': 'v5.1.2', 'CHIP_FEATURES': '32000000', 'EFUSEMAC': '34987AB5BEC8', 'BATTERY_STATUS': 4, 'JADE_STATE': 'LOCKED', 'JADE_NETWORKS': 'MAIN', 'JADE_HAS_PIN': True}
Please ensure Jade is unlocked
Sending: {'method': 'auth_user', 'id': '443942', 'params': {'network': 'mainnet', 'epoch': 1739304585}} as cbor of size 63
Sending: 63 bytes
Sent: 63 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 2 bytes...
Received: 2 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 6 bytes...
Received: 6 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 6 bytes...
Received: 6 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 12 bytes...
Received: 12 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 6 bytes...
Received: 6 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 4 bytes...
Received: 4 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 22 bytes...
Received: 22 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 77 bytes...
Received: 77 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 6 bytes...
Received: 6 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 4 bytes...
Received: 4 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 6 bytes...
Received: 6 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 4 bytes...
Received: 4 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 4 bytes...
Received: 4 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 4 bytes...
Received: 4 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 2 bytes...
Received: 2 bytes
Reading 264 bytes...
Received: 264 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 8 bytes...
Received: 8 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 3 bytes...
Received: 3 bytes
Received msg: {'id': '443942', 'result': {'http_request': {'params': {'urls': ['https://j8d.io/get_pin', 'actual link auto-removed by Blockstream for security reasons 'method': 'POST', 'accept': 'json', 'data': {'data': 'Ap/oUNUmmSzU8ss4B4bHKvYQgzwqOuWSA6OF1fZwgh84DwAAAINsiVqpX03q11aaWOHBVzAY7taWXdH6bKTTEoQ2oneVzt5BuVhXfd8mM26GpkzMQSXE82RAOimNNGEH2536rNwbsQHtnLdwNJHRwPuCXjKj5eiJF7Zc8414GDuknGp/3otGEANvTv7Xfcr4QRHz/sRfqI5CM8Wy2N3FAnkhnvwe8k+1L247qA0QU5dCQ1L5X89pBPqEFTl5K2OFSHRO+Zs='}}, 'on-reply': 'pin'}}}
_http_request: {'urls': ['https://j8d.io/get_pin', 'actual link auto-removed by Blockstream for security reasons 'method': 'POST', 'accept': 'json', 'data': {'data': 'Ap/oUNUmmSzU8ss4B4bHKvYQgzwqOuWSA6OF1fZwgh84DwAAAINsiVqpX03q11aaWOHBVzAY7taWXdH6bKTTEoQ2oneVzt5BuVhXfd8mM26GpkzMQSXE82RAOimNNGEH2536rNwbsQHtnLdwNJHRwPuCXjKj5eiJF7Zc8414GDuknGp/3otGEANvTv7Xfcr4QRHz/sRfqI5CM8Wy2N3FAnkhnvwe8k+1L247qA0QU5dCQ1L5X89pBPqEFTl5K2OFSHRO+Zs='}}
http_request received reply: {"data":"LWi2tt4wkvvOZ98K58sLDMvQxY2WSqzc17BdgZx/jjbB1VGIgqQ/AYaS///fzZbQGd2qLXJ0v1fQG2MIm2DuLXxYJj4HXHOMJ7IoNsXH3YaAeaO81GEr4AxTFb8Q/IYc"}

Sending: {'method': 'pin', 'id': '586583', 'params': {'data': 'LWi2tt4wkvvOZ98K58sLDMvQxY2WSqzc17BdgZx/jjbB1VGIgqQ/AYaS///fzZbQGd2qLXJ0v1fQG2MIm2DuLXxYJj4HXHOMJ7IoNsXH3YaAeaO81GEr4AxTFb8Q/IYc'}} as cbor of size 165
Sending: 165 bytes
Sent: 165 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 2 bytes...
Received: 2 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 6 bytes...
Received: 6 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 5 bytes...
Received: 5 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 4 bytes...
Received: 4 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 2 bytes...
Received: 2 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 7 bytes...
Received: 7 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 1 bytes...
Received: 1 bytes
Reading 35 bytes...
Received: 35 bytes
Received msg: {'id': '458276', 'error': {'code': -32001, 'message': "Unexpected message, expecting 'pin'"}}
Exception causing JadeAPI context exit.
<class 'AssertionError'>

  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 278, in <module>
    ota(jade, verinfo, fwcmp, fwlen, fwhash, patchlen)
  File "/home/leo/StudioProjects/Jade/./update_jade_fw.py", line 171, in ota
    while not jade.auth_user(network, epoch=int(time.time())):
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 831, in auth_user
    return self._jadeRpc('auth_user', params,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 367, in _jadeRpc
    return self._jadeRpc(
           ^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 351, in _jadeRpc
    reply = self.jade.make_rpc_call(request, long_timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2347, in make_rpc_call
    self.validate_reply(request, reply)
  File "/home/leo/StudioProjects/Jade/jadepy/jade.py", line 2318, in validate_reply
    reply['id'] == '00' and 'error' in reply
                            ^^^^^^^^^^^^^^^^
Draining interface...
Raw:
bytearray(b'\xa2bidf586583eerror\xa2dcode9}\x01gmessagex9Cannot process message - hardware locked or uninitializedbrsuADE_VERSIONf1.0.29rJADE_OTA_MAX_CHUNK\x19\x10\x00kJADE_CONFIGcBLEjBOARD_TYPEiJADE_V1.1mJADE_FEATURESbSBkIDF_VERSIONfv5.1.2mCHIP_FEATURESh32000000hEFUSEMACl34987AB5BEC8nB')
----
Hex dump:
a262696466353836353833656572726f72a264636f6465397d01676d657373616765783943616e6e6f742070726f63657373206d657373616765202d206861726477617265206c6f636b6564206f7220756e696e697469616c697a6564627273754144455f56455253494f4e66312e302e3239724a4144455f4f54415f4d41585f4348554e4b1910006b4a4144455f434f4e46494763424c456a424f4152445f54595045694a4144455f56312e316d4a4144455f46454154555245536253426b4944465f56455253494f4e6676352e312e326d434849505f46454154555245536833323030303030306845465553454d41436c3334393837414235424543386e42
Raw:
bytearray(b'ATTERY_STATUS\x04jJADE_STATEfLOCKEDmJADE_NETWORKSdMAINlJADE_HAS_PIN\xf5bes1.0.29rJADE_OTA_MAX_CHUNK\x19\x10\x00kJADE_CONFIGcBLEjBOARD_TYPEiJADE_V1.1mJADE_FEATURESbSBkIDF_VERSIONfv5.1.2mCHIP_FEATURESh32000000hEFUSEMACl34987AB5BEC8nBATTERY_STATUS\x04jJADE_STATEfLOCKEDmJADE_NET')
----
Hex dump:
4154544552595f535441545553046a4a4144455f5354415445664c4f434b45446d4a4144455f4e4554574f524b53644d41494e6c4a4144455f4841535f50494ef5626573312e302e3239724a4144455f4f54415f4d41585f4348554e4b1910006b4a4144455f434f4e46494763424c456a424f4152445f54595045694a4144455f56312e316d4a4144455f46454154555245536253426b4944465f56455253494f4e6676352e312e326d434849505f46454154555245536833323030303030306845465553454d41436c3334393837414235424543386e424154544552595f535441545553046a4a4144455f5354415445664c4f434b45446d4a4144455f4e4554
@Giszmo
Copy link
Author

Giszmo commented Feb 11, 2025

I tried several more times and having to unlock the Jade during the firmware upgrade appears to worsen circumstances and the "ERROR_BADDATA" screen on the device comes at varying %% of progress but 10% was the furthest I got.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant