I have a bunch of different dev boards for different projects. What I have been getting very confused about is what board needs what programmer from the Tools > Programmer menu.

I wish the selection had the option to be partially automated for the board selection. But it's evidently not. Part of my problem is that if you choose the wrong programmer, some boards seem to work. Others read but won't write, or will write to some spaces, but not others. Or, you might get other cryptic errors that sound a lot like failed hardware. Have a look at this message for an example:

Programmer Error?

OK, so let's say I have some random dev board. How can I know what programmer I should use? Assume the manufacturer's documentation mentions nothing about it...

  • 1
    I'm voting to close this question as off-topic because the question arrises from a fundamental misunderstanding - as explained below, the programmer selection is not applicable in the ordinary case, and where needed would depend on the physical programmer purchased, not the target board. Dec 31 '17 at 16:44
  • 3
    I'm voting to leave open because this is a common cause of confusion for beginners and is very much on topic for Arduino Stack Exchange.
    – per1234
    Jan 1 '18 at 23:57

Generally the Tools > Programmer selection is only used for Tools > Burn Bootloader and Sketch > Upload Using Programmer and is not used for standard uploads. So for standard uploads you can set it to anything you like because it will have no effect.

The most notable exception is the Adafruit Trinket, which does require you to select Tools > Programmer > USBTinyISP even though you are uploading through the USB socket on the Trinket board without a separate ISP programmer.

You will also find some 3rd party hardware packages that are not written for boards with an Arduino style serial bootloader and so treat a standard upload as an "Upload Using Programmer" for the sake of convenience. Examples are MicroCore and the "Barebones ATmega Chips (no bootloader)" hardware package. In this case the correct Programmer menu selection is dependent on which model of ISP programmer you are using.

So regarding the question "How can I tell what programmer to use?": If you're doing a standard upload, start by assuming it doesn't matter. If that doesn't work, read the documentation!

If you're doing a Tools > Burn Bootloader or Sketch > Upload Using Programmer (or holding shift while pressing the "Upload" button) then you should select the model of the ISP programmer you're using.


The clock and the timing signals and the voltage levels do not always match. And perhaps something is connected to the pins already which makes it harder for the programmer.

I use mostly the cheap USBasp version 2 (the text "version 2" is often written on the PCB). They are based on the USBasp from Thomas Fischl.

Sometimes there is a timing conflict. Sometimes that can be corrected with options for avrdude or with the avrdude.conf file, sometimes I have to grab an older or newer USBasp programmer.

What do you mean by choosing the wrong programmer? If there is a programmer connected to the computer, then select that type of programmer. Do you have a programmer?

  • The programmer is on the dev board For example: An Arduino Uno R3 uses the "AVRISP MKII" from the menu. The Adafruit trinket uses "USBTiny". And yes, I think it is confusing that I might have to select a programmer for a development board that doesn't share the same name. Maybe I just need to write all the variations down, and look it up when I start having trouble.
    – j0h
    Jul 3 '17 at 21:18
  • What dev board ? The Arduino Uno uses the usb connector and can upload a sketch when it has a bootloader. How does the programmer come into that ?
    – Jot
    Jul 4 '17 at 4:26
  • If you pick the wrong one, it does work.
    – j0h
    Jul 4 '17 at 5:31
  • If you don't have a programmer, the selection in the menu for the programmer does not matter. You can upload a sketch via het usb cable to the Arduino Uno. You only need to select the Arduino board and the serial port.
    – Jot
    Jul 4 '17 at 10:54
  • 1
    The selection of the programmer is only used with 'upload with programmer' or when burning the bootloader. If you experience something else, then something is very wrong. I have never heard that it influenced the normal upload. If you make a fresh install of the newest Arduino IDE on an other computer without extra cores (for example by Adafruit), then it should work in a normal way.
    – Jot
    Jul 6 '17 at 5:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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