DMX512 is a digital communication standard that sends control data over a single cable to multiple devices, like dimmers, spotlights, and moving heads, typically used in theatrical, concert, and event lighting. The data is sent in packets with up to 512 separate channels, each controlling a specific aspect of the lighting fixtures.
At the data link layer, a DMX512 controller transmits asynchronous serial data at 250 kbit/s. The data format is fixed at one start bit, eight data bits (least significant first), two stop bits and no parity.
Each frame consists of:
- Break condition
- Mark-After-Break
- Slot 0, containing the one-byte Start Code
- Up to 512 slots of channel data, each containing one byte
The start of a packet is signified by a break followed by a „mark“ (a logical one), known as the „Mark After Break“ (MAB). The break, which signals the end of one packet and the start of another, causes receivers to start reception and also serves as a frame (position reference) for data bytes within the packet. Framed data bytes are known as slots. Following the break, up to 513 slots are sent.
The first slot is reserved for a „Start Code“ that specifies the type of data in the packet. A start code of 0x00 (hexadecimal zero) is the standard value used for all DMX512 compatible devices, which includes most lighting fixtures and dimmers.
Timing
Vision Core DMX512 timing parameters:
| Min Break (μs) | Typical Break (μs) | Min MAB (μs) | Typical MAB (μs) |
|---|---|---|---|
| 120 | 150 | 12 | 15 |
Maximum times are not specified because as long as a packet is sent at least once per second, the BREAK, MAB, inter-slot time, and the mark between the last slot of the packet and the break (MBB) can be as long as desired.
A maximum-sized packet, which has 512 channels (slots following the start code), takes approximately 23 ms to send, corresponding to a maximum refresh rate of about 44 Hz. For higher refresh rates, packets having fewer than 512 channels can be sent.
The standard does not specify the minimum number of slots that can be sent in a packet. However, it does require that packets be transmitted so that the leading edges of any two sequential BREAKs must be separated by at least 1204 μs, and receivers must be able to handle packets with break-to-break times as short as 1196 μs. The minimum break-to-break transmit time can be achieved by sending packets that contain at least 24 slots (by adding extra padding bytes, if necessary) or by stretching parameters such as the BREAK, MAB, Interslot, or Interpacket times.
