Mar 29

Print this Post

DMX512 Protocol at Low Level


DMX512 (acronym for Digital Multiplex 512) is a serial protocol widely used to control lighting equipment. It was created to define a common communication standard between all the lighting devices, regardless of the manufacturer.

Before robotic lighting appeared, lighting in shows was based on simple projectors, with color filters placed in front of them to create different environments. Each projector can be controlled with a single DMX channel – if you have 24 projectors, you only used 24 DMX channels of the 512 – each one defining de projector intensity.

However, a more “intelligent” fixture may require several channels (usually one for each parameter) – pan, tilt, color, gobo, etc… The 512 after the DMX is just the number of control channels used in one “universe” (in case you are guessing, yes, it is usual to drive multiple universes when you deal with hundreds or thousands of lighting fixtures). Usually, a live show or concert can live with a single universe. Each channel ranges from 0 to 255.


Although the signal can be seen as a frame of LOW and HIGH bits, these are encapsulated inside the RS485 standard, which is a type of differential signaling protocol. Why differential signaling? Well, if we think of external noise entering the cable and messing up the signal, when you have one single line referenced to the GROUND, you are more likely to have errors than if you use a differential pair, because in this case, the noise affects the pair, and the receiver will then extract the information from the difference between both signals. So, it’s RS485 that provide the conditions to place the DMX controller dozens of meters away from the first controlled device.


The devices are connected in a daisy-chain fashion, from the controller to device 1, then device 1 to device 2 and so on… It’s very important to terminate the transmission line properly. In the case of a RS485 line, a resistor of 110-120 ohm is placed in the last device. The terminator is used to absorb the energy and avoid reflections – which is also a common problem in transmission lines, causing unexpected errors.

As this standard only supports 32 devices on one network branch (at a distance of up to 1.2 Km), it is common to use DMX splitters (or repeaters) to create more branches. These splitters use optical isolation to protect each segment of the network. Don’t even think about making Y-cables or T-connectors to split the DMX signal. DMX splitters are the way to go! However, It’s usually safe to go beyond the limit (32 devices)…

Signal Timing

It is very easy to understand this protocol. Basically the controller (RS485 master) continuously sends (up to) 512 bytes over a RS485 line, in an asynchronous mode, while the rest function as slaves (dimmers, intelligent fixtures, etc.). A standard 8N2 byte encoding is used (1 startbit, 8 databits and 2 stopbits). Before the transmission of the 512 byte array, a special break pulse is transmitted. The figure shows a sample DMX signal. Data bits can be 1 or 0, depending on the data being transmitted. (click on the image for a larger version)



Name Tx requirement Typical/suggested Tx Rx requirement
Break (a space)
(the packet start)
>= 92 us 100-120 us
176 us (DMX512-A-2004)
>= 88 us
Mark after break
(in packet start)
>= 8 us 12 us 4 us – < 1 s backward compatible
8 us – < 1 s DMX512-A-2004
Slot/frame width 44 us 44 us 44 us
Inter-slot/frame time
Mark time between slots
< 1 s minimal < 1 s
Mark before break
(Idle time after packet)
< 1 s minimal < 1 s
Break to Break time
(DMX2512 packet length)
1204 us – 1 s minimal 1196 us – 1.25 s


About the author

Ricardo Dias

Ricardo Dias was born in Entroncamento, Portugal and is studying Electronic and Telecommunications Engineering at University of Aveiro. He is a researcher in robotics and is currently the Team Leader of CAMBADA@MSL team. As a hobby, he is also a freelancer Stage Lighting Designer.

Permanent link to this article: http://ricardo-dias.com/2013/03/29/dmx512-protocol-at-low-level/

Leave a Reply

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