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

Unable to backup device (Windows & Linux) #17

Open
Frontesque opened this issue Jun 25, 2024 · 2 comments
Open

Unable to backup device (Windows & Linux) #17

Frontesque opened this issue Jun 25, 2024 · 2 comments

Comments

@Frontesque
Copy link

I'm attempting to back up my carthing (OS Version 8.4.4) using --dump_device. I've tried on Windows 11, in a VM, and on actual hardware, aswell as my Linux machine. All 3 give me the same timeout error, so I'm lead to believe that it isn't something that I'm doing. Below are the logs for each system.

Windows 11 x64
D:\Documents\tmp\carthing\superbird-tool>python superbird_tool.py --dump_device backup
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)
Entering USB Burn Mode
writing images/superbird.bl2.encrypted.bin at 0xfffa0000
 writing to: 0xfffa0000
AMLC dataSize=16384, offset=65536, seq=0
[DONE]
AMLC dataSize=49152, offset=393216, seq=1
[DONE]
AMLC dataSize=16384, offset=229376, seq=2
[DONE]
AMLC dataSize=49152, offset=180224, seq=3
[DONE]
AMLC dataSize=16384, offset=65536, seq=4
[DONE]
AMLC dataSize=1224048, offset=81920, seq=5
[DONE]
[BL2 END]
Waiting for device...
Device is now in USB Burn Mode
 executing bulkcmd: "amlmmc part 1"
  result: success
dumping entire device to backup
Validating size of partition: bootloader size: 0x200000 2MB - OK
dumping partition: "bootloader" 0x0+0x1e0200 into file: backup/bootloader.dump
chunk_size: 128.0KB, speed: 321KB/s progress: 94% remaining: 0MB / 2MB
Validating size of partition: env size: 0x800000 8MB - OK
dumping partition: "env" 0x3a000+0xe0000 into file: backup/env.dump
chunk_size: 128.0KB, speed: 326KB/s progress: 11% remaining: 7MB / 8MB
Error while reading partition env, [Errno None] b'libusb0-dll:err [control_msg] sending control message failed, win error: The semaphore timeout period has expired.\r\n\n'
Traceback (most recent call last):
  File "D:\Documents\tmp\carthing\superbird-tool\superbird_device.py", line 411, in dump_partition
    rdata = self.read_memory(self.ADDR_TMP, chunk_size)
  File "D:\Documents\tmp\carthing\superbird-tool\superbird_device.py", line 314, in read_memory
    read_data = self.device.readSimpleMemory(address + offset, 64).tobytes()
  File "C:\Users\kenny\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pyamlboot\pyamlboot.py", line 91, in readSimpleMemory
    ret = self.dev.ctrl_transfer(bmRequestType = 0xc0,
  File "C:\Users\kenny\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\usb\core.py", line 1082, in ctrl_transfer
    ret = self._ctx.backend.ctrl_transfer(
  File "C:\Users\kenny\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\usb\backend\libusb0.py", line 601, in ctrl_transfer
    return _check(_lib.usb_control_msg(
  File "C:\Users\kenny\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\usb\backend\libusb0.py", line 447, in _check
    raise USBError(errmsg, ret)
usb.core.USBError: [Errno None] b'libusb0-dll:err [control_msg] sending control message failed, win error: The semaphore timeout period has expired.\r\n\n'
Linux x64 (Fedora 40)
front@pavilion: ~/Downloads/superbird-tool$ sudo python [superbird_tool.py](http://superbird_tool.py/) --dump_device backup
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)
Entering USB Burn Mode
writing images/superbird.bl2.encrypted.bin at 0xfffa0000
 writing to: 0xfffa0000
AMLC dataSize=16384, offset=65536, seq=0
[DONE]
AMLC dataSize=49152, offset=393216, seq=1
[DONE]
AMLC dataSize=16384, offset=229376, seq=2
[DONE]
AMLC dataSize=49152, offset=180224, seq=3
[DONE]
AMLC dataSize=16384, offset=65536, seq=4
[DONE]
AMLC dataSize=1224048, offset=81920, seq=5
[DONE]
[BL2 END]
Waiting for device...
Device is now in USB Burn Mode
 executing bulkcmd: "amlmmc part 1"
  result: success
dumping entire device to backup
Validating size of partition: bootloader size: 0x200000 2MB - OK
dumping partition: "bootloader" 0x0+0x200 into file: backup/bootloader.dump 
chunk_size: 128.0KB, speed: 0KB/s progress: 0% remaining: 2MB / 2MB
Error while reading partition bootloader, [Errno 110] Operation timed out
Traceback (most recent call last):
  File "/home/front/Downloads/superbird-tool/superbird_device.py", line 411, in dump_partition
    rdata = self.read_memory(self.ADDR_TMP, chunk_size)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/front/Downloads/superbird-tool/superbird_device.py", line 314, in read_memory
    read_data = self.device.readSimpleMemory(address + offset, 64).tobytes()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pyamlboot/pyamlboot.py", line 91, in readSimpleMemory
    ret = self.dev.ctrl_transfer(bmRequestType = 0xc0,
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/usb/core.py", line 1082, in ctrl_transfer
    ret = self._ctx.backend.ctrl_transfer(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/usb/backend/libusb1.py", line 893, in ctrl_transfer
    ret = _check(self.lib.libusb_control_transfer(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/usb/backend/libusb1.py", line 602, in _check
    raise USBTimeoutError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBTimeoutError: [Errno 110] Operation timed out
@Frontesque
Copy link
Author

Just tried again on Ubuntu 22.04 with a different cable. Still the same result as on Fedora 40.

@Mtillmann
Copy link

Mtillmann commented Sep 27, 2024

I had the same issue on 22.04 with my laptop because no port delivers enough power. Works flawless on my desktop machine.

Update: I was using a USB-Port on my KVM and dumps of the larger partitions (system_a, system_b) would crap out after 20-30 Minutes. Using a USB(A)-3-port directly on my Motherboard's IO panel solved the issue for me.

Also here's the list of partitions that are dumped in case you don't want to start from scratch when a single dump fails

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

2 participants