landet here without frameset?: HOME



Timer Remote Control



The purpose of this page is to explain how to build a remote control for an EOS 300d/350d with timer capabilities with following preconditions:

  easy to reproduce even for "not talented" persons  
  no selfmade PCB  
  minimum component count  

Information from this homepage must beused only for noncommercial purposes. I strictly forbid to sell thisinformation or to gain any profit from remote controls built according to these instructions. Feel free to build your own remote control for private use.

I do not take over any responsibilities if you damage any equipment or risk your health while carrying out these instructions.

I had the strong need for a timer based remote control for my DSLR to control long exposures in bulb mode. There are some instructions in the net how to build such a device all by yourself. Unfortunately all of them are based on a selfmade PCB and a microcontroller which has to be programmed by a seperate device (JTAG-box, programmer, etc.), which could be annoying for people with limited hardware knowledge or limited financial background. Thus I searched for a solution with minimum hardware effort for the user while allowing the user to upgrade the firmware without any programmer-device.

If you don't like some features, feel free to download the sourcecode, change it, compile it and reprogramm the device.

This is my solution

I used the "off the shelf" demo board AVR Butterfly from ATMEL for my timer remote control. ATMEL has built this board as a demonstrator for their ATMEGA169 processor. Have a look here for a detailed description of the board.


AVR Butterfly has already everything we need onboard: LCD, joystick, buzzer, battery

You just need a

- serial cable to update the board's demo firmware with my timer firmware
- the development software for reprogramming the firmware (AVR Studio for free)
- a 2,5mm plug for the remote-control socket of your Canon EOS 300d/350d
- 2 wires to connect the plug with the board

If you think you need a backlight you can add some LED's (copper wires in the picture above), but they are optional.

You can find the AVR Butterfly board for around 30 EUR, just google for it.


- manual shutter release
- automatic shutter release (shutter-time up to 99:59, wait-time between two cycles of up to 99:59 and up to 99 cycles)
- 4 different backlight modes: OFF, always ON, ON if environment is dark, AUTO (3s after every keypress event)
- buzzer tone if shutter time expires (can be disabled)
- backlight turns on if shutter time expires (in AUTO backlight mode)
- keypress click-sound (can be disabled)
- temperature measurement and display on LCD
- all settings are stored in a none volatile memory
- free available development tools and free source code, so if you miss a feature or want anything changed you just need some C-language know-how, the source code is easy to understand


Update v1.1

Specify the mirror lockup time in seconds in the MIRROR submenu. Keep in mind to enable mirror lockup on the DSLR as well.
To disable this feature, specify 0 as lockup time and disable mirror lockup on your DSLR.


Update v1.2

Testversion, no release


Update v1.3

Atmel has changed the LCD for their butterfly board. This version has some adjustments to interface properly with the new LCD.
you have good contrast with the shipped ATMEL demo firmware but suddenly have bad contrast after upgrading to my timer firmware you most likely have the new butterfly board with the new LCD. Just use version 1.3 and you should be fine.
(ATMEL calls the old boards REV 06 and the new REV 07, none of them is better they just differ in hardware)

Since I don't have one of those new boards, I had to make some trial-and-error iterations to find the difference. On of these trials is a contrast submenu in the options menu. This menu entry was no solution for this problem. However, it's still part of the firmware since I'm too lazy to remove it again.

Hardware Modifications

Connect the 2,5mm plug with the AVR Butterfly board according to the picture below:

The LED and resistor are optional and can be used as LCD backlight. You can also use more than this one LED as backlight (simply use another LED-resistor group and place it in parallel to the LED-resistor group in the drawing). I've used 2 LED's (at the left and at the right of the LCD) and 470 Ohms resistors. The resistors are depending on the LED you are using.

My LED implemantation:


Download the Timer Firmware to the Board

Step1: build a serial programming cable

Use a 9-pin Sub-D plug (must fit into the serial port COM1 of your PC) and 3 wires to make a connection according to the picture below.

Step2: download and install the latest AVR Studio from ATMEL (at the time this instruction was written this is AVR Studio 4.11 (build 401)

Step3: connect the serial cable with your PC and set the processor of the AVR Butterfly to the bootloader mode (either by choosing the "Options -> Bootloader -> Jump to Bootloader" menu item with the joystick of the board, or just take out the battery at the back of the board and plug it in again)

Step4: Download the new firmware from here and unzip the file to your local harddrive.

Step5: Start AVR Studio, press the joystick on the AVR Butterfly and keep it pressed, select "AVR Prog..." in the Tools menu of AVR Studio. Select the "Timer.hex" file in the "default" directory of the unziped archive with the Browse button. Hit the "Program" button below the "Flash" capital. Wait till "Erasing, Programming and Verifying" has been executed automatically and hit the "Exit" Button afterwards.

There is NO WAY you can do anything wrong. Even if you plug out the serial cable during programming, the bootloader will still remain in the AVR Butterfly and you can start all over again and reprogram the new firmware. You can always access the bootloader by removing the battery and inserting it again, then proceed with step 5.

After successful completion of these steps your new timer-remote-control is ready to use. Now you can desolder the serial cable, you won't need it anymore (unless you want to make some modifications in the firmware).

User Interface

Improved LCD appearance

Due to the hardware implementation some segments on the LCD can't be driven independently. Therefore you should remove R200 on the back of the board.

R200 not removed


R200 removed

If you don't think you have the skills to remove a SMD resistor you better leave R200 untouched. If you leave R200 you will end up with 2 colon symbols instead of one. The display will show ":01:59" instead of "01:59". And if you adjust the minutes of the shoot- and wait-time you will get two cursors below the minutes display instead of one:

LCD if R200 is not removed

So removing R200 is really not necessary.



my firmware is based on the avr-gcc port from Martin Thomas (thank's for your permission):


both our source-code is based on ATMEL's AVR Butterfly - Application Rev06


if you try to change anything in the sourcecode you will need the gnu gcc compiler in addition to AVR Studio. The compiler is part of winavr:


my Timer firmware:

new firmware v1.1 with mirror lockup support:

new firmware v1.3 with support for new butterfly boards (contrast issue):

new firmware v1.4 mirror lockup bug fixed (noticeable with 400D):


DRI (dynamic range increase) extension based on my timer firmware:


Enhanced astronomy and DRI implementation by Thomas Knoblauch based on my timer firmware:


18. oct. 2005 (v1.0 initial version)
18. oct. 2006 (v1.1 mirror lockup)
26. march. 2007 (v1.3 contrast adjustment for new butterfly boards)