AVRDUDESS – A GUI for AVRDUDE

AVRDUDESS is a GUI for AVRDUDE, a tool for programming Atmel microcontrollers.

Some key features:

  • Supports all programmers and MCUs that AVRDUDE supports
  • Supports presets, allowing you to change between devices and configurations quickly and easily
  • Drag and drop files for easy uploading
  • Automatically lists available COM ports
  • Cross-platform with the use of Mono for Linux & macOS
Downloads
LATEST
Download
setup-AVRDUDESS-2.11.exe (863.53 kB)
AVRDUDESS 2.11 (Windows installer)
Downloaded 8479 times
MD5: 427B83E8993E1DFE269B2DDE24228817

LATEST
Download
avrdudess_20191012.zip (585.61 kB)
AVRDUDESS 2.11 (Binaries, any OS)
Downloaded 2484 times
MD5: 3746244D1BE18D662C8DE2FA8AF8399F

Source available on GitHub

 

Requirements
Windows
Requires .NET Framework 2.0 SP1 or newer. All systems since Windows Vista will have the required version already installed.

Linux & macOS
Can be ran using Mono.
Has not been tested on macOS, but should work. Might need the --arch=32 argument.
mono --arch=32 avrdudess.exe

Installing on Ubuntu 18.04
Install Mono (this is the minimum required, you can use mono-complete for a full install):
sudo apt-get install libmono-system-windows-forms4.0-cil
On older versions of Ubuntu you might need to use libmono-winforms2.0-cil instead.

Install AVRDUDE and AVR-GCC (for avr-size):
sudo apt-get install avrdude gcc-avr

Run AVRDUDESS with mono, you might have to run as root (sudo) so that AVRDUDE can access ports if you haven’t changed any permissions or rules.d stuff:
mono avrdudess.exe

415 comments

26 pings

Skip to comment form

    • Silviu on October 23, 2018 at 11:13 am
    • Reply

    Hi Zak,

    I use USBASP and I need to use PDI interface to write the ATXMEGA flash memory,
    Here is the project and the patches:
    https://github.com/siredmar/Usbasp_PDI/tree/master/SW
    which can be used.
    But I didn’t have success to add this to your wonderful tool AVRDUDESS. I’m sure that you have a lot of experience in this kind of things. So, do you think that can you find some time to add this patch to your AVRDUDESS in order to works also on PDI for ATXMEGA and USBASP?

    Or if you find any solution here, it will be very helpful for me!

    Many many thanks!

    1. Hey Silviu, it’s not AVRDUDESS that needs to be updated for PDI support, but AVRDUDE (which is in the install location of AVRDUDESS) and the USBasp programmer firmware. It looks like the things you need can be downloaded from here https://gearfoxblog.wordpress.com/2016/05/29/usbasp-with-pdi/ (near the bottom), replace the avrdude.exe that comes with AVRDUDESS with the one from the link. I’ll also see about including the PDI stuff in avrdude in a future release.

    • Adam Cullen on November 1, 2018 at 6:29 am
    • Reply

    Hi Zak,

    I’ve just installed AVRDUDESS on a Win 10 x64 machine. I get the following errors:

    ERROR: avrdude is missing!
    ERROR: avrdude.conf is missing!
    WARNING: Programmer ‘usbasp’ not found
    WARNING: MCU ‘t85’ not found

    avrdude and avrdude.conf are in the AVRDUDESS folder. usbasp programmer was in the usb port and driver correctly installed.

    I suspect that the issue is that AVRDUDESS is installed in C:\Program Files (x86)\AVRDUDESS rather than C:\Program Files\AVRDUDESS? Is there any way to address this?

    Thanks in advance,
    Adam

    1. Hey Adam, Program Files (x86) is the correct place since it’s a 32-bit application. It might be your anti-virus blocking it for some reason, try disabling it for a bit. If that doesn’t work try manually setting avrdude and avrdude.conf locations to “C:\Program Files (x86)\AVRDUDESS” in the Options dialog, also check to make sure avrdude.exe and avrdude.conf are actually in that location (they should have been installed there).

    • Jason on December 9, 2018 at 7:46 am
    • Reply

    i scanned with immunet by clamav and found it as having Trojan down loader and deleted the file . can you fix program so that it is not detected as threat. i had to reinstall all the chain to get it working

    1. Hey Jason, it would be best to report the false positive to the AV vendor. Alternatively you can try the .zip download instead of the .exe installer.

    • Calvin on January 16, 2019 at 1:00 am
    • Reply

    Are the Arduino Pro Micro clones supported? Uses the ATmega32u4 chip. That chip is not showing up on the MCU list and using the detect button results in this:
    avrdude.exe: stk500_recv(): programmer is not responding
    avrdude.exe: stk500_getsync() attempt 10 of 10: not in sync: resp=0xa5
    avrdude.exe: ser_drain(): read error: The device does not recognize the command.

    I have Arduino selected as the programmer and I’ve selected com 5 (from windows 10 device manager). I have uninstalled and reinstalled your program multiple times hoping that would solve the issue. I have tried it on 2 of the pro micros with the same results. They are supposed to have the Leonardo bootloader installed on them.

    1. Hey Calvin, it looks like the main problem is that the Pro Micro enters the bootloader by opening the serial port at 1200 baud then closing it. AVRDUDESS doesn’t have support for doing that at the moment (was mentioned here https://github.com/zkemble/AVRDUDESS/issues/3). The Arduino IDE also uses ‘avr109’ as the programmer rather than arduino, I’m not sure if they’re compatible, but once in the bootloader try using ‘Atmel AppNote AVR109 Boot Loader’ programmer instead.

        • Calvin Brown on January 17, 2019 at 5:10 am
        • Reply

        I was finally able to get it to work yesterday using the Arduino IDE with the Sparkfun profiles for pro micro. I bought the pro micro’s for an arcade controller project. I plan to use one to make a spinner control and the other for a trackball.
        Thanks,
        Calvin

    • Dmitry on January 21, 2019 at 7:15 am
    • Reply

    I have selected:
    Programmer – “Atmel-ICE (ARM/AVR) in JTAG mode”
    Port – USB
    MCU – ATmega32
    So, command line was right: “-c atmelice -p m32 -P usb”
    Then have pressed “Detect” button.

    In the message window:
    avrdude.exe: jtag3_initialize(): part ATmega8 has no JTAG interface

    Same command line passed to avrdude directly works fine:
    …avrdude -c atmelice -p m32 -P usb
    avrdude: AVR device initialized and ready to accept instructions
    Reading | ################################################## | 100% 0.11s
    avrdude: Device signature = 0x1e9502 (probably m32)
    avrdude: safemode: Fuses OK (E:FF, H:08, L:3F)
    avrdude done. Thank you.

    1. Hi Dmitry,
      Avrdude needs an MCU specified before it will attempt to do anything, but the MCU is not known if it’s doing an auto-detect so I hardcoded in the ATmega8. However, there are multiple types of programming interfaces (debugWire, HVSP, ISP, JTAG, PDI, PP, TPI), so the interface avrdude uses depends on the programmer and MCU combination. Some programmers will automatically use the correct interface based on the MCU (like the USBASP will switch between ISP and TPI), while other programmers need to have it manually set (like the Atmel ICE).
      In your case it’s trying to use the JTAG programmer with an ATmega8 which doesn’t have JTAG, so it fails.
      I’ll have a go at making AVRDUDESS have a guess at choosing an MCU with the correct interface when auto-detecting for the next version.

    2. Hi zak,

      İ want to use 2 usbasp at the same time.
      or how to select the two usbasp installed on the computer during uploading atmega328.?

      1. Hey Bahadir, have a look at this, it’s for the USBtinyISP, but might work for USBasp too – https://electronics.stackexchange.com/questions/130984/can-avrdude-address-individual-usbtiny-programmers you will need to put the usb:bus-0:\\.\libusb0-0001--0x1781-0x0c9f stuff into the “Port (-P)” box just under the programmer selection.

    • jimmy on January 24, 2019 at 12:11 pm
    • Reply

    Hello, i can detect the processor and read the fuses just fine with avrdudess but when trying to burn the bootloader with arduino ide i get following error:

    avrdude: error: program enable: target doesn’t answer. 0
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    I am sure my connections are good, I think otherwise it wouldn’t be possible to read the fuses, or is it? I’m using USBASP as programmer

    1. Hey Jimmy, connections are fine if fuses can be read. It might be that the Arduino IDE is running the programmer too fast for the controller. Most new AVRs run at 1MHz from the internal RC. If it’s an ATmega328 then try setting the low fuse to 0xE2 so that it runs at 8MHz.

    • Mik on January 24, 2019 at 9:28 pm
    • Reply

    Hello, in the new version 2.7 does not work presets settings from version 2.6

    1. Hey Mik, I’m not having any troubles with presets form older versions. Could you give some more details about what exactly happens (do they still show up in the list, etc)?

        • Mik on January 24, 2019 at 11:02 pm
        • Reply

        Thank you for your response,
        after upgrading to v 2.7 does not work from preset version 2.6 and when installing clean in 2.7, the default profile will still be in the preset from version 2.7 when the program is restarted again, even if I choose another setting that is active.

        1. Ah yeah, I’ve changed it so that instead of saving the preset you last used it will now save all of the other configuration settings. That way it will keep things like the flash and EEPROM file locations, as it is easier to select a preset than it is to setup all the other things each time. You can also specify a preset to load by passing the name of it as the first argument like:

          "C:\Program Files (x86)\AVRDUDESS\avrdudess.exe" "Arduino as ISP"

            • Mik on January 24, 2019 at 11:36 pm

            It does not matter, I’m going back to version 2.6 this is unclear, I have the same MCU with other fuses setting and I would have to always re-select the profile to make sure which settings are selected. Thank you for info MIK

            • Mik on January 24, 2019 at 11:45 pm

            p.s. logical is the display of the name of the selected profile (version 2.6 and below) if I set anything and is still shown ” default ” so it is a step back.

            MIK

          1. Yes, it no longer loads the last used preset. It loads each individual setting instead. If you load a preset, then close and open again it will still have all of the same settings, but they are no longer associated with a particular preset.

            However, you are right that it should not display “Default” when opening the program, a blank entry would be better.

            Presets were designed to be a one-way set of configuration options. I guess I should perhaps implement a “Profile” system, where you load a profile and any changes are automatically saved to that profile, and the last used profile is then loaded when the program opens.

            • Mik on January 25, 2019 at 5:25 am

            Yes, but that’s how it worked until version 2.6. In version 2.7 I choose any profile, it will be displayed default and it is not clear and I say it all the time.

    • Adriano on January 26, 2019 at 9:19 am
    • Reply

    Ciao ,Zack

    I made Chan HVP programmer https://evertdekker.com/?p=504 and I want to know if is possible to use it with Avrdudess for programm rstdsbl attiny 85 or reset fuse bits ,i can use xp and windows7 with an old pc that have a paralel port .Usbasp chinese works very good with libusbK driver on both xp and 7,but now ,i need something HVP home made (i don’t want to spend ,i am beginner with Mcu )

    1. Hey Adriano, I have no idea if it’ll work, hah, you will have to try it. This program is only a UI frontend for avrdude. There are tutorials for using an Arduino as a HV programmer which will probably be easier than trying finding a computer with a parallel port, like this one https://mightyohm.com/blog/2008/09/arduino-based-avr-high-voltage-programmer/

    • juergen on January 28, 2019 at 1:22 am
    • Reply

    I used avrdudess 2.6 for some time and got the update message today.
    So i downloaded the 2.7 installer exe and tried to run it.
    After starting, it from an explorer widow, it locks it for several minutes (ok, i am using a cheap laptop which is not very fast…).
    After that, i only get a borderless, not resizeable, window which contains weird (asian style) characters, a scrollbar and a close [X] icon on the top right.

    So whats wrong with it (or my laptop)?

    As a solution i downloaded the zip and just copied its files over the 2.6 installation… 😀

    A yeah… I use Windows 10 pro x64 insider preview…

    1. Oooook, that’s pretty weird, could you post a screenshot of it? There hasn’t been any changes since 2.6 that might cause something like that :/

        • juergen on January 30, 2019 at 4:46 am
        • Reply

        Ok. I made a screenshot but i have no idea how to post it here.

        1. You’ll need to upload it to an image hosting site like https://imgur.com and post the link here.

            • juergen on January 30, 2019 at 6:52 pm

            Ok. Made it.
            So here is the link:
            https://i.imgur.com/C8FUwoY.jpg

          1. Huh, I’ve never seen that before! Maybe something got corrupted? Have you tried downloading the installer again and running it?

            • juergen on January 31, 2019 at 12:46 pm

            I downloaded it 3 or 4 times. Everytime it fails.
            So now i got it.
            I enabled in Windows Setup the .net s.5 features (sorry, do not remember them…) as the .net 3.5 installer also refuses to work..
            Then i tried to install avrdudess once more.
            Now, the cryptic popup turned out to be awindows defender message, telling me that i does not alow the installaton of an untrusted app and s on… 😉
            Clicking on ore information in the popup enabled the ‘install anyway’ button and the installer starts.

            Very strange.

    • Adriano on January 29, 2019 at 1:45 pm
    • Reply

    Thank you for response ,
    i will buy an Arduino ,for now i try to use avrdudess(avrdude )with Pony Prog STK200 i have , and i give this error
    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
    avrdude.exe: can’t open device “giveio”

    avrdude.exe: failed to open parallel port “LPT1”

    avrdude.exe done. Thank you.

    Mine STK200 Pony Prog with pony prog work very well
    I try to install giveio sys in windows 32 /drivers and make the same error
    i try to install giveio in c /avrdudess and the same
    How can i fix this
    Thank you very much

    1. I don’t think I’ve used giveio stuff before. I think it would be best to google “avrdude giveio”, lots of stuff there.

    • Silviu on January 31, 2019 at 11:14 pm
    • Reply

    Hello Zak,

    Many thanks for you tool, your work and your efforts to keep it up to date. If you can to help me more, I need an advice from you. I used USBASP and I program ATXMEGA microcontrollers using PDI interface. The problem is after the flash programming using AVRSUDESS , the uC is not reseted, but if I press Detect button, the uC is reseted. Do you know how can I change the USBASP firmware, of if you have any other idea, to automatically RESET the uC after it is flashed?

    Many many thank!

    1. I’ve never used an xmega or the PDI interface for programming before, but this sounds like an avrdude issue rather than an avrdudess thing. You can download the USBasp firmware at the offical site.

    • Evan on February 6, 2019 at 5:03 pm
    • Reply

    Hi Zak,
    I cannot use your GUI with parallel port LPT1, even if avrdude works with it just fine. The reason is that, avrdude expects the keyword lpt1 in -P parameter in small letters and NOT LPT1 in caps, as your GUI uses. The same is true for the other standard ports. Names should be in small letters. I guess this is something easy to fix.
    Thank you.
    Awaiting a new release.

    1. Hey Evan, yes you’re right! LPT should be lower case, though the COM ports work with either upper or lower case. Easy fix 🙂

    • Hamid on February 16, 2019 at 12:36 pm
    • Reply

    Didn’t work on MacOS 10.14.3
    see description here
    https://imgur.com/a/5Xoubml

    1. Hey Hamid, it looks like you need to use the 32-bit version of Mono, which from what I can tell can be ran using the --arch=32 option.

      mono --arch=32 avrdudess.exe

    • janos on March 6, 2019 at 7:04 am
    • Reply

    Hi,
    Greatt GUI. I cannot find ATmega48PA in the supported MCUs list only 48,48P,48PB. Should I use any of those 3 or it is not recommended?
    Thanks

    1. Hey Janos, it looks like the PA and P versions are functionally the same and have the same signatures, just that the PA has lower current consumption. Selecting the ATmega48P should work.

    • Darius on March 18, 2019 at 4:00 pm
    • Reply

    It does not support AT89S52 (ISP). Can you count in the future that it will be?

    1. Hi Darius, looks like someones already made a tutorial on adding the AT89S52 to AVRDUDESS – https://www.instructables.com/id/Programming-AT89s52-Using-USBasp-ISP-Programmer/
      I’ll add it into the next release.

        • Bercik on March 19, 2019 at 2:28 pm
        • Reply

        Hi to all 🙂
        Darius, you can also download the latest config file from avrdude repo: http://svn.savannah.gnu.org/viewvc/avrdude/trunk/avrdude/avrdude.conf.in by clicking “download” link next to to the last revision number and save it as “avrdude.conf”. The actual rev is 1422. (BTW: It works only with version 6.3 of avrdude).
        Zak, you could add this to next release of avrdudess.

          • Bercik on March 19, 2019 at 2:34 pm
          • Reply

          Ok, now I see that svn file doesn’t have AT89S52 specs, although it’s latest. :/

    • Tash on April 5, 2019 at 12:50 am
    • Reply

    Hi Zak. Thanks for the great program.
    How can I backup presets in case of reinstalling Windows, transferring to another PC, etc.? Where are they generally stored? As I understand it, not in the presets.xml file located in the program folder. I would like to do this automatically, saving the preset file using my backup program, not manually using the “Export” option. But I do not know where the presets are stored.

    1. Hi Tash, presets and configuration files are stored in %appdata%/AVRDUDESS.

    • Tash on April 5, 2019 at 2:16 pm
    • Reply

    Thank you!

    • Rafael Cabelo on May 5, 2019 at 2:58 pm
    • Reply

    Hi, how to use with Arduino as ISP? I have the Arduino UNO programmed as ISP and I am trying to upload to another Atmega8. At avrdue application I select programmer “Arduino” and the respetive COM port but when I click “detect MCU” it does not recognizes the Atmega8. Its detects the Arduino UNO only.

    1. Arduino as ISP is always a difficult one to get working. Try setting the programmer to one of the “Atmel AVR ISP” variants, or “Atmel STK500”. Make sure baud rate is set to 19200.

    • Karanbir on May 15, 2019 at 4:48 am
    • Reply

    When I use avrdudessI I get this error when detect is clicked

    // WARNING: Unable to detect MCU

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

    avrdude.exe done. Thank you. //
    and when i use this command from command prompt
    // D:\Arduino_1.8.9\arduino-1.8.9\hardware\tools\avr\bin>avrdude -C..\etc\avrdude.conf -c usbasp -p m328p -P usb -B 0.5 -F -e -U flash:w:”D:\Arduino\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex”:a //
    The response is
    // avrdude: set SCK frequency to 1500000 Hz
    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.03s

    avrdude: Device signature = 0x1e9307 (probably m8)
    avrdude: Expected signature for ATmega328P is 1E 95 0F
    avrdude: erasing chip
    avrdude: set SCK frequency to 1500000 Hz
    avrdude: reading input file “D:\Arduino\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex”
    avrdude: input file D:\Arduino\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
    avrdude: writing flash (4700 bytes):

    Writing | ################################################## | 100% 1.24s

    avrdude: 4700 bytes of flash written
    avrdude: verifying flash memory against D:\Arduino\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex:
    avrdude: load data flash data from input file D:\Arduino\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex:
    avrdude: input file D:\Arduino\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
    avrdude: input file D:\Arduino\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex contains 4700 bytes
    avrdude: reading on-chip flash data:

    Reading | ################################################## | 100% 1.07s

    avrdude: verifying …
    avrdude: verification error, first mismatch at byte 0x0000
    0xff != 0x3b
    avrdude: verification error; content mismatch

    avrdude: safemode: Fuses OK (E:FF, H:C9, L:FF)

    avrdude done. Thank you. //
    Can you guide me please as to what is happening .
    Regards for your time.

    1. Hey Karanbir, have you tried running AVRDUDESS as admin? If that doesn’t work, what happens when you run the avrdude.exe in the AVRDUDESS install folder from command promt?

        • Karanbir on May 16, 2019 at 1:54 am
        • Reply

        Hi Zak,
        Thanks for your deliberations. In one of the comments on pg 3 you had suggested using Zadig to install the drivers. I did that and now it works ok.
        I was baffled as this behaviour occurred suddenly while trying to program an Arduino Uno Atmega through the six pin ICSP header. Must’ve mixed up something.. I am relieved that this is over.

    • Karanbir on May 18, 2019 at 4:49 pm
    • Reply

    Hi Zak,
    Does AVRDUDESS work with this firmware for usbasp
    https://github.com/bperrybap/usbasp/tree/1.06-alpha/bin/firmware/usbasp-v1.06-alpha-2016-05-18.

    Regards

    1. Dunno, you’ll have to try it 😛

    • Karanbir on May 19, 2019 at 5:41 pm
    • Reply

    Tried it it works!

    • Lupin on May 23, 2019 at 2:28 pm
    • Reply

    The reading of fuses on an atmega8 does not work for me. Avrdudess fails at reading the efuse (which doesn’t exist on a atmega8). The error message from avrdude is: “efuse” memory type not defined for part “ATMEGA8”
    Since apparently Arduino had a similar problem at some point, I found a solution to add the efuse memory type with size 0 for an atmega8 to avrdude.conf. This got rid of the not defined error, but now gives a “flash is empty, , resulting file has no contents” message (avrdude says flash even if you are reading fuses). Unfortunately this didn’t convince avrdudess to read the lfuse and hfuse. I think you need to either check if the efuse type exists for a chip or check the returnvalue.

    If I use avrdude (the one included with avrdudess) from the command line ( avrdude -c usbasp -p m8 -U lfuse:r:-:h -U hfuse:r:-:h ), reading fuses is now problem. So the problem is definitely in avrdudess.

    I found that problem because I wanted to flash an usbasp clone with exactly the same firmware/fuses of two other clones that I already have. Since I can’t remember what firmware and fuse settings I used and the China clones are always different, I wanted to read back the flash and fuses. Reading the flash worked, reading the fuses only with using avrdude directly. Writing the fuses with avrdudess works, btw., even though it tries to write the non-existing efuse.

    1. Hey Lupin, thanks for pointing this out! At the moment it assumes all MCUs have a high, low and extended fuse. I’ll make it so AVRDUDESS checks which memory types are defined in avrdude.conf for each MCU and grey out the boxes appropriately.

    • wanek on May 27, 2019 at 10:51 am
    • Reply

    hello!

    first of all, thank you for this site, it has valuable information!

    i have a strange problem, maybe this post will be long, but i try to give all the details:

    i’ve designed a pcb with smd components, around the atmega328pb mcu. it uses an external 16mhz clock and has all the needed decoupling caps, voltage regulator, etc. i’m sure that the design should work, because i already used the same arrangement in other projects.

    i have ordered the parts from tme.eu, the exact model of the mcu is ATMEGA328PB-AN. these are smd parts, so, before programming, you have to solder it in place. i have some experience with atmel mcu’s, already used several types, like 328, 2560, attiny, etc. for programing i use usbasp device from ali. (https://www.aliexpress.com/item/FREE-SHIPPING-1LOT-New-USBASP-USBISP-AVR-Programmer-USB-ATMEGA8-ATMEGA128-Support-Win7-64K/2003972227.html)

    so far, i have used this device without problem. however, with these new chips, i can’t manage to work:

    first, i’ve tried the simple arduino ide method, selecting:
    tools > arduino nano > atmega328p
    tools > programmer > usbasp
    tools > burn bootloader

    in the first instance, the upload didn’t worked, because of the different chip id (between atmel328p and 328pb). so i edited the c:\Program Files (x86)\Arduino\hardware\tools\avr\etc\ avrdude.conf file, line 8797, to signature = 0x1e 0x95 0x16;

    this way it apparently uploaded the bootloader, however, the mcu gets bricked, no longer answers to any code uploading attempt nor bootloader uploading attempt (tried with usbasp, another arduino via isp, etc, nothing)

    so, i’ve desoldered the mcu, and soldered another brand new one. this time i’ve tried the avrdudess v2.8 app. based on this article:
    http://www.electronics-lab.com/burning-the-bootloader-on-atmega328-using-usbasp-programmer/

    here the app detected the usbasp, detected the correct mcu model. i have done everything exactly as in the article, double checked everything. hitted the program! button, and got this output. as you can see, it apparently failed to write the extended fuse correctly, and probably this is bricking the mcu. i’ve checked with the fuse bit calculator, and for the extended fuse 0xf5 is not an option…

    now it no longer can read the fuse bits, no longer can program the mcu, nothing works 🙁 bricked 2 mcu so far.
    just to be sure, i’ve checked the 16mhz clock signal with a scope, it works, got the nice sine wave.
    also, desoldered a working mcu from an arduino nano, and soldered into my pcb, it works ok, i can upload sketch via the usbasp.

    Checking for updates…
    You have the latest version 🙂
    Detected 1e9516 = ATmega328PB
    Reading fuses…
    SUCCESS: Read low fuse
    SUCCESS: Read high fuse
    SUCCESS: Read extended fuse
    Reading lock bits…
    SUCCESS: Read lock bits
    optiboot_atmega328.hex: 502 / 32,768 Bytes (1.53%)
    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    avrdude.exe: set SCK frequency to 1500000 Hz
    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude.exe: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.00s

    avrdude.exe: Device signature = 0x1e9516 (probably m328pb)
    avrdude.exe: NOTE: “flash” memory has been specified, an erase cycle will be performed
    To disable this feature, specify the -D option.
    avrdude.exe: erasing chip
    avrdude.exe: set SCK frequency to 1500000 Hz
    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude.exe: reading input file “C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex”
    avrdude.exe: input file C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex auto detected as Intel Hex
    avrdude.exe: writing flash (32768 bytes):

    Writing | ################################################## | 100% 0.00s

    avrdude.exe: 32768 bytes of flash written
    avrdude.exe: verifying flash memory against C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex:
    avrdude.exe: load data flash data from input file C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex:
    avrdude.exe: input file C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex auto detected as Intel Hex
    avrdude.exe: input file C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex contains 32768 bytes
    avrdude.exe: reading on-chip flash data:

    Reading | ################################################## | 100% -0.00s

    avrdude.exe: verifying …
    avrdude.exe: 32768 bytes of flash verified
    avrdude.exe: reading input file “0xFF”
    avrdude.exe: writing lfuse (1 bytes):

    Writing | ################################################## | 100% 0.00s

    avrdude.exe: 1 bytes of lfuse written
    avrdude.exe: verifying lfuse memory against 0xFF:
    avrdude.exe: load data lfuse data from input file 0xFF:
    avrdude.exe: input file 0xFF contains 1 bytes
    avrdude.exe: reading on-chip lfuse data:

    Reading | ################################################## | 100% 0.00s

    avrdude.exe: verifying …
    avrdude.exe: 1 bytes of lfuse verified
    avrdude.exe: reading input file “0xDE”
    avrdude.exe: writing hfuse (1 bytes):

    Writing | ################################################## | 100% 0.01s

    avrdude.exe: 1 bytes of hfuse written
    avrdude.exe: verifying hfuse memory against 0xDE:
    avrdude.exe: load data hfuse data from input file 0xDE:
    avrdude.exe: input file 0xDE contains 1 bytes
    avrdude.exe: reading on-chip hfuse data:

    Reading | ################################################## | 100% 0.00s

    avrdude.exe: verifying …
    avrdude.exe: 1 bytes of hfuse verified
    avrdude.exe: reading input file “0x05”
    avrdude.exe: writing efuse (1 bytes):

    Writing | ***failed;
    ################################################## | 100% 0.03s

    avrdude.exe: 1 bytes of efuse written
    avrdude.exe: verifying efuse memory against 0x05:
    avrdude.exe: load data efuse data from input file 0x05:
    avrdude.exe: input file 0x05 contains 1 bytes
    avrdude.exe: reading on-chip efuse data:

    Reading | ################################################## | 100% 0.00s

    avrdude.exe: verifying …
    avrdude.exe: verification error, first mismatch at byte 0x0000
    0xf5 != 0x05
    avrdude.exe: verification error; content mismatch

    avrdude.exe done. Thank you.

    Reading fuses…
    WARNING: Unable to read fuses/lock bits

    avrdude.exe: set SCK frequency to 1500000 Hz
    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude.exe: error: program enable: target doesn’t answer. 1
    avrdude.exe: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    avrdude.exe done. Thank you.

    Reading fuses…
    WARNING: Unable to read fuses/lock bits

    avrdude.exe: set SCK frequency to 1500000 Hz
    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude.exe: error: program enable: target doesn’t answer. 1
    avrdude.exe: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    avrdude.exe done. Thank you.

    best regards,
    thanks!

    1. Hey wanek, I think the main problem is that you’re setting the low fuse to 0xFF, which configures it for a “Low Power Crystal Oscillator” and expects a 32.768KHz crystal, not 16MHz 😛 If you replace the crystal and set a very low bit clock for the USBasp then you should be able to revive the MCU (might have to update the USBasp firmware to change the bit clock). Actually… there seems to be a mismatch between the fusecalc website and what the datasheet says for some of the clock options :/
      The mismatch error with extended fuse is because it’s writing 0x05, however the upper 4 bits are not used and are forced to 1 by the microcontroller, so when avrdude reads the fuse back again it reads 0xF5, it’s not a problem (it’s an issue with the conf file, I should get it fixed for next release).

      Hope that helps!

        • wanek on May 27, 2019 at 4:40 pm
        • Reply

        i’ve just checked the “boards.txt” in arduino, and found this:

        ## Arduino Nano w/ ATmega328P
        ## ————————–
        nano.menu.cpu.atmega328=ATmega328P

        nano.menu.cpu.atmega328.upload.maximum_size=30720
        nano.menu.cpu.atmega328.upload.maximum_data_size=2048
        nano.menu.cpu.atmega328.upload.speed=115200

        nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF
        nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA
        nano.menu.cpu.atmega328.bootloader.extended_fuses=0xFD
        nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex

        nano.menu.cpu.atmega328.build.mcu=atmega328p

        ## Arduino Nano w/ ATmega328P (old bootloader)
        ## ————————–
        nano.menu.cpu.atmega328old=ATmega328P (Old Bootloader)

        nano.menu.cpu.atmega328old.upload.maximum_size=30720
        nano.menu.cpu.atmega328old.upload.maximum_data_size=2048
        nano.menu.cpu.atmega328old.upload.speed=57600

        nano.menu.cpu.atmega328old.bootloader.low_fuses=0xFF
        nano.menu.cpu.atmega328old.bootloader.high_fuses=0xDA
        nano.menu.cpu.atmega328old.bootloader.extended_fuses=0xFD
        nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex

        nano.menu.cpu.atmega328old.build.mcu=atmega328p

        ##############################################################

        uno.name=Arduino/Genuino Uno

        uno.vid.0=0x2341
        uno.pid.0=0x0043
        uno.vid.1=0x2341
        uno.pid.1=0x0001
        uno.vid.2=0x2A03
        uno.pid.2=0x0043
        uno.vid.3=0x2341
        uno.pid.3=0x0243

        uno.upload.tool=avrdude
        uno.upload.protocol=arduino
        uno.upload.maximum_size=32256
        uno.upload.maximum_data_size=2048
        uno.upload.speed=115200

        uno.bootloader.tool=avrdude
        uno.bootloader.low_fuses=0xFF
        uno.bootloader.high_fuses=0xDE
        uno.bootloader.extended_fuses=0xFD
        uno.bootloader.unlock_bits=0x3F
        uno.bootloader.lock_bits=0x0F
        uno.bootloader.file=optiboot/optiboot_atmega328.hex

        uno.build.mcu=atmega328p
        uno.build.f_cpu=16000000L
        uno.build.board=AVR_UNO
        uno.build.core=arduino
        uno.build.variant=standard

        it seems they use the same 0xFF everywhere for the low fuse for 16mhz external uno, nano, etc. now what?

        1. Oops, my bad, I got mixed up between “Low Power Crystal Oscillator” and “Low Frequency Crystal Oscillator” hah. So, 0xFF is correct. Try running the USBasp at a very low bit clock, you’ll need to update for the firmware to do that, by using another programmer. Also try removing the crystal and supply a ~8MHz clock signal to pin PB6 from another microcontroller (from a digital IO).

            • wanek on May 27, 2019 at 6:32 pm

            ok, this is for unbricking the 2 mcu. but do you have any idea what can be the main problem?

          1. Have you managed to successfully unbrick the MCUs? It’s all part of diagnosing the problem.

    • wanek on May 27, 2019 at 4:05 pm
    • Reply

    wow, thanks for the prompt reply!

    i understand what you say with the incorrect fuse bits, and the mismatch between the calculator and the datasheet. i also checked with this android app: https://apkpure.com/avr-fuse-calculator/com.misc.avrfuse , and it gives the same (apparently wrong) 0XFF result…

    i studied the atmega328 datasheet, but actually i’m not an expert with this low level stuff. could not figure out what values should i use for the external 16mhz clock…

    can you please advise what should be the correct value?

    regards,
    wanek t.

    • Joseph Tannenbaum on June 12, 2019 at 10:14 pm
    • Reply

    Can AVRDUDESS be installed on windows 10 with out the conf file confusing the already installed Arduino IDE? Tried WINAVR once and it hosed Arduino IDE.

    I found avrdude in the Arduino setup and tried: avrdude -c usbtiny -p attiny85 on a blank attiny85 chip and it said the id of the chip was wrong.?

    Thanks for any help.

    1. Hey Joseph, WINAVR probably added its own paths to the %PATH% environment variable, confusing the Arduino IDE as it now finds multiple compilers and things in different places. AVRDUDESS doesn’t touch the %PATH% variable so it won’t cause any issues with IDEs. I think the avrdude supplied with Arduino needs to have the location of the conf file specified since it’s in a different location (etc folder I think).

    • Tomás on July 19, 2019 at 1:22 am
    • Reply

    Hello i’m running Ubuntu 18.04.02 LTS.
    I followed all the steps and in the last one (mono avrdudess.exe) i get “Cannot open assembly ‘avrdudess.exe’: No such file or directory.”.
    I have seen that someone had the same issue and your answer was that it should install avrdude, but i already do that and it was successful, but the problem continues.
    (Sorry for my english)

    1. Hi Tomas, did you extract the .zip and cd into the directory before running the mono command?

        • Tomás on July 19, 2019 at 3:07 am
        • Reply

        my bad, I realized as soon as I asked the question hahaha, anyway, thank you very much for your answer, also I would like to say that your work here seems excellent

    • Tomas Pinter on September 7, 2019 at 5:44 pm
    • Reply

    Hi, thank you for the great software.

    Since version 2.8, I have experienced a problem with reading fuses on the ATmega8.

    Pictures:
    https://ibb.co/F6xQ3BK – v2.7 OK
    https://ibb.co/vqwGpcZ – v2.8 Error reading
    https://ibb.co/N1SY050 – v2.8 Error reading

    Regards
    Tomas

    1. Thanks Tomas 🙂

      This is a known bug, it expects the MCU to have all high, low and extended fuses and since v2.8 it has been stricter on errors. I’ll get it fixed for the next version.

    • Jerome on September 8, 2019 at 4:38 pm
    • Reply

    Hello Zak,

    I have installed your brand new v 2.9 after having seen that the ATmega328PB was now supported.

    As the latest avrdude version available on savannah’s server is still the old v6.3 , I thought that you had developped or found a patch for supporting the 328PB.

    So I have installed Avrdudess v2.9 but I didn’t see the 328PB in the MCU listing.

    What have I missed please?

    Thanks by advance for your answer.
    Regards,
    Jerome

    1. Hi Jerome, only avrdude.conf has been modified to add 328PB support. Make sure AVRDUDESS is using the conf supplied with it, in options check that the avrdude.conf entry is blank. It should appear right under the 328P in the MCU list.

    • Rastislav on September 10, 2019 at 4:31 pm
    • Reply

    Dear Zak,

    firstly I would like to thank you for great GUI for avrdude. I downloaded AVRDUDESS 2.9 and have identical issue with fuses as Tomas Pinter wrote on 7th of September 2019 but with ATtiny26. Below are screens from AVRDUDESS and from windows console with the same avrdude “command line”. Is it possible to skip efuse readout by modifycation of some external config file or it is “hard coded” in AVRDUDESS executable ?

    Thanks in advance

    Best regards
    Rastislav from Slovakia 🙂

    Screenshot from avrdudess gui:
    http://www.sonix.szm.com/Pictures/Avrdudess2.9_Attiny26_fusses_issue.jpg

    Screenshot from windows console:
    http://www.sonix.szm.com/Pictures/Avrdudess2.9_Attiny26_fusses_issue_win_console.jpg

    1. Hi Rastislav, thank you 🙂
      Yes the fuses that it reads are hardcoded. In the source code, Avrdude.cs, readFusesLockComplete() method, it looks for “error” or “fail” and if found it will fail on all fuses instead of just the efuse. I think I might have to make a v2.10 since this is a common issue 😛

    • Juergen on September 26, 2019 at 9:50 pm
    • Reply

    AVRDUDESS is the most useful app for programming microcontrollers. I like it very much.
    In the beginning i had some problems(V2.6) but they appeared to be a .net problem. I cheked in Windows 10 options to install the .net framework(s), but i had to try it several times to work. I think it is caused by my slow china 150,- euro netbook (Intel Z8350) and slow wlan connection. To give you a hint: compiling Marlin 2.0.x with the Arduino IDE takes more than 5 minutes. This is Sloooowwwww. Meanwhile i am using it only on my ‘real’ PCs with i7 and lots of RAM via rdp. This isreally a cool solution to speed things up andstill beeing mobile (inside my office).

    My programmer is a AVR-ICE. It is a bit tricky to get it working because you need libusb.

    • ken on November 14, 2019 at 11:19 pm
    • Reply

    So my question is why are you talking here about v2.6 and v2.7 when what I just downloaded is V2.11 ?

    1. Hey ken, I’m not sure who you’re replying to, but it’s probably best to check the comment dates since 2.11 has only been around for a month.

  1. […] are going to use third-party GUI Application for this which is also open source. You can download AVRDUDESS here. You may use command line version if you feel comfortable but I will recommend using this […]

  2. […] is supported by AVRDUDE. There is a graphical front-end for AVRDUDE that makes life easier called AVRDUDESS. For setting the fuse bits, this also […]

Leave a Reply

Your email address will not be published.

Are you human? *