skuep/AIOC

Cant update firmware on windows - Cannot open DFU device (LIBUSB_ERROR_NOT_SUPPORTED) Lost device after RESET?

Closed this issue · 12 comments

ITCMD commented

image

dfu-util.exe -d 1209:7388 -a 0 -s 0x08000000:leave -D aioc-fw-1.2.0-autopttcos.bin
dfu-util 0.11

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 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/

Opening DFU capable USB device...
Device ID 1209:7388
Run-Time device DFU version 0101
Claiming USB DFU (Run-Time) Interface...
Setting Alternate Interface zero...
Determining device status...
DFU state(0) = appIDLE, status(0) = No error condition is present
Device really in Run-Time Mode, send DFU detach request...
Device will detach and reattach...
Cannot open DFU device 0483:df11 found on devnum 32 (LIBUSB_ERROR_NOT_SUPPORTED)
Lost device after RESET?

Looks like it's not reconnecting as expected.
I installed the libusbk driver from Zadig. Should I be using libusb-win32 instead?

ITCMD commented

Tried again with libusb-win32. Just hangs instead of failing

dfu-util.exe -d 1209:7388 -a 0 -s 0x08000000:leave -D aioc-fw-1.2.0-autopttcos.bin
dfu-util 0.11

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 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/

Opening DFU capable USB device...
Device ID 1209:7388
Run-Time device DFU version 0101
Claiming USB DFU (Run-Time) Interface...
Setting Alternate Interface zero...
Determining device status...
DFU state(0) = appIDLE, status(0) = No error condition is present
Device really in Run-Time Mode, send DFU detach request...
Device will detach and reattach...
skuep commented

Interesting... Wonder what is going on there. Seem to be some random occurences on the internet, saying it might be related to Zadig? But nothing specific.

Does the old-school way work? I.e. manually setting the AIOC into the bootloader mode by shorting the outermost pins on the header during power-up. Does dfu-util then work?

EDIT: Could this have something to do with administrator privilges maybe? Try running it as administrator just for testing.

ITCMD commented

Old-school does the same thing.
Good idea for admin, I'll give that a try next time I'm able.

skuep commented

Have you somehow solved the issue or know what the problem was? Or can we close this for now?

ITCMD commented

Have not given it a try yet. Will update this issue once I have!

ITCMD commented

thanks for your patience on this. I can confirm that running as admin fixed the issue

ITCMD commented

I thought it fixed it but that's because I originally thought it passed an error. It's still not working as the device never reattaches. It also stops working until I unplug and plug it back in. It just hangs

G:\GitHub\AIOC-Companion>dfu-util -d 1209:7388 -a 0 -s 0x08000000:leave -D aioc-fw-1.2.0-autopttcos.bin
dfu-util 0.11

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 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/

Opening DFU capable USB device...
Device ID 1209:7388
Run-Time device DFU version 0101
Claiming USB DFU (Run-Time) Interface...
Setting Alternate Interface zero...
Determining device status...
DFU state(0) = appIDLE, status(0) = No error condition is present
Device really in Run-Time Mode, send DFU detach request...
Device will detach and reattach...
ITCMD commented

I tried installing both the libusbk driver and winusb (libusb) driver for the AIOC DFU device and same issue.

skuep commented

On the Discord we have had now several people having issues with dfu-util under Windows (11 mostly I think?). Something seems to be borked with this combination of dfu-util+OS at some point. As a workaround currently the best way is to use a Linux machine.

I quote:
DFU on windows is a ginormous PITA. it's easier to boot a linux distro off of USB or something and do DFU that way

https://discordapp.com/channels/755897811148734536/1077406707342389258/1131294896540618763

After a bunch of trial and error i got it to work but it downloaded the package twice saying there was an error then it completed. As soon it was programed the CMD closed. Never happened before.
Tried a baofeng and chirp but gave me an error of short header cant read radio?

For anyone running into this problem these are my findings in windows 10;

  • Without any libusb driver installed to "AIOC DFU Runtime (Interface 6)" you get Cannot claim interface 6: LIBUSB_ERROR_NOT_SUPPORTED.
  • With libusb-win32 installed it hangs indefinitely on Determining device status... or Device will detach and reattach....
  • With libusbk installed to "AIOC DFU Runtime (Interface 6)" it works but you also need libusbk installed to "STM32 BOOTLOADER" or else you get Cannot open DFU device 0483:df11 found on devnum 32 (LIBUSB_ERROR_NOT_SUPPORTED) Lost device after RESET? because it cannot reconnect to the bootloader.

Now

How to make this work in Windows 10

  1. Connect you AIOC in bootloader mode.
  2. Using Zadig install libusbk driver to STM32 BOOTLOADER
  3. Disconnect AIOC and remove jumper then reconnect.
  4. Using Zadig again install libusbk driver to AIOC DFU Runtime (Interface 6)
  5. Now with libusbk drivers for both the Bootload and DFU installed you can follow the instructions for updating in the README.

@StrongJohn: Thanks for the write-up, that will come in handy if someone else has issues on Windows using the dfu stuff. I need to find some place where I can sticky this information for others to easily see.

I hope it's okay with you if I close this issue for now. Feel free to reopen if required.