7
\$\begingroup\$

I'm am having issues with my USBasp programmer (Windows 10). I installed the WinUSB driver using zadig 2.4.

When I run AVR dude with the following parameters

avrdude -c USBasp -p m32u4 -u -U flash:w:justahex.ino.hex:i

It immediately returns with this error:

avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'

It looks for a USB device with vendor ID "0x16c0" and product ID "0x5dc". This is the correct set of IDs according to Zadig:

enter image description here

Also the device manager seems to find the device without issues:

USB asp correctly installed

Again with correct vendor/product ID

When I google the topic I see a lot of forums where people have issues getting their USBasp device working under windows 10. But they mostly are having issues with the libusb /WinUSB drivers (Which seems to be fine in my case thanks to the Zadig tool).

So I find myself stuck in getting further. Are there any other things I can check? Or is the device broken somehow (which would surprise me as it does get installed properly in windows)

\$\endgroup\$
4
  • \$\begingroup\$ I had the same problem and I couldn't use it. Finally, I decided to buy and AvrPocket which works fine. If you find a solution please let me know. \$\endgroup\$
    – pantarhei
    Commented Jan 13, 2019 at 9:50
  • \$\begingroup\$ My guess is that windows disallows avrdude from accessing the USB device. What happens if you run avrdude with administrator priviledges? \$\endgroup\$
    – jms
    Commented Jan 13, 2019 at 10:45
  • \$\begingroup\$ @jms Nope that does not make a difference. Good guess though! Haven't thought of that myself. \$\endgroup\$
    – bas
    Commented Jan 13, 2019 at 12:36
  • 1
    \$\begingroup\$ @BaciuVlad-Eusebiu found the fix for my problem. See answer below. Worth trying out :). \$\endgroup\$
    – bas
    Commented Jan 17, 2019 at 19:02

4 Answers 4

6
\$\begingroup\$

I'm a bit late to the game, but I just experienced the same error (albeit with different causes).

  • on most places on the internet you will be instructed to install the libusbK driver, which doesn't work, use the libusb-win32 variant instead
  • make sure the AVRDUDE.EXE tool is the latest version (the older doesn't work with the newer USB drivers for some reason)
  • in case of using a clone (for instance having "Van Ooijen's technische informatica" as vendor id instead of the original name "www.fischl.de"), make sure to use the -c usbasp-clone -P usb AVRDUDE settings instead of -c usbap -P usb. The clone setting causes AVRDUDE to ignore the vendor description and also accept the clone. You'd think having the correct VID, PID combination would be sufficient but no...

Bonus: for the extra lazy ones, here's an example command line that would flash that Arduino Leonardo board from Atmel studio (warning, this will overwrite the bootloader):

avrdude.exe -C"avrdude.conf" -p atmega32u4 -c usbasp-clone -P usb -U flash:w:"$(ProjectDir)Debug\$(TargetName).hex":i

\$\endgroup\$
1
  • \$\begingroup\$ I will mark your post as answer since it is clearly more up to date then my answer \$\endgroup\$
    – bas
    Commented Aug 11, 2020 at 16:20
13
\$\begingroup\$

Found the solution, which is of course dead simple once you know...

In Zadig, you can select the driver. Default selected is (in my case) the WinUSB driver. When I select the libusb driver, and install that driver, it works like a charm.

Yeey.

enter image description here

avrdude -vvv -c USBasp -p m32u4 -u -U flash:w:Duroduino.ino.hex:i

avrdude: Version 6.3, compiled on Feb 17 2016 at 09:25:53
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "c:\_SVN\p(r)ins\Durocan\Deployment\avrdude.conf"

         Using Port                    : usb
         Using Programmer              : USBasp
avrdude: usbasp_open("usb")
avrdude: seen device from vendor ->www.fischl.de<-
avrdude: seen product ->USBasp<-
         AVR Part                      : ATmega32U4
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :
\$\endgroup\$
1
  • \$\begingroup\$ perfect! thanks for this solution. worked perfectly \$\endgroup\$
    – Amrith
    Commented Apr 30, 2021 at 14:07
2
\$\begingroup\$

For avrdude to correctly work with USBAsp, I found the best to install the libusbK driver, at least under Windows 7. This way it works with both - the official avrdude build, and the one from the Arduino IDE. With the libusb-win32 or the WinUSB it works with one, but fails with another.

\$\endgroup\$
2
\$\begingroup\$

There are two parts to solving this. First the correct USB driver, as noted in the other answer, libusbk installed using the Zadig tool solves this part.

The second part is getting AVRDude to recognise the device if using a clone ... it is not enough that the device appears with the correct vendor ID, you need to tell AVRDude to ignore the website URL in the device info. As noted you do this by using -cusbasp-clone from the command line ... but this is not helpful if trying to program devices directly out of Arduino Studio.

Find your avrdude.conf file (it tells you which conf it is using in the Arduino debug output) ... find the entry for usbasp ... comment out the two lines below:

programmer
  id    = "usbasp";
  desc  = "USBasp, http://www.fischl.de/usbasp/";
  type  = "usbasp";
  connection_type = usb;
  usbvid     = 0x16C0; # VOTI
  usbpid     = 0x05DC; # Obdev's free shared PID
  #usbvendor  = "www.fischl.de"; <-- comment out with # as shown
  #usbproduct = "USBasp";  <-- comment out with # as shown

The selection of usbasp in arduino studio will now work with clone devices.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.