Tally Light

The PLUG AV Project Tally Light System.

Using GPL open source tools to design and develop a complete hardware/software project.


The PLUG AV Team use a Linux video setup with multiple cameras to record and stream all PLUG organized meetings and talks. When multiple cameras are being used, it is useful for both the recording team, and the people giving a presentation to be aware which camera is currently “live”. This is normally done by activating a red light over the selected camera. This is known as a “Tally Light”.

Camera with Tally Light attached

The software used by the PLUG AV Team to capture the video camera streams is capable of sending a message when a camera is selected or deselected. This is traditionally used to power a red LED using the DTR signal on an RS232 serial interface. As RS232 ports are now obsolete and are becoming increasingly rare it was felt that a better solution could be developed.

Design criteria.

Once it was decided to redesign the Tally Light, I defined a few key principals to guide the design.

  1. It must be developed using GPL open source tools.
  2. It must work “out of the box”.
  3. It should be extensible.
  4. The final product will be GPL licensed.


Based on the above principals, and guided by my own experiences I decided to base the circuit on an Atmel AVR Tiny microcontroller (http://www.atmel.com/ ), and to use a GPL’ed software implementation of the USB protocol (http://www.obdev.at/products/vusb/index.html ).

All circuit design work will be done using gEDA, the GPL Electronic Design Automation suite. (http://www.geda-project.org/ ) in particular gschem, pcb, and gerbv.

The Atmel range of microcontrollers are all fully supported under Linux using the avr version of gcc – avr-gcc, and can be programmed using the avrdude tool. Additionally, the eclipse IDE has an add on to ease AVR development and firmware uploading.

Communications Protocol

To support an extensible architecture that could be used “out of the box”, I opted to use MIDI as the underlying protocol. MIDI (Musical Instrument Digital Interface) is a protocol originally designed to allow musical instruments to interact electronically and for computers to generate music that could be shared between different MIDI playing and recording devices. As MIDI has grown in popularity, so too has it’s range of applications, and the MIDI protocol is very well supported in Linux as part of the ALSA sound architecture.

MIDI is now commonly used to provide an abstraction layer between hardware control devices and software applications, and the dvswitch application that the PLUG AV team use is also starting to develop support for MIDI to extend it’s own internal controls so this seems like an obvious fit.

The current Tally Light device only requires a simple light on/light off protocol, so it was decided to use the MIDI Note On/Off message type to control the unit. The first available light on each device will be set to use the note on command for the Middle C musical note. Initially all Tally Light devices will listen to MIDI channel 1.

Update: I now understand that the dvswitch project is implementing OSC (Open Sound Control) in their software. I’ll continue using MIDI until this is stable, and we can be sure the OSC support will translate to our needs, and will still provide an “out of the box” solution.

Circuit Design

The circuit design has been done using gschem this is part of the gEDA suite mentioned above. Using gschem allows you to design an electronic circuit by combining electronic components from a library with a network (actually several networks) of interconnections. Additionally, each component has a set of attributes associated with them. Some of these attributes are used to add text descriptions to the diagram, such as the component number, it’s name and optionally it’s value. There is also another important attribute – the footprint – which is a necessary part of the next step – designing the pcb layout. We’ll come back to this at a later stage when we look at the pcb design process.

Leave a Reply

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

Captcha loading...