# Load test a fixture

- **MCP resource:** rdmbench://help/load
- **Version:** 0.2.0
- **Runs on:** macOS 15 Sequoia or later, Apple silicon or Intel
- **Needs:** An Enttec DMX USB Pro with its DMX/RDM firmware (major version 2)
- **Price:** Free

Some faults only exist while a fixture is working: a dimmer module that
draws no current, a fan that never speeds up, an over-temperature that
needs the unit lit for a while. A load test finds them. It lights the
fixture, reads its sensors while it is lit, ends output, and says which
sensors moved and what appeared that was not there at rest.

**The fixture goes bright and hot while it runs.** Point it somewhere
safe, keep hands clear of moving parts, and never run it on a fixture
that is patched into a running show.

Run it from the **Monitor** tab, from the command line, or by asking
an AI assistant connected to the bench (see below).

## In the app

Select the fixture and choose **Fixture → Load
Test…** (⇧⌘L) *(macOS)*. The app opens the
**Monitor** tab, starts monitoring the fixture if it is not already
being watched, and asks before anything is lit. While a session is
running, **Put Under Load…** on the Monitor tab does the same.

The sheet shows the safety warning, then:

- **Level**: what every channel is held at, 255 by default.
- **Hold for**: from 30 seconds to 10 minutes. A temperature needs
  minutes; a fan shows in seconds.
- **Channels at their own level**: channels where full is not output,
  written as `9=0, 10=0`. These win over everything else.
- **What goes up**: the channels the fixture's own layout or the
  model's profile holds lower, in the bench's words, before you commit.

While the fixture is lit, a bar across the Monitor tab counts down to
the end and reminds you to watch the unit. The stretch under load is
shaded on the chart, so a climb that starts with it and a cool-down
after it are easy to read. **End Load** brings output down early.
Either way the monitor keeps running, so the cool-down is recorded too.

When output ends, the bar says what the load found. **Before and
After…** opens each sensor's reading before and after the load. The
same section is in the session's summary when you stop monitoring, and
it is saved with the session. Each run is also saved under the unit,
and the [repair sheet](/help/repair-sheet/) lists every run of
the repair. Stopping the monitor while the fixture
is lit ends output first.

A load test cannot start while you are holding levels with
[Send DMX](/help/send-dmx/): release them first. While a
fixture is under load, Send DMX and Walk Channels are unavailable. The
whole-line monitor has no load test: a line is not loaded one unit at
a time.

## What it does

1. Reads every sensor at rest, as the starting point. In the app, that
   is the monitor's latest reading of each, taken just before output
   goes up.
2. Holds every channel of the fixture's footprint at full, 255, for two
   minutes unless told otherwise. On a dimmer rack, every module's
   channels are driven.
3. Reads the sensors again every second while the fixture is lit,
   noting any status message that appears.
4. **Ends output**, then reports each sensor's reading before and
   after.

Output is always ended before the test finishes: when it completes,
when it is stopped early, and when the fixture stops answering. If the
bench cannot end it, the report says so in as many words, and the fix
is to unplug the widget or power the fixture down.

A fixture that reports no sensors is refused rather than driven,
because there would be nothing to read back.

## Channels where full is not output

Full on every channel does not always mean fully lit. On many fixtures
a channel selects a color macro, a program or a dimmer mode, and 255
there picks something else. An ADJ 5PX held at full on every channel
lit UV only, because its channel 9 at 255 is a color macro.

- **When the fixture reports its channel layout** (SLOT_INFO), the
  channels it calls a macro, a color wheel, an effect, a speed or a
  control are held at the fixture's own default — or 0 where it gives
  none — and the report lists them. The rest go to the level.
- **When the bench has a profile for the model** that says which
  channels to hold lower in the personality the fixture is in, those
  channels are set for you, over the fixture's own layout, and the
  report names the profile it used.
- **Otherwise every channel goes to the same level.** When the fixture
  does not report its channel layout either, the report says the
  footprint was driven without knowing which channel does what.

A channel you name yourself with `--slot` wins over both.

Watch the fixture while it runs. The bench cannot see color or where
the fixture points; only you can. If it did not look fully lit, hold
the macro, program or mode channels at their own level (see
`--slot` below) and run it again.

## Reading the result

The first line says how many sensors moved, and whether a condition
appeared that was not there at rest. Then each sensor, before and
after, those that moved first.

- **A current or load sensor that does not move while its neighbors
  do** is a blown lamp, a dead dimmer or an output that is not
  switching. It is the reading you would otherwise take with a meter.
- **A fan still at its idle speed** under full output is a fan-control
  fault. That shows in seconds.
- **A temperature** needs minutes. Run a longer hold when the question
  is whether the fixture overheats.
- **Appeared under output** lists the status messages that came up
  while the fixture was lit: the over-current or over-temperature it
  never shows at rest. When there is one, it is usually the answer.
- **Nothing moved** is *inconclusive*, not a pass. A sensor slower than
  the hold, a personality that ignores these channels and a healthy
  fixture all read the same way.

What moved is not proof of why it moved. A fixture still warm from the
last time it ran reads the same way. A sensor that rises each time the
level goes up, over more than one run, is the finding to trust.

## Short frames

The bench sends a DMX frame that ends at the fixture's last channel,
not all 512, because some fixtures miss RDM requests while a long frame
is on the line. The report says where the frame ended. A fixture
patched past that point sees no signal.

## From the command line

`rdmbench-cli load` tests the first fixture found, or the one whose
UID you give it, and prints each change as it happens and the result
at the end. Press Ctrl-C to end it early: output is brought down first.

- `--seconds` sets how long to hold, 120 by default.
- `--level` sets the level for every channel, 255 by default.
- `--slot CHANNEL=VALUE` holds one channel at its own level, counted
  from the fixture's start address. Repeat it for more channels. On
  the ADJ 5PX in 12-channel mode, `--slot 9=0 --slot 10=0 --slot 12=0`
  lights it fully.
- `--full-frame` sends all 512 channels instead.
- `--json` prints the result as JSON.

## Asking an assistant

An AI assistant connected to the bench can run the same test: ask it
to load test the fixture. It is told the fixture goes bright and hot,
to check with you before driving a unit you have not just asked about,
and that it cannot see color or position, so it will ask you to watch
the fixture while the test runs. A test can last up to ten minutes.
