# Record a fixture and replay it

- **MCP resource:** rdmbench://help/record-replay
- **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

A unit on the bench goes back to its owner, and what it did goes with
it. A recording keeps every exchange the bench had with it, bytes both
ways, and a replay lets that recording answer for the unit afterward:
to take its report again, run the behavior check on it, or show a
maker exactly what their fixture does, with the unit gone.

## Recording

The app keeps the [wire log](/help/wire-log/) of this connection
in memory, and **Export…** in **Fixture → Wire Log…** saves it as a
`.jsonl` file. Export before you disconnect: the log is gone after.

On the command line, add `--record` to any command that connects, such
as `rdmbench-cli snapshot --record`. The log goes to the captures
folder's `wire` folder, or to `--record=FILE`. It holds every RDM
exchange the run made, late and missing replies included, and the DMX
levels sent. `rdmbench-cli wire` reads the newest one back.

## Replaying

`--replay` takes one or more logs in place of the widget, and the bench
answers each request with what the fixture said at the time, lateness
and mistakes included: `rdmbench-cli snapshot --replay FILE`. Give
`--replay` once for each file, in the order they were recorded, and
one unit's separate runs answer as one fixture.

A request is answered only if the recording made the same one: the
same parameter, to the same fixture, with the same data. Anything else
is silence, and is counted at the end of the run, so a gap in the
recording is not read as the fixture ignoring something. A replay
answers best for the commands that made it.

A replay does not act on what it is sent. A `SET` changes nothing in the
answers that follow: a later `GET` plays what it was recorded saying.

## A replay is not a visit

A replayed fixture is treated like the simulator: what it saves goes in
the captures folder's `simulator` folder, and it never adds a visit to
the real unit's history.
