Creative Commons images are CC BY-NC-SA 3.0

$ 19.95

Notify Me

added to your
shopping cart

Out of stock out of stock
19.95 1+ units
17.96 10+ units
15.96 100+ units

This product is produced in-house by SparkFun.
We are currently planning to build 216 units.

Incoming stock values are estimates, and subject to change without warning.

Description: The ATtiny45 and 85 are a couple of really cool little MCUs but did you know you can program them in Arduino? That’s right, now you can shrink your Arduino projects down to “tiny size” by moving your code straight over to these small but capable ICs. The standard method for programming the ATtiny ICs involves a breadboard, lots of jumper wires and a hardware programmer, but David Mellis over at MIT Media Lab has simplified the process by laying out this handy USB programmer.

The Tiny AVR Programmer plugs directly into your USB port and provides a programming socket for the ATTiny45 and 85. Just slot an ATtiny into the socket, plug the programmer into your USB port and start up the Arduino IDE. After installing the proper board definitions, you simply program it the same way you would any other Arduino board. The programmer even breaks out the IC pins to female headers so you can easily prototype around the ATtiny without pulling and plugging it over and over. There are two ISP headers that have also been broken out so you can use the programmer of solder in a 6-pin header for other AVR microcontrollers!

Note: You’ll need to install the USBTinyISP drivers if you don’t have them yet, you can find them in the documents below!


Recommended Products

Customer Comments

  • A note for Linux users: If avrdude returns “initialization failed” while trying to program a chip, you might need to add a udev rule as outlined here[1]. Running as root did not work for me, but the udev rule fixed my issue.


  • Had a very hard time inserting the break-away headers (PRT-00116) into the prototyping pins. They really don’t act like they were made for one another. I never did really get them fully inserted. On some attempts the pins were pushed through the break-away header and not further into the prototyping pins.

  • Still having issues with this using drivers here.

  • This has a small problem. You are going to push the far end to insert it. But since the jumper connector is surface mounted, there is little holding it on, so it will break off (and damage the pins).

    You should add some kind of glue to support it our use thru-hole parts that won’t break off. You need the thru-holes anyway for the 8 pin socket.

  • Has anyone here programmed an Attiny84 (an external one) using this? Also is the programmer compatible with atmel studio?

  • I had several inconsistent issues with this product on my Windows 7 64 system and running Arduino 1.0.6,,,, until I read Member #341993 comments. Thank you Member #341993, it works perfectly now.

  • Break away headers don’t fit the female headers on this board. The pins make contact but fall out easily. Jumper wires worked perfectly though.

  • Fix the driver for this Win 8….not signed?

    • There are signed Windows 8 drivers available through Adafruit:

      A recent review noted that there are no drivers for Windows 10 - which isn’t technically out yet; ye on the cutting edge of technology: it’s but one edge of a double-edged sword.

    • Use the following from the hookup guide to temporarily bypass that warning and install anyway.

  • An adapter board for the attiny84 that could plug into the inline strips that are .8" apart sure would be nice. This programmer makes using the attiny85 very easy. It would be great to have the same convenience for the attiny84.

  • The linked schematic and eagle files dont match with the shipped product (product says v13, schematics say v12)… but this seems to be what was shipped (eg the github a few revs ago.)

  • While creating a udev rule for use on Linux, I had to use the following:

    SUBSYSTEM==“usb”, ATTR{product}==“FabISP”, ATTR{idProduct}==“0c9f”, ATTRS{idVendor}==“1781”, MODE=“0660”, GROUP=“dialout”

    Note that the product entry is now “FabISP” rather than “USBTiny”.

  • I had endless problem with mine on Windows 7 64bit on an HP dm4. It worked sometimes and not others. I’d get a mismatch error. I have spent a lot of time debugging and trying things. I downloaded Xloader to load hex files for my Nano based projects and on a whim decide to try using it with the usbtiny. It seemed to work reliably. So I moved the avrdude.exe and .conf file from the Xloader dir to the Arduino tools/avr/bin and /etc dirs. Now it seems to work reliably from the Arduino dev environment, The create date of the working avrdude is March 18, 2012 and it is 1,922,788 bytes. I cannot find a version number easily. I loaded this into a Arduino 1.06 install. I hope this helps folks.

    • endless problems with Windows??????? <sarcasm> ;)

    • Thank you so much! I had exactly your setup (Windows 7 64bit + Arduino 1.06) and was receiving those same errors. The programs still ran on the attiny85, but error messages are never good and I don’t like ignoring them. Your fix worked perfectly. Good on ya for spending the time to figure it out so that others don’t have to.

  • Has anyone got this working with a Mac on Arduino 1.5? I’ve spent too long, and I can’t get it to work.

    (1) The Sparkfun supplied boards.txt file doesn’t appear to be correct for 1.5. (2) Arduino doesn’t recognise the programmer as attached to the computer, even though the device is enumerated. (3) Dropping back to 1.0.5 has worked, but this doesn’t seem like the right think to rely on in the long term.

  • I’m running Arduino IDE 1.0.5 on a Mac Book Air. I successfully programmed an ATtiny 85 with the tiny AVR programmer (burned fuses for 8 MHz, uploaded sketch, prototyped circuit successfully), but when I tried to upload the sketch again, to make a change in a threshold value, I got this error: avrdude: Error: Could not find USBtiny device (0x1781/0xc9f) The on-board LED on the tiny AVR programmer lights, so the tiny AVR programmer is working, at that level. Can anyone suggest diagnostics I should try?

  • In the it says USBTinyProgrammer will show up as the device for the Programmer when you first plug it in to a USB port. On my Bootcamped Win 8.0 Macbook Air It was something completely different, nothing like the image in the guide. But it still installed just fine.

  • warning NOOB question: I found a hex file online that adds the fuses at the end: >> “sd8p_oc.hex” . i get an error trying to write to the chip. is there a command to have it accept the fuses from the hex file? or am i just doing it wrong? here is the output: “;topic=259074.0;attach=91116;image”

  • Can I use this to program the attiny2313?

    • Yes, you obviously won’t be able to plug it into the controller, but you can still connect the 6 pins needed and program the chip.

  • I have been testing using this programmer as an ISP programmer for ATmega328. I have been able to burn fuses and a HEX file (using AVRDUDE), and load simple blink sketches (using Arduino IDE). However, when I’ve tried loading a more complex sketch, the program doesn’t run correctly when the ATmega328 is plugged into an Arduino. I am able to get the sketch to run properly on the chip when I use another Arduino as ISP using tutorial on Arduino site. I am assuming, I need to set some configuration settings/files up properly.


    • TinyAVRProgrammer ICSP port connected to ATmega328p RST,SCK,MISO,MOSI,VCC,GND pins

    • TinyAVRProgrammer connected to PC (Windows 7) via USB

    • Arduino IDE Tools->Board->Arduino Nano w/ ATmega328 (note: have also tried Arduino UNO)

    • Arduino IDE Tools->Programmer->USBtinyISP

    • Arduino IDE File->Upload Using Programmer

    No compile or upload errors are reported. Arduino IDE reports Upload Complete.

    I would like to use this programmer to load onto chip directly rather than using Arduino as ISP and having to hook it up, remove the Arduino chip, etc.

    The program (sketch) has code for using SD card, LCD/touchscreen, and wireless communication if that is at all helpful. The specific part not working is the LCD does not show the image. The same sketch works fine using the Arduino FTDI to load via the TX/RX pins.

    Any help would be appreciated.
    Thanks Krist

  • can you use serial communication with this? UART

  • Does this work with macs?

  • Could i use it to program an ATtiny13, too? I am playing around only with small analog electronics (very basic) and would use it only for very limited tasks, so ATtiny13 would be enough. Greetings

  • …anyone have luck loading the tone() library onto a ATtiny85? i found a couple of tutorials on adding enhanced cores to be available in the arduino IDE:

    but they don’t show how to modify the boards.txt file to upload with the Tiny AVR programmer.

  • Works great! I’ve used it to program not only the ATtiny85, but the ATMEGA328P as well, via ICSP port.

    The only thing that threw me for a loop was that it doesn’t give a /dev/ device filename, even though the Mac OS X sees it on the USB bus.

    Arduino 1.5.x gave me some issues complaining about not being able to connect to a usb port at first, but choosing USBtinyISP works fine, just need to make sure no actual PORT is selected.

    Only wished it was better protected. On receiving mine, wrapped it up from the USB port to the first row of sockets with kapton tape to protect the chips from shorts.

    • I am having some trouble with programming mega328 (see my recent post). I realize you have a Mac OS, but perhaps your config will help guide me to my problem.

      Thanks Krist

  • This Tiny AVR Programmer makes programming the ATtiny85 chip for my project so much easier. I love it! However, I recently ran into a problem. I just tried loading some new sketches using Arduino IDE v1.0.5 on a Win7 64-bit machine and I get a verification error. I have used this machine and software many times before without problems. IT appears from my searches that this indicates some kind of communication breakdown between the programmer and the computer. The onboard LED does show communication activity. I have tried two different chips. I have tried burning bootloader in case fuses had been changed. I tried reloading the drivers and core files.

    Any ideas about how to fix? Is this a problem on the board or have my chips failed?

    here is the verbose upload output:

    Binary sketch size: 844 bytes (of a 8,192 byte maximum) C:\Program Files (x86)\Arduino\hardware/tools/avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pattiny85 -cusbtiny -Uflash:w:C:\Users\Krist\AppData\Local\Temp\build282759822894877516.tmp\ATtiny85_Blink.cpp.hex:i

    avrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36 Copyright © 2000-2005 Brian Dean, Copyright © 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware/tools/avr/etc/avrdude.conf"
         Using Port                    : lpt1
         Using Programmer              : usbtiny

    avrdude: usbdev_open(): Found USBtinyISP, bus:device: bus-0:\.\libusb0-0001–0x1781-0x0c9f AVR Part : ATtiny85 Chip Erase delay : 4500 us PAGEL : P00 BS2 : P00 RESET disposition : possible i/o 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 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65     6     4    0 no        512    4      0  4000  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           flash         65     6    32    0 yes      8192   64    128  4500  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00
         Programmer Type : USBtiny
         Description     : USBtiny simple USB programmer,

    avrdude: programmer operation not supported

    avrdude: Using SCK period of 10 usec CMD: [ac 53 00 00] [00 00 53 00] avrdude: AVR device initialized and ready to accept instructions

    Reading | CMD: [30 00 00 00] [00 30 00 1e] CMD: [30 00 01 00] [00 30 00 93]

    ##########CMD: [30 00 02 00] [00 30 00 0b]
    ############################ | 100% 0.01s

    avrdude: Device signature = 0x1e930b avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. CMD: [a0 01 fc 00] [00 a0 01 ff] CMD: [a0 01 fd 00] [00 a0 01 ff] CMD: [a0 01 fe 00] [00 a0 01 ff] CMD: [a0 01 ff 00] [00 a0 01 ff] avrdude: erasing chip CMD: [ac 80 00 00] [00 ac 80 00] avrdude: Using SCK period of 10 usec CMD: [ac 53 00 00] [00 ac 53 00] avrdude: reading input file “C:\Users\Krist\AppData\Local\Temp\build282759822894877516.tmp\ATtiny85_Blink.cpp.hex” avrdude: writing flash (844 bytes):

    Writing | CMD: [4c 00 00 00] [20 4c 00 00]

    CMD: [4c 00 20 00] [f7 4c 00 20]

    CMD: [4c 00 40 00] [24 4c 00 40]

    CMD: [4c 00 60 00] [01 4c 00 60]

    CMD: [4c 00 80 00] [00 4c 00 80]

    CMD: [4c 00 a0 00] [3f 4c 00 a0]

    CMD: [4c 00 c0 00] [00 4c 00 c0]

    CMD: [4c 00 e0 00] [40 4c 00 e0]

    CMD: [4c 01 00 00] [bf 4c 01 00]

    CMD: [4c 01 20 00] [91 4c 01 20]

    CMD: [4c 01 40 00] [93 4c 01 40]

    CMD: [4c 01 60 00] [c0 4c 01 60]

    CMD: [4c 01 80 00] [97 4c 01 80]

    CMD: [4c 01 a0 00] [00 4c 01 a0]

    | 100% 1.84s

    avrdude: 844 bytes of flash written avrdude: verifying flash memory against C:\Users\Krist\AppData\Local\Temp\build282759822894877516.tmp\ATtiny85_Blink.cpp.hex: avrdude: load data flash data from input file C:\Users\Krist\AppData\Local\Temp\build282759822894877516.tmp\ATtiny85_Blink.cpp.hex: avrdude: input file C:\Users\Krist\AppData\Local\Temp\build282759822894877516.tmp\ATtiny85_Blink.cpp.hex contains 844 bytes avrdude: reading on-chip flash data:

    Reading | ################################################## | 100% 1.11s

    avrdude: verifying … avrdude: verification error, first mismatch at byte 0x0080 0x57 != 0xe1 avrdude: verification error; content mismatch

    avrdude done. Thank you.

  • Uploading seems to be impossible with a USB3 port on at least on newer Mac laptops that only have USB3. This seems to be a common problem with USBTinyISP products. Discussion on Adafruit forum about this: This can be usually fixed with connecting the board through a USB2 hub.

    It might be a good idea to add to the tutorial that you can set the fuses of a ATtiny85 to 8 MHz by selecting the “internal 8 MHz clock option” and then using “burn bootloader” from the Arduino IDE.

  • How do you configure the ATTiny85 to use it’s 16mHz internal clock with the Tiny AVR Programmer?

  • Do i need USB drivers when I run the Arduino IDE on Ubuntu 64 Bit?

    • RTFM … sorry for the question. The answer is NO: :-)

  • You guys would be my heroes if you’d make a bigger version that could program 14 and 20 pin ATtiny chips. I’m using the ISP header on this to do that now. But if you’d make one device that could do it all, I’d happily buy it.

    • To keep the cost down we don’t plan on increasing the size of the PCB. But you can program 14 and 20 pin ATtinys - you just have to wire from the 6-pin connector on the end to the ICSP pins on the micros.

  • Is the ISP header used to program external devices, or to load code from an external programmer onto the ATTINY84 on the PCB? Or both?

    • Both. As-is for external devices, short the RST jumpers for ATTTiny84. Though I can’t think of a reason to reprogram the 84. It works very nicely as is.

      I’ve used this both for ATTiny85s and to reprogram the LCD serial pack with firmware that actually works. In that case I used avrdude in command line mode to download a prebuilt hex file. Great product.

  • The extra pins to the side make it easy if you use a crystal (for exact timing). I often solder them onto the side, but I have an application that doesn’t need that much precision, so I could changes the fuse settings back more easily.

    To do the HV stuff, you need an AVR Dragon. That is what I used before.

  • I entirely made an adapter for the programmer that I got from Adafruit. As for the HV fuses….I made an adapter for the Arduino HV Rescue shield to fit the ATtinys. But that was a few years ago…not even sure I still have it.

  • I wish it had a High Voltage programming capability to reset fuses (in case other methods of programming are disabled)

  • Shouldn’t it say somewhere, that this replaces PGM-11460…

  • The tie points on this aren’t as secure as I’d like them to be. I think this thing would be much easier to use if it used the wire wrap through-headers to just attach it to a breadboard. I can use a M-F USB extender cable for flexible connection to a computer.

    I don’t even need the headers soldered in, throw the long head headers in the bag and I can solder it myself.

    • Buy the 8-pin wire wrap socket below (PRT-08112) and some solder wick. Problem solved. They can’t make products to suit every taste or need, but they try their best. The rest is left to ‘maker’ ingenuity, and if you can’t manage that, well…

  • I like how on the schematic, it says “3x2 connector can be”. Also kind of wondering how they get the code into the ATtiny84.

    • They (not SparkFun) make ZIF sockets for SMT ICs that you can use to program bare chips before they’re soldered in place.

  • This board already uses through-hole parts, so why continue with the SMT machine pin headers? Wouldn’t the through-hole version be more resistant against mechanical stress?

    • I’ve been using mine for months with no connector issues. It’s plenty tough.

    • It’s cheaper to use the SMT version since they can be autopopulated by the pick and place machine.

      • That being said, they’re already leaving the 2x3 ICSP header unpopulated. They could have done the same with the two 1x4s. Maybe toss them in the package to be populated by the user if they want them. Or hell, leave them out and make them separately orderable.

        That said, the DIP-8 socket is already through-hole. they could easily make the 1x4s through-hole, insert all four headers in the board, flip it over, and solder them all real quick, all at once. And that’s assuming they’re doing the through-hole soldering by hand instead of using a wave-soldering machine. (which is really cool to watch in-use, btw)

Customer Reviews

4 out of 5

Based on 9 ratings:

5 star
4 star
3 star
2 star
1 star

1 of 1 found this helpful:

Good, but finicky

I wish this came assembled and in an enclosure. One small bump and the USB connector is likely be easily ripped off.

1 of 3 found this helpful:

No signed x64 drivers

Title says it all. Unsigned mode/test mode required for all x64 Windows platforms and doesn’t work at all in Windows 10.

So sorry, we try to keep up with new Windows releases, but some of our items are still designed and tested for the older OS.

Great little device, does exactly what I wanted, I am very happy with it and the on-line instructions required on getting it going initially.

Beautiful gadget... howver seems like new arduino version does not like it so much...

I believe the update screws up the tiny avr process.. I had my attinys working.. updated to the new one… now they dont work.. Back to the previous one and it is back on… KNowing my newbieness…it is probably just me but still the error is

Arduino: 1.6.1 (Windows 7), Board: “ATtiny85 (internal 8 MHz clock)”

Selected board depends on ‘arduino’ core (not installed).

This report would have more information with “Show verbose output during compilation” enabled in File > Preferences.

so I guess for now Ill stick with the previous version…

Awesome little programmer.

Very convenient and easy to use. headers make prototyping simple. The pins on the back make it simple to program other AVRs, just make sure to use right angle pins or it won’t plug into a laptop.

fast and furious

Greetings from Germany. I bought this item and it arrived in Cologne in less then 2 weeks, great! I used the shipping time to prepare my Arduino IDE and alter the blink-sketch, so when the programmer arrived, I put it into the USB-Port, installed the drivers, one click and the LED startet blinking. You get what you see and it does what it should do, so there is no reason to grumble. Nevertheless I wonder why did they not solder in the pins for the ISP-headers. I think it would not rise the price that much and would prevent me from messing around with the valuable PCB. Driver-installation on win 8 is really a pain in the … Here in german language: Treiberinstallation für deutsches win 8.1: win-Taste+C: öffnet Charms-Menue (rechte Seite) - EInstellungen - PC-Einstellungen ändern - Update/Wiederherstellung - Wiederherstellung - Jetzt neu starten - Problembehandlung - Erweiterte Optionen - Starteinstellungen - Neustart dann die 7 wählen, der PC startet und endlich kann man die Treiber installieren

DIese Abfolge am besten ausdrucken, damit man sich nicht verirrt.

Handy programmer, but flawed

This is a very handy programmer. Works great for general ISP programming as well. One drawback on the design are the female header pins for prototyping. They are of the machined type headers and components or wires do not hold very well in them. So they are mostly useless for prototyping. They should have been female header like they use on the Arduino boards.

Hi, Thanks for the feedback. I would like to see this revised to run standard female headers as well. I will share your feedback with the engineers for the next time this gets a revision. Thank you

Programming an ATTiny84 with the Tiny Programmer

Super handy. Buy a chip extractor to go with it.

If you want to program an ATTiny84 with this, here are the pin connections:

ATTiny84  --->   Tiny Programmer

1  ---> +
14 ---> -- (minus sign)
4  ---> (unlabeled)
7  ---> 0
8  ---> 1
9  ---> 2

( find more info here )