Christie Projector (Serial-over-IP)
Drives Christie Digital venue projectors that speak the classic Christie serial ASCII protocol over TCP on port 3002 (serial-over-Ethernet). Covers the D-Series HD, M-Series, HS-Series, Boxer 4K, and GS-Series product lines — the projectors that fill boardrooms, lecture theatres, houses of worship, and mid-tier venues. Wire format is a (VERB VALUE) frame terminated by CR; the driver strips response prefixes, normalizes state, and writes power_state, mute_state, input, lamp_hours, and a raw temperature string back onto the device.
Not a Cinema DCP driver. Christie's cinema-server product line (CP2230, IMB-S3, and friends) speaks the DLP Cinema JNIOR protocol and is out of scope here. This driver targets the presentation / venue projector families.
Prerequisites
- Christie projector on the LAN with serial-over-Ethernet enabled (System → Communications → Serial-over-Ethernet on modern OSDs). Older projectors expose this only when the optional network card is installed.
- TCP/3002 reachable from the GEM controller to the projector.
- The projector's input slot list already configured under Configuration → Input Selection (SIN values match those slot numbers, not physical connector labels).
Setup
- Enable serial-over-Ethernet. From the OSD, System → Communications → Serial-over-Ethernet. Confirm it's enabled and note the TCP port (default 3002 on every modern Christie model).
- Reserve an IP. Static IP or DHCP reservation so the device row's
ipstays stable across power cycles. - Add the device. System → Devices → Add Device, pick Christie Projector (Serial-over-IP) (key
christie_projector), and set Projector IP to the unit's address. Leave TCP Port on 3002. - Cross-check input slots. Open the OSD's Configuration → Input Selection page and note which slot number corresponds to each physical connector.
set_sourcetakes the slot number, not the connector label. - (Optional) Expose slots as named AV sources. For a touch-panel source picker, define one AV Source per slot on AV → AV Sources, keyed to the slot number.
- (Optional) Bind the projector to an AV zone. On AV → AV Zones, set the zone's
display_device_idto this device. The driver fans power_state changes out to bound zones so touch-panel power indicators track the projector's real warmup/cooldown.
Device attributes
| Attribute | Required | Default | Description |
|---|---|---|---|
ip | yes | — | LAN IP or hostname of the projector. |
port | no | 3002 | Serial-over-IP TCP port. |
status_interval | no | 60000 | Poll cadence in ms. Venue projectors don't change state often; 60 s is plenty. |
command_throttle | no | 200 | Minimum gap between outbound commands (ms). Lower values can drop frames on lamp-based models during warmup. |
max_input_slot | no | 32 | Upper bound for set_source validation. Default 32 covers Boxer 4K30's full slot list. |
The driver also writes these state attributes back onto the device as they arrive:
power_state—on/off.mute_state—on(shutter closed) /off(shutter open).input— current input slot number.lamp_hours— cumulative illumination hours (name kept even on solid-state HS/GS units so the attribute triggers stay stable).temperature_raw— model-specific temperature string as reported byTMP?. Not further parsed — Christie temperature block varies too widely across product lines to normalize safely.
Commands
power_on/power_off(aliases:on/off) — sends(PWR 1)/(PWR 0).shutter_open/shutter_close— sends(SHU 0)/(SHU 1). Christie's polarity is inverted; the named verbs shield callers from it.mute_on/mute_off— aliases forshutter_close/shutter_open; matches GEM's AV mute convention.set_source— acceptssource(input slot 1..max_input_slot); sends(SIN <n>).test_pattern— acceptspattern(integer index; 0 turns the pattern off). Values are model-specific; the driver validates the range but not the semantics.get_power/get_shutter/get_source/get_lamp_hours/get_temperature— single-verb queries.get_status— force a full re-read of power, shutter, source, lamp hours, and temperature.
Zone address format
Not used — the projector is a single-headed device. Instead, bind AV zones to this device via display_device_id on the AV Zones page. The driver fans out power_state to those zones so the touch-panel UI mirrors the projector's real state.
Known limitations
- Shutter polarity is inverted.
(SHU 1)closes the shutter (dims the image);(SHU 0)opens it. The driver exposesshutter_open/shutter_close(andmute_on/mute_offaliases) so callers don't have to remember. If you send a raw command through the Command grid, respect the wire polarity. - Warmup / cooldown. Lamp-based projectors take 60–120 s between "we accepted the power command" and "the image is actually on". Callers should subscribe to
power_stateor poll it — never race a fixed sleep. - Slot numbering.
SINvalues map to the projector's configured slot list under Configuration → Input Selection, not to bare HDMI/HDBaseT connector labels. Cross-check the mapping on the OSD before hard-coding source values. - Single control session. The serial-over-IP bridge accepts one client at a time on most Christie models. A second telnet from a spare integrator laptop silently steals the socket — coordinate with anyone using ChristieTools or a peer control system.
- Test pattern indexes vary. The driver validates
patternas an integer 0–99 but does not know which patterns your specific model supports. Consult the OSD's built-in test-pattern list. - Temperature block is not parsed. Different Christie families report temperature in different shapes (
(TMP!"L1=41C,L2=42C")on some,(TMP!41)on others). The driver saves the raw string astemperature_rawand leaves higher-level parsing to macros / dashboards. - No color / lens control yet. Lens shift, zoom, focus, color adjustment, and 3D mode are not yet exposed. The
command()switch returnsunknown commandfor anything outside the enumerated set. Follow-up work would extendgetCommands()and dispatch.
Troubleshooting
| Symptom | Check |
|---|---|
| connect succeeds but every command is silently ignored | A second control session is holding TCP/3002 — close the peer session (ChristieTools, a leftover telnet, another controller) and reconnect. |
power_on returns immediately but no image appears | Lamp warmup — 60–120 s on D-Series / M-Series. Solid-state HS/GS units reach on in a few seconds. Watch power_state rather than racing a sleep. |
set_source succeeds but no image | The slot number references the projector's configured slot list, not the physical port. Cross-check under Configuration → Input Selection. |
| shutter behaves backwards | Expected — Christie's (SHU 1) closes. Use the driver's named shutter_open / shutter_close verbs. |
| connection accepted, then silence | Serial-over-Ethernet is disabled on the OSD. Enable it under System → Communications → Serial-over-Ethernet. |
lamp_hours reads 0 forever on a solid-state model | Solid-state HS/GS projectors report their illumination hours through LPH? even though they have no lamp — the naming is legacy. If the value is truly 0, the illuminator has been reset; verify against the OSD's Statistics page. |
Related documentation
- Devices — add and configure the projector.
- Commands — command grid and Test runner for
set_source,shutter_open, and the mute aliases. - AV Zones and AV Sources — bind the projector to a zone and name input slots for a touch-panel source picker.
- PJLink — a vendor-agnostic projector control fallback. Some Christie models support PJLink as an alternative to the native serial protocol.