For more DMX info, click here.
First published for the Theatrical Dealers Association at the 1993 USITT Convention, Wichita, Kansas
The following text may interest some of you. It may be too technical for some, too simplistic for others. I was never told how serial data communication worked in school; it seemed very complex. In working with DMX512 over the past several years I've come to realize it is not magic. I hope you find this explanation helpful.
What is DMX512? DMX512 is a standard published by the U.S.I.T.T. of a protocol for the control of lighting dimmers. It's use has been expanded by industry to include the control of moving lights, color changers, slide projectors, and anything else that someone wants to control from a lighting console.
How does it work? DMX512 is a digital protocol. It divides the light levels from 0 to 100 percent into 256 steps. The lighting console sends the levels to the dimmers as a sequence of numbers. The console first sends out a reset signal referred to as the break. This is followed by a special number called the start code. The number following the start code is the level for dimmer one. The number following the level for dimmer one is the level for dimmer two. This series of numbers continues until the console runs out of dimmers or it reaches the maximum number allowed in the specification: 512. The console then starts all over again with the break.
Why 256 steps? Computers have invaded lighting control. Whether you like it or not, there is probably a microprocessor in your DMX system. Computers use binary numbers to represent data. Most microprocessors use eight binary digits (bits) as their basic number format. With this format there are 256 possible combinations of ones and zeros. Dividing the minimum to maximum level into 256 steps provides the maximum resolution possible within the eight bit constraint. For greater resolution two dmx channels are used together to yield 256 X 256 combinations or a resolution of 1 in 65,536.
Sending numbers on wires. DMX512 did not invent the method of sending the numbers (representing levels) from the console to the dimmer. Several standards already exist for communicating digital information over wires. DMX512 adopted a method called EIA-485. Here's how it works: The console sits idle with the +Data line at about 4.5 volts (ignore the -Data line for now). When it's ready to send a number it places a lower voltage on the line (about 0.5 volts). This is called the start bit. This lower voltage is placed on the line for a precise amount of time: 4 uS (micro seconds... millions of a second). Following the 4 uS start bit, the console sends the least significant of the eight bits. If the least significant bit is a one, it puts the higher voltage on the +Data line. If it is a zero, it puts the lower voltage on the line. That bit remains on the line for 4 uS also. After the least significant bit is "sent", the remaining seven bits are placed on the line, ending in the most significant bit. The fact that each bit stays on the line for a precise amount of time allows the dimmers to synchronize to the start bit and read the eight data bits that follow. After the eight data bits are sent, the specification requires that the console idle the +Data line in the high voltage state for 2 bit times or 8 uS. These two idle bit times are called the stop bits. After the required 8 uS (minimum) idle time, the console may send the next number.
Least significant, Most significant. The least significant digit of a number is the right most digit. For example: In the number 1027, the 7 is the least significant digit, the 1 is the most significant digit. If the 1027 represented your salary, you would be most concerned if the 1 was to change, least concerned if the 7 was to change. Interesting knowledge, but probably not important to you.
- Data line. The -Data line in DMX512 carries the exact same information as the +Data line except its inverted. When there is a high voltage on the +Data line, there is a low voltage on -Data. When there is a low voltage on the +Data line, there is a high voltage on -Data. What is important to the dimmer is not the voltage of either line, but the relationship between them. When the +Data line is higher than the -Data line, a one is being sent. When the +Data line is lower than the -Data line, a zero is being sent. Using two lines, and detecting the data as the relationship between them instead of a fixed voltage, provides highly reliable communication.
Break signal. Earlier we said the console reset the dimmers to be ready for the level for dimmer one by sending a break signal. The break is a special case of the +Data line staying low for "too long". Remember we said the +Data line could go low for the start bit plus eight data bits but was then required to return to the high idle state for at least 8 uS? The break signal purposely "breaks" that rule. The dimmers can detect the break signal and reset their counter to be ready for the level for dimmer one.
Start code. After the break there is one number prior to the level for dimmer one. It is called the start code. The start code allows for future expansion of DMX512. The start code is almost always a zero in current systems, which is sometimes referred to as a null. Hence the term null start code is often heard.
Mark after break. Now there's a term guaranteed to confuse, but one you'll need to know when talking DMX. First, what's a mark? There is probably some technical definition, and I'll probably be told I'm over simplifying, but as far as I can tell it's a "one". That is a mark is when +Data is high and -Data is low. The opposite state is the "space" which again as far as I can tell is a "zero". The terms Mark and Space come from teletype days. I already explained that a break is when the +Data line stays low "too long". So if the +Data line is low for a long period of time (the break), and then goes high (the mark) and then goes low again (for the start bit), what do we call the period of time that the +Data line was high? You guessed it: the Mark After Break, or MOB for short. Why is this important? Because of a boo boo in the original DMX specification.
The Boo Boo. The original DMX512 specification stated that a minimum idle time of 8 uS was to follow each dimmer level. But it specified the idle time following a break, and before the start code was to be exactly 4 uS. First boo boo: The idle time following the break should not be shorter than the idle time following the data bytes, 8 uS. Second boo boo: The idle time should be a minimum time, not an exact time. The revised DMX512/1990 specification corrects these errors. It specifies a console shall idle the line for a minimum of 8 uS after the break.
This is Important. Knowledge of the boo boo is important because some dimmers cannot handle the shorter 4 uS mark after break that was allowed in the original specification. To make things worse, some manufacturers didn't question the boo boo and went to great pains to generate an exact 4 uS mark after break. I know at least one console allows the user to select either a 4 or 8 uS mark after break via internal jumpers. Here's what you need to remember: Always select a console that outputs an 8 uS mark after break (one that meets the DMX512/1990 or later specification). If configurable, set your consoles to output an 8 uS mark after break. All dimmers can deal with an 8 uS mark after break but some cannot deal with 4.
This is less important. If you are stuck with a console that has a 4 uS mark after break, check with the manufacturer about an update. There were only a few manufacturers which actually met the original 4 uS specification and most of them have updated software to the 1990 standard. If you still can't get away from the 4 uS mark after break, be aware that some dimmers, color changers, moving lights etc. will not work correctly with the shorter time.
This is the end. Well this concludes my rambling about how DMX512 works. If its been enlightening, great. If not, remember I'm a better engineer than I am a writer.
Late Addition. According to Bob Goddard (another DMX Dude) the terms Mark, Space, and Break come from teletype lingo. When the teletype operator had to leave his set, he would attach a device that made a mark on a strip of paper similar to a ticker tape machine. The idle state for the teletype was with the pen held down, making a MARK. The non-idle state would allow the pen to lift causing a SPACE on the moving strip of paper. If the teletype cable was to physically break, the pen would lift causing a long space to appear on the paper. Hence a longer than normal space is referred to as a BREAK. In DMX512, marks are used to represent digital ones, spaces are used to represent digital zeros, and breaks are used to synchronize the receivers.
My tips are based on my own experiences and knowledge gained from talking to other trouble shooters. They may not always be the best way to solve a particular problem.
Never split a DMX signal with a "wye" cable. Use a splitter device that buffers each line separately or daisy chain from device to device.
The problem with splitting the signal with a wye cable is that the signal going up one leg of the wye is reflected back down and corrupts the signal going down the other leg. The longer the legs of the wye, the worse the problem. A wye where each leg is 10 feet may work fine but may fail if the legs are increased to 100 feet. A lot has to do with the quality of the cable, the strength of the signal at the wye point, and how long it's been since you last made a sacrifice to the DMX god.
If you must split the signal, and you don't have a buffered splitter, do it as close to the source as possible, i.e. at the console. If you have an isolator available, place the wye at the output of the isolator. If you have two isolators available, place the wye at the input to the two isolators (which is like making your own splitter).
If your DMX receivers are spread out (such as color changers along a truss), those same reflections that cause signal corruption on wye connections can corrupt the signal to the early receivers on the link. That's because the reflected signal is slightly delayed from the initial signal, and they add together. If I had time I could probably figure out how much cable one would have to have between the first and last receiver before reflections would be a problem... but I haven't. Besides, it's based on what kind of cable your using, the type of console, etc.
editor's note: Since this paper was first written Mr. Fleenor has published a paper titled Why Terminate which goes into more detail on cable length, reflections, and termination.
To get rid of the reflections you can put a termination resistor at the end of the control cable. This, in theory, absorbs the electrical energy coming down the cable so that it is not reflected back up the cable. To work properly this resistor needs to match the "characteristic impedance" of the cable. This is sometimes published by the manufacturer, but is often unknown. I recommend a value of 120 ohms. This is a common impedance for data cables. The resistor should be placed between the +Data and -Data lines.
A good way to terminate the line is to make a "termination connector". Just place a 120 ohm 1/2 watt resistor between pins 2 and 3 of a five pin male connector. Wrap the connector with white electrical tape and label it DMX TERMINATOR (I call mine Arnold). The termination connector is then plugged into the feed through connector of the last receiver.
Warning: Some serial line drivers can only drive one terminator. That's why you can't "wye" a control run and terminate both ends. Also some DMX receivers have an internal terminator that can be switched in. Be sure you only switch the last device to the "terminate" position or you may weaken the signal beyond reliable reception.
My own experience has shown termination to be less of a problem than it's made out to be. But for the cost of a resistor, why take a chance. Especially in permanent installations. On the road, and on one-nighters it can be a pain (hey, who lost the terminator?). Before blaming a problem on lack of termination, check the quality of the cables, get rid of any wye's, and isolate the console from the control wiring.
editor's note: Again, since this paper was written Mr. Fleenor has done additional research and now recommends all dmx lines be terminated, especially any line over two hundred feet long.
DMX will (kind of) work with only one data line.
Yes its true. A DMX system will actually work some of the time with only one of the two data lines connected. Some will also work without common. The first thing to do when troubleshooting an intermittent DMX system is check that all three signal lines are continuous and are not shorted to ground or to each other. This is the single most common problem I've seen. Check Those Cables!
Isolation can do wonders.
I designed our first DMX isolator to protect consoles against dimmer failures. Since that time I keep hearing from customers about how it solved this or that problem. Isolating the console from the control line eliminates ground loops, reduces static electricity problems, provides high drive current, and cures warts. I don't try to explain all the solutions, I just listen to my customers. If they say it works, it must work. I will say isolators protect against dimmer failure, electrical storm damage, and plugging the intercom supply into the console wall plate. But as for exorcizing gremlins? Hey, if it works, do it.
Doug Fleenor Design makes isolators, splitters, and other nifty gadgets for AMX192 and DMX512.
(c) Doug Fleenor Design, 1993. Permission is granted to copy and distribute this document only in its entirety.
Doug Fleenor Design, Inc.