Retired!

This is a retired product, but fear not as there is a newer, better version available: PGM-09825

Creative Commons images are CC BY-NC-SA 3.0

Retired RETIRED

This product has been retired from our catalog and is no longer for sale.

This page is made available for those looking for datasheets and the simply curious. Please refer to the description to see if a replacement part is available.

Replacement: PGM-09825. The new version uses an SMD 5x2 header instead of a through-hole version.

Description: This is a simple to use USB AVR programmer. It is low cost, easy to use, works great with AVRDude, and is tested extensively on a Windows desktop. Based on Dick Steefland's USBtiny and Limor Fried's USBtinyISP.

We've gotten a big response (see comments and forum posts below) from Mac and Linux users having problems. We use this programmer extensively on a Windows box and love it.
However, this is a low-cost programmer designed for those on a tight budget. For out-of-the-box compatibility with other operating systems and machines, checkout the AVR ISP2 USB programmer from Digikey.

This programmer works really well for ATmega168 and ATmega328 and should work with all the AVR micros supported by AVRDUDE. We've played a bit with the ATtinys but we cannot guarantee that this board will be compatible with anything but ATmega168/328.

This board is buffered and power protected so that you can do some really evil things to the programmer without killing it. It is fast! Comparable speed to the AVR ISP2 USB programmer from Digikey. One of the greatest features of this board is the ability to power the target (up to 500mA) from the programmer.

To use this programmer, attach to a Windows machine and install the drivers listed below. Open a command prompt. Assuming WinAVR (and therefore AVRDUDE) have been installed, type:


avrdude -c usbtiny -B 1 -patmega328 -U flash:w:main.hex

Be sure to include the "-B 1" flag as this will significantly increase the programming speed! You may need to change -p flag to your appropriate microcontroller. You can setup a tool and hotkey in Programmers Notepad to do this automatically.

Note: This product is a collaboration with Limor Fried. A portion of each sales goes back to them for product support and continued development.

Features:

  • Comes with the 10 Pin Interface Cable
  • Standard AVR ISP programmer
  • ATtiny2313 with USBtiny firmware preloaded
  • Buffered output
  • PTC fuse protected power
  • Programmer can power target
  • Supports ATmega168/328 and many others
  • Two status LEDs
  • Both 10-pin and 6-pin targets supported

Documents:

Open Source Hardware: We like to share. The original engineering files are available for mass hackery.

  • Firmware based on USBtiny (type 'make all' in the spi directory). I've found that the compile only works with older versions of WinAVR (20080430).
  • Eagle Files (Licensed under CC v3.0 Share-Alike)

Comments 112 comments

  • Anyone know when they’ll be back in stock, maybe because of the new pick and place machine it’ll come back in stock earlier

  • Will this be back in stock in time for the “free day” on the 7th of January ?

  • I try to put zenner diode by myself. but pattern is too narrow for solder by hand. I gave up and found easy alternative way…
    1) cut back of patter JP1
    2) put LED on JP1
    LED usually drop about 2V. that means…
    VBUS(5V) - LED(about 2V) = VCC(about 3V)
    so AVR will run with 3V and USB D+/D- line swings 0 to 3V.
    I tried some LEDs for best result. and little red LED which drops 1.875V( VCC: 3.125V ) is the best.
    LED drops just 2.00V ( VCC: 3.00V ) did not work properly.
    hope this helps.

  • I can’t believe that there hasn’t been a new rev. to fix the missing Zener diodes in this design. USB levels are supposed to be 3.3V not 5V. I complained about it support several months ago. It’s a very simple fix, and it makes it compatible with most USB controllers without a hub.
    DO NOT BUY until they fix their design.

  • I just bought one of these, and had the problems described above running it in Linux (ubuntu 8.04).
    Plugging it in directly into a USB port of my PC the OS doesn’t recognise the device properly. Plugging it into a USB hub (in my case built into the monitor) works. The blue LED should light up immediately, the “stat1” red LED should light up after a few seconds.
    The other problem I had was avrdude complaining “Operation not permitted”. This is due to read/write permissions in udev (running Ubuntu 8.04) Setting up a udev rule fixed the problem. Check here http://www.ladyada.net/forums/viewtopic.php?p=21579 for details.
    Sometimes I need to run avrdude to make the red LED come on (avrdude will quit with an error “could not find USBTiny”). After the red LED turned on avrdude will work fine.
    So there are a few problems to make it work, but with a few workarounds it’s a great compact programmer. I also have the STK500 clone USB AVR programmer from Sparkfun which works fine out of the box - but it’s a lot more expensive, much bigger, and it doesn’t power my circuit either.

  • Here is what I had to do to get my Pocket Avr working
    Cut the trace and power it externally.
    I was unable to successfully program any chip until I did this.
    http://wtfmoogle.com/arduino/poketavr.jpg

    • I’m replying here just to confirm TheMoogle’s findings. The silkscreen on the bottom is LYING, so be careful when wiring into your circuit.
      With my ICSP wired as TheMoogle has shown, I have successfully programmed an AVR on my Mac. But instead of cutting the JP1 trace, I use a D-Link USB 2.0 powered hub. Without the powered hub, the device isn’t recognized by avrdude. Presumably it just takes too much current from the USB bus to work.
      Also, the “Powered/Not powered” switch doesn’t work because the TARGET-PWR net is also powering U2, but if you disconnect its power, then the other inputs to U2 hold TARGET-PWR high. U2 should be powered by VCC.

  • My programmer(/avrdude) randomly report error in the middle of run. and programmer fleezes both Stat1/2 LED on.
    I noticed this board lacks 3.6V Zener Diode on USB D+/D- line. (Original USBtinyISP has)
    so I cut pattern back of JP1, and switched to ‘Power Target’ to feed 3.3V from ISP connector. then avrdude runs perfectly.
    (Ubuntu 9.04 / ThinkPad X31)

  • Has anybody had success with this programmer using avrdude under Mac OS 10.5? I’m getting the following error:
    new-host:~ stuart$ avrdude -c usbtiny -p m16 -P usb
    avrdude: Error: Could not find USBtiny device (0x1781/0xc9f)
    avrdude done. Thank you.
    (I’m using avrdude version 5.6 (from CrossPack), which should supports usbtiny)
    Any thoughts would be greatly appreciated. Thanks!

  • PSmith - that’s absolutely amazing how helpful you have been, and thanks for taking the time to answer so quickly as well.
    I have also seen an 8-pin AVR development board on this site too, which also looks useful. I might get that to have a permanently setup development environment and to leave my breadboard free of clutter.
    Once again, I can’t thank you enough for your help here.

    • I have one of the 8 pin AVR dev boards, and this programmer works fine with it as well. Change the Makefile so that it refers to a tiny13, remove references to ports C and D from the example Blink_1MHz.c file, and you’re off and running.
      I just ordered a couple of the “BOB-08508 AVR Programming Adapter” boards to save having to set up that rat’s nest of wires on the breadboard.

    • Kane -
      It’s good for me to think aloud, and I’m a bit pumped from having gotten it to work myself mere minutes ago.
      Now, there’s no guarantee that it’s going to work with a Tiny13, as the product page says. If it does work, please let us know: I’ve got a few of those laying around here and I’d like to try it, but I’m not tearing apart what I’ve got here unless I have reason to think it’ll work.
      Have fun!

  • Apologies for sounding like a noob, but can someone offer me a link on how to actually connect an 8-pin AVR, such as an attiny13 or 23 to this device? I understand that I’ll need a programming cable (such as product# DEV-09215).
    After that, I’m not sure how to connect the programmer+cable to the processor. Presumably, there’s a correspondence between the pins on the programmer and the processor but I don’t know what this is. Hardware setup tips for this would also be appreciated.
    Once again, I apologise as my background is programming an not electronics and I’ve found the documentation out there to be difficult to get what I need. I’m not just being lazy!
    Thanks in advance for any help received.

    • Then you need the three communications lines, MOSI, MISO, and SCLK. Again, the tutorial will show you which is which on the cable, and the datasheet will show you on the Tiny13. You connect pin 1 of the cable to pin 5 (MOSI) of the Tiny13. Pin 3 of the cable does not get connected. Pin 7 of the cable goes to pin 7 (SCLK) of the Tiny13. Pin 9 of the cable goes to pin 6 (MISO) of the Tiny13.
      Pins 4, 6, and 8 of the cable also need to be tied to ground. I believe you may be able to save some trouble with that if you use the 6 pin programming connection on the cable rather than the 10 pin, but then you’re on your own figuring out the pinouts.
      In short:
      cable pin - connection
      1 - Pin 5 of Tiny13 (MOSI)
      2 - Vcc (5V)
      3 - No connection
      4 - Gnd
      5 - Pin 1 of Tiny13 (RST)
      6 - Gnd
      7 - Pin 7 of Tiny13 (SCLK)
      8 - Gnd
      9 - Pin 6 of Tiny13 (MISO)
      10- Gnd
      In your Make file, the programmer should be “usbtiny”, and the port should be simply “usb”.

      • Ah - someone else reports that these are the pinouts for the 6-pin connector:
        pin 1: MISO
        pin 2: VCC
        pin 3: SCK
        pin 4: MOSI
        pin 5: RST
        pin 6: GND
        That should save you several (three) unnecessary connections, but then, I haven’t tried it, so no guarantees.

    • Kanester -
      Okay, I haven’t done it yet with a Tiny13, but I just set it up with a Mega168, and it works, and I think I understand it. Here’s what I think you need to do:
      Get a programming cable: the one you suggested will do. The “Beginning Embedded Electronics” tutorial at the Sparkfun site has a photo that will help you to identify the pinouts from the cable, in Lecture 2:
      http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=93
      You can power the Tiny13 from the 5V and gnd connections in the cable, at least while you’re programming. A Google search will get you to a datasheet for the Tiny13, where you’ll read that pin 1 is reset, pin 8 is Vcc (5V), pin 4 is gnd. Pins 2 and 10 from the cable go to your 5V and gnd rails (assuming you have the Tiny13 mounted in a breadboard. The tutorial mentioned above will tell you how to wire a pushbutton for the reset line. Pin 5 from the cable also goes to the reset pin (1).

  • Hey,
    I just bought the AVR programmer and I’m trying to figure out how to wire it to the Serial Controlled Motor Driver
    http://www.sparkfun.com/commerce/product_info.php?products_id=9571
    using the broken out pins of the Atmega 328P chip so that I can make changes to the firmware.
    The broken out pins on the motor driver are GND, 5V, ADC 7, ADC 6 PC 5, PC 4. Which pins correspond to the Programmer?
    Thanks.

  • Sparkfun doesn’t guarantee that this will work with the ATtinys'. Does anybody have any troubles with programming the tinys' with this??

    • It worked right off the bat for me. I successfully programmed an attiny2313 running at 5V and 12MHz with Windows Vista.
      This is a really nice board design. I’d like to find out where to get the tiny smd crystal. I haven’t been able to find anything that size on Mouser or Digikey.

  • Hi. I just one of these but am having problems getting it to work with AVRDude. I am running XP and have installed the drivers fine, as per the driver listed above.
    Tried the above command but it didnt work.
    I get this error:
    avrdude.exe: Error: Could not find USBtiny device (0x1781/0xc9f)
    Any ideas? I havent used one of these before, and am use to using a Parallel programmer, so am a bit stumpted.
    Thanks

  • I got one, it worked fine until some point.
    I was programming an ATtiny2313, with AVRdude 5.10
    I read the fuses:
    avrdude -p attiny2313 -P usb -c usbtiny -F -U hfuse:r:-:h -U lfuse:r:-:h
    I got the values 0xDF 0x64 (factory ones). OK.
    I programmed my chip:
    avrdude -p attiny2313 -P usb -c usbtiny -U flash:w:main.hex
    everything OK, fuses OK (factory values).
    I burn fuses:
    avrdude -p attiny2313 -P usb -c usbtiny -e -U lfuse:w:0xdf:m -U hfuse:w:0x9b:m -U efuse:w:0xff:m
    AVRdude tells me that everything is OK.
    Then I did:
    avrdude -p attiny2313 -P usb -c usbtiny -U flash:w:main.hex
    Still everything OK… AVRdude tells me that fuses values are 0x9b and 0xdf as expected. During this, target board had a crystal 12MHz.
    Then any command fails. I always receive “avrdude: initialization failed, rc=-1”, device signature is always 0x000000.
    I tried with and without crystal on target board, I tried with a separated power supply. Nothing works.
    I’m surprised since the programmer proved to be working
    Does anybody got some ideas about this?

  • This programmer worked fine and successfully flashed an ATmega168 with avrdude on the first attempt with the blink_1MHz.hex file, and also another 10 times there after with slightly modified blinking hex files. I may have accidentally powered the breadboard from a wallwart with the 5Vcc from the programmer plugged in as well but I don’t think this should have been a problem.
    The programmer is still recognized by windows Vista and says its working correctly however when I begin to flash the initialization fails, rc=-1 and when run with the -F flag it says device signature is 0x000000 and the expected Signature for the ATMEGA168 is 1E 94 06. I should also note that the D- status LED is constantly on when the board is sitting idle with the Power and Stat 1 LEDs on as well. Is this normal?
    I’m beginning to think the programmer may be broken as I have a second never used ATmega168 that the programmer can’t read a signature from either. The first one still blinks an LED too! Or can the chip still be bricked? Any help would be appreciated.

  • I did a short writeup on installing this under Windows 7 x64. Hopefully this will help you guys out:
    http://andrewbrobinson.com/avr-pocket-programmer-under-windows-7

  • I was actually able to use this programmer to program the Arduino Mega Board through AVR Studio. Go to this website and follow the instructions. I hope this helps. Thanks.
    http://www.ladyada.net/make/usbtinyisp/stk500compat.html

    • One more thing to note, when you connect to the programmer in AVR Studio, a dialog will pop up asking you to update the firmware. Simply click cancel to continue as the update will not work.

  • I hope someone does tiny10 ISP. The Tiny Programming Interface has one less line. The pocket programmer could probably program it with a suitable software hack.

  • I have successfully programmed my Atmega8 with the pocket programmer after including -F and scrapping the -B 1 as suggested in earlier posts, changing the command to:
    avrdude -F -c usbtiny -p atmega8 -U flash:w:main.hex
    Programming has worked fine from the command line, but I haven’t been able to connect AVR Studio directly–any pro tips on that? I’m trying to increase the clock speed for finer servo control.

  • does this thing comes with a usb cable?? and can it work with atmega 8535??

    • Mine came with the ribbon cable to connect to the ISP slot, but not with a USB cable. I borrowed the USB mini cable from a digital camera and it seems to work fine, but if you want everything together, order the USB mini cable right away.
      By the way, there’s some good info here on the avrdude command line options: http://www.ladyada.net/make/usbtinyisp/avrdude.html

  • Successfully used this on WinXP to burn the Arduino bootloader via the Arduino Duemilanove ISP header with the USBtinyISP option in the IDE.
    Installed the driver (via Control Panel -> Add New Hardware) as suggested here, connected the programmer to the Arduino board, and it worked.
    Thanks for the comments here everyone, this seems to be the only source of documentation for this programmer.

  • Just got my pocket programmer working the second try after removing the -B 1 as someone mentioned above me. I’m using ATTiny2313 with WinXPSP3 just fine. See timing details below if interested…
    Thanks,

    Everett

    C:\msx_mous>avrdude -c usbtiny -pt2313 -U flash:w:msx_mous.hex
    Reading | ################################################## | 100% 0.02s
    Writing | ################################################## | 100% 4.06s
    Reading | ################################################## | 100% 2.27s

  • Hey Sparkfun!
    I wanted to add to what I said about the driver issues people have been having. Windows Vista x64 and W7 x64 are hell to use with unsigned drivers. I had to hack my windows to make it work and even then it is spotty.
    But there is hope!
    It looks like someone has made an open source AVR programmer that uses VUSB in HID mode, which is says is compatible with AVRdude.
    http://www.obdev.at/products/vusb/avrdoper.html
    I would imagine that since that one uses an HID interface, it doesn’t need a separate driver at all? That would solve driver signing issues…
    Could you try to integrate that functionality into this device? I do find the hack in windows 7 to be a bit weird, so sometimes I have to reboot to get Windows 7 to see the device - which has been a problem before (last night I wanted to do a quick reprogram but was in the middle of something and couldn’t reboot).
    But, when it works, it works! I did wish it emulated an STK-500 though, so I could use AVRstudio to set the fuses. Setting fuses with AVRdude isn’t as nice, even with the GUIs I’ve been able to find.
    Oh, and the 6 pin side of the ISP cable seems too fragile, since its not straight-through. I’d love a straight-through version.
    Thanks!
    -Taylor Alexander

  • Part 3/3:
    – My test app – Sorry about the FORTRAN substitutions —
    /
    * ez_blink.c - Simple LED blink test.

    * Blink any LED(s) on PORTC on and off at about 1 sec intervals.
    * Does not use interrupts.

    /
    / Note: Calculate for 2 passes through the loop: LED ON + LED OFF /

    define AVR_CLOCK (1000000L) / Default is RC Osc=8MHz, /8 /

    define LOOP_CYCLE_COUNT (17L) / Plus 32 for overhead, ignored /

    / Overflows for clocks faster than about 2MHz /

    define LOOPS_PER_SECOND \

    ((uint16_t)( (AVR_CLOCK/LOOP_CYCLE_COUNT) /2))  
    

    include .LT. inttypes.h .GT.

    include .LT. avr/io.h .GT.

    int main(void) {
    volatile uint16_t led_count; / Don’t optimize away/
    DDRC = 0xff; / Set PORTC to All Output /
    PORTC = 0x00; / Set all pins LOW (LED ON) /
    while(1) {
    for(led_count=LOOPS_PER_SECOND; led_count .GT. 0; led_count–) {
    }
    PORTC ^= 0xff; / Invert pins /
    }
    return(0);

    }

  • Part 2/3:
    (4) The Latest version of avrdude is 5.10, January 2010. It reportedly includes the mega328p, but if you stick with v5.5 you will need to add a mega328p description to /etc/avrdude.conf. See the info here:
    Developing for the ATmega328P under Linux
    http://www.pololu.com/docs/0J31/all
    Links:
    AVRDUDE - AVR Downloader/UploaDEr
    http://savannah.nongnu.org/projects/avrdude
    Mfile - A Makefile generator for AVR-GCC
    http://www.sax.de/~joerg/mfile/
    My setup, for comparison: Dell Latitude D630 laptop, Ubuntu Linux 9.04 (Kernel 2.6.28-18), gcc-avr_1%3a4.3.2-1, avr-libc_1%3a1.6.2.cvs20080610-2, binutils-avr_2.18-4, avrdude_5.5-7, and gdb-avr_6.4.90.dfsg-2.1.
    (cont’d)

  • Part 1/3
    I ordered the Olimex 28-pin AVR board (DEV-00029), a 28-pin ATMega328P (COM-09061), and the Pocket AVR Programmer (PGM-09231). The Olimex board doesn’t mention the 328p specifically as supported, but I’m pleased to report that I am successfully programming the combination from my Linux laptop.
    In order to save someone else some digging around, here are a few notes:
    (1) The Pocket AVR Programmer is not a USB serial device; Linux will not create a /dev/ttyUSBx link, and one is not needed.
    See http://www.ladyada.net/make/usbtinyisp/faq.html
    (2) These AVRDUDE options are working for me:
    avrdude -p atmega328p -P /dev/ttyUSB0 -c usbtiny -v -v \
    -U flash:w:ez_blink.hex
    (The -P option may not be necessary.)
    (3) You will need to add an entry in /etc/udev/rules.d/
    See http://www.ladyada.net/make/usbtinyisp/avrdude.html

  • …continued:
    Also, it’s not necessary to install WinAVR because the Arduino software installation already includes avrdude. Just add the full path of your …\arduino-00xx\hardware\tools\avr\bin folder to the windows path and copy the avrdude.conf file to that same folder from …\arduino-00xx\hardware\tools\avr\etc. In XP the path can be edited by right clicking on My Computer, Advanced, Environment Variables. Make sure to use semi-colons to separate entries in the Path list.
    The simplest way to use this programmer is to take the HEX file that is created in your sketch folder when the Arduino IDE uploads a sketch to the Arduino board and burn this file to a freestanding AVR. With the standard fuse settings (1MHz internal oscillator) the sketch will run at 1/16 normal speed. To correct this, you can edit (in Wordpad) the boards.txt file in arduino-00xx\hardware. Change the line that says atmega328.build.f_cpu=16000000L to say 1000000L before you compile (ie before you upload to the Arduino). The sketch will run at 16x speed on the Arduino but at normal speed on the standalone AVR.
    Go AVR!

  • I just wanted to report success with this unit to program both ATmega328p and ATtiny2313 devices. There have been no problems at all and as far as I can see, the ‘zener issue’ is a red herring because the D+ and D- blue LEDs serve the same voltage limiting purpose in this circuit as the zeners do in other circuits. If anyone is having compatibility problems with their USB port it is probably because the D+ and D- signals are a bit on the low side (2.8V across the blue LEDs), not because they are too high.
    A couple of things to note for those who, like me, are just starting out with Avrdude and standalone AVRs:
    * The part code for the ATmega328 is m328p, not atmega328 as stated in the description above.
    * The usage avrdude -p ? causes a list of all supported parts and their codes to be displayed.
    * the -B flag seems to be unnecessary.
    * The -v flag (not mentioned) is nice because it provides a readout of the current fuse settings (as in avrdude -c usbtiny -p m328p -v)

    • At least with my board, it isn’t a red herring. The LEDs to D+ and D- aren’t there, and there are only three LEDs on the board, not four. The fix replacing JP1 with an red LED fixed my USB data errors and now I don’t need the hub.
      Rob

  • I’d just like to point out that I used this programmer (received back in Sept. 2009) to flash an arduino mini pro with the following command:
    avrdude -c usbtiny -B 1 -pm328p -U flash:w:bootloader.hex
    No extra diodes needed, but I did have it connected to my monitor’s usb hub…

  • I have recently purchased this programmer, it connects fine with AVRdude after loading the drivers. Is there compatability with AVR Studio? I would like to load a hex file into a attiny25, but just can’t seem to find where the hex files for my project is located in AVR Studio.

  • I’ve been having fun with this programming AtTiny13’s. Two problems – the schematic shows the top view of the cable plugs (cable side) not the bottom view (hole side) so if you’re looking at the holes you have to reverse everything. I used a continuity tester to determine the position of VCC on each connector and marked the position with a dab of nail polish, just so I wouldn’t forget. Also, I found it necessary to drop the -B 1 from the avrdude command line. I’m connecting through a secondary hub, and the extra delay was causing connection problems with -B 1 specified. Even without it, the whole process completes before you can release the enter key, so it isn’t really needed. I didn’t need to use the -F option.

  • I have not had a good experience with this device, or avrdude. I am running x64 Windows 7 Home Premium. The drivers from Sparkfun are not digitally signed, and whether that caused my problems I am not sure, however after installing the SparkFun Drivers and rebooting my computer I had no USB support on my computer, at all.
    My mouse, Keyboard, USB Stick, everything I own would not communicate with my computer after installing the driver - it scared the hell out of me.
    I managed to repair the issue by running the Windows 7 install CD and doing a ‘revert’ - thankfully Windows had made an automatic backup before applying the driver, phew.. at least they got something right in 7.
    From what I have read, if you are not using Windows XP this device is not for you, spend the extra $20 or so and get the DigiKey device instead, you’ll waste more than $20 in time trying to get AVRdude to communicate with it.

  • I didn’t have any hardware issues with this, but I had major software issues. Tried it on 4 separate machines, one Vista Ultimate 64 bit, one Vista Home 32 bit, one Windows XP in a VM using VMWare and the USB passthrough, and one (old) Windows XP box.
    Wanted to get this explicitly to migrate towards the Vista machines because the the old XP machine is the only one with a parallel port to use the classic bit-bang programmer. Turns out I couldn’t get it working in Vista. Period. I tried installing unsigned drivers with the appropriate boot setting, running avrdude as an administrator, self-signing the drivers, nothing in Vista nor the VM. The classic XP box worked fine, red AND blue lights and a successful program. Of course, already had the parallel programmer. Oh well. Somewhat disappointing.

    • I got it working in Windows 7 64-bit. I did have to do some weird OS hack to allow unsigned drivers, because I guess Windows Vista and 7 64-bit just don’t allow it ever, without modification.
      If Vista does the same as 7, it should be doable, just google around I suppose.
      I wish this could use one of the windows built-in drivers so the signing wasn’t an issue. Its a big pain on W7 x64, and I imagine we’re only going to get more people doing that.
      Looks like my comment was too long, so I’ll add the rest as its own comment - but basically I did find that VUSB could be made to work with the built-in windows HID driver. Seems like that might be a more robust solution. And the project is open source!
      -Taylor

  • Board labeled 12-04-09 is working just fine to program my “AVR Stick” using the command line in the description from a 2008 MacBook running Snow Leopard.

  • Are the copies now in stock still missing the aforementioned diodes? I’d really love to snag one of these over the USBtinyISP, but it would be nice to know that it’ll actually work!

  • Works great with my ATTiny13a and the 8-pin Olimex prototype board also sold by SFE. The only thing is that the command SFE gave needs to be modified. I changed it to the following:
    avrdude -c usbtiny -F -P USB -pt13 -U flash:w:main.hex

  • Ok I finally got mine working, and I thought some would be interested in the additional steps that were necessary. First I was using the attiny48, which didn’t have an entry in the avrdude config file. You can add attiny48 (t48) entry to the avrdude config file by following this:
    http://www.mail-archive.com/avrdude-dev@nongnu.org/msg01823.html
    If you just type in “avrdude -v” at your command line it will tell you where to find the config file.
    I also had to use a usb hub in between the pocket programmer and my computer for windows xp to recognize it.
    Finally, the programmer was having problems with the command line given above for programming. I ended up using the following:
    avrdude -c usbtiny -B 10 -pt48 -U flash:w:display.hex -vvvv
    The main change was making the B option 10. Until I did this I was getting “programmer operation not supported errors”.
    The -pt48 sets it up for the attiny48.
    I also included the -vvvv option to get more information, as I was having so many problems until I set B to 10.

  • woa, this sold out fast.

  • I just got it today from one of the local “distributors” here in Toronto and can’t get it to be recognized by Windows 7, Windows XP or my Intel MBP. !
    So I’m basically out 20 bucks?
    If this thing doesn’t work, why are distributors still selling this? The manufacture date is 8/12/2009, :(
    And this was my very first sparkfun product to boot … what a shame!

    • Just a follow up, I spoke to the gentleman and he said I can exchange it with a USBTinyISP kit and cover the difference. I would have liked to follow up on it, but really need some kind of an ISP facility right now.

  • I too have had issues with using this programmer on some USB ports. Using a USB hub solved the issue, however it was not ideal.
    After reading here about the missing zener diodes, I had a go at modifying a USB cable by adding the zener diodes inline. This seems to work a treat.
    The programmer is now recognised when I plug it directly into my computer or into a USB hub.

  • Just got my package today. The Pocket AVR Programmer worked on Linux without any problems (straight off the computer main-board, no USB hub, I tried two different USB ports one on the box front and one on the rear. both are OK).
    System is Fedora 11 (kernel 2.6.30.9-96.fc11.i686.PAE). Main board is ASUS P5Q. avrdude-5.8-1.fc11.i586 (installed from default Fedora repositories using yum).
    I did have to add a file to the UDEV configuration as described here:
    http://www.ladyada.net/make/usbtinyisp/avrdude.html

  • I was wondering if the issue of not being recognized by some usb controllers/power issues have been addressed yet. I know plugging it into a hub seems to be a viable workaround for the moment, but i would actually like to take a new gizmo out of the box, plug it in and have it just work, without having to goof around with a crummy hub(which i neither have nor want as my machine has 12 ports already).

  • I have bought one. It come with a 10 pin cable (looks like DEV-09215). When I connect it to my ATmega16 header board which does have a standard ISP port, the programmer didn’t work (a typical “rc=-1”).
    Finally, I found that it was the given cable which caused this problem. When I use jump wire to connect the two ISP sockets manually, it worked.
    So, briefly:
    A Microcontroller with standard 10 Pin ISP Socket on its header board
    +
    The cable that come with this programmer
    +

    This programmer

    Does not work
    I’m sure my MCU header board is OK because I’ve used it many times. What I am not sure is which one caused it. Is it the cable, or the pin arrangement of the programmer?

    • The cable given is a direct pin to pin cable like most extension cable. It could only work on a standard AVR programmer.
      A simple solution may be to plug the cable reversely on the programmer. I have cut a gap on the socket to force the cable goes in.

  • I have found that this works perfectly on linux ubuntu, or atleast the version i have purchased, the setup just has to be done perfectly, also, the +5v has to be connected to your powerline if you are not powering your board through the programmer. also if using this on a breadboard that hasn’t been setup for programming the avr yet, a 10k ohm resistor between ground and +5v makes the success rate of programming higher
    hope this helps anyone
    also, in linux there is not a setup config for avrdude for ATmega328, look at this site for help if you run into this problem: http://spiffie.org/know/arduino_328/ide.shtml
    the directory also, for those who don’t know for the avrdude.conf is /etc/avrdude.conf , just add the def to the end of the file and the atmega328 will be shown as m328p

  • So I pretty much had ever problem listed on these posts (so thanks for all the responses!): needing to use a USB hub, incorrect pin-out, not working under windows 7, etc…
    I also had one problem that no one else mentioned; I hope someone can help me with it. When I try to use the ISP feature (ie, while IC is in my application circuit), the programmer doesn’t work (gives the “initialization failed, rc=-1 … Device signature = 0x000000”), however when I pull the IC out and just wire up the programmer, it works fine (no pull up on reset). Any ideas why this may be? Thanks

  • Hi, Does this programmer work with the atmega644p chip? We are trying to burn the bootloader on the chip for the motherboard for our cupcake cnc kit. Alas, we get the dreaded initialization failed rc=-1 error. Any help? Thx

  • Hey guys, everything is working except for the chip verification. Any ideas?
    C:\Users\User\Desktop\blink_1MHz>avrdude -F -c usbtiny -patmega168 -U flash:w:T
    est.hex

    avrdude: 144 bytes of flash written
    avrdude: verifying flash memory against Test.hex:
    avrdude: load data flash data from input file Test.hex:
    avrdude: input file Test.hex auto detected as Intel Hex
    avrdude: input file Test.hex contains 144 bytes
    avrdude: reading on-chip flash data:
    Reading | ################################################## | 100% 0.09s
    avrdude: verifying …
    avrdude: verification error, first mismatch at byte 0x0007
    0x00 != 0x0c
    avrdude: verification error; content mismatch
    avrdude: safemode: Fuses OK
    avrdude done. Thank you.

  • I purchased one of these programmers about a month ago, my vista laptop wouldn’t recognize it so I figured I should buy a usb hub. When plugged into my new 7 dollar usb hub vista does not recognize it and indicates it may have malfunctioned. I also tried it on desktop running xp without hub and it also says it has malfunctioned. Any suggestions would be appreciated.

  • I am pretty disappointed with this unit. I have been bumping my head against it for 2-3 months, and it has a habit of either not being recognised when it is plugged in, or not programming properly once it is recognised.
    I chalk this up to the design. Since the USB interface is implemented on the onboard AtTiny, rather than say, an ftdi 232, I think the fault lies in the USB implementation on the AtTiny.
    I think it would be a good move to re-engineer this board before version 2 is released. $5-$10 more for the board would be worth it if it meant higher reliability.
    As far as the overall quality of the PCB and soldering, I can’t complain. Just a design issue.

  • Has anyone tried this with an ATTINY2313 ? If so What are the results?
    thank you for any feedback

  • I bought one of these before I read the complete description…..great price. Unfortunately I can’t get it to work. I’m one of the mentioned linux users. Ubuntu jaunty.
    I just hate buying something that never was going to work. I like “just out of the box”.
    Anyone found a working solution?

  • The whole -B 1 speed thing messes up AvrDude, I spent a long time trying to figure out why it wasn’t working until I omitted the “-B 1” flag. Works fine now.

  • Has anybody used this programmer on an Xmega AVR?

  • MAC ISSUE? THIS IS PROBABLY YOUR PROBLEM!!!!
    If you are having issues with this device not working then I’m guessing your are using an intel based mac. It seems Apple started using a different USB chip or maybe different firmware in these macs. These chips are much more careful about monitoring the voltage and current levels being drawn by USB peripheral when they see a potential issue they shut down the USB port to protect the computer from damaging itself, this is done without telling you or giving you a warning. A work around to this problem is to plug it into a hub and let that manage your power, this should make your device work properly. Perhaps in a revision of this board sparkfun will place two 3.6V zeners to regulate the power on the data lines, this should fix most of these issues.

  • Does this work with AVRstudio? If it does, is there anything special i need to do to get it set up?

  • Is this compatible with AVRstudio?

  • Sadly this programmer does not work under WinXP SP3, Vista and Ubuntu. Under windows no driver wizard pops up, no new devices in device manager. Only power led lights up.
    Under Linux the same message “hub 5-0:1.0: unable to enumerate USB device on port 1”. Tested on two laptops and desktop pc.
    More sadly I have not any usb hubs around to test.

    • Ok, got it working on Linux by connecting it through PCI usb controller based on VIA chip.
      Guys, you should really fix this programmer to make it work with modern usb controllers.
      I have tested it on two Vaio laptops (fs415 which old one and fw11er), Ibm laptop (t43 which old one too), on Shuttle XPC (sg31g2), and on intel Mac mini 1.6. All failed.

      • Connecting through any hub (I have several cheap small ones) usually works.

  • I’m having issues with my laptop not recognizing the USB device. The instructions above mention installing the driver. Does this simply consist of right clicking the inf file and selecting install? I’m using XP Pro.

    • No. To install the USB driver, connect the programmer to your windows box on the USB port, and when the install new hardware wizard starts up, you tell it where you have the driver saved. It is assumed that you already have the files unzipped…
      You can also add the drivers by starting the add new hardware wizard manually, through control panel, before connecting the programmer.
      In any case, there isn’t a program to install the drivers. You just have to point windows to where they are stored when it asks, and say, “here are the drivers”.
      Using cut and paste to provide the filepath works nicely, but you can also navigate manually in the wizard to wherever you saved the drivers on your windows machine.
      -DogNo7

      • Er… After a little more contemplation… it looks like your methodology may be preferable.
        If right clicking and choosing install fails, go ahead and try the procedure I provided above.
        -DogNo7

  • The installation problem is solved or at least worked around.
    I figured there is something subtly different between the USB ports on my two machines and a way to “clean them up” was to insert a USB hub.
    I literally dusted off and inserted an old 4-port hub and presto the programmer is recognized. The drivers installed OK. I still can’t get AVRdude to see it but that is another matter.
    Eddie,
    eddiem: Update on my “dud” programmer.
    My old Dell latitude notebook (win2K) does “see” the programmer. The programmer is obviously OK but somehow incompatible with my big PC.
    When plugged into the XP desktop only the blue light comes on but in the notebook a red light comes on as well and the “new hardware” wizard kicks in.
    My PC is a dual core 3.4 Ghz intel machine. It shouldn’t make any difference but something is unhappy.
    If I can get it working on the dell I can get around my immediate problems.
    Eddie.M.

    • If you scroll up from this post you’ll see a discussion about this programmer not working on Mac OS X that may pertain to other operating systems as well. There’s a link to the sparkfun forums there where we discuss the issue.
      You came to discover the same thing that Tim had previously found: using a USB hub (such as a keyboard) can help your computer recognize the programmer. His theory is that the programmer needs to communicate over USB 1.1 instead of USB 2.0, but the computer doesn’t know this. So, making it communicate via a slow USB hub forces 1.1 operation.
      We’re hoping that someone at Sparkfun might be able to come up with a fix for this, because keeping an extra keyboard on my workbench just for this seems silly! At the very least, I don’t think they should call it a “pocket” programmer if they don’t fix it, because it won’t work without my keyboard, which doesn’t fit in my pocket! :-)

  • Update on my “dud” programmer.
    My old Dell latitude notebook (win2K) does “see” the programmer. The programmer is obviously OK but somehow incompatible with my big PC.
    When plugged into the XP desktop only the blue light comes on but in the notebook a red light comes on as well and the “new hardware” wizard kicks in.
    My PC is a dual core 3.4 Ghz intel machine. It shouldn’t make any difference but something is unhappy.
    If I can get it working on the dell I can get around my immediate problems.
    Eddie.M.

  • Nice looking unit but I seem to have a dud.
    It lights up but the PC does not seem to notice it is plugged in. I’ve tried a couple of different USB ports and cables. I even rebooted the PC. Both ports and cables work with other devices (arduinos, logic analyser, cameras etc).
    I see no apparent defects on the board.
    I will try it on my work PC tomorrow.
    Eddie,

  • How come when I plug mine in a wizard doesn’t pop up asking about the drivers? Is there something wrong with my USB port? Is there a way to get it to open the wizard anyway?

  • Yes. I’m seeing this same issues on OS X 10.5. By running USB Prober I can see these failure messages
    “The IOUSBFamily was not able to enumerate a device."
    A google search turned up this link: http://wiki.embedded-projects.net/index.php?n=Main.MacAndUsbprog which leads me to believe that there is potentially an issue with the firmware of the programmer?

    • I’m having the same problem under linux. Output from dmesg after plugging in the programmer:
      usb 2-1: new low speed USB device using uhci_hcd and address 19
      hub 2-0:1.0: unable to enumerate USB device on port 1
      And that’s it.
      What is the problem here? What does one need to do to get it working under linux/MacOS?

      • It works when plugging it into a USB hub (even an non-powered USB hub).
        This is not ideal. What is causing this issue?

        • This worked for me as well. It didn’t work under Linux when plugged directly into my computer, but it works fine when plugged in through a $5 USB hub. (Or at least, works now that I’ve learned from TheMoogle’s post that I shouldn’t trust the silkscreen!)

      • Thanks for the tip.
        I couldn’t get itrecognised under Windows on a Dell laptop. Blue Power LED on, but Windows didn’t know the USBTiny device was there. Connected it through the USB 1.1 hub in an ancient iMac keyboard and it worked perfectly.

  • Did I get a bad board? the status 1 led is always on. when I run AVRDude the Status 2 blinks then i get the message initialization failed, rc=-1
    avrdude: AVR device initialized and ready to accept instructions
    avrdude: Device signature = 0x000000
    avrdude: Yikes! Invalid device signature.
    avrdude: Expected signature for ATMEGA168 is 1E 94 06
    Ive checked the connections 100 times

    • I received this same error. After recompiling with the programmer explicitly spelled out as others have commented, I still had the error:
      avrdude: Device signature = 0x000000
      avrdude: Yikes! Invalid device signature.
      avrdude: Expected signature for ATMEGA328P is 1E 95 0F
      After a moment I decided, I really don’t care about speed. It would be nice if the programmer would go wooshy wooshy and program my 328…
      So, instead of the recommended command line in the product description, I used:
      Z:\somedir avrdude -F -c usbtiny -patmega328p -U flash:w:blink_1MHz.hex
      I ommitted the -B 1 command line option recommended in the product description
      And the result:
      avrdude: AVR device initialized and ready to accept instructions
      Reading |

      | 100% 0.02s

      avrdude: Device signature = 0x1e950f
      avrdude: verifying …
      avrdude: 262 bytes of flash verified
      avrdude: safemode: Fuses OK
      avrdude done. Thank you.
      Thank you.
      The result: one overpowered 20 mips 328 powering a blinking LED.
      On to more exciting things…
      -DogNo7

      • I too had a problem with specifying “-B 1” and could not get the atmega328p to program. Removing that solved the issue.

      • thanks dogno7, i did as you suggested (removed the -B 1 statment) and the programming went perfectly, onto bigger and better things!
        note: i recently purchased (this week) my pocket avr and it looks like the earlier batch issues of mis-labelled pins is now fixed.

    • In the schematic it shows R7 and R8 as 100 ohms on my board they are 1k oms. is this a mistake or mislabeling?

      • Good eyes! The first 15 or so units were built with 1k resistors. Looks like you got the limited edition version. Right after we built the initial run, we did a change to 100ohm resistors (to increase power when the target is attached to power hungry devices on the ISP lines). This change doesn’t explain your issue. Check your connections. We test every unit by having the programmer program an ATmega168.

        • I finally figured it out when I got my cable. The row that has the signal pins is completely reversed. The silk screen on the bottom is wrong!
          Proper labeling is:
          1-MOSI
          3-
          5-RST
          7-SCK
          9-MISO
          This is how the pins are labeled
          1- MISO
          3- SCK
          5-
          9- MOSI

          • oops messed that up
            This is how the pins are labeled on the board
            1- MISO
            3- SCK
            5- RST
            7-
            9- MOSI

            • Shoot! You’re right. I goofed up the labels. Cable will work fine. I will fix the silk on the next rev.

            • Yep. The top row is mirrored. The label reflects how it would look from the top of the board.
              Its a good thing that GND and VCC weren’t also flipped. That would have caused some major headaches.

            • I just did a little bit of ohm-meter probing and it appears that the TheMoogle is right: The silkscreen pin labels on the bottom of the programmer are not consistent with the standard AVR 10-pin ISP header. Either the programmer doesn’t use the standard header pin layout (unlikely), or the silkscreen is wrong.

              • I just checked it out, and I agree: Moogle has the correct labels, and the silkscreen is wrong.

              • When you plug a standard 10-pin cable into it, you get the correct connections, so it must be just the silkscreen. That is, you can plug the cable the normal way into a development board and it works fine. You can plug wires into the other end of the cable and use them as instructed in the Embedded Electronics tutorial, no problem.

    • Do you have a connection from pin 5 of your cable to the reset pin of your AVR? I was getting that “initialization failed, rc=-1” message as well, until I pulled apart my wiring and set it all up again. I think that was the connection I was missing.

      • Randomly I got this after rewiring everything for the 5th time
        avrdude: error: usbtiny_transmit: usb_control_msg: sending control message failed, win error: A device attached to the system is not functioning.

  • hum,Looks good!

  • How great is this? Exactly what I’ve been wanting.

  • Hi,
    Looks very good and suitable for travels!
    Is this compatible with Arduino IDE?

    • Just a thought… It probably isn’t, because I think the USBtiny and STK500 firmware (arduino has this) are different. But Arduino’s software just calls avrdude, so I wouldn’t be the least surprised if you could rig it.

      • How ever MIT’s HighLowTech group found a simple way to program ATtiny45/85’s. I’ve seen ATtiny2313’s and ATtiny13’s program with a bit of extra code in a .txt file that defines boards in arduino. Also in 1.0 there are options for programming through the AVRISP II,and the usbTINY.

  • Ahhhhh darn! I just built Adafruit kits for such a purpose! Looks good!


Related Products