We've referenced several forums posts but to no avail. We have been unable to get DFU working. We can get it to boot into DFU mode but all transfers don't work. Whenever an upload or download is performed, 0 bytes are transferred.
I've tried using other dfu programs such as dfu-tool and dfu-util. This is the output I get from "dfu-util"
Code: Select all
$ sudo dfu-util --download upgrade_image_2_0.bin -v
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
libusb: debug [libusb_get_device_list]
libusb: debug [discovered_devs_append] need to increase capacity
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [libusb_get_config_descriptor] index 1
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [libusb_get_config_descriptor] index 1
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [parse_endpoint] skipping descriptor 25
libusb: debug [parse_endpoint] skipping descriptor 25
libusb: debug [parse_endpoint] skipping descriptor 25
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [parse_endpoint] skipping descriptor 30
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [parse_configuration] skipping descriptor 0xb
libusb: debug [parse_endpoint] skipping descriptor 25
libusb: debug [parse_endpoint] skipping descriptor ff
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
libusb: debug [libusb_open] open 1.55
libusb: debug [usbi_add_pollfd] add fd 9 events 4
libusb: debug [libusb_close]
libusb: debug [usbi_remove_pollfd] remove fd 9
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_config_descriptor] index 0
Opening DFU capable USB device...
libusb: debug [libusb_open] open 1.55
libusb: debug [usbi_add_pollfd] add fd 9 events 4
ID 20b1:0008
Run-time device DFU version 0110
Claiming USB DFU Interface...
libusb: debug [libusb_claim_interface] interface 0
Setting Alternate Setting #0 ...
libusb: debug [libusb_set_interface_alt_setting] interface 0 altsetting 0
Determining device status: libusb: debug [libusb_alloc_transfer] transfer 0x55d62ae62e00
libusb: debug [libusb_submit_transfer] transfer 0x55d62ae62e00
libusb: debug [add_to_flying_list] arm timerfd for timeout in 5000ms (first in line)
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll fds modified, reallocating
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=2 status=0 transferred=6
libusb: debug [handle_control_completion] handling completion status 0
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0x55d62ae62e00 has callback 0x7fbd58622b30
libusb: debug [sync_transfer_cb] actual_length=6
libusb: debug [libusb_free_transfer] transfer 0x55d62ae62e00
state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0110
Device returned transfer size 64
Copying data from PC to DFU device
Download [ ] 0% 0 byteslibusb: debug [libusb_alloc_transfer] transfer 0x55d62ae54200
libusb: debug [libusb_submit_transfer] transfer 0x55d62ae54200
libusb: debug [add_to_flying_list] arm timerfd for timeout in 5000ms (first in line)
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=2 status=-32 transferred=0
libusb: debug [handle_control_completion] handling completion status -32
libusb: debug [handle_control_completion] unsupported control request
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0x55d62ae54200 has callback 0x7fbd58622b30
libusb: debug [sync_transfer_cb] actual_length=0
libusb: debug [libusb_free_transfer] transfer 0x55d62ae54200
dfu-util: Error during download
libusb: debug [libusb_close]
libusb: debug [usbi_remove_pollfd] remove fd 9
libusb: debug [libusb_exit]
libusb: debug [libusb_exit] destroying default context
Here's my output when I use the xmosdfu tool
Code: Select all
sudo ./xmosdfu --download upgrade_image_2_0.bin -vvvv
VID = 0xbda, PID = 0x8153, BCDDevice: 0x3001
VID = 0xbda, PID = 0x8153, BCDDevice: 0x3000
VID = 0x424, PID = 0x5537, BCDDevice: 0x6080
VID = 0x1d6b, PID = 0x3, BCDDevice: 0x415
VID = 0x4d8, PID = 0xb29, BCDDevice: 0x2
VID = 0x424, PID = 0x2137, BCDDevice: 0x6080
VID = 0x413c, PID = 0x3016, BCDDevice: 0x2900
VID = 0xbda, PID = 0x4014, BCDDevice: 0x5
VID = 0x20b1, PID = 0xf7d4, BCDDevice: 0x1006
VID = 0x424, PID = 0x2137, BCDDevice: 0x6080
VID = 0x1d6b, PID = 0x2, BCDDevice: 0x415
VID = 0x1d6b, PID = 0x3, BCDDevice: 0x415
VID = 0x8087, PID = 0xa2b, BCDDevice: 0x10
VID = 0x1bcf, PID = 0x2b95, BCDDevice: 0x5605
VID = 0x20b1, PID = 0x8, BCDDevice: 0x1120
XMOS DFU application started - Interface 0 claimed
Detaching device from application mode.
Waiting for device to restart and enter DFU mode...
VID = 0xbda, PID = 0x8153, BCDDevice: 0x3001
VID = 0xbda, PID = 0x8153, BCDDevice: 0x3000
VID = 0x424, PID = 0x5537, BCDDevice: 0x6080
VID = 0x1d6b, PID = 0x3, BCDDevice: 0x415
VID = 0x4d8, PID = 0xb29, BCDDevice: 0x2
VID = 0x424, PID = 0x2137, BCDDevice: 0x6080
VID = 0x413c, PID = 0x3016, BCDDevice: 0x2900
VID = 0xbda, PID = 0x4014, BCDDevice: 0x5
VID = 0x20b1, PID = 0xf7d4, BCDDevice: 0x1006
VID = 0x424, PID = 0x2137, BCDDevice: 0x6080
VID = 0x1d6b, PID = 0x2, BCDDevice: 0x415
VID = 0x1d6b, PID = 0x3, BCDDevice: 0x415
VID = 0x8087, PID = 0xa2b, BCDDevice: 0x10
VID = 0x1bcf, PID = 0x2b95, BCDDevice: 0x5605
VID = 0x20b1, PID = 0x8, BCDDevice: 0x1120
... DFU firmware upgrade device opened
... Downloading image (upgrade_image_2_0.bin) to device
... Download complete
... Returning device to application mode
Unfortunately, it looks like the xmosdfu tool doesn't quite tell us what's going wrong. I'm also uncertain about the dfu-util tool displaying what's actually going wrong since I'm not sure if it could even interface properly with the device anyways but I figure it might provide some insight into what's happening. I also get two different and wrong results whenever I try to read the current image using the xmosdfu tool. Sometimes the output file just keeps getting a set of repeating lines forever until I force stop the program, the other case is that it returns that the file was uploaded just fine but the file on my system is 0 bytes.
I'm running on Ubuntu 18.04 for reference. I'm going to see if I can get this to work on Windows in the meanwhile, but we need this to work on Linux.