Bootload an Arduino With a ZIF Socket




About: My name is Randy and I am a Community Manager in these here parts. In a previous life I had founded and run the Instructables Design Studio (RIP) @ Autodesk's Pier 9 Technology Center. I'm also the author ...

Bootloading an Arduino with a ZIF socket allows you to easily program a lot of chips at once without worrying about mangling the pins. The reason for this is that ZIF stands for "zero insertion force," and as the name implies, ZIF sockets don't require any force to take the chip in or out. This means that you do not have to worry about any of the pins bending when you take the chip in and out of the socket. This is particularly useful if you need to bootload a lot of Arduino chips at once for inclusion in an electronics kit or if you need to repeatedly program a chip and transfer it back and forth between a separate circuit board.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Go Get Stuff

You will need:

- ATMEGA328 (as many as you want to program)
- USBtinyISP
- An Arduino board
- A ZIF socket
- A breadboard
- 10K resistor
- (x2) 22pF capacitor
- 16mhz crystal
- Solid core wire

Step 2: Microcontroller Pins

Microcontrollers typically ship with the pins bent slightly outwards. This makes them wider than a normal DIP socket like the one used on an Arduino. The chip on the left is an example of this.

A chip that has been properly inserted into an Arduino socket will have pins which are straight (at a right angle to the body of the chip). The chip in the middle is an example of this.

Unfortunately, chips that have been through the process of being forcibly inserted and removed from a normal socket sometimes end up looking like the chip on the right. Notice the pins are bent in every which direction.

Step 3: Remove the Chip

Remove the ATMEGA328 chip from the Arduino board.

The implication in the picture sequence you can simply pull it out with your fingers is a lie (unless your fingers are like vice grips).

The proper way to do it is with a special tool called a chip extractor.

Barring that, I find that anything skinny, flat, and metal works well. For instance, I like to use a mini flathead screwdriver or a dental spatula to do this. I wedge one end under one side, gently wiggle it a little to lift it, and then I repeat this on the other side. After going back and forth a couple of times, the chip should be free and no pins should be bent.

Step 4: Breadboard the Circuit

Center the ZIF socket on the breadboard. Consider the side with the lever to be the top of the chip (the notched part of the chip).

Note which row of the breadboard that pin 1 (the top left pin of the chip) is inserted.

Count down to pins 9 and 10. Connect a 22pF capacitor from each of these pins to the ground rails. Also, instal a 16mhz crystal between pins 9 and 10. Be careful that the leads from the capacitors are not touch the body of the crystal.

Connect pin 8 to the ground rail with wire and also connect pin 7 to the power rail.

Now, connect a 10K resistor between pin 1 and the power rail.

Pin 20 and 21 needs to be connect to the power rail and pin 22 should be connected to ground.

Lastly, connect the power rails on each side of the board together and also do the same for the ground rails.

Step 5: Connect the Boards

Once the breadboard is complete you need to attach it to the Arduino board

Connect the reset pin from the Arduino to pin 1 of the ZIF socket.

Connect together the 5V pin to the power rail on the breadboard and the ground from the Arduino to the ground on the breadboard.

Finally, connect:
pin 11 to pin 17
pin 12 to pin 18
pin 13 to pin 19

Step 6: Attach the ISP

Attach the small connector from the USBtinyISP to the 6-pin ISP header on the Arduino board such that the red stripe on the connector is closest to the digital pins.

Step 7: Insert the Chip

Insert the chip into the ZIF socket.

Don't forget that pin 1 is to the left of the notch on the chip and this is on the side with the lever.

Once the chip is inserted, pull down the lever to lock it into place.

Step 8: Bootload

Plug in the USBtinyISP to your computer.

Open the Arduino IDE.

From the top menu select:
Tools > Board > Arduino Uno

Next select:
Tools > Burn Bootloader > w/ USBtinyISP

It will then display at the bottom of the IDE window:
Burning bootloader to I/O Board (this may take a minute)...

A few minutes later it will state:
Done burning bootloader.

Step 9: Rinse. Repeat.

Burn as many bootloaders as you see fit.

If you want to use an Arduino as an ISP, another ISP, or do some other fancy things, check out this page to get started.

4th Epilog Challenge

Participated in the
4th Epilog Challenge

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    31 Discussions

    Lee Wilkerson

    1 year ago

    Hey, Randy, kudos to you for including instruction on how to safely remove an IC from its socket.

    I have a 1/8" screwdriver, the last 1/2" of which was heated with a torch and bent at a right angle. It works fantastic for extracting these DIP IC's.


    7 years ago on Introduction

    Hi! I have a question : i If i buy this :
    would i be able to program this chip written with arduino code : : ?

    at the end of the page, it is mention : Did we mention that the watch kit is super hackable? An FTDI header is broken out to the side of the board and the watch-firmware is running on top of a bootloader! This means that all you need to do to add your own code is to open up Arduino or Wiring and select "Arduino Pro or Pro Mini 3.3V/8MHz w/ ATmega328" as your board.

    thank you!
    i really need to program it

    Nate OceanSpokehedz

    Reply 7 years ago on Introduction

    Exactly. A simple schematic (instead of endless photos of placing this-wire-in-that-hole) would have revealed that the six wires from the programmer are directly connected to the ZIF programming socket. They merely pass thru the Arduino Uno board; it's not used for anything. Why not just put a six-pin header directly on the protoboard with the ZIF socket? Neater and cleaner.

    Also with instructions like Step 5, which state:
    pin 11 to pin 17
    pin 12 to pin 18
    pin 13 to pin 19... pretty sloppy. pin 11 of what and pin 17 to what?

    Schematic please!


    Reply 8 years ago on Step 9

    I am 14 and saw a Binary clock and i wanted to make it bur it requires one of these and i just cant go and get them what would you reccomend? and if you have any extras i would be so gratefull!

    @Jwilliams- I am in HS too and its hard to get parts sometimes ;) I use Tayda Electronics for parts (not atmegas), mainly because they are dirt cheap and I dont have a job yet... I have also used digikey for parts- they are a bit difficult to navigate though (but have the fastest shipping ever :P ). A lot of people use mouser. Some use Jameco. I have had success with sparkfun. I recommend sparkfun as you can get the chips pre bootloaded or not, actually many of these sites have many different versions of the chip you need. You can skip getting a programmer for the chips and buying an arduino board, then programming it from there (best bet). Or you can get the chips themselves and then a programmer for them.

    Its really hard for the beginner, starting with microcontrollers, but Its totally worth the initial shock.. I'm still experiencing the shock a bit myself. But for your clock they used an Arduino chip. I recommend you read some articles about arduinos and programming. Probably most of that is available at

    Ok Thanks a lot for the help and i found a KIT BASE WORKSHOP W/ARDUINO BD at
    and was wondering if it was a good deal.............i see all kinds of cool arduino stuff on here and thats why i would like one
    And i am willing to learn all i can about it
    are all some pretty good kits- one of them is just the board itself. has some good kits too (I got started with the arduino starter pack from makershed)
    It all depends on what you want to do or how much you want to spend ;)
    The board itself costs only around $30 and then you can just buy parts for whatever project you need :)


    Reply 8 years ago on Introduction

    The shop at has a load of this type of thing at pretty low cost. I think you can get a working arduino chip and board for about $13 wth the bootloader pre-installed but you'll need a USB to serial cable to talk to it.


    8 years ago on Step 4

    Great tutorial so far. I think you're missing a pin 20 wire to the power rail in the last picture.


    8 years ago on Introduction

    What's the minimum number of components if you wanted to sole-purpose an arduino programmed chip? I've used parallax processors, and the price is great. Especially if 4Mhz is sufficient. I haven't looked into the arduino things too much because I didn't want to put a $30 board into something. If I understand this, you could just put the atmega chip in a circuit after it's programmed, right?


    2 replies

    Reply 8 years ago on Introduction

    I got this running (without the special programming), with just a cap and the crystal, and a 5v supply. I was surprised! it took almost no circuitry. And it worked without tying the AREF and VCC pins to 5v. So all of 32 solder points and I have a microcontroller on a perfboard


    8 years ago on Step 7

    It's allowed to cut the legs of the components slightly. ;-)