Date: 2009-06-10 23:20:00
arduino parallel port programming cable
In playing with my Arduino board, I've had occasion to "brick" it a few times. Not completely, because there is a low level programming header on the board where you can reprogram a new bootloader into the flash. I didn't have a cable to do that, but I borrowed one and it worked fine.

I decided I'd need a programming cable for myself, so for only a few dollars in parts, built a parallel port programming cable. Since the only computer I have with a parallel port is my desktop machine (which is actually under my desk), I used a rather long (2 metre) ribbon cable for the connection. This might have been a poor choice, because loading the 32 kB of flash memory took just under an hour! That's something on the order of 100 baud. Hopefully I can get it to go faster by shortening the cable, and hopefully a lot faster. It will just be more awkward due to where my parallel port is. But at least I have a way to unbrick my Arduino now.
Might want to switch to a bootstrap loader that's not 32k. Also, make sure you have turned on ECP mode on the parallel port -- it often makes things faster just because of not having to do 39847293847 IO ops per bit.
Actually, avrdude evidently writes the full 32k of flash (which is all that's available on the chip) even though the boot loader is only about 2k. I'm going to try changing it to only write what is needed.

As far as I know, ECP only applies to 8-bit operations and this hack uses the parallel port as a TTL-level SPI serial device.
Greg Hewgill <>