How can I tell what programmer to use?
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:
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.
![]()
2 Answers 2
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.
