This article is to introduce you to how DMX works and some tips to troubleshoot it. If you are looking for resources on how the serial protocol is written so that you can create your own DMX code library, there are some details at the end.
For info on how to set up DMX lights in Horizons, check out the Horizons DMX Tutorial.
DMX is the ANSI/ESTA standard protocol for controlling lighting in the stage and studio industries. It can control dimming racks, LEDs, and special effects devices (fog machines, hazers, strobes, etc.). DMX stands for Digital Multiplexing. Back in the day, each dimmer needed its own pair of control wires. Protocols came out to send this data over smaller numbers of wires, a process called multiplexing. DMX made that process digital in the early 1990s. There are two forms of DMX: DMX512 (original) and DMX512A. Rev A fixes a MAJOR bug and was released in 1993.
DMX is a modified version of the RS485 serial protocol. It sends out a packet at a consistent speed. In many controllers, you can adjust this speed because some very cheap LEDs struggle with a fast packet rate. Each packet contains 512 values. These values are called addresses. Each address can hold a value from 0 - 255.
512 addresses, each holding a value from 0-255. That can be 512 dimmers. Today though, it is likely not a bunch of dimmers.
LED fixtures use more than one address per fixture. An LED fixture is like having multiple dimmers in one light.
Let's look at a fixture with Red, Green, and Blue LEDs: Red - Address 1 Green - Address 2 Blue - Address 3
Sending a packet that has “START,255,0,0,…” would be RED at 100%, Green at 0%, and Blue at 0%.
Sending “START,255,0,255,…” would be Red at 100%, Green at 0%, and Blue at 100%. This would make purple or magenta, depending on the specific version of red and blue LEDs in the light.
LEDs come in many color palettes. Some are RGB, RGBA, RGBW, RGBAW, etc.
There are more complex devices out there than just LED lights. Some lights have motors that pan and tilt the light, move patterns, shape the light, focuses lenses, and more. Other devices generate fog, fan that fog, preheat the fog generator element, etc.
That is why the values are 0 - 255. Light/color is usually converted from percent to a numerical value. Motor position will often makes use of these extra slots. Some complex devices use two addresses (coarse and fine) to adjust motors and other parameters.
Footprint is the number of addresses that are used to control a specific device. An RGB light has a footprint of 3 addresses. These three addresses must be in order.
Start Address is the first address in the footprint. If an RGB fixture (footprint: 3) has a start address of 1, then Red is 1, Green is 2, and Blue is 3. You only tell a fixture or device what its first address is and it figures out the rest.
Fixture Mode/Fixture Profile is the way the fixture is configured to read DMX. Some lights can be RGB, IRGB, IRGBS, IRrGgBb, etc. Each mode reads different DMX addresses. Note that the “I” usually means intensity and “S” usually means strobe control. IRrGgBb refers to an IRGB light where there are two addresses per color, making 16-bit color and 8-bit dimming.
8-bit & 16-bit Control is a way of getting more specific control over a parameter. For example: this could be an IiRrGgBb fixture. That means that Intensity is address 1 & 2, Red is address 3 & 4, Green is address 5 & 6, and Blue is address 5 & 6. The first address of each parameter is the coarse adjustment and the second address is for fine adjustment. This is also common for motor control that needs more granularity.
Parameter is the word we use to define something controlled by an address. The RED parameter could be one or several addresses but is all part of one fixture. Pan, Tile, Strobe, Intensity, etc. are some other common parameters, in addition to color.
DMX Universe is one chunk of 512 addresses. This is normally sent over a single DMX cable to every fixture. Each fixture takes the info from the addresses that they need and ignores the other addresses.
DMX Terminator is a ~120ohm resistor installed between the DMX+ and DMX- contacts. This gets put on the THRU port of the last device in line. If you have a 3-pin or 5-pin XLR port on the fixture, just buy one online. This device is SUPER IMPORTANT because it prevents signals from bouncing back down the line in the wrong direction. It can create a TON of chaos. Some really expensive broadway- and film-grade LED will self-terminate. Most bridge builders will never use these though.
RDM is Remote Device Management. Horizons doesn't currently support this but some splitters, controllers, testers, and more do. This lets you change fixture settings, read sensor data, and more remotely. It will send a packet or two back to the controller in the space between DMX packets.
DMX Loss Behavior is what a fixture does when it stops receiving DMX packets. Some fixtures will Hold Last Look based on the last packet, waiting for a new packet to arrive. Others will Wait and Fade at the last packet look for a specific time, before fading the lights out. Other fixtures will just turn off when DMX packets stop flowing. *Check your ConstandDelivery setting in Horizons based on how your fixture handles packet speed/loss.*
If you set two devices to the same Fixture Mode and Start Address, they will both follow the exact same commands. It won't be possible to change these fixtures independent of each other unless you change their settings. This can be helpful in Horizons if 15 segments of LED tape will all report the alert status. You could set them as the same mode and start address and cover all of them with the same addresses. This is fast, simple, and easy.
If you have area lighting, it may be more advantageous to control these lights individually. This is common in Horizons if you want to fire different lights at different times as part of a visual effect.
Remember, you can only have 512 addresses on one DMX Universe. Some controllers support more than one Universe.
DMX is a serial protocol. You can't just plus it into a TCP/IP network. That would be bad!
You can send DMX over a computer network using either sACN or ArtNet. Both are ANSI/ESTA protocols for turning DMX into a network packet. Eventually, it will need to be turned back into DMX unless you are sending it to an expensive fixture that has the ability to join a network and be controlled by sACN. You can run over 64,000 universes of DMX over a single IT network; however, more than 15 Universes may require a special network setup to ensure traffic gets where it needs to go (and doesn't congest the data lanes where it doesn't need to go).
Horizons and M3 have the plumbing to support sACN. You would then use an sACN Gateway or Node to convert back into regular DMX.
DMX uses a shield and two wires. The shield lands on Pin 1, the DC - lands on Pin 2, and the DC+ lands on Pin 3. The industry standard for DMX is a 5-Pin XLR. It can run over a 3-Pin XLR but often this is avoided so that Mic Cable and DMX Cable don't get confused. Cheap fixtures use a 3-pin cable since DJs have a lot of mic cable. Beware of mic cable as it doesn't have the correct impedance or resistance. It may work fine over short distances.
On a 5-Pin XLR connector, pins 4 & 5 are spare and dedicated for the future.
DMX has a wire limit of 1,500 ft from the controller to the last device in the run. It always uses a daisy chain unless there is a powered splitter.
DMX can also be sent over CAT5 or CAT6 cable. You can connect DMX using an RJ45 connector. Don't confuse DMX over CAT5/RJ45 for DMX over Network! If you use CAT5/CAT6, the distance limit is reduced 500 ft.
Are your lights stuck OFF…?
Are your lights flickering & flashing…?
Are your lights just doing the wrong thing…?
DMX Testers
For help buying any of this DMX gear, feel free to reach out to Jazzy in the Discord!
sACN Testing Software
ArtNet Testing Software