# GDTF files and the PID library

- **MCP resource:** rdmbench://help/fixture-files
- **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

The bench reads two kinds of file it does not get from the fixture.
Each one answers a question the fixture cannot answer itself, and
neither needs the other:

- **GDTF files** answer *what does a desk call this mode?* They are the
  fixture files a lighting desk loads to patch a fixture. The bench
  reads only their mode names and channel counts, and uses them to
  turn the fixture's personality into the name the desk shows in its
  patch.
- **The PID library** answers *what is this manufacturer parameter?*
  Its tables put names to the maker's own parameters, the ones E1.20
  does not define, when the fixture lists them but will not describe
  them. Its fixture profiles record what particular models are known to
  get wrong, and the channel layouts their manuals give.

Both are found by the same numbers the fixture reports about itself:
its manufacturer ID, its model ID and, for GDTF, its firmware. A file
for the right brand but another model is never used. Both are read on
the bench, with no network, and both work on a saved report as well
as a live fixture.

## Three kinds of profile

"Profile" means different things depending on who is saying it, and
this help keeps them apart:

- **A desk profile** is what a lighting desk loads to patch a fixture:
  what each channel does in each of its modes. Every desk has its own
  name for it: a *fixture profile* on ETC Eos, a *fixture type* on
  grandMA, a *personality* on Avolites and ChamSys. GDTF is a format
  meant to work on any desk. The bench reads GDTF files and never
  writes a desk profile (see
  [Build a desk profile from the fixture](/help/desk-profile/)).
- **A fixture profile**, in this help, is the PID library's record of
  one model: its modes, its sensors, what it is known to report
  wrongly, and the channel names its manual gives. An Eos fixture
  profile is a different thing, the desk profile above.
- **A PID** is not a profile at all. It is one parameter a fixture can
  be asked about over RDM, such as its sensors or its mode, defined by
  the E1.20 standard or by the fixture's maker.

*Personality* is ambiguous too: in RDM, and in this help, it means one
of a fixture's modes, not a desk's file.

## How they work together

Take a fixture showing the wrong colors with no error code. The report
reads the fixture, then each file fills in what the fixture could not
say:

1. **The fixture** says it is in personality 2, which it calls
   *Standard (16-bit)*, 25 channels wide. Anything the fixture says
   about itself always comes first, and nothing in either file
   replaces it.
2. **A GDTF file** for the model says personality 2 is the mode the
   desk calls *Standard*. If the desk is patched as *Extended*, that
   mismatch is the fault: the desk sends one channel layout and the
   fixture reads another.
3. **The PID library** names the maker's own settings in the report's
   **Parameters** list, such as a color calibration or a dimmer curve,
   so you can see whether one of those was changed instead.
4. **A fixture profile**, if the model has one, warns of anything the
   model is known to report wrongly, and names the channels in
   [Send DMX](/help/send-dmx/) for a fixture that does not name
   them itself.

With neither file, the report is still complete: the mode is shown by
the fixture's own name and number, and an unnamed parameter by its
number in hex.

## Where each one comes from

- **GDTF files** come from the desk's own fixture library, the GDTF
  Share, or the maker's downloads. You add them to the bench's GDTF
  folder; nothing fetches them for you without asking. See
  [Find a fixture's desk mode](/help/desk-mode/).
- **The PID library** comes with the app and keeps itself up to date
  from the public RDMBench PID library. You can add to it from any
  fixture that describes its own parameters. See
  [The PID library](/help/pid-library/).
