This circuit is an Arduino without the Arduino, in that it has an ATmega8, ATmega88, ATmega168, or ATmega328 programmed with the Arduino USB programmer code using the direct programming method outlined here. It wasn't obvious to me, but the programmer identifier from programmers.txt is not the name, but the programmer prefix:
In the above example, the programmer name it is looking for is "arduinoisp". The board selected is any board that supports the ATmega you are using. In my case, the ATmega8 is supported by the entry "Arduino NG or older w/ATmega8". Put the Atmega in pretty much any board that has an ISP connector, and program the part as if it were an Arduino. It will burn the sketch without the bootloader into the ATmega and then you can put it in your new programmer. The way I did it was to make a small board that has a 10-pin ISP socket. I programmed the ATmega in the board, then used the 10-pin connector as the programming output connector. The pinout is the same, and the pins are the same, with the exception of one signal - pin 5 of the ISP connector, which is normally connected to reset, is to be connected to pin 16 on the ATmega.
The software needed is the Arduino environment, which comes with the Arduino ISP as an example. It will work out of the box.
I mounted the breakout board upside down because the pin identification is on the bottom, except for the four that duplicate TX, RX, and a couple more, which are on the top with the LEDs. Keep that in mind when you put the headers on. It took me about four hours to assemble the ArduinoISP programmer. About half an hour was spent hogging out the little openings in the box.
If you decide to build it with just a board, and no external parts, you will want to put the LEDs and switch on the board. In that case you can use a SPDT slide switch to select between the ISP and Serial modes.
If you look at pins 1, 2, and 3 on X2 you will see ISP, GND, and Serial. These go to a toggle switch that selects whether the ArduinoISP gets the serial data from the PC, or the data goes out the 6-pin SIP to another board with a downloader installed. If you choose to use that switch, make sure you turn DIP switch 4 & 5 OFF, or you will be running two outputs into the same wire. To use the serial as an external Arduino sketch downloader, ground "Serial#". To use it as an ISP programmer, ground "ISP#". Do not ground both unless you have extra 74HC125's around. Trust me.
Also on that 8-pin SIP are three lines for LEDs to indicate power, programming, and error. The power LED "throbs" when the power is on - a cute feature of the Arduino ISP. The LEDs are on when the line is pulled high, so ground the cathodes.
If you have access to an ATmega168 or ATmega328 with the Arduino bootloader in it already, you won't have to write one line of code, nor will you need another programmer to program this one. I picked up a pair of ATmega328's with the Arduino bootloader in them at Evil Mad Science. The ATmega328 is getting hard to find right now, but the ATmega168 will do fine. Just make sure to select the right microcontroller in the Arduino environment when you flash the programmer with the Arduino ISP sketch.
You may get the error:
avrdude: Can't find programmer id "arduino"
Don't try to change your local Arduino preference file. Although the local file is supposed to override the global one, the Arduino environment will just change it back. Instead, go to the AVRDUDE site and get the latest version and install it. It supports this programmer directly, as "arduino".
USB 2.0 to TTL UART 6PIN Module Serial Converter CP2102
USB to 5v TTL Header Like FTDI TTL-232R-5V