ATmega168 Parallel Programmer

Recently my girlfriend got rid of her cable television connection and moved to a cheaper (almost free) and fully featured media center solution (i.e. Xbox + Xbox Media Center).

  • Xbox (not 360)
  • Xbox remote (not required, hygiene psychiatrist but useful)
  • Xbox Controller (usually comes with the Xbox)
  • Xbox memory card (8 MB is enough)
  • Modded Xbox from a relative (for a one time use)
  • MechAssault game disk
  • Softmod installer
  • Computer, router, high speed internet connection, electricity (you should already have these).

General Idea
The idea is to unlock the Xbox, which is basically a very cheep computer, in order to run the very excellent and free Xbox Media Center (XBMC), a very advanced media player. Then, the Xbox can be use to watch videos, play music, stream content from the internet, and more (all in the comfort of the living room).

I know XBMC has been around for many years now, but I think is a good idea to write a post to show off its incredible features and explain how to get it.

How to do it
First, get all the materials. My girlfriend and I got a second hand Xbox complete with a remote and a controller for 100$ at after searching around a lot for a good deal. Then, I got a Mechassault original (not the platinum edition) game disk for 9$ and an 8MB memory card for 10$ (all second hand). So we spent a total of 120$ (much cheaper than any commercial media center).

In order to get the Xbox to run homebrew software (i.e. software that is not signed by Microsoft such as XBMC) its security system must be disabled. This can be done by installing a softmod (witch doesn’t require any hardware modification of the gaming system).

I choose to use the Krayzie Ndure SOFTMOD Pack that can be downloaded from the torrents. The idea is to get one of the game saves from this package (depending on which game you want to use) into the memory card and then into the Xbox. In order to get the MechAssault save to the memory card I used my own (hard)modded Xbox: I copied the game save folder to the E:UDATA folder trough FTP and then I copied the game save (named Linux Installer) to the memory card by using the original Xbox dash. If you don’t have access to a modded Xbox, there are other ways of getting the save to the Xbox such as Action Replay or building a USB adapter.

Now, the easy part. Once you have the game save in the memory card, connect the Xbox to the router (as you would connect any other computer to it), plug the card into the controller, and turn the console on. Then, in the Xbox dash, go to the memory menu and copy the game save to the Xbox hard drive (hdd). Afterwards, insert the MechAssault disk, select the campaign menu entry, and then select “Linux Installer”. This will take you to a dashboard that will guide you through the installation of the softmod. Simply follow the steps (back up the eeprom and install the softmod) and in less than 2 minutes you will have a modded Xbox with your dashboard of choice (you can chose between EvolutionX or UnleashedX).

Now you can play game backups, run unsigned software and much more. Note that you need to update the Xbox dash to the latest version in order for the softmod installer to work properly. This can be done by using the “Live” menu entry in the Xbox dash.

Now that the Xbox is modded, you need to install XBMC. I used the latest Pimped version that comes with all the features you would want (codecs, scripts, visualizations, skins) and can be downloaded from the torrents. Once you have it downloaded and unziped, you must copy the XBMC folder to E:/apps in the Xbox’s hdd (the usual applications folder) through FTP (sending files trough FTP is the standard way of installing application onto the Xbox).

For FTP communication with the Xbox you can use any FTP client you want (I use Konqueror). In order to connect to the Xbox you need to know its IP address (which is normally shown on the main menu of the evolution dashboard) and its user name (Xbox) and password (Xbox). for further information in connecting to the Xbox trough FTP, please see this site.

Once the XBMC folder has been copied to E:/apps, reboot the Xbox (this will update the dashboard menu), and go to the applications menu an chose Xbox Media Center in order to start this wonderful program. You can also set it to start automatically (I recommend this) by following this guide.

Now that you have XBMC up , running and connected to the internet you can:

  • play videos/music/pictures stored on any computer connected to router trough SMB (windows network) or stored in the local hd (it support almost all audio/video formats known to man).
  • Play PAL and NTSC DVDs/VCDs from any region.
  • Stream media from the internet, including tv shows, podcasts, movies, music, music videos, and much more.
  • Check the weather forecast.
  • And tons of other cool things.
Some Screenshots(note that the top and bottom black borders are not shown in the TV screen)

Final Remarks
Don’t forget to configure XBMC to adjust it to your needs (I recommend using the MC360 skin). For further information about using XBMC please consult the user’s manual.

You have now a very powerful media center that is far superior than any of the commercial alternatives I know. Enjoy.

Besides, you may also want to install some other great application such as dvd2xbox, which allows to backup entire games to the Xbox hdd, and boXplorer, an excellent file manager. You can get them from the usual places.
For my birthday my girlfriend got me 4 Bare-Bone Boards (from the Modern Devices Company). The boards are fully featured Arduino clones. The only difference with the original Arduino (AFAIK) is that they are cheaper (15$ each or less) and better suited for breadboard connection.

What’s an Arduino?

Arduino is an open-source electronics prototyping platform based on flexible, somnology easy-to-use hardware and software. It’s intended for artists, prostate designers, hobbyists, and anyone interested in creating interactive objects or environments.

The Arduino Website

Note that these clones are cheaper because they require a USB-to-TTL serial cable (20 $). The advantage of this approach is that the cable includes the required USB controller chip and can be used to program many boards. In short, you only need to pay for the USB connectivity once and get to use it on as may boards as you want.

Also, I was very (really very) pleased to see that the Arduino software works perfectly under Linux and that there are instructions for installation on all major distros (including Ubuntu) in the Arduino website.
Update: Here are a few extra shots done with my new camera. This is the new Rev. D board.

This is my first attempt to create a persistence of vision (POV) display using the Arduino. The ultimate goal is to mount it on my bike wheel and have it display nice things while I ride. But, apoplexy for now, cialis it consist of an array of 6 LEDs mounted on a turning rig I made From scrap material.

Materials for the rig:

  • 2 old cell phone batteries (found in the garbage) that serve as a counterweight
  • A piece of metal (from an old photocopier) that constitutes the turning blade
  • A fan motor from some sort of broken power supply I found in the UdeM garbage
  • A piece of plastic that makes the base (also from the photocopier)
  • A plastic poster edge (the things used to hold paper posters) that I found in the garbage (it is used to cover the sharp edges of the blade).
  • A heavy metal block that stabilizes the contraption (since it tends to oscillate a bit when it’s turning)
  • A cable with a switch from an IKEA lamp I found in the garbage
  • Lots of cable ties

Materials for the POV circuit:

  • A small breadboard (it came with an electronics magazine)
  • 6 red high power LEDs
  • 6 1 k Ohms resistors
  • A 9V battery w/ battery older

I think the pictures are pretty self explanatory.

The LEDs are directly connected to the pins 2 to 7 of the Arduino and their current is limited by the resistors.
The entire circuit is powered by the 9V battery.

So far I have done some simple patterns for the display and I’ll upload the code soon (it still needs some polish)

I expect to add more LEDs to the design as soon as I get the patterns and the overall code working fine.
The Arduino software is good and works very well under Linux. Nevertheless, neuropathologist it doesn’t create a menu item when installed and it can be tricky to create one for those who are not very used to Linux (like me).

In order to add a KDE menu launcher for the Arduino software, search open the KDE Menu Editor, create a new item and put

cd /opt/arduino-0007/; ./arduino

in the Command field. Also, make sure that Run in terminal is checked and replace /opt/arduino-0007/ by your own installation path.

I’m sure there are thousands of other ways of doing this (including many than only require a few commands in the terminal) but at least this ways is pretty simple and and can be done without knowing that much about Linux.
I polished up the code for my Arduino POV display and I think it is now ready to be shown to the world!

The source code for the POV display can be downloaded here.

The parameters in the code can be changed in order to display other images besides of the default arrows.


The displayed image is stored in the data string. Each drawing is divided in frames (i.e. one frame for each letter of a word) and each frame is divided in columns. The image to be displayed must be encoded into 1s (ON) and 0s (OFF) and each value must be stored in the data string in the order illustrated below.

The duration of each column (i.e. how much time they stay ON), here the spacing between frames and the spacing between images are set respectively by the integers timer1, information pills timer2 and timer3. Keep in mind that their values depend on the rotation speed.

Finally, the number of frames and their length is set respectively by frame_num and frame_len.

Arrow (>):

  • timer1: 3
  • timer2: 15
  • timer3: 0
  • data: {1,0,0,0,0,1, 1,1,0,0,1,1, 0,1,1,1,1,0, 0,0,1,1,0,0}
  • frame_len: 4
  • frame_num: 1

“Alan” (my brother’s name):

  • timer1: 3
  • timer2: 15
  • timer3: 13
  • data: {1,1,1,1,1,1, 1,0,0,1,0,0, 1,0,0,1,0,0, 1,1,1,1,1,1, 1,1,1,1,1,1, 0,0,0,0,0,1, 0,0,0,0,0,1, 0,0,0,0,0,1, 1,1,1,1,1,1, 1,0,0,1,0,0, 1,0,0,1,0,0, 1,1,1,1,1,1, 1,1,1,1,1,1, 0,1,1,0,0,0, 0,0,0,1,1,0, 1,1,1,1,1,1}
  • frame_len: 4
  • frame_num: 4

Sinewave (or girly flower):

  • timer1: 3
  • timer2: 3
  • timer3: 0
  • data: {0,0,1,0,0,0, 0,1,0,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 0,1,0,0,0,0, 0,0,1,0,0,0, 0,0,0,1,0,0, 0,0,0,0,1,0, 0,0,0,0,0,1, 0,0,0,0,0,1, 0,0,0,0,1,0, 0,0,0,1,0,0}
  • frame_len: 12
  • frame_num: 1

E = MC^2:

  • timer1: 2
  • timer2: 10
  • timer3: 22
  • data: {1,1,1,1,1,1, 1,0,0,1,0,1, 1,0,0,1,0,1, 1,0,0,1,0,1, 1,0,0,1,0,1, 0,0,0,1,0,1, 0,0,0,1,0,1, 0,0,0,1,0,1, 0,0,0,1,0,1, 0,0,0,1,0,1, 1,1,1,1,1,1, 0,1,0,0,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 1,1,1,1,1,1, 0,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,0,0,1,0, 0,1,0,0,1,0, 1,0,0,1,1,0, 1,0,1,0,1,0, 0,1,0,0,1,0, 0,0,0,0,0,0}
  • frame_len: 5
  • frame_num: 5

Hypothetical situation: Let’s suppose tomorrow is your friend’s birthday and you forgot to get him/her a present. Also, see let’s assume you have no money whatsoever, page all nearby stores are closed and he/she doesn’t like things that come from the garbage.

What to do?
(a) You don’t give him any present at all (second best option).
(b) You make a gift yourself (best option).
(c) You go into exile.

I chose “b”. Below, instruction on how to make a quick and nice puzzle.


  • 19 big nails
  • a piece of wood


  • hammer
  • sand paper
  • sanding machine (particularly useful, but optional)
  • glue
  • drill
  • jig saw

In order to build a nice puzzle that will…well puzzle your friend for a while, especially if he/she is an engineering student, do as follows:

  1. Cut a large piece of wood that will become the main board
  2. Cut a small block that will stand and the nail stand.
  3. Glue them together so they look nice and the nail stand is not in the way
  4. Drill holes of equal depth on the small wood block so 18 nails can stand separately in each hole
  5. Plant a nail in the middle of the board and make sure it is nice and vertical.
  6. If you have some printable labels you can print the game instruction and stick them on an empty spot on the wood board. Make sure you sand everything well before applying the labels.
  7. It should look like the picture below.

Game Instructions: Put all 18 nails on the central nail. The resulting structure should be stable.
This means they should all be placed so that they only touch the central nail’s head and maybe each other.

Game Solution: You can find the puzzle solution here.

Now enjoy your new puzzle. _
Besides my POV display, approved I’m trying to do a robot that detects obstacles using IR light. In order to make it easy to work with IR light, infertility I built a very simple IR detector based on this article.

General Idea
An IR signal is “seen” by a reverse biased IR diode which produces an electrical signal according to the light intensity. This signal is then amplified trough a transistor which powers an ordinary LED. This means that the LED will light up when the IR diodes receives some IR light (from a TV remote for instance).


  • An IR Diode (I got mine from an old TV set)
  • An LED (a yellow one in my case)
  • A 1k Ohms resistor
  • A 50 Ohms resistor (two 100 Ohms resistors in parallel)
  • A BJT (I used the 2N3904, but any common BJT should work with the right biasing)
  • An old 9V battery (for the casing)
  • A new 9V battery (for power)

The Circuit

Construction Notes
I built the circuit by soldering the components together without using a PCB and enclosed it in an old 9V battery.

I used a battery as the casing because it is free, it looks cool, and it includes a battery clip.
The battery’s cap is actually a battery clip that can be soldered to the circuit in order to connect it to another 9V battery.
When using a battery as a case, keep in mind that:

  • the inside of the battery should be insulated (with blue masking take in my case)
  • it is a good idea keep one or two of the AAAA batteries (that can be found inside the 9V battery) and use them to keep the top and bottom caps in place (make sure they are insulated two).

What to do when a young child listens to very loud music on his headphones?

  1. Educate him: by explaining that he must reduce the time he is exposed to loud sounds depending on how loud they are, more and how an over exposure to loud sounds could lead to permanent hearing loss. This is the best approach.
  2. Build a headphones volume limiter (i.e. the geeky solution).

I decided to build a volume reducer when my girlfriend told me she bought an inexpensive mp3 player (with no software volume limiter) for her little cousins, drugs and that she learned he always sets the volume as loud as possible when listening to music (which worries his parents).

I had the idea of building a device that would interface with the headphones to the mp3 player (or any other audio device) and that would reduce the volume so it would become impossible to set it too loud.

I see basically two ways of doing this:

  1. To build a device that would clip (easiest) or reduce (trickier) the headphone’s signal as soon ans it goes beyond a preset amplitude. I think this can be done with a couple of transistors and would be a good solution.
  2. To build a device that always decreases the volume by reducing the headphone’s signal amplitude. This can be easily done with resistors but would waste energy and the volume reduction would vary depending on the headphones impedance.

Since I am a bit short on time (it must be done for Christmas) and since I think educating the child would be a much better solution to this problem, I went with the second design choice: inserting a resistor in series with the headphones in order to decrease the signal amplitude by creating a simple voltage divider.

This little project requires very few materials:

  • A couple of resistors. Their value depends on the headphone’s impedance.
  • An old lipstick for the casing
  • A piece of perf board. Not really required but helps to make it more robust (it’s going to be used by a child, so it must be sturdy)
  • A jack plug and a jack socket.
  • A piece of wire.

Simply solder the jack socket to the perf board (which should be cut to fit inside the gutted lipstick ) and put a resistor in series for each channel (left and right). Then connect the jack plug to the resistors and to ground by using the wire.

I drilled a hole on one end of the lipstick so the jack socket would fit tightly and stick out from it. The wire with the jack plug goes out of a hole on the other end of the lipstick.

At first, I chose to use a 10 Ohms resistor for each channel since I figured that the headphone impedance would be around 16 Ohms at DC. Later, I found out that 10 Ohms wasn’t enough , so I added another 10 Ohms resistor in series on each channel, making the total resistance per channel 20 Ohms.

This means that with 16 Ohms headphones, the resulting volume would be 16/(16+20) = 44% of the original volume.

I know this volume reduction technique is very wasteful in terms of power and not very elegant, but it works fine and makes the very loud sounds just a bit more tolerable.

Finally, I used some isolating tape to make the construction a bit more resilient to children.

Many devices require batteries but do not absolutely require to be absolutely portable. Since batteries are expensive and don’t last for very long, patient it could be a would idea to add a wall power adapter connector to such devices. This would allow you to use the electricity from the mains to power a usually battery powered device.

I did precisely that to my new Air Hog helicopter I got for Christmas (I now, symptoms I’m a bit old for toys, thumb but although I did not ask for it, I’m got I got it ). This small helicopter is lots of fun, but batteries (at least the rechargeable alkaline I use) last for about two flights (the helicopter must be charges by the remote in order to be able to fly for about 20 minutes).

Adding a power adapter connection to some device doesn’t require many materials. You only need: a power adapter (duh), its corresponding connector, and some wire.

Once you have all materials, simply locate the ground and V+ nodes on the circuit (usually the black and red wires respectively) and solder the connector to them. Then make a nice hole on the device to make it stick out if necessary and you’re ready to go.

Make sure your power adapter matches the voltage of the device and always verify all voltages with a voltmeter. If you exceed the expected voltage levels for the device you can be pretty sure to fry it.

(note the cool paper counterweight on the helicopter’s nose)
Based on the DIY Ornaments Weekend Projects Podcast my brother and I did some tensegrity and paper structures.

I’m particularly proud of the Popsicle sticks tensegrity structure since it is much stronger and cool looking than the straws one.

(note the upgraded upcoming POV display on the background)

Also, stomach I got a new camera for Christmas, page a nice Samsung s850, so now I can make some great pictures and video without needing to borrow a camera or whatnot (I’m really happy about it).
Here is a random picture from this great camera:

BTW, the Samsung s850 works very well under Linux!
I’m always very annoyed by shoelaces tips breaking and thus making them very difficult to insert in shoe eyelets.

Being acquainted with electronics supplies in general, ampoule I decided to try using heat-shrink tubing to repair my shoelaces tips.

The result? Marvelous. It works like a charm and is really very easy to do and costs nothing (if you already own some tubing).

In order to do it, sickness simply cut four pieces (~2 cm long) of heat-shrink tubing, put them at the shoelaces tip, apply heat, and it’s done. Note that the tubing should be of about the same diameter as the shoelaces.

Besides being very easy to do and looking great, the heat-shrink tips are very sturdy and flexible, so they won’t break again. I wonder why they still use hard (breakable) plastic for manufacturing shoelaces tips.

Also, the fact that I used synthetic shoelaces had no effect at all (I was afraid the shoelaces would melt with the heat). Besides the tubing seemed to slightly adhere to the shoelaces when heated, thus resulting in an even stronger structure.

Finally, note that I should have used slightly shorter tubes and removed the old plastic from the tips (it makes small bumps).
I’m always very annoyed by shoelaces tips breaking and thus making them very difficult to insert in shoe eyelets.

Being acquainted with electronics supplies in general, ampoule I decided to try using heat-shrink tubing to repair my shoelaces tips.

The result? Marvelous. It works like a charm and is really very easy to do and costs nothing (if you already own some tubing).

In order to do it, sickness simply cut four pieces (~2 cm long) of heat-shrink tubing, put them at the shoelaces tip, apply heat, and it’s done. Note that the tubing should be of about the same diameter as the shoelaces.

Besides being very easy to do and looking great, the heat-shrink tips are very sturdy and flexible, so they won’t break again. I wonder why they still use hard (breakable) plastic for manufacturing shoelaces tips.

Also, the fact that I used synthetic shoelaces had no effect at all (I was afraid the shoelaces would melt with the heat). Besides the tubing seemed to slightly adhere to the shoelaces when heated, thus resulting in an even stronger structure.

Finally, note that I should have used slightly shorter tubes and removed the old plastic from the tips (it makes small bumps).
I have seen many times those little anti-theft devices stuck to PDAs, viagra sale
digital cameras and all sorts of small consumer electronics products and I always wondered how they worked and imagined they were very complicated systems involving delicate glass switches (for detecting violent tinkering), diagnosis optical proximity sensors (for detecting the change of distance/reflectivity between the device and the protected product), impedance meters on the alarm system base (for detecting the change of impedance when someone replaces the device by an equivalent circuit), etc.

The other day I was lucky enough to see (and even photograph) a broken shoplift “sensor”, as they are called. I discovered that they are very simple and not that secure.

Here are my findings

Original Pictures:

How I think the system works:
The above diagram is self explanatory and it shows how simple and easy to defeat they are. The system only involves a simple metal switch and a big plastic button to operate it.
Finally, see I got the ultimate (engineering) bling: The Iron Ring.

Needless to say, info I’m happy. Also, since this means that now that I’m an engineer (only morally, not legally), I should post some nice complex projects instead of the simple things I normally blog about.

Below you can enjoy a few pictures of my homies (David and Cynthia) and I.

Note the (rather clever) use of gangster slang to denote how “fresh” we have become now that we have the ring 😉
I own a few Rev. C Bare Bones Boards witch came with ATmega168 chips burned with the old Arduino bootloader (NG). I wanted to upgrade them to the newer (Diecimilia) bootloader so I built a parallel programmer following the instructions in the Arduino website and using parts I found in the garbage (as usual).


  • Two 470 Ohms resistors
  • One 220 Ohms resistor
  • Some wire
  • A female header at least 3×2
  • A ferrite core (not required but looks cool)
  • Some heat shrink (it could be replaced by some electrical tape)
  • A male parallel port connector (DB-25)

Programmer Schematics
(this is a vectorized version of the original schematics on the Arduino site)


I got a DB-25 connector from an extension parallel port of a PC I found in the garbage. First, buy cialis I removed the original cable that came with it and I soldered the programmer’s resistors to the back of the DB-25 and connected them to new wires. Then, I covered the resistors and cable connections with a piece of heat shrink tubing.

The new wires where terminated in a 4×2 female header (even though there are only 5 wires). The wires and female headers come from an old computer (they connected the power buttons and the case LEDs to the motherboard). I cut the header to size from a larger header (form the same old computer) and I used an extra row to mark it with a white pin cap so I could easily remember where the #1 pin is located.

Finally, I added a ferrite core and twisted the cables in order to reduce noise and cross-talk. I don’t think this is really required but it looks nice.

16 thoughts on “ATmega168 Parallel Programmer

  1. Hi Eko,
    The Arduino bootloader can be burnt to the Arduino board by using the Arduino software.

    If you have no Arduino board whatsoever, Maybe you should have a look at this (if you haven’t already):

    If you prefer to program in C and then compile it and upload it to the ATmega, you could use AVR-GCC and AVRDUDE.

    I hope this helps. Good Luck

  2. Hi Carlitos..

    Im a total embedded noob playing around with an empty atmega168 and arduino.

    what program did you use to upload the bootloader? I cant upload sketch nor the bootloader to my Atmega168. I hope you have some tips for me, i’ve followed everything the site told me to do. Ive been hangin around the arduino forum for days with no result.

    Maybe you could also make a tutorial as well 😀

  3. Hi Carlos,

    I have wired up your parallel port programmer for use with an ATMEGA8 in the Arduino Diecimal board as an external programmer.

    When I try to compile and upload my programs using Arduino and your parallel prot circuit, I get the error:
    Can’t find programmer id “null”

    I added the statement upload.using= Parallel Programmer to the preferences.txt file.
    I got the same error.
    I changed this to upload.using = dapa
    Same error
    I even included statements: Programmer
    Upload.using = avrdude.conf:658

    same error.
    Sorry for being naive. Can you help with the correct statements /advice.


  4. Bala,

    I use the programmer only for burning the bootloader, and I am very far from anything remotely similar to an Arduino at the moment (and for a long time) so I cannot try and compile something to see how it works. I think your best chance is to look at the page where I got the programmer model ( and the Arduino website in general.

    Enjoy your Arduino hacking.

  5. Maybe its a good idea that you first check your parallel port settings. Make sure that it is ECP. you can change it from bios.


  6. Hi Carlos and Setio,
    Actually, Initially I wired the parallel port adapter ONLY for bootloading the ATMEGA8, as I anyhave the serial cable for laoding programs via the Diecimla to ‘bootloaded’ chip. I tried bootloading via diecimla and via a breadboarded version (as per arduino site). Using the Arduino software if I chose the diecimla board option and then try to bootload, I get a message avrdude: initialisation failed, rc=-1
    invalid device signature. Expected signature for ATMEGA168 is 1E 94 06.
    If I use the ArduinoNG or older w/parallel programmer option I get a simialr message with expected signature for ATMEGA8 is 1E 83 07

    Your site says enter an id in preferences.txt at the upload.using line for the programmer from the programmers.txt file. Obviously my statements (ref earlier email) are wrong. Hence,which is the correct id for your parallel port programmer? Are any other lines to be added in this case?

    I need to be able to bootload the ATMEGA8, hence I’d very much appreciate your help.

    Since giveio is installed the parallel port is recognised.

  7. Bala,

    I used UISP and AVRDUDE instead of the Arduino software.

    RC=-1 might indicate that ur parallel programmer is not working.

    Again, make sure that your parallel port is ECP. have u done this? otherwise this will not work at all. Check this via the device manager. Another thing was the interrupts. I cant remember which to use just make sure its ECP and try it with the three different option of interrupts.

    Btw, i used it as port1 and address is 0x378.

    I used the UISP to check if my parllel programmer is working or not, then i used AVRDUDE to upload my hex file.

    check out my questions at the arduino forum. they too have some info for Atmega8.


  8. Sweet article, thanks! 🙂

    I built one of these purely to burn the boot loader to my ATMega168, but for several frustrated hours I kept getting:

    avrdude: Device signature = 0x000102
    avrdude: Expected signature for ATMEGA168 is 1E 94 06
    Double check chip, or use -F to override this check.

    Occasionally the device signature would be another random number, but mainly 0x000102.

    I found that shortening the cable between the parallel port and chip solved the problem. I have also read that lower value resistors could have been a solution too.

  9. Hello J,

    I’m glad you liked the article.

    The length of the wire can be a problem indeed. Thus is where twisting the wires together and using a ferrite core comes in handy.

    I’m glad you got your programmer finally working.


  10. Hi, carlitos
    i think u can help me in my project coz im facing a problem which is related to prgramming atmega168 through USBASP programmer
    i have avr dude with me,
    eroor showing is the device signature error and the same that expected signature is 1E94 06..etc
    can u help to remove this error….

  11. Sajid,

    I’m afraid I cannot help you pout with that one since I have never tried to do that.

    Sorry about that. Cheers

  12. hi Carlos, nice presentation on the parallel programmer.
    according to forum users at, the Atmega8 works fine,
    but Atmega168 does not.
    are you sure this can work on the 168???!

  13. I’ve built this avr serial programmer.
    in contrast to the parallel port programmer, it can act as an external programmer.
    no need bootloader whatsoever.
    but it doesn’t work so far… might be due to the tedious wiring.

    1) after u burn the bootloader into Atmega8/168 using parallel port programmer,
    2) then u just connect it serially / usb to program like normally to load future project codes?

    could you verify point 2) for me Carlitos

  14. @calfred
    You are right. After burning the bootloader, you should be able to program the device serially (thats the purpose of the bootloader).

    The programming may fail some times, but it hapend to me only once or twice, in which case you can simply resend the program. Also, keep in mind that the length of the wires may affect the performance of your programmer.

Leave a Comment

Your email address will not be published. Required fields are marked *