DMX on the wire
DMX512 is a 250 kbit/s serial signal on an RS-485 bus, and almost everything that goes wrong with it is electrical rather than logical. Three questions, answered properly.
Question one
Is one fixture one unit load?
No, and this is the single most useful thing on this page. The limit in the standard is 32 unit loads per segment, not 32 fixtures. A unit load is defined by the current a standard RS-485 receiver draws — roughly a 12 kΩ input impedance — and it is a property of the receiver chip inside the fixture, not of the fixture itself.
Modern receiver chips are commonly built at a fraction of a unit load. A fixture with a 1/8 UL receiver presents an eighth of the electrical burden of an old 1 UL one, which is why a line can legitimately carry well over a hundred modern fixtures, and why a rig of twenty-year-old dimmer packs still stops at thirty-two.
The figure is in the fixture manual, usually near the DMX connector pinout. If it is not stated, assume 1 UL and be pleasantly surprised.
Question two
Why does a DMX line need a terminator?
A twisted pair has a characteristic impedance — around 120 Ω for DMX cable. When the signal reaches the end of the cable and finds nothing there, that energy has nowhere to go, so it turns around and travels back up the line. That returning energy is a reflection, and it lands on top of the data still arriving.
A 120 Ω resistor across the pair at the far end matches the impedance of the cable. The signal arrives, the resistor absorbs it, and nothing comes back. That is the whole job.
Question three
Then why does an unterminated rig often work?
Because a reflection takes time to come back, and on a short cable it returns while the same bit is still being transmitted — so it lands harmlessly on top of itself. DMX runs at 250 kbit/s, which is 4 µs per bit, and signal travels down copper at roughly two thirds the speed of light. The round trip only starts to eat into the next bit once the cable is long enough for the delay to matter.
That is exactly what makes it dangerous. A missing terminator does not produce a fault you can find at focus. It produces a rig that is fine at ten metres and flickers at eighty, fine cold and marginal warm, fine until someone adds one more fixture and the line gets a little longer.
- Intermittent flicker on the far end of a run. Almost always the terminator, before you start swapping fixtures.
- A rig that works in the shop and not in the venue. Same fixtures, longer cable, longer reflection delay.
- Adding one fixture breaks the whole line. Not the fixture — the extra cable length it brought with it.
- A DMX cable that is really a mic cable. Microphone cable is not 120 Ω, so the terminator no longer matches anything. See ANSI E1.27-1, which is free to read.
Topology
Daisy chain, never a Y-split
DMX is a bus. One line leaves the desk, passes through each device, and ends in a terminator. Splitting it passively into three branches creates three unterminated stubs, each of which reflects, and none of which can be terminated correctly because they all share one driver.
When a rig needs to branch, it needs an opto-splitter: an active device that receives the line properly, terminates it, and re-transmits a fresh signal on each output. Each output is then its own segment with its own 32 unit load budget and its own terminator.
Question four
How does a one-way wire carry an answer back?
DMX512 has no return path. One transmitter drives the pair, every receiver listens, and nothing a fixture might want to say has anywhere to go. Which makes RDM — ANSI E1.20 — look impossible until you see the trick, which is that it does not add a return path. It takes turns.
The controller sends a packet and then stops driving the line, and while it is quiet a responder drives the same pair back the other way. Half duplex on one differential pair, arbitrated entirely by timing. That is the whole idea, and everything awkward about RDM in the field follows from it: the wire is now bidirectional in a rig full of equipment that was built on the assumption that it never would be.
RDM packets are told apart from level data by their start code. Ordinary DMX carries start code 0x00; RDM uses 0xCC. A fixture that checks start codes ignores anything that is not 0x00 and never notices RDM exists. A fixture that does not check will treat 0xCC packets as if they were levels, which is why switching RDM on for the first time in an old rig can produce flicker or jumps that look exactly like a data fault and are not.
Question five
Why does discovery find nothing through a perfectly good splitter?
Because a splitter is a one-way amplifier unless somebody designed it not to be. It takes the incoming pair, buffers it, and drives several outgoing pairs. DMX passes through beautifully. A response coming back the other way meets the output of a buffer and stops there, silently.
So the rig looks completely healthy — every fixture responding to levels, no errors anywhere — and discovery finds nothing at all, which is a confusing failure to sit in front of. An RDM-aware splitter has to detect the quiet window and turn its buffers around inside it, and then turn them back before the controller starts transmitting again. That is real work, done to a tight timing budget, and it is why RDM-aware splitters cost more and why one non-aware unit anywhere in a chain removes RDM from everything downstream of it.
The same applies to anything else in the path: opto-isolators, buffers, DMX-over-Ethernet gateways, and cheap USB dongles that turn their transceiver around too slowly. Every one of them has to be in on it. And because a long line, a missing terminator or a marginal cable all eat into the same timing budget, RDM tends to fail intermittently on exactly the lines that were already marginal for DMX — which makes it a rather good, if annoying, test of a rig you thought was fine.
Question six
How does a controller find devices it has never met?
Every RDM device has a 48-bit UID: a 16-bit manufacturer ID from the ESTA registry, and a 32-bit device ID. That is 281 trillion possible addresses and a controller cannot ask them one at a time.
So it plays a binary search, out loud, with collisions as the signal. It broadcasts DISC_UNIQUE_BRANCH over a range of UIDs, meaning roughly “anybody in this range, speak now”. If nothing is in the range, silence. If exactly one device is, it answers cleanly and gets found. If several are, they all answer at once, the responses collide into garbage — and that garbage is itself the answer, because it says the range contains more than one device. The controller splits the range in half and asks both halves. Each device it finds is told to be quiet, and the search continues until nothing answers anywhere.
Two consequences. It takes a while, and on a big or marginal line it takes minutes, which is why a console can sit there apparently doing nothing after you press discover. And it can miss devices, because a collision that happens to look like a valid response, or a response that arrives fractionally late, sends the search down the wrong branch. Running discovery twice and comparing the count is not superstition.
- One non-RDM splitter kills everything behind it. DMX passes, responses do not, and nothing about the symptom points at the splitter.
- Two controllers on one universe. Both own the line, both transmit into each other’s quiet windows, and responses get attributed to the wrong device. The resulting patch data is confidently wrong, which is worse than empty.
- Polling with the show up. RDM shares the wire with levels, so continuous sensor polling measurably drops the refresh rate. Turn it down before doors — the calculator puts a number on it.
- Trusting the UID to name a manufacturer. IDs from 8000h up are reserved for E1.33 dynamic UIDs and belong to nobody. The decoder flags them.
- Old fixtures that do not check start codes. They act on 0xCC as if it were level data. If enabling RDM introduces flicker, that is what happened, and the fix is upstream of the fixture.
One box, many devices
Sub-devices and proxies, and why a rack answers for things that cannot speak
Two parts of RDM exist because the world is not made of identical fixtures on one wire, and both turn up the first time you point a controller at real installed kit.
A sub-device is a logical device inside a physical one. A twelve-way dimmer rack is a single box with a single UID, but it is twelve dimmers, and each of them has its own address, its own curve, its own lamp hours. RDM handles that by letting a message be directed at a sub-device number instead of at the root: root device zero is the box itself and carries the things that belong to the box — the fan, the mains, the firmware — while sub-devices 1 to 12 each carry the things that belong to one channel. Ask the root for a DMX start address and you get the rack’s; ask sub-device 7 and you get that dimmer’s. Multi-cell LED battens work the same way, which is why one fixture can report twelve independent addresses without twelve UIDs.
A proxy is a device that answers on behalf of others. It has its own UID, it declares itself a proxy, and it holds a list of the UIDs behind it — typically a gateway onto a segment that does not speak RDM, or a system with its own internal bus. A controller discovering the line finds the proxy, asks it what it is fronting for, and gets a list rather than having to run the binary search through it. The devices behind it appear in the patch as real devices, because as far as the controller is concerned they are.
The consequence worth carrying: a UID appearing on your line does not mean that thing is physically on your line. It may be behind a proxy on another bus entirely, which is excellent for getting a whole installed system into one patch and confusing the first time you go looking for a fixture with a torch.
- Sub-device zero is the box, not the first channel. Setting a start address on the root of a multi-cell fixture and expecting cell one to move is a normal half hour lost.
- Not every device implements sub-devices even when it obviously has them. Some racks present twelve separate UIDs instead. Both are legal and they patch quite differently.
- A proxy has to keep its list current. Something added behind it after discovery may not appear until the proxy is asked again, which is not the same as rediscovering your own line.
And then
RDMnet is a different animal
E1.33, RDMnet, carries the same RDM message set over IP instead of over the DMX pair. That removes the turnaround timing problem entirely — a network is already bidirectional — and replaces it with a broker, a discovery mechanism built on DNS-SD, and all the ordinary questions of a show network.
It is genuinely a different thing rather than a faster version of the same thing, and the two coexist: RDMnet to a gateway, plain RDM from the gateway down the DMX line to the fixtures. Which means the splitter problem is still yours, it has just moved further from the console.
The unit-load budget calculator, the DMX address tool, the refresh-rate and RDM cost calculator and the RDM UID decoder are on the field tools page, and work offline once loaded. Protocol detail lives on DMX512, RDM and RDMnet.
3 questions on the mechanism rather than the trivia. Nothing is scored and you can answer again — the explanation under a wrong answer is the point of it.
-
1A DMX segment is rated at 32 unit loads. You have 40 fixtures on it and it works. What is the most likely explanation?
-
Right. A unit load is a property of the receiver chip, not the box. Quarter-unit-load receivers put four fixtures in one unit load, so 40 fixtures can be 10 unit loads.
-
DMX512 runs at 250 kbit/s regardless. Unit loads are about the electrical load on the driver, not the speed.
-
Mains power has nothing to do with it. A unit load is the DMX receiver’s input impedance on the data pair.
-
It is a real electrical limit in the standard, not advice. Something else is going on here.
-
-
2An unterminated DMX run has worked every night for a year. Then it starts dropping out. What changed?
-
A higher refresh sends more packets but does not change the reflection behaviour that was already present.
-
There is no drift mechanism in DMX. Each packet is self-contained and starts with a break.
-
There is no terminator — that is the premise. The fault is elsewhere.
-
Right. An unterminated line always reflects. Whether the reflection corrupts data depends on cable length, fixture count and edge speed — so a longer run, a warmer room or one more fixture tips a line that was already marginal.
-
-
3You need to feed three positions from one console output. What do you use?
-
It would work, and it is an expensive answer to a problem a splitter solves.
-
A Y-split puts an unterminated stub on the line, and a stub reflects. This is the single most common cause of an intermittent DMX fault.
-
Right. Each splitter output is electrically a new segment: its own unit-load budget and its own terminator at the far end.
-
Passive branching is the Y-split problem with extra connectors. It works until it does not.
-
Answers are kept in this browser on this device. Nothing is sent anywhere.
- Is one fixture one unit load?
- Why does DMX need termination?
- What is a reflection?
Where to go next
These pages are a chain rather than a library — the next one along usually answers the question this one raised.
Everything on this page, in the index
Each of these has its own entry with sources, ports, gotchas and an open gap where a field is missing.