Summary

Christie Crimson (HD25/WU25/HD31/WU31) and Mirage (HD25/WU25) series 3DLP laser projectors. Remotely controllable via the RS232 IN port or Ethernet using Christie's text-message serial protocol. This spec covers the full command catalogue from the Crimson and Crimson Mirage Serial Commands reference: power, input routing, lens motor, color/gamma, test patterns, networking, status, SNMP, 3D (Mirage only), and more.

Transport

protocols:
  - tcp
  - serial
addressing:
  port: 3002  # Christie serial protocol over Ethernet, stated in source
serial:
  baud_rate: 115200  # default for RS232-IN per source; configurable 2400-115200
  data_bits: null  # UNRESOLVED: data bits not stated in source
  parity: null  # UNRESOLVED: parity not stated in source
  stop_bits: null  # UNRESOLVED: stop bits not stated in source
  flow_control: none  # inferred: source describes Xon/Xoff software flow control
auth:
  type: optional  # source describes access levels and UID login; default Free Access

Traits

- powerable  # inferred from PWR command examples
- queryable  # inferred from extensive ?-query command examples
- routable  # inferred from SIN input selection commands
- levelable  # inferred from continuous-range set commands (LPP, DTL, GAM, FCS, ZOM, etc.)

Actions

# Message format: commands wrapped in parens, e.g. (PWR 1). Replies use ! suffix.
# Optional prefix chars after opening bracket: $ (simple ack), # (full ack), & (checksum).

- id: adr_query
  label: Query Projector Address
  kind: query
  command: "(ADR?)"
  params: []

- id: adr_set
  label: Set Projector Address
  kind: action
  command: "(ADR {value})"
  params:
    - { name: value, type: integer, description: "0 to 999; 65535 = reserved broadcast address" }

- id: alc_set
  label: Set Ambient Light Correction
  kind: action
  command: "(ALC {value})"
  params:
    - { name: value, type: integer, description: "0 = none (default); 1-100 darker; -1 to -100 brighter" }

- id: apw_set
  label: Set Auto Power On
  kind: action
  command: "(APW {value})"
  params:
    - { name: value, type: integer, description: "0 = disable; 1 = enable" }

- id: asu
  label: Auto Setup
  kind: action
  command: "(ASU)"
  params: []

- id: bdr_prta_query
  label: Query RS232-IN Baud Rate
  kind: query
  command: "(BDR+PRTA?)"
  params: []

- id: bdr_prta_set
  label: Set RS232-IN Baud Rate
  kind: action
  command: "(BDR+PRTA {value})"
  params:
    - { name: value, type: integer, description: "1=2400, 2=9600, 3=19200, 4=38400, 5=57600, 6=115200 (default). Service-level access required." }

- id: bgc_set
  label: Set Gamma Function
  kind: action
  command: "(BGC {value})"
  params:
    - { name: value, type: integer, description: "0 = sRGB (default); 2 = Power Law; 3 = M-Series; 4 = ITU-R BT.1886" }

- id: bst_list
  label: List Test Suites
  kind: query
  command: "(BST?L)"
  params: []

- id: bst_run
  label: Run Test Suite
  kind: action
  command: "(BST {suite})"
  params:
    - { name: suite, type: integer, description: "0 = All Tests; 1 = Image Processor Board; 2 = Formatter; 3 = Active Backplane; 4 = Video Path" }

- id: bst_test_list
  label: List Individual Tests
  kind: query
  command: "(BST+TEST?L)"
  params: []

- id: bst_test_run
  label: Run Individual Test
  kind: action
  command: "(BST+TEST {index})"
  params:
    - { name: index, type: integer, description: "0-15 enumerated video-path/FPGA/memory tests" }

- id: cca_copy
  label: Copy Color Table
  kind: action
  command: "(CCA+COPY {value})"
  params:
    - { name: value, type: integer, description: "0 = Max Drives; 1 = Color Temperature; 2 = HD Video (ITU-R BT.709)" }

- id: cca_ctmp
  label: Set Color Temperature
  kind: action
  command: "(CCA+CTMP {value})"
  params:
    - { name: value, type: integer, description: "3200 to 9300; 6500 default" }

- id: cca_slct
  label: Select Color Table
  kind: action
  command: "(CCA+SLCT {value})"
  params:
    - { name: value, type: integer, description: "1 = Color Temperature; 2 = HD Video; 3 = Custom" }

- id: cca_rdpx
  label: Custom Color Red X Coordinate
  kind: action
  command: "(CCA+RDCX {value})"
  params:
    - { name: value, type: integer, description: "x coordinate for red, scaled by 10000" }

- id: cca_rdcy
  label: Custom Color Red Y Coordinate
  kind: action
  command: "(CCA+RDCY {value})"
  params:
    - { name: value, type: integer, description: "y coordinate for red, scaled by 10000" }

- id: cca_gncx
  label: Custom Color Green X Coordinate
  kind: action
  command: "(CCA+GNCX {value})"
  params:
    - { name: value, type: integer, description: "x coordinate for green, scaled by 10000" }

- id: cca_gncy
  label: Custom Color Green Y Coordinate
  kind: action
  command: "(CCA+GNCY {value})"
  params:
    - { name: value, type: integer, description: "y coordinate for green, scaled by 10000" }

- id: cca_blcx
  label: Custom Color Blue X Coordinate
  kind: action
  command: "(CCA+BLCX {value})"
  params:
    - { name: value, type: integer, description: "x coordinate for blue, scaled by 10000" }

- id: cca_blcy
  label: Custom Color Blue Y Coordinate
  kind: action
  command: "(CCA+BLCY {value})"
  params:
    - { name: value, type: integer, description: "y coordinate for blue, scaled by 10000" }

- id: cca_whcx
  label: Custom Color White X Coordinate
  kind: action
  command: "(CCA+WHCX {value})"
  params:
    - { name: value, type: integer, description: "x coordinate for white, scaled by 10000" }

- id: cca_whcy
  label: Custom Color White Y Coordinate
  kind: action
  command: "(CCA+WHCY {value})"
  params:
    - { name: value, type: integer, description: "y coordinate for white, scaled by 10000" }

- id: cca_gofr
  label: Custom Color Green-of-Red Saturation
  kind: action
  command: "(CCA+GOFR {value})"
  params:
    - { name: value, type: integer, description: "-1000 to 1000; 1000 = 100%" }

- id: cca_bofr
  label: Custom Color Blue-of-Red Saturation
  kind: action
  command: "(CCA+BOFR {value})"
  params:
    - { name: value, type: integer, description: "-1000 to 1000; 1000 = 100%" }

- id: cca_rofg
  label: Custom Color Red-of-Green Saturation
  kind: action
  command: "(CCA+ROFG {value})"
  params:
    - { name: value, type: integer, description: "-1000 to 1000; 1000 = 100%" }

- id: cca_bofg
  label: Custom Color Blue-of-Green Saturation
  kind: action
  command: "(CCA+BOFG {value})"
  params:
    - { name: value, type: integer, description: "-1000 to 1000; 1000 = 100%" }

- id: cca_rofb
  label: Custom Color Red-of-Blue Saturation
  kind: action
  command: "(CCA+ROFB {value})"
  params:
    - { name: value, type: integer, description: "-1000 to 1000; 1000 = 100%" }

- id: cca_gofb
  label: Custom Color Green-of-Blue Saturation
  kind: action
  command: "(CCA+GOFB {value})"
  params:
    - { name: value, type: integer, description: "-1000 to 1000; 1000 = 100%" }

- id: cca_rofr
  label: Native Red-of-Red Saturation
  kind: action
  command: "(CCA+ROFR {value})"
  params:
    - { name: value, type: integer, description: "0 to 1000; 1000 = 100%" }

- id: cca_gofg
  label: Native Green-of-Green Saturation
  kind: action
  command: "(CCA+GOFG {value})"
  params:
    - { name: value, type: integer, description: "0 to 1000; 1000 = 100%" }

- id: cca_bofb_native
  label: Native Blue-of-Blue Saturation
  kind: action
  command: "(CCA+BOFB {value})"
  params:
    - { name: value, type: integer, description: "0 to 1000; 1000 = 100%" }

- id: cca_rofw
  label: Custom Color Red-of-White Saturation
  kind: action
  command: "(CCA+ROFW {value})"
  params:
    - { name: value, type: integer, description: "0 to 1000; 1000 = 100%" }

- id: cca_gofw
  label: Custom Color Green-of-White Saturation
  kind: action
  command: "(CCA+GOFW {value})"
  params:
    - { name: value, type: integer, description: "0 to 1000; 1000 = 100%" }

- id: cca_bofw
  label: Custom Color Blue-of-White Saturation
  kind: action
  command: "(CCA+BOFW {value})"
  params:
    - { name: value, type: integer, description: "0 to 1000; 1000 = 100%" }

- id: cca_rdpx_native
  label: Native Red Primary X Coordinate
  kind: action
  command: "(CCA+RDPX {value})"
  params:
    - { name: value, type: integer, description: "x coordinate for red native primary, scaled by 10000. Service user only." }

- id: cca_rdpy_native
  label: Native Red Primary Y Coordinate
  kind: action
  command: "(CCA+RDPY {value})"
  params:
    - { name: value, type: integer, description: "y coordinate for red native primary, scaled by 10000. Service user only." }

- id: cca_gnpx_native
  label: Native Green Primary X Coordinate
  kind: action
  command: "(CCA+GNPX {value})"
  params:
    - { name: value, type: integer, description: "x coordinate for green native primary, scaled by 10000. Service user only." }

- id: cca_gnpy_native
  label: Native Green Primary Y Coordinate
  kind: action
  command: "(CCA+GNPY {value})"
  params:
    - { name: value, type: integer, description: "y coordinate for green native primary, scaled by 10000. Service user only." }

- id: cca_blpx_native
  label: Native Blue Primary X Coordinate
  kind: action
  command: "(CCA+BLPX {value})"
  params:
    - { name: value, type: integer, description: "x coordinate for blue native primary, scaled by 10000. Service user only." }

- id: cca_blpy_native
  label: Native Blue Primary Y Coordinate
  kind: action
  command: "(CCA+BLPY {value})"
  params:
    - { name: value, type: integer, description: "y coordinate for blue native primary, scaled by 10000. Service user only." }

- id: cca_whpx_native
  label: Native White Primary X Coordinate
  kind: action
  command: "(CCA+WHPX {value})"
  params:
    - { name: value, type: integer, description: "x coordinate for white native primary, scaled by 10000. Service user only." }

- id: cca_whpy_native
  label: Native White Primary Y Coordinate
  kind: action
  command: "(CCA+WHPY {value})"
  params:
    - { name: value, type: integer, description: "y coordinate for white native primary, scaled by 10000. Service user only." }

- id: cca_rset
  label: Reset Native Color Primaries
  kind: action
  command: "(CCA+RSET)"
  params: []

- id: cca_save
  label: Save Native Color Primaries
  kind: action
  command: "(CCA+SAVE)"
  params: []

- id: cle
  label: Set Color Enable
  kind: action
  command: "(CLE {color})"
  params:
    - { name: color, type: integer, description: "0=White, 1=Red, 2=Green, 3=Blue, 4=Yellow, 5=Cyan, 6=Magenta" }

- id: csp
  label: Set Color Space
  kind: action
  command: "(CSP {color_space})"
  params:
    - { name: color_space, type: integer, description: "0=Auto (default), 1=RGB full, 2=YCbCr HDTV, 3=RGB limited, 4=YCbCr expanded" }

- id: ddd
  label: Disable Dual-Link DVI Inputs
  kind: action
  command: "(DDD {value})"
  params:
    - { name: value, type: integer, description: "0 = enable dual-link (default); 1 = disable dual-link" }

- id: def
  label: Factory Defaults
  kind: action
  command: "(DEF 111)"
  params: []

- id: dmx_chan
  label: Set DMX/Art-Net Base Channel
  kind: action
  command: "(DMX+CHAN {value})"
  params:
    - { name: value, type: integer, description: "1 to 488; default 1" }

- id: dmx_enbl
  label: Enable DMX/Art-Net Interface
  kind: action
  command: "(DMX+ENBL {value})"
  params:
    - { name: value, type: integer, description: "0 = disable (default); 1 = enable" }

- id: dmx_nets
  label: Set Art-Net Network
  kind: action
  command: "(DMX+NETS {value})"
  params:
    - { name: value, type: integer, description: "0 to 127; default 0" }

- id: dmx_subn
  label: Set Art-Net Subnet
  kind: action
  command: "(DMX+SUBN {value})"
  params:
    - { name: value, type: integer, description: "0 to 15; default 0" }

- id: dmx_unvs
  label: Set Art-Net Universe
  kind: action
  command: "(DMX+UNVS {value})"
  params:
    - { name: value, type: integer, description: "0 to 15; default 0" }

- id: dtl
  label: Set Sharpness
  kind: action
  command: "(DTL {value})"
  params:
    - { name: value, type: integer, description: "0-49 soften, 50 default, 51-100 sharpen" }

- id: ebb_slct_list
  label: List Black Level Blends
  kind: query
  command: "(EBB+SLCT?L)"
  params: []

- id: ebb_slct
  label: Select Black Level Blend
  kind: action
  command: "(EBB+SLCT {value})"
  params:
    - { name: value, type: integer, description: "0 = off (default); 1 to 4 = select blend" }

- id: ebl_slct_list
  label: List Edge Blends
  kind: query
  command: "(EBL+SLCT?L)"
  params: []

- id: ebl_slct
  label: Select Edge Blend
  kind: action
  command: "(EBL+SLCT {value})"
  params:
    - { name: value, type: integer, description: "0 = off; 1 to 4 = select blend" }

- id: edo
  label: Set EDID Override Frame Rate
  kind: action
  command: "(EDO {rate})"
  params:
    - { name: rate, type: integer, description: "24, 25, 30, 48, 50, 60 (default)" }

- id: eme
  label: Enable Asynchronous Serial Messages
  kind: action
  command: "(EME {value})"
  params:
    - { name: value, type: integer, description: "0 = disable; 1 = enable (default)" }

- id: etp
  label: Engine Test Pattern
  kind: action
  command: "(ETP {index})"
  params:
    - name: index
      type: integer
      description: "0=Flat Black, 1=Green, 2=Red, 3=Blue, 4=White, 5-7 Checkers, 9-22 Convergence, 29/45 Multi-color, 235-237 Moving Circles, 238 Color Bars, 239-242 Edge Blend Grids, 243 17 Point, 244 Magenta, 245 Cyan, 246 Yellow, 247 Diagonal Lines, 248-249 Ramps, 255=Off"

- id: evt_all
  label: Get All Events
  kind: query
  command: "(EVT)"
  params: []

- id: evt_max
  label: Get N Most Recent Events
  kind: query
  command: "(EVT {max})"
  params:
    - { name: max, type: integer, description: "Maximum number of events to return" }

- id: evt_from
  label: Get Events Since Timestamp
  kind: query
  command: "(EVT \"{start_timestamp}\")"
  params:
    - { name: start_timestamp, type: string, description: "yyyy-mm-dd hh:mm:ss" }

- id: evt_range
  label: Get Events Between Timestamps
  kind: query
  command: "(EVT \"{start_timestamp}\" \"{end_timestamp}\")"
  params:
    - { name: start_timestamp, type: string, description: "yyyy-mm-dd hh:mm:ss" }
    - { name: end_timestamp, type: string, description: "yyyy-mm-dd hh:mm:ss" }

- id: fcs_minmax
  label: Query Lens Focus Range
  kind: query
  command: "(FCS?m)"
  params: []

- id: fcs
  label: Set Lens Focus Position
  kind: action
  command: "(FCS {position})"
  params:
    - { name: position, type: integer, description: "Subject to range from FCS?m" }

- id: fib_slta
  label: Christie Link Video Slot A
  kind: action
  command: "(FIB+SLTA {value})"
  params:
    - { name: value, type: integer, description: "0 = disable (default); 1 = enable" }

- id: fib_sltb
  label: Christie Link Video Slot B
  kind: action
  command: "(FIB+SLTB {value})"
  params:
    - { name: value, type: integer, description: "0 = disable (default); 1 = enable" }

- id: fmd
  label: Film Mode Detect
  kind: action
  command: "(FMD {value})"
  params:
    - { name: value, type: integer, description: "0 = off; 1 = on (default)" }

- id: frd
  label: Set Frame Delay
  kind: action
  command: "(FRD {delay})"
  params:
    - { name: delay, type: integer, description: "1000 to 3000; 2000 default (2 frames)" }

- id: frd_stat_query
  label: Query Actual Frame Delay
  kind: query
  command: "(FRD+STAT?)"
  params: []

- id: frd_time_query
  label: Query Frame Delay Time (ms)
  kind: query
  command: "(FRD+TIME?)"
  params: []

- id: frz
  label: Image Freeze
  kind: action
  command: "(FRZ {value})"
  params:
    - { name: value, type: integer, description: "0 = unfreeze (default); 1 = freeze" }

- id: ftb_time
  label: Set Fade to Black Time
  kind: action
  command: "(FTB+TIME {value})"
  params:
    - { name: value, type: integer, description: "0 to 250 in 10ms increments; 0 = no fade" }

- id: gam
  label: Set Gamma Power Value
  kind: action
  command: "(GAM {exponent})"
  params:
    - { name: exponent, type: integer, description: "1000 to 3000; 2200 default" }

- id: gam_maxl
  label: Set Gamma Max Luminance
  kind: action
  command: "(GAM+MAXL {value})"
  params:
    - { name: value, type: integer, description: "100 to 2000; 1000 default" }

- id: gam_minl
  label: Set Gamma Min Luminance
  kind: action
  command: "(GAM+MINL {value})"
  params:
    - { name: value, type: integer, description: "0 to 1000; 10 default" }

- id: gam_slop
  label: Set Gamma Slope
  kind: action
  command: "(GAM+SLOP {value})"
  params:
    - { name: value, type: integer, description: "1 to 100; 1 default" }

- id: gio_cnfg_query
  label: Query GPIO Configuration
  kind: query
  command: "(GIO+CNFG?)"
  params: []

- id: gio_stat_query
  label: Query GPIO Input Status
  kind: query
  command: "(GIO+STAT?)"
  params: []

- id: gio_stat_set
  label: Set GPIO Outputs
  kind: action
  command: "(GIO+STAT \"{state}\")"
  params:
    - { name: state, type: string, description: "Per-pin string of H/L/X (High/Low/No-change)" }

- id: itp
  label: Test Pattern
  kind: action
  command: "(ITP {index})"
  params:
    - name: index
      type: integer
      description: "0=Off, 1=Grid, 2=Grey Scale 16, 3=Flat White, 4=Flat Grey, 5=Flat Black, 6=Checker, 7=17 Point, 8=Edge Blend, 9=Color Bars, 10=Multi Color, 11=RGBW Ramp, 12=Horiz Ramp, 13=Vert Ramp, 14=Diag Ramp, 15=Square Grid, 16=Diag Grid, 17=Max Activity, 18=Prism/Convergence, 19=FLIR, 20=Focus Fidelity, 21=Boresight, 22=Convergence, 23=Integrator Rod, 24=Flare"

- id: itp_freq
  label: Set Test Pattern Frequency
  kind: action
  command: "(ITP+FREQ {value})"
  params:
    - { name: value, type: integer, description: "24 to 500; 60 default" }

- id: itp_grdc
  label: Set Grid Color Mode
  kind: action
  command: "(ITP+GRDC {value})"
  params:
    - { name: value, type: integer, description: "0 = white-on-black; 1 = multi-color (default)" }

- id: itp_grdm
  label: Set Grid Motion Mode
  kind: action
  command: "(ITP+GRDM {value})"
  params:
    - { name: value, type: integer, description: "0 = static (default); 1 = moving" }

- id: itp_grdp
  label: Set Grid Pitch
  kind: action
  command: "(ITP+GRDP {pitch})"
  params:
    - { name: pitch, type: integer, description: "2 to 127; 32 default" }

- id: itp_grey
  label: Set Flat Grey Level
  kind: action
  command: "(ITP+GREY {level})"
  params:
    - { name: level, type: integer, description: "0 to 4095; 2048 default" }

- id: itp_rmpl
  label: Set Ramp Starting Level
  kind: action
  command: "(ITP+RMPL {level})"
  params:
    - { name: level, type: integer, description: "0 to 4095; 0 default" }

- id: itp_rmpm
  label: Set Ramp Motion Speed
  kind: action
  command: "(ITP+RMPM {speed})"
  params:
    - { name: speed, type: integer, description: "0 to 100; 0 default" }

- id: itp_rmps
  label: Set Ramp Slope
  kind: action
  command: "(ITP+RMPS {slope})"
  params:
    - { name: slope, type: integer, description: "1 to 5; 1 default" }

- id: ken_frnt
  label: Set Front IR Keypad
  kind: action
  command: "(KEN+FRNT {value})"
  params:
    - { name: value, type: integer, description: "0 = disable; 1 = enable (default)" }

- id: ken_hdbt
  label: Set IR over HDBaseT
  kind: action
  command: "(KEN+HDBT {value})"
  params:
    - { name: value, type: integer, description: "0 = disable (default); 1 = enable" }

- id: ken_rear
  label: Set Rear IR Keypad
  kind: action
  command: "(KEN+REAR {value})"
  params:
    - { name: value, type: integer, description: "0 = disable; 1 = enable (default)" }

- id: ken_wire_query
  label: Query Wired Keypad State
  kind: query
  command: "(KEN+WIRE?)"
  params: []

- id: ken_wire
  label: Set Wired Keypad
  kind: action
  command: "(KEN+WIRE {value})"
  params:
    - { name: value, type: integer, description: "0 = disable; 1 = enable (default)" }

- id: lcb_calibrate
  label: Calibrate All Lens Motors
  kind: action
  command: "(LCB 1)"
  params: []

- id: lcb_home
  label: Home Lens Motors
  kind: action
  command: "(LCB+HOME)"
  params: []

- id: lcb_lock
  label: Lock Lens Motors
  kind: action
  command: "(LCB+LOCK {value})"
  params:
    - { name: value, type: integer, description: "0 = unlock (default); 1 = lock" }

- id: lcb_zomr
  label: Set Lens Motorized Zoom Flag
  kind: action
  command: "(LCB+ZOMR {value})"
  params:
    - { name: value, type: integer, description: "0 = no zoom (default); 1 = has zoom motor" }

- id: lcb_zoom
  label: Calibrate Zoom Motor
  kind: action
  command: "(LCB+ZOOM 1)"
  params: []

- id: lho_minmax
  label: Query Lens Horizontal Range
  kind: query
  command: "(LHO?m)"
  params: []

- id: lho
  label: Set Lens Horizontal Position
  kind: action
  command: "(LHO {position})"
  params:
    - { name: position, type: integer, description: "Subject to range from LHO?m" }

- id: lmv
  label: Move Lens Absolute
  kind: action
  command: "(LMV {horizontal} {vertical} {zoom} {focus})"
  params:
    - { name: horizontal, type: integer, description: "H axis value" }
    - { name: vertical, type: integer, description: "V axis value" }
    - { name: zoom, type: integer, description: "Z axis value" }
    - { name: focus, type: integer, description: "F axis value" }

- id: lmv_hstp
  label: Move Lens Horizontal Relative
  kind: action
  command: "(LMV+HSTP {steps})"
  params:
    - { name: steps, type: integer, description: "Negative=left; positive=right" }

- id: lmv_vstp
  label: Move Lens Vertical Relative
  kind: action
  command: "(LMV+VSTP {steps})"
  params:
    - { name: steps, type: integer, description: "Negative=down; positive=up" }

- id: lmv_fstp
  label: Move Lens Focus Relative
  kind: action
  command: "(LMV+FSTP {steps})"
  params:
    - { name: steps, type: integer, description: "Negative=outward; positive=inward" }

- id: lmv_zstp
  label: Move Lens Zoom Relative
  kind: action
  command: "(LMV+ZSTP {steps})"
  params:
    - { name: steps, type: integer, description: "Negative=smaller; positive=larger" }

- id: lmv_hrun
  label: Run Lens Horizontal Motor
  kind: action
  command: "(LMV+HRUN {value})"
  params:
    - { name: value, type: integer, description: "-1 = left; 0 = stop; 1 = right" }

- id: lmv_vrun
  label: Run Lens Vertical Motor
  kind: action
  command: "(LMV+VRUN {value})"
  params:
    - { name: value, type: integer, description: "-1 = down; 0 = stop; 1 = up" }

- id: lmv_frun
  label: Run Lens Focus Motor
  kind: action
  command: "(LMV+FRUN {value})"
  params:
    - { name: value, type: integer, description: "-1 = outward; 0 = stop; 1 = inward" }

- id: lmv_zrun
  label: Run Lens Zoom Motor
  kind: action
  command: "(LMV+ZRUN {value})"
  params:
    - { name: value, type: integer, description: "-1 = smaller; 0 = stop; 1 = larger" }

- id: loc_lang_query
  label: Query System Language
  kind: query
  command: "(LOC+LANG?)"
  params: []

- id: loc_lang
  label: Set System Language
  kind: action
  command: "(LOC+LANG {value})"
  params:
    - name: value
      type: integer
      description: "0=English (default), 1=French, 2=German, 3=Spanish, 4=Italian, 5=Chinese, 6=Japanese, 7=Korean, 8=Russian"

- id: loc_temp_query
  label: Query Temperature Units
  kind: query
  command: "(LOC+TEMP?)"
  params: []

- id: loc_temp
  label: Set Temperature Units
  kind: action
  command: "(LOC+TEMP {value})"
  params:
    - { name: value, type: integer, description: "0 = Celsius; 1 = Fahrenheit" }

- id: loe
  label: Video Loop Out Enable
  kind: action
  command: "(LOE {value})"
  params:
    - { name: value, type: integer, description: "0 = disable; 1 = enable (default)" }

- id: lpp
  label: Set Light Output Power
  kind: action
  command: "(LPP {percentage})"
  params:
    - { name: percentage, type: integer, description: "500 to 1000; 1000 default" }

- id: lpp_blua
  label: Subtract Blue Light Output
  kind: action
  command: "(LPP+BLUA {percentage})"
  params:
    - { name: percentage, type: integer, description: "-300 to 0; 0 default" }

- id: lpp_grna
  label: Subtract Green Light Output
  kind: action
  command: "(LPP+GRNA {percentage})"
  params:
    - { name: percentage, type: integer, description: "-300 to 0; 0 default" }

- id: lpp_reda
  label: Subtract Red Light Output
  kind: action
  command: "(LPP+REDA {percentage})"
  params:
    - { name: percentage, type: integer, description: "-300 to 0; 0 default" }

- id: lpp_rset
  label: Reset Light Output Settings
  kind: action
  command: "(LPP+RSET)"
  params: []

- id: lvo_minmax
  label: Query Lens Vertical Range
  kind: query
  command: "(LVO?m)"
  params: []

- id: lvo
  label: Set Lens Vertical Position
  kind: action
  command: "(LVO {position})"
  params:
    - { name: position, type: integer, description: "Subject to range from LVO?m" }

- id: msp_query
  label: Query OSD Menu Position
  kind: query
  command: "(MSP?)"
  params: []

- id: msp
  label: Set OSD Menu Position
  kind: action
  command: "(MSP {value})"
  params:
    - name: value
      type: integer
      description: "0=Top left (default), 1=Top center, 2=Top right, 3=Center left, 4=Center, 5=Center right, 6=Bottom left, 7=Bottom center, 8=Bottom right"

- id: net_static
  label: Set Static Network
  kind: action
  command: "(NET \"{ip}\" \"{subnet}\" \"{gateway}\")"
  params:
    - { name: ip, type: string, description: "IP address" }
    - { name: subnet, type: string, description: "Subnet mask" }
    - { name: gateway, type: string, description: "Gateway (optional)" }

- id: net_dgrp
  label: Set Device Group Name
  kind: action
  command: "(NET+DGRP \"{group}\")"
  params:
    - { name: group, type: string, description: "Group name for the projector" }

- id: net_dhcp
  label: Enable DHCP
  kind: action
  command: "(NET+DHCP 1)"
  params: []

- id: net_eth0_query
  label: Query Projector IP
  kind: query
  command: "(NET+ETH0?)"
  params: []

- id: net_gate_query
  label: Query Gateway Address
  kind: query
  command: "(NET+GATE?)"
  params: []

- id: net_host
  label: Set Projector Host Name
  kind: action
  command: "(NET+HOST \"{name}\")"
  params:
    - { name: name, type: string, description: "Projector name" }

- id: net_mac0_query
  label: Query MAC Address
  kind: query
  command: "(NET+MAC0?)"
  params: []

- id: net_port_query
  label: Query Christie Serial TCP Port
  kind: query
  command: "(NET+PORT?)"
  params: []

- id: net_sub0_query
  label: Query Projector Netmask
  kind: query
  command: "(NET+SUB0?)"
  params: []

- id: net_swit
  label: Set Network Switching Mode
  kind: action
  command: "(NET+SWIT {value})"
  params:
    - { name: value, type: integer, description: "0 = Split (default); 1 = All ports joined; 2 = HDBaseT joined with Ethernet" }

- id: osd_query
  label: Query OSD State
  kind: query
  command: "(OSD?)"
  params: []

- id: osd
  label: Set OSD Display
  kind: action
  command: "(OSD {value})"
  params:
    - { name: value, type: integer, description: "0 = hide; 1 = display" }

- id: otr_query
  label: Query Output Resolution
  kind: query
  command: "(OTR?)"
  params: []

- id: otr_hres_query
  label: Query Horizontal Resolution
  kind: query
  command: "(OTR+HRES?)"
  params: []

- id: otr_vres_query
  label: Query Vertical Resolution
  kind: query
  command: "(OTR+VRES?)"
  params: []

- id: png_query
  label: Ping Projector
  kind: query
  command: "(PNG?)"
  params: []

- id: pro_list
  label: List Local Profiles
  kind: query
  command: "(PRO?L)"
  params: []

- id: pro_select
  label: Select Local Profile
  kind: action
  command: "(PRO {x})"
  params:
    - { name: x, type: integer, description: "0 = Default; 1-4 = custom profiles" }

- id: pwr_query
  label: Query Power State
  kind: query
  command: "(PWR?)"
  params: []

- id: pwr_set
  label: Set Power State
  kind: action
  command: "(PWR {value})"
  params:
    - { name: value, type: integer, description: "0 = off; 1 = on" }

- id: pwr_elec
  label: Set Video Electronics Override
  kind: action
  command: "(PWR+ELEC {value})"
  params:
    - { name: value, type: integer, description: "0 = disable override; 1 = keep electronics on in standby" }

- id: ral
  label: Set Ethernet Access Level
  kind: action
  command: "(RAL {value})"
  params:
    - { name: value, type: integer, description: "0 = No Access; 1 = Login Required; 2 = Free Access (default)" }

- id: ral_prta
  label: Set RS232 Access Level
  kind: action
  command: "(RAL+PRTA {value})"
  params:
    - { name: value, type: integer, description: "0 = No Access; 1 = Login Required; 2 = Free Access (default)" }

- id: sdi
  label: Set SDI Payload Override
  kind: action
  command: "(SDI {value})"
  params:
    - name: value
      type: integer
      description: "0=Auto (default), 1=Custom, 2=3G-A 1080p60, 3=3G-A 1080p59.94, 4=3G-A 1080p50, 5=3G-A 2K60, 6=3G-A 2K59.94, 7=3G-A 2K50"

- id: sdi_payl
  label: Set Custom SDI Payload
  kind: action
  command: "(SDI+PAYL \"{custom_string}\")"
  params:
    - { name: custom_string, type: string, description: "4-byte hex string in big-endian order" }

- id: shu_query
  label: Query Shutter State
  kind: query
  command: "(SHU?)"
  params: []

- id: shu
  label: Set Shutter
  kind: action
  command: "(SHU {value})"
  params:
    - { name: value, type: integer, description: "0 = open; 1 = close (default)" }

- id: sin_list
  label: List Available Inputs
  kind: query
  command: "(SIN?L)"
  params: []

- id: sin_select
  label: Select Input
  kind: action
  command: "(SIN {input})"
  params:
    - { name: input, type: integer, description: "Subject to range from SIN?L" }

- id: sin_port
  label: Set Input Port Configuration
  kind: action
  command: "(SIN+PORT {config})"
  params:
    - { name: config, type: integer, description: "1 = One-Port (default); 5 = One-Port Dual-Input 3D (Mirage HD25/WU25 only)" }

- id: snm_lamp
  label: SNMP Lamp Faults
  kind: action
  command: "(SNM+LAMP {value})"
  params:
    - { name: value, type: integer, description: "0 = disable; 1 = enable (default)" }

- id: snm_powr
  label: SNMP Power State Traps
  kind: action
  command: "(SNM+POWR {value})"
  params:
    - { name: value, type: integer, description: "0 = disable; 1 = enable (default)" }

- id: snm_read
  label: Set SNMP Read Password
  kind: action
  command: "(SNM+READ \"{password}\")"
  params:
    - { name: password, type: string, description: "Max 32 chars; default = private" }

- id: snm_sign
  label: SNMP Signal Traps
  kind: action
  command: "(SNM+SIGN {value})"
  params:
    - { name: value, type: integer, description: "0 = disable; 1 = enable (default)" }

- id: snm_stal
  label: SNMP Fan/Cooling Faults
  kind: action
  command: "(SNM+STAL {value})"
  params:
    - { name: value, type: integer, description: "0 = disable; 1 = enable (default)" }

- id: snm_tip1
  label: Set SNMP Trap IP 1
  kind: action
  command: "(SNM+TIP1 \"{ip}\")"
  params:
    - { name: ip, type: string, description: "Trap IP; 0.0.0.0 = disable (default)" }

- id: snm_tip2
  label: Set SNMP Trap IP 2
  kind: action
  command: "(SNM+TIP2 \"{ip}\")"
  params:
    - { name: ip, type: string, description: "Trap IP; 0.0.0.0 = disable (default)" }

- id: snm_tip3
  label: Set SNMP Trap IP 3
  kind: action
  command: "(SNM+TIP3 \"{ip}\")"
  params:
    - { name: ip, type: string, description: "Trap IP; 0.0.0.0 = disable (default)" }

- id: snm_thrm
  label: SNMP Temperature Faults
  kind: action
  command: "(SNM+THRM {value})"
  params:
    - { name: value, type: integer, description: "0 = disable; 1 = enable (default)" }

- id: sor
  label: Set Screen Orientation
  kind: action
  command: "(SOR {value})"
  params:
    - { name: value, type: integer, description: "0 = Front (default); 1 = Rear; 2 = Front inverted; 3 = Rear inverted" }

- id: sps_colr
  label: Set Splash Screen Color
  kind: action
  command: "(SPS+COLR {value})"
  params:
    - { name: value, type: integer, description: "1 = Red; 2 = Green; 3 = Blue; 7 = Black (default)" }

- id: sst_query_all
  label: Query All Status Items
  kind: query
  command: "(SST?)"
  params: []

- id: sst_query_group
  label: Query Status Group
  kind: query
  command: "(SST+{group}?)"
  params:
    - { name: group, type: string, description: "Four-letter status group identifier (e.g. TEMP, LAMP, VERS)" }

- id: sst_query_item
  label: Query Status Item
  kind: query
  command: "(SST+{group}?{index})"
  params:
    - { name: group, type: string, description: "Four-letter status group identifier" }
    - { name: index, type: integer, description: "Item index within group" }

- id: szp
  label: Set Resize Preset
  kind: action
  command: "(SZP {value})"
  params:
    - { name: value, type: integer, description: "0 = Auto (default); 1 = None; 2 = Full size; 3 = Full width; 4 = Full height" }

- id: tdd_query
  label: Query 3D Sync Delay
  kind: query
  command: "(TDD?)"
  params: []

- id: tdd_set
  label: Set 3D Sync Delay
  kind: action
  command: "(TDD {value})"
  params:
    - { name: value, type: integer, description: "0 = aligned (default); negative = before; positive = after" }

- id: tdm
  label: Set 3D Mode
  kind: action
  command: "(TDM {mode})"
  params:
    - { name: mode, type: integer, description: "0 = off; 1 = auto (default); 2 = force 3D" }

- id: tdn_query
  label: Query 3D Input Inversion
  kind: query
  command: "(TDN?)"
  params: []

- id: tdn_set
  label: Set 3D Input Inversion
  kind: action
  command: "(TDN {value})"
  params:
    - { name: value, type: integer, description: "0 = normal (default); 1 = invert" }

- id: tdo_query
  label: Query 3D Sync Out
  kind: query
  command: "(TDO?)"
  params: []

- id: tdo_set
  label: Set 3D Sync Out
  kind: action
  command: "(TDO {value})"
  params:
    - { name: value, type: integer, description: "0 = emitter (default); 1 = downstream projector" }

- id: tdt
  label: Set 3D Test Pattern
  kind: action
  command: "(TDT {value})"
  params:
    - { name: value, type: integer, description: "0 = disable; 1 = enable" }

- id: thm
  label: Set Video Thumbnails
  kind: action
  command: "(THM {value})"
  params:
    - { name: value, type: integer, description: "0 = off; 1 = on (default)" }

- id: tmd_date
  label: Set Date
  kind: action
  command: "(TMD+DATE \"{date}\")"
  params:
    - { name: date, type: string, description: "YYYY/MM/DD" }

- id: tmd_time
  label: Set Time
  kind: action
  command: "(TMD+TIME \"{time}\")"
  params:
    - { name: time, type: string, description: "hh:mm:ss" }

- id: tmd_time_query
  label: Query Time
  kind: query
  command: "(TMD+TIME?)"
  params: []

- id: uid_query
  label: Query Current User
  kind: query
  command: "(UID?)"
  params: []

- id: uid_logout
  label: Logout Current User
  kind: action
  command: "(UID)"
  params: []

- id: uid_login
  label: Login User
  kind: action
  command: "(UID \"{username}\" \"{password}\")"
  params:
    - { name: username, type: string, description: "Username (e.g. service)" }
    - { name: password, type: string, description: "Password" }

- id: wrp_slct_list
  label: List Warp Maps
  kind: query
  command: "(WRP+SLCT?L)"
  params: []

- id: wrp_slct
  label: Select Warp Map
  kind: action
  command: "(WRP+SLCT {value})"
  params:
    - { name: value, type: integer, description: "0 = off; 1 to 4 = select warp map" }

- id: zom_minmax
  label: Query Lens Zoom Range
  kind: query
  command: "(ZOM?m)"
  params: []

- id: zom
  label: Set Lens Zoom Position
  kind: action
  command: "(ZOM {position})"
  params:
    - { name: position, type: integer, description: "Subject to range from ZOM?m" }

Feedbacks

- id: power_state
  type: enum
  values: [standby, on, cooling_down, warming_up]
  description: "Reply: (PWR!000 \"Power Off\") - 000=Standby, 001=On, 010=Cooling down, 011=Warming up"

- id: shutter_state
  type: enum
  values: [open, closed]
  description: "Reply: (SHU!0)=open, (SHU!1)=closed"

- id: osd_state
  type: enum
  values: [hidden, displayed]

- id: projector_address
  type: integer
  description: "Reply: (ADR!005)"

- id: baud_rate
  type: enum
  values: ["2400", "9600", "19200", "38400", "57600", "115200"]
  description: "Reply: (BDR+PRTA!006 \"115200\")"

- id: frame_delay
  type: integer
  description: "Reply: (FRD+STAT!1250)"

- id: frame_delay_time_ms
  type: string
  description: "Reply: (FRD+TIME!\"33.33\")"

- id: input_port_config
  type: enum
  values: [one_port, one_port_dual_input_3d]

- id: network_ip
  type: string

- id: network_gateway
  type: string

- id: network_netmask
  type: string

- id: network_mac
  type: string

- id: serial_tcp_port
  type: integer

- id: language
  type: enum
  values: [english, french, german, spanish, italian, chinese, japanese, korean, russian]

- id: temperature_units
  type: enum
  values: [celsius, fahrenheit]

- id: menu_position
  type: enum
  values: [top_left, top_center, top_right, center_left, center, center_right, bottom_left, bottom_center, bottom_right]

- id: output_resolution
  type: string

- id: projector_info
  type: string
  description: "Reply: (PNG!054 001 001 000) - type, major, minor, build. Type 64 = Crimson"

- id: gpio_input_state
  type: string
  description: "Per-pin string of H/L; e.g. (GIO+STAT!\"LLLLLLL\")"

- id: profile_list
  type: list

- id: input_list
  type: list

- id: test_suite_list
  type: list

- id: test_list
  type: list

- id: black_level_blend_list
  type: list

- id: edge_blend_list
  type: list

- id: warp_map_list
  type: list

- id: status_items
  type: list
  description: "Reply: (SST+<group>!<index> <state> \"<value>\" \"<description>\"). State 000=OK, 001=Warning, 002=Error."

Variables

# All settable parameters represented as Actions above (parameterized commands).
# UNRESOLVED: no separate settable variable outside of action commands identified in source

Events

- id: card_detected
  description: "(65535 00000 FYI01901 \"Card x detected\") - new card detected in slot X while video electronics on"

- id: card_removed
  description: "(65535 00000 FYI01901 \"Card x removed\") - card removed from slot X while video electronics on"

- id: date_time_changed
  description: "(65535 00000 FYI00916 \"Setting Date to YYYY/MM/DD\") or (65535 00000 FYI00916 \"Setting Time to hh:mm:ss\")"

- id: factory_defaults
  description: "(65535 00000 FYI00919 \"All settings have been restored to their factory defaults. Reboot is required to take effect.\")"

- id: network_changed
  description: "(65535 00000 FYI00915 \"Configured network: IP:... Mask:... Gateway:...\") - operator change, DHCP renewal, cable (un)plug"

- id: status_change
  description: "(65535 00000 FYI00000 \"(SST+LAMP?001) Lamp Hours = 00:00 (h:m)\") - status item changes between OK/Warning/Error"

- id: status_warning
  description: "(65535 00000 ERR00000 \"System Warning: (SST+...) ...\")"

- id: status_error
  description: "(65535 00000 ERR00000 \"System Error: (SST+...) ...\")"

Macros

# UNRESOLVED: source documents no explicit multi-step macros

Safety

confirmation_required_for:
  - "(DEF 111)"  # Factory defaults: deletes all user profiles, warps, blends
  - "(PWR 0)"  # Power off - projector enters cooling cycle (PWR!010)
interlocks:
  - "Some commands are operational only when projector is powered up."
  - "Many color/gamma/image commands require video electronics on (stated per command)."
  - "Service-level commands (CCA native primaries, BDR baud set) require service-user login."
  - "LCB / LHO / LVO / ZOM / LMV lens commands only available when projector is on."
  - "Do not execute BST while Crimson is warming up (source explicit warning)."
  - "DEF 111 resets network to DHCP - drops connection if static IP was in use."
# UNRESOLVED: no power-on sequencing procedure documented in source

Notes

  • Messages wrapped in parentheses. Format: (Code Data) SET, (Code?) REQUEST, (Code!Data) REPLY.
  • Optional subcode (4 chars) appended to function code with + (e.g. CCA+CTMP).
  • Optional prefix chars after opening bracket: $ (simple ack, returns $ on success or ^ NAK), # (full ack, echoes message), & (checksum — low byte of ASCII sum 0-255, placed before closing bracket with leading space).
  • Replies have fixed-width integer parameters padded with leading zeros; minimum 3 chars. Negative values get one fewer digit to fit sign.
  • Set messages do not require padding.
  • Multiple parameters in a message separated by single space.
  • Text parameters enclosed in double quotes; special chars " \ ( ) require \ escape; \n = newline; \h## = arbitrary hex byte.
  • Error reply example: (ITP) - (65535 00000 ERR00005 "ITP: Too Few Parameters").
  • Error codes 3-10 and 101-118 documented (see source table).
  • Flow control: Xoff = 0x13 (pause), Xon = 0x11 (resume). Buffer accepts up to 10 bytes after Xoff; Crimson sends at most 3 chars after receiving Xoff.
  • Crimson model type code in PNG? reply = 64.
  • Models covered by this command reference: Crimson HD25, Crimson WU25, Crimson HD31, Crimson WU31, Mirage HD25, Mirage WU25.
  • 3D commands (TDD/TDM/TDN/TDO/TDT) and Dual-Input 3D port config (SIN+PORT 5) apply to Mirage HD25 / Mirage WU25 only.

Provenance

source_domains:
  - sslcdbucket.s3.ap-northeast-2.amazonaws.com
  - christiedigital.com
  - projectorcentral.com
source_urls:
  - "https://sslcdbucket.s3.ap-northeast-2.amazonaws.com/product/Crimson%20WU31/Crimson%20Series_manual(tech)_eng.pdf"
  - https://www.christiedigital.com/globalassets/resources/public/020-102649-07-Christie-LIT-MAN-USR-Crimson.pdf
  - https://www.christiedigital.com/globalassets/resources/public/020-102271-04-christie-lit-tech-ref-gs-700-850-api.pdf
  - https://www.christiedigital.com/globalassets/resources/public/020-102647-07-christie-lit-guid-set-crimson.pdf
  - https://www.projectorcentral.com/pdf/projector_manual_11145.pdf
retrieved_at: 2026-08-10T21:29:47.760Z
last_checked_at: 2026-08-19T09:01:37.698Z

Verification Summary

verdict: verified
checked_at: 2026-08-19T09:01:37.698Z
matched_actions: 191
action_count: 191
confidence: medium
summary: "All 191 spec commands map to literal tokens in the source; transport port 3002 and 115200 baud are confirmed; no fabricated, missing, or drifted entries. (12 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "RS232 cable pinout not in source; default credentials beyond example not enumerated"
- "data bits not stated in source"
- "parity not stated in source"
- "stop bits not stated in source"
- "no separate settable variable outside of action commands identified in source"
- "source documents no explicit multi-step macros"
- "no power-on sequencing procedure documented in source"
- "RS232 connector pinout not in source — refer to Crimson and Mirage User Guide (P/N 020-102649-XX)"
- "factory default baud rate for first connection not explicitly stated; 115200 is documented default value but also \"default baud rate on each port\" — needs device verification"
- "serial data_bits/parity/stop_bits not stated in source"
- "default service password is example only (\"service\"/\"service\") — not confirmed as factory default"
- "full list of status groups/items not enumerated — refer to Crimson and Mirage Status System Guide (P/N 020-102661-XX)"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0