bishopdynamics / superbird-tool

Cross-Platform Spotify Car Thing (superbird) hacking toolkit
133 stars 8 forks source link

Unable to start burn_mode on Windows #19

Closed toddsay closed 1 month ago

toddsay commented 1 month ago

I can find my device but burn_mode always gives this USB timeout error (immediately). Am I doing something wrong, or is there something else I can try?

I'm using the WinUSB driver for GX-CHIP (installed using zadig), and I've also tried installing the libusbk driver. Also tried multiple reconnects, and different USB ports.

W:\dev\superbird-tool> python superbird_tool.py --find_device
Spotify Car Thing (superbird) toolkit, v0.1.0, by bishopdynamics
     https://github.com/bishopdynamics/superbird-tool

Found device booted in USB Mode (buttons 1 & 4 held at boot)
W:\dev\superbird-tool> python superbird_tool.py --burn_mode
Spotify Car Thing (superbird) toolkit, v0.1.0, by bishopdynamics
     https://github.com/bishopdynamics/superbird-tool

Entering USB Burn Mode
writing W:\dev\superbird-tool\images\superbird.bl2.encrypted.bin at 0xfffa0000
 writing to: 0xfffa0000
Traceback (most recent call last):
  File "W:\dev\superbird-tool\superbird_tool.py", line 324, in <module>
    dev.bl2_boot(str(IMAGES_PATH.joinpath('superbird.bl2.encrypted.bin')), str(IMAGES_PATH.joinpath('superbird.bootloader.img')))
  File "W:\dev\superbird-tool\superbird_device.py", line 273, in bl2_boot
    self.send_file(bl2_file, self.ADDR_BL2, chunk_size=4096, append_zeros=True)
  File "W:\dev\superbird-tool\superbird_device.py", line 268, in send_file
    self.write(address, file_data, chunk_size, append_zeros)
  File "W:\dev\superbird-tool\superbird_device.py", line 244, in write
    self.device.writeLargeMemory(address, data, chunk_size, append_zeros)
  File "C:\Users\trsay\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyamlboot\pyamlboot.py", line 238, in writeLargeMemory
    self._writeLargeMemory(address+offset, data[offset:offset+writeLength], \
  File "C:\Users\trsay\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyamlboot\pyamlboot.py", line 219, in _writeLargeMemory
    ep.write(data[offset:offset+blockLength], 1000)
  File "C:\Users\trsay\AppData\Local\Programs\Python\Python312\Lib\site-packages\usb\core.py", line 408, in write
    return self.device.write(self, data, timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\trsay\AppData\Local\Programs\Python\Python312\Lib\site-packages\usb\core.py", line 989, in write
    return fn(
           ^^^
  File "C:\Users\trsay\AppData\Local\Programs\Python\Python312\Lib\site-packages\usb\backend\libusb1.py", line 837, in bulk_write
    return self.__write(self.lib.libusb_bulk_transfer,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\trsay\AppData\Local\Programs\Python\Python312\Lib\site-packages\usb\backend\libusb1.py", line 938, in __write
    _check(retval)
  File "C:\Users\trsay\AppData\Local\Programs\Python\Python312\Lib\site-packages\usb\backend\libusb1.py", line 602, in _check
    raise USBTimeoutError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBTimeoutError: [Errno 10060] Operation timed out
toddsay commented 1 month ago

Oh. Nevermind. I tried a different cable (this time a USB-C to USB-C using a motherboard USB-C port) and things just started working. Interesting.