Summary
Optoma xx515/xx615 series projectors controlled via RS-232 (primary), Telnet, HTTP, and HDBaseT transports. Source is the generic Optoma "RS232 Protocol Function List" shared across the xx515/xx615 family. Commands are ASCII: ~<ID><cmd> <value><CR> where <ID> is a 2-digit projector ID (00 = all projectors, 01–99 single).
Transport
protocols:
- serial
- tcp
- http
serial:
baud_rate: 19200 # default; source says 9600-115200 supported
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
framing: "ASCII, lead '~', <CR> (0x0D) terminator"
addressing:
port: null # UNRESOLVED: Telnet/HTTP port not stated in source
base_url: null # UNRESOLVED: HTTP base URL not stated in source
auth:
type: none # inferred: no login procedure in source
Note: Control menu exposes per-service toggles for Crestron (~XX454), Extron (~XX455), PJ Link (~XX456), AMX Device Discovery (~XX457), Telnet (~XX458), HTTP (~XX459). The sheet does not document their wire formats — only enable/disable.
Traits
traits:
- powerable # inferred: ~XX00 power on/off commands present
- queryable # inferred: extensive read commands (PW?, source, temp, hours, etc.)
- routable # inferred: input source selection ~XX12 / ~XX305
- levelable # inferred: brightness, contrast, color, gain, keystone, zoom, etc.
Actions
# Command format: ~<ID><cmd> <value><CR>
# <ID> = 2-digit projector ID (00 = broadcast, 01-99 = single). Shown as "XX" below per source.
# Write returns "P" (pass) or "F" (fail). Read returns "Ok nnn" or "F".
# --- Power / System ---
- id: power_on
label: Power On
kind: action
command: "~XX00 1"
params: []
- id: power_off
label: Power Off
kind: action
command: "~XX00 0"
params: []
- id: power_query
label: Power Status Query
kind: query
command: "~XX124 1"
params: []
- id: resync
label: Re-Sync (Auto)
kind: action
command: "~XX01 1"
params: []
- id: av_mute_set
label: AV Mute Set
kind: action
command: "~XX02 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
- id: av_mute_query
label: AV Mute Query
kind: query
command: "~XX355 1"
params: []
- id: freeze_set
label: Freeze Set
kind: action
command: "~XX04 {state}"
params:
- name: state
type: integer
description: "0 = Unfreeze, 1 = Freeze"
- id: direct_power_on
label: Direct Power On
kind: action
command: "~XX105 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
- id: auto_power_off
label: Auto Power Off (minutes)
kind: action
command: "~XX106 {minutes}"
params:
- name: minutes
type: integer
description: "0-180 in 5-min increments"
- id: sleep_timer
label: Sleep Timer (minutes)
kind: action
command: "~XX107 {minutes}"
params:
- name: minutes
type: integer
description: "0-990 in 30-min increments (000-990 on wire)"
- id: sleep_timer_always_on
label: Sleep Timer Always On
kind: action
command: "~XX507 {state}"
params:
- name: state
type: integer
description: "0 = No, 1 = Yes"
- id: standby_power_mode_set
label: Power Mode (Standby) Set
kind: action
command: "~XX114 {mode}"
params:
- name: mode
type: integer
description: "0 = Eco, 1 = Active, 3 = Communications"
- id: standby_power_mode_query
label: Power Mode (Standby) Query
kind: query
command: "~XX150 16"
params: []
- id: reset_to_default
label: Reset to Default
kind: action
command: "~XX112 1"
params: []
- id: reset_osd
label: Reset OSD
kind: action
command: "~XX546 1"
params: []
# --- Display / Image ---
- id: display_mode_set
label: Display Mode Set
kind: action
command: "~XX20 {mode}"
params:
- name: mode
type: integer
description: "1=Presentation, 2=Bright, 3=Cinema, 4=sRGB, 5=User, 9=3D, 10=DICOM SIM, 13=DICOM SIM (alt), 19=Blending, 21=HDR"
- id: display_mode_query
label: Display Mode Query
kind: query
command: "~XX123 1"
params: []
- id: wall_color_set
label: Wall Color Set
kind: action
command: "~XX506 {color}"
params:
- name: color
type: integer
description: "0=Off, 1=Blackboard, 3=Light Green, 4=Light Blue, 5=Pink, 6=Gray, 7=Light Yellow"
- id: dynamic_range_hdr_set
label: DynamicRange HDR Set
kind: action
command: "~XX565 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = Auto"
- id: hdr_picture_mode_set
label: HDR Picture Mode Set
kind: action
command: "~XX566 {mode}"
params:
- name: mode
type: integer
description: "0=Bright, 1=Standard, 2=Film, 3=Detail, 4=SMPTE 2084"
- id: brightness_step
label: Brightness Step +/-
kind: action
command: "~XX46 {dir}"
params:
- name: dir
type: integer
description: "1 = decrement, 2 = increment"
- id: brightness_set
label: Brightness Set
kind: action
command: "~XX21 {value}"
params:
- name: value
type: integer
description: "0-100"
- id: brightness_query
label: Brightness Query
kind: query
command: "~XX125 1"
params: []
- id: contrast_step
label: Contrast Step +/-
kind: action
command: "~XX47 {dir}"
params:
- name: dir
type: integer
description: "1 = decrement, 2 = increment"
- id: contrast_set
label: Contrast Set
kind: action
command: "~XX22 {value}"
params:
- name: value
type: integer
description: "0-100"
- id: contrast_query
label: Contrast Query
kind: query
command: "~XX126 1"
params: []
- id: sharpness_set
label: Sharpness Set
kind: action
command: "~XX23 {value}"
params:
- name: value
type: integer
description: "1-15"
- id: color_set
label: Color Set
kind: action
command: "~XX45 {value}"
params:
- name: value
type: integer
description: "0-100"
- id: tint_set
label: Tint Set
kind: action
command: "~XX44 {value}"
params:
- name: value
type: integer
description: "0-100"
- id: gamma_set
label: Gamma Set
kind: action
command: "~XX35 {mode}"
params:
- name: mode
type: integer
description: "1=Film, 2=Video, 3=Graphics, 4=Standard(2.2), 5=1.8, 6=2.0, 11=DICOM SIM, 12=2.4"
- id: brilliant_color_set
label: BrilliantColor Set
kind: action
command: "~XX34 {value}"
params:
- name: value
type: integer
description: "0-10"
- id: color_temperature_set
label: Color Temperature Set
kind: action
command: "~XX36 {mode}"
params:
- name: mode
type: integer
description: "1=Standard, 2=Cool, 4=Warm"
- id: color_temperature_query
label: Color Temperature Query
kind: query
command: "~XX128 1"
params: []
# --- Color Matching (per-channel hue/sat/gain) ---
- id: cm_red_hue
label: Color Matching Red Hue
kind: action
command: "~XX327 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_red_saturation
label: Color Matching Red Saturation
kind: action
command: "~XX333 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_red_gain
label: Color Matching Red Gain
kind: action
command: "~XX339 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_green_hue
label: Color Matching Green Hue
kind: action
command: "~XX328 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_green_saturation
label: Color Matching Green Saturation
kind: action
command: "~XX334 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_green_gain
label: Color Matching Green Gain
kind: action
command: "~XX340 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_blue_hue
label: Color Matching Blue Hue
kind: action
command: "~XX329 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_blue_saturation
label: Color Matching Blue Saturation
kind: action
command: "~XX335 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_blue_gain
label: Color Matching Blue Gain
kind: action
command: "~XX341 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_cyan_hue
label: Color Matching Cyan Hue
kind: action
command: "~XX330 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_cyan_saturation
label: Color Matching Cyan Saturation
kind: action
command: "~XX336 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_cyan_gain
label: Color Matching Cyan Gain
kind: action
command: "~XX342 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_magenta_hue
label: Color Matching Magenta Hue
kind: action
command: "~XX332 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_magenta_saturation
label: Color Matching Magenta Saturation
kind: action
command: "~XX338 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_magenta_gain
label: Color Matching Magenta Gain
kind: action
command: "~XX344 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_yellow_hue
label: Color Matching Yellow Hue
kind: action
command: "~XX331 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_yellow_saturation
label: Color Matching Yellow Saturation
kind: action
command: "~XX337 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_yellow_gain
label: Color Matching Yellow Gain
kind: action
command: "~XX343 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_white_red
label: Color Matching White Red
kind: action
command: "~XX345 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_white_green
label: Color Matching White Green
kind: action
command: "~XX346 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: cm_white_blue
label: Color Matching White Blue
kind: action
command: "~XX347 {value}"
params:
- { name: value, type: integer, description: "0-254" }
- id: color_matching_reset
label: Color Matching Reset
kind: action
command: "~XX215 1"
params: []
# --- RGB Gain/Bias ---
- id: rgb_red_gain
label: RGB Red Gain
kind: action
command: "~XX24 {value}"
params:
- { name: value, type: integer, description: "0-100" }
- id: rgb_green_gain
label: RGB Green Gain
kind: action
command: "~XX25 {value}"
params:
- { name: value, type: integer, description: "0-100" }
- id: rgb_blue_gain
label: RGB Blue Gain
kind: action
command: "~XX26 {value}"
params:
- { name: value, type: integer, description: "0-100" }
- id: rgb_red_bias
label: RGB Red Bias
kind: action
command: "~XX27 {value}"
params:
- { name: value, type: integer, description: "0-100" }
- id: rgb_green_bias
label: RGB Green Bias
kind: action
command: "~XX28 {value}"
params:
- { name: value, type: integer, description: "0-100" }
- id: rgb_blue_bias
label: RGB Blue Bias
kind: action
command: "~XX29 {value}"
params:
- { name: value, type: integer, description: "0-100" }
- id: rgb_gain_bias_reset
label: RGB Gain/Bias Reset
kind: action
command: "~XX517 1"
params: []
- id: color_space_set
label: Color Space Set
kind: action
command: "~XX37 {mode}"
params:
- name: mode
type: integer
description: "1=Auto, 2=RGB / RGB(0-255), 3=YUV, 4=RGB(16-235)"
- id: ultradetail_set
label: UltraDetail Set
kind: action
command: "~XX41 {mode}"
params:
- name: mode
type: integer
description: "0=Off, 4=1, 5=2, 6=3"
- id: extreme_black_set
label: Extreme Black Set
kind: action
command: "~XX218 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
- id: dynamic_black_set
label: Dynamic Black Set
kind: action
command: "~XX191 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
- id: brightness_mode_set
label: Brightness Mode Set
kind: action
command: "~XX110 {mode}"
params:
- name: mode
type: integer
description: "2=Eco Mode, 6=Constant Power, 7=Constant Luminance"
- id: power_level_set
label: Power Level Set
kind: action
command: "~XX326 {value}"
params:
- { name: value, type: integer, description: "1-100" }
- id: purecontrast_set
label: PureContrast Set
kind: action
command: "~XX219 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
- id: purecolor_set
label: PureColor Set
kind: action
command: "~XX42 {value}"
params:
- name: value
type: integer
description: "0=Off, 1-5 levels"
- id: puremotion_set
label: PureMotion Set
kind: action
command: "~XX190 {value}"
params:
- name: value
type: integer
description: "0=Off, 1-3 levels"
- id: puremotion_demo_set
label: PureMotion Demo Set
kind: action
command: "~XX197 {mode}"
params:
- name: mode
type: integer
description: "0=Off, 1=H Split, 2=V Split"
- id: image_reset
label: Image Settings Reset
kind: action
command: "~XX509 1"
params: []
# --- 3D ---
- id: mode_3d_set
label: 3D Mode Set
kind: action
command: "~XX230 {state}"
params:
- name: state
type: integer
description: "0 = Off, 4 = On"
- id: format_3d_set
label: 3D Format Set
kind: action
command: "~XX405 {mode}"
params:
- name: mode
type: integer
description: "0=Auto, 1=Side by Side, 2=Top and Bottom, 3=Frame Sequential, 7=Frame Packing"
- id: d_3d_to_2d_set
label: 3D-2D Set
kind: action
command: "~XX400 {mode}"
params:
- name: mode
type: integer
description: "0=3D, 1=L, 2=R"
- id: sync_invert_3d_set
label: 3D Sync Invert Set
kind: action
command: "~XX231 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
- id: sync_out_3d_set
label: 3D Sync Out Set
kind: action
command: "~XX232 {mode}"
params:
- name: mode
type: integer
description: "0 = To Emitter, 1 = To Next Projector"
- id: lr_reference_set
label: L/R Reference Set
kind: action
command: "~XX236 {mode}"
params:
- name: mode
type: integer
description: "0 = Field GPIO, 1 = 1ST FRAME"
- id: frame_delay_3d_set
label: 3D Frame Delay Set
kind: action
command: "~XX233 {value}"
params:
- { name: value, type: integer, description: "1-200" }
- id: d_3d_reset
label: 3D Reset
kind: action
command: "~XX234 1"
params: []
- id: d_3d_output_query
label: Output 3D State Query
kind: query
command: "~XX130 1"
params: []
# --- Aspect / Zoom / Image shift / Geometry ---
- id: aspect_ratio_set
label: Aspect Ratio Set
kind: action
command: "~XX60 {mode}"
params:
- name: mode
type: integer
description: "1=4:3, 2=16:9, 3=16:10, 5=LBX, 6=Native, 7=Auto"
- id: aspect_ratio_query
label: Aspect Ratio Query
kind: query
command: "~XX127 1"
params: []
- id: digital_zoom_h_set
label: Digital Zoom H Set
kind: action
command: "~XX504 {value}"
params:
- { name: value, type: integer, description: "50-400 (%)" }
- id: digital_zoom_v_set
label: Digital Zoom V Set
kind: action
command: "~XX505 {value}"
params:
- { name: value, type: integer, description: "50-400 (%)" }
- id: geometry_query
label: Geometry / Zoom / Shift / Keystone Query (multiplexed)
kind: query
command: "~XX543 {field}"
params:
- name: field
type: integer
description: "1=Image H shift, 2=Image V shift, 3=V Keystone, 4=H Keystone, 5=V Arc, 6=H Arc, 7=V Zoom, 8=H Zoom"
- id: image_shift_h_set
label: Image Shift H Set
kind: action
command: "~XX63 {value}"
params:
- { name: value, type: integer, description: "0-100" }
- id: image_shift_v_set
label: Image Shift V Set
kind: action
command: "~XX64 {value}"
params:
- { name: value, type: integer, description: "0-100" }
- id: geo_h_arc_set
label: Geometric H Arc Set
kind: action
command: "~XX300 {value}"
params:
- { name: value, type: integer, description: "0-100" }
- id: geo_v_arc_set
label: Geometric V Arc Set
kind: action
command: "~XX301 {value}"
params:
- { name: value, type: integer, description: "0-100" }
# Four Corners - per-corner H/V coordinates (separate source rows)
- id: four_corner_tl_h
label: Four Corners Top-Left H
kind: action
command: "~XX581 {value}"
params:
- { name: value, type: integer, description: "0-120" }
- id: four_corner_tl_v
label: Four Corners Top-Left V
kind: action
command: "~XX582 {value}"
params:
- { name: value, type: integer, description: "0-80" }
- id: four_corner_tr_h
label: Four Corners Top-Right H
kind: action
command: "~XX583 {value}"
params:
- { name: value, type: integer, description: "0-120" }
- id: four_corner_tr_v
label: Four Corners Top-Right V
kind: action
command: "~XX584 {value}"
params:
- { name: value, type: integer, description: "0-80" }
- id: four_corner_bl_h
label: Four Corners Bottom-Left H
kind: action
command: "~XX585 {value}"
params:
- { name: value, type: integer, description: "0-120" }
- id: four_corner_bl_v
label: Four Corners Bottom-Left V
kind: action
command: "~XX586 {value}"
params:
- { name: value, type: integer, description: "0-80" }
- id: four_corner_br_h
label: Four Corners Bottom-Right H
kind: action
command: "~XX587 {value}"
params:
- { name: value, type: integer, description: "0-120" }
- id: four_corner_br_v
label: Four Corners Bottom-Right V
kind: action
command: "~XX588 {value}"
params:
- { name: value, type: integer, description: "0-80" }
- id: four_corner_index
label: Four Corners Position Index
kind: action
command: "~XX59 {index}"
params:
- name: index
type: integer
description: "1-16 (positional corner index per source)"
- id: h_keystone_set
label: H Keystone Set
kind: action
command: "~XX65 {value}"
params:
- { name: value, type: integer, description: "0-40" }
- id: v_keystone_set
label: V Keystone Set
kind: action
command: "~XX66 {value}"
params:
- { name: value, type: integer, description: "0-40" }
- id: warp_blend_pc_query
label: Warp & Blend PC Connection Query
kind: query
command: "~XX132 3"
params: []
- id: warp_blend_settings_set
label: Warp & Blend Settings Set
kind: action
command: "~XX142 {mode}"
params:
- name: mode
type: integer
description: "0=All Off, 3=All On, 4=Blend Off"
- id: warp_blend_status_query
label: Warp & Blend Status Query
kind: query
command: "~XX132 1"
params: []
- id: warp_blend_memory_set
label: Warp & Blend Memory Set
kind: action
command: "~XX147 {slot}"
params:
- name: slot
type: integer
description: "0=Off, 1=User1, 2=User2, 3=User3"
- id: warp_blend_memory_query
label: Warp & Blend Memory Query
kind: query
command: "~XX137 1"
params: []
- id: geometric_reset
label: Geometric Correction Reset
kind: action
command: "~XX561 1"
params: []
# --- PIP / PBP ---
- id: pip_pbp_screen_set
label: PIP/PBP Screen Set
kind: action
command: "~XX302 {mode}"
params:
- name: mode
type: integer
description: "0=Off, 1=PIP, 2=PBP"
- id: pip_location_set
label: PIP/PBP Location Set
kind: action
command: "~XX303 {loc}"
params:
- name: loc
type: integer
description: "1=PIP-TopLeft, 2=PIP-TopRight, 3=PIP-BottomLeft, 4=PIP-BottomRight, 5=PBP Main Left, 6=PBP Main Top, 7=PBP Main Right, 8=PBP Main Bottom"
- id: pip_size_set
label: PIP Size Set
kind: action
command: "~XX304 {size}"
params:
- name: size
type: integer
description: "1=Large, 2=Medium, 3=Small"
- id: pip_sub_source_set
label: PIP Sub Source Set
kind: action
command: "~XX305 {src}"
params:
- name: src
type: integer
description: "1=HDMI1, 4=HDMI2, 10=HDBaseT, 11=3G-SDI, 17=DisplayPort"
- id: pip_sub_source_query
label: PIP Sub Source Query
kind: query
command: "~XX131 1"
params: []
- id: pip_swap
label: PIP Swap
kind: action
command: "~XX306 1"
params: []
# --- Source / Routing ---
- id: select_input
label: Select Input (Main Source)
kind: action
command: "~XX12 {src}"
params:
- name: src
type: integer
description: "1=HDMI1, 15=HDMI2, 20=DisplayPort, 21=HDBaseT, 22=3G-SDI"
- id: input_source_query
label: Input Source Query (Main)
kind: query
command: "~XX121 1"
params: []
- id: source_lock_set
label: Source Lock Set
kind: action
command: "~XX100 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
- id: auto_source_set
label: Auto Source Set
kind: action
command: "~XX563 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
# --- Projection orientation ---
- id: projection_set
label: Projection Orientation Set
kind: action
command: "~XX71 {mode}"
params:
- name: mode
type: integer
description: "1=Front, 2=Rear, 3=Ceiling-top, 4=Rear-top"
- id: projection_query
label: Projection Orientation Query
kind: query
command: "~XX129 1"
params: []
# --- Lens ---
- id: lens_zoom
label: Lens Zoom +/-
kind: action
command: "~XX307 {dir}"
params:
- name: dir
type: integer
description: "1 = +, 2 = -"
- id: lens_focus
label: Lens Focus +/-
kind: action
command: "~XX308 {dir}"
params:
- name: dir
type: integer
description: "1 = +, 2 = -"
- id: lens_function_set
label: Lens Function Lock/Unlock
kind: action
command: "~XX349 {state}"
params:
- name: state
type: integer
description: "1 = Lock, 2 = Unlock"
- id: lens_function_query
label: Lens Function Query
kind: query
command: "~XX545 4"
params: []
- id: lens_shift
label: Lens Shift Direction
kind: action
command: "~XX84 {dir}"
params:
- name: dir
type: integer
description: "3=Up, 4=Down, 5=Left, 6=Right"
- id: lens_calibration
label: Lens Calibration
kind: action
command: "~XX525 {state}"
params:
- name: state
type: integer
description: "0 = No, 1 = Yes"
- id: lens_memory_apply
label: Lens Memory Apply Position
kind: action
command: "~XX359 {slot}"
params:
- { name: slot, type: integer, description: "1-5" }
- id: lens_memory_save
label: Lens Memory Save Current Position
kind: action
command: "~XX360 {slot}"
params:
- { name: slot, type: integer, description: "1-5" }
- id: lens_memory_reset
label: Lens Memory Reset
kind: action
command: "~XX361 1"
params: []
# --- Security ---
- id: security_set
label: Security Pin Set
kind: action
command: "~XX78 {pin}"
params:
- name: pin
type: string
description: "0 = Off (no pin), 1-nnnn = On with 4-digit pin"
- id: security_timer_month
label: Security Timer Month
kind: action
command: "~XX537 {month}"
params:
- { name: month, type: integer, description: "00-12" }
- id: security_timer_day
label: Security Timer Day
kind: action
command: "~XX538 {day}"
params:
- { name: day, type: integer, description: "00-29" }
- id: security_timer_hour
label: Security Timer Hour
kind: action
command: "~XX539 {hour}"
params:
- { name: hour, type: integer, description: "00-23" }
- id: security_timer_query
label: Security Timer Query
kind: query
command: "~XX544 1"
params: []
- id: security_timer_mmddhh_set
label: Security Timer MM/DD/HH Set (RS232 only)
kind: action
command: "~XX77 {mmddhh}"
params:
- name: mmddhh
type: string
description: "MMDDHH concatenated"
# --- Test Pattern / IR / Remote ---
- id: test_pattern_set
label: Test Pattern Set
kind: action
command: "~XX195 {pattern}"
params:
- name: pattern
type: integer
description: "0=Off, 1=White Grid, 2=White, 3=Green Grid, 4=Magenta Grid, 5=Red, 6=Green, 7=Blue, 8=Yellow, 9=Magenta, 10=Cyan, 11=Black"
- id: ir_function_set
label: IR Function Set (Front/Top/HDBaseT)
kind: action
command: "~XX11 {value}"
params:
- name: value
type: integer
description: "4=Front Off, 5=Front On, 6=Top Off, 7=Top On, 9=HDBaseT On, 10=HDBaseT Off"
- id: ir_function_query
label: IR Function Query
kind: query
command: "~XX542 1"
params: []
- id: remote_code_set
label: Remote Code Set
kind: action
command: "~XX350 {code}"
params:
- { name: code, type: integer, description: "00-99" }
- id: hotkey_set
label: Hot-Key Settings Set
kind: action
command: "~XX117 {function}"
params:
- name: function
type: integer
description: "1 = Aspect Ratio, 2 = Freeze Screen"
- id: trigger_12v_set
label: 12V Trigger Set
kind: action
command: "~XX192 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
# --- Projector ID / Sensor / LED ---
- id: projector_id_set
label: Projector ID Set
kind: action
command: "~XX79 {id}"
params:
- { name: id, type: integer, description: "00-99" }
- id: projector_id_query
label: Projector ID Query
kind: query
command: "~XX558 1"
params: []
- id: light_sensor_set
label: Light Sensor Mode Set
kind: action
command: "~XX552 {mode}"
params:
- name: mode
type: integer
description: "0 = Default, 2 = Manual"
- id: light_sensor_calibration
label: Light Sensor Calibration
kind: action
command: "~XX552 2"
params: []
- id: keypad_led_set
label: Keypad LED Set
kind: action
command: "~XX362 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
# --- Options / Menu ---
- id: language_set
label: Language Set
kind: action
command: "~XX70 {lang}"
params:
- name: lang
type: integer
description: "1=English, 2=Deutsch, 3=Français, 4=Italiano, 5=Español, 6=Português, 7=Polski, 8=Nederlands, 9=Svenska, 10=Norsk/Dansk, 11=Suomi, 12=ελληνικά, 13=繁體中文, 14=簡体中文, 15=日本語, 16=한국어, 17=Русский, 18=Magyar, 19=Čeština, 21=ไทย, 22=Türkçe, 25=TiếngViệt, 26=Bahasa Indonesia, 27=Română, 28=Slovakian"
- id: menu_location_set
label: Menu Location Set
kind: action
command: "~XX72 {loc}"
params:
- name: loc
type: integer
description: "1=Top left, 2=Top right, 3=Center, 4=Bottom left, 5=Bottom right"
- id: menu_transparency_set
label: Menu Transparency Set
kind: action
command: "~XX526 {value}"
params:
- { name: value, type: integer, description: "0-9" }
- id: menu_timer_set
label: Menu Timer Set
kind: action
command: "~XX515 {mode}"
params:
- name: mode
type: integer
description: "0=Off, 1=5sec, 3=10sec, 4=15sec"
- id: high_altitude_set
label: High Altitude Set
kind: action
command: "~XX101 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
- id: information_hide_set
label: Information Hide Set
kind: action
command: "~XX102 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
- id: logo_set
label: Logo Set
kind: action
command: "~XX82 {mode}"
params:
- name: mode
type: integer
description: "1 = Default, 3 = Neutral"
- id: background_color_set
label: Background Color Set
kind: action
command: "~XX104 {color}"
params:
- name: color
type: integer
description: "0=None, 1=Blue, 3=Red, 4=Green, 6=Gray, 7=Logo"
- id: serial_port_baud_query
label: Serial Port Baud Rate Query
kind: query
command: "~XX153 1"
params: []
- id: serial_port_path_set
label: Serial Port Path Set
kind: action
command: "~XX557 {path}"
params:
- name: path
type: integer
description: "1 = RS232, 2 = HDBaseT"
# --- System Update ---
- id: system_update_notification_set
label: System Update Notification Set
kind: action
command: "~XX168 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
- id: system_update_notification_query
label: System Update Notification Query
kind: query
command: "~XX158 1"
params: []
- id: system_update_run
label: System Update Run
kind: action
command: "~XX168 9"
params: []
# --- Network control service toggles ---
- id: wlan_set
label: WLAN Set
kind: action
command: "~XX450 {state}"
params:
- name: state
type: integer
description: "0 = Off, 1 = On"
- id: crestron_control_set
label: Crestron Control Set
kind: action
command: "~XX454 {state}"
params:
- { name: state, type: integer, description: "0 = Off, 1 = On" }
- id: extron_control_set
label: Extron Control Set
kind: action
command: "~XX455 {state}"
params:
- { name: state, type: integer, description: "0 = Off, 1 = On" }
- id: pjlink_control_set
label: PJ Link Control Set
kind: action
command: "~XX456 {state}"
params:
- { name: state, type: integer, description: "0 = Off, 1 = On" }
- id: amx_discovery_set
label: AMX Device Discovery Set
kind: action
command: "~XX457 {state}"
params:
- { name: state, type: integer, description: "0 = Off, 1 = On" }
- id: telnet_control_set
label: Telnet Control Set
kind: action
command: "~XX458 {state}"
params:
- { name: state, type: integer, description: "0 = Off, 1 = On" }
- id: http_control_set
label: HTTP Control Set
kind: action
command: "~XX459 {state}"
params:
- { name: state, type: integer, description: "0 = Off, 1 = On" }
# --- Info / diagnostic queries ---
- id: serial_number_query
label: Serial Number Query
kind: query
command: "~XX353 1"
params: []
- id: model_name_query
label: Model Name Query
kind: query
command: "~XX151 1"
params: []
- id: fw_version_query
label: Firmware Version Query
kind: query
command: "~XX122 1"
params: []
- id: lan_fw_version_query
label: LAN Firmware Version Query
kind: query
command: "~XX357 1"
params: []
- id: fan_speed_query
label: Fan Speed Query (per fan)
kind: query
command: "~XX351 {fan}"
params:
- name: fan
type: integer
description: "1-4 (Fan 1-4)"
- id: system_temperature_query
label: System Temperature Query
kind: query
command: "~XX352 1"
params: []
- id: projection_hours_query
label: Projection Hours Query
kind: query
command: "~XX108 1"
params: []
- id: color_depth_query
label: Color Depth Query
kind: query
command: "~XX156 1"
params: []
- id: color_format_query
label: Color Format Query
kind: query
command: "~XX157 1"
params: []
- id: lan_mac_query
label: LAN MAC Address Query
kind: query
command: "~XX555 1"
params: []
- id: lan_ip_query
label: LAN IP Address Query
kind: query
command: "~XX87 3"
params: []
- id: wlan_info_query
label: WLAN Info Query (multiplexed)
kind: query
command: "~XX451 {field}"
params:
- name: field
type: integer
description: "2=IP Address, 3=SSID, 5=Start IP, 6=End IP"
- id: info_string_query
label: Info String Query (multiplexed)
kind: query
command: "~XX150 {field}"
params:
- name: field
type: integer
description: "1=Info String, 2=Native Resolution, 3=Main Source, 4=Main Resolution, 5=Main Signal Format, 6=Main Pixel Clock, 7=Main Horz Refresh, 8=Main Vert Refresh, 9=Sub Source, 10=Sub Resolution, 11=Sub Signal Format, 12=Sub Pixel Clock, 13=Sub Horz Refresh, 14=Sub Vert Refresh, 15=Light Source Mode, 16=Standby Power Mode, 17=DHCP, 18=System Temperature"
- id: filter_wheel_index_set
label: Filter Wheel Index Set
kind: action
command: "~XX528 {index}"
params:
- { name: index, type: integer, description: "0000-9999" }
- id: filter_wheel_index_query
label: Filter Wheel Index Query
kind: query
command: "~XX530 1"
params: []
- id: phosphor_wheel_index_set
label: Phosphor Wheel Index Set
kind: action
command: "~XX529 {index}"
params:
- { name: index, type: integer, description: "0000-9999" }
- id: phosphor_wheel_index_query
label: Phosphor Wheel Index Query
kind: query
command: "~XX531 1"
params: []
# --- Remote Control Simulation (single opcode, many key codes) ---
- id: remote_key_simulate
label: Remote Control Key Simulation
kind: action
command: "~XX140 {key}"
params:
- name: key
type: integer
description: "1=Power, 2=Power Off, 10=Up, 11=Left, 12=Enter(Menu), 13=Right, 14=Down, 15=V Keystone +, 16=V Keystone -, 19=Brightness, 20=Menu, 21=Zoom, 24=AV Mute, 28=Contrast, 31=Lens shift, 32=Zoom +, 33=Zoom -, 34=Focus +, 35=Focus -, 36=Mode, 40=info, 41=Auto(Re-sync), 47=Input(Source), 51-60=Digits 1-0, 61=Gamma, 63=PIP, 64=Lens H(left), 65=Lens H(Right), 66=Lens V(Up), 67=Lens V(Down), 68=H Keystone +, 69=H Keystone -, 70=Hot Key (user1/F1), 73=Pattern, 74=Exit"
Feedbacks
# Write commands return single ASCII char: "P" = pass, "F" = fail.
- id: write_ack
type: enum
values: [P, F]
# Read commands return "Ok nnn" on pass, "F" on fail.
- id: read_response
type: string
description: "Ok<value> on pass, F on fail"
# Power state (read from ~XX124 1)
- id: power_state
type: enum
values: [off, on]
Variables
# All continuous/range settings are represented as parameterized Actions above.
# Discrete settable state is also represented as Actions. No separate Variables
# are documented in the source beyond what Actions already cover.
Events
# System Auto Response: device emits unsolicited "INFO n" notifications.
- id: system_auto_response
type: enum
description: "Unsolicited 'INFOn' where n indicates projector state/fault"
values:
- 0: Standby Mode
- 1: Warming up
- 2: Cooling Down
- 3: Out of Range
- 4: Lamp Fail (LED Fail)
- 5: Thermal Switch Error
- 6: Fan Lock
- 7: Over Temperature
- 8: System Auto Send Lamp Hours Running Out
- 9: Cover Open
- 10: Lamp Ignite Fail
- 11: Format Board Power On Fail
- 12: Color Wheel Unexpected Stop
- 13: Over Temperature
- 14: FAN 1 Lock
- 15: FAN 2 Lock
- 16: FAN 3 Lock
- 17: FAN 4 Lock
- 18: FAN 5 Lock
- 19: LAN fail then restart
- 20: LD lower than 60%
- 21: LD NTC (1) Over Temperature
- 22: LD NTC (2) Over Temperature
- 23: High Ambient Temperature
- 24: System Ready
Macros
# No multi-step sequences explicitly documented in source.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no explicit safety interlock procedures or
# power-on sequencing warnings. Power On/Off commands present but no warning
# text about cooldown periods, lamp strike limits, or thermal protection.
Notes
- Command framing: ASCII, lead byte
~(0x7E), 2-digit projector ID (XX, 00 = broadcast to all projectors, 01–99 = single), 3-digit command code, space (0x20), variable value, terminator<CR>(0x0D). - Baud rate is software-selectable on the projector (9600, 14400, 19200, 38400, 57600, 115200) via menu; default 19200. The control system must match.
- Serial Port Path selectable RS232 or HDBaseT (
~XX557) — HDBaseT carries the same RS-232 command stream over the HDBaseT link. - The
XXin every command is a literal placeholder for the 2-digit projector ID, not a fixed prefix. Example from source: command~00195 1<CR>targets projector 00 (all) Test Pattern On; hex7E 30 30 31 39 35 20 31 0D. - Freeze can be released by menu key, exit key, or direct source key (source Note 1).
- Write response:
P= pass,F= fail. Read response:Ok nnn= pass with value,F= fail. - The source document is Optoma's generic RS232 Protocol Function List (titled "RS232 Protocol Function List", baud 19200 8N1), not a model-specific sheet. Recovery notes from prior agents indicate the xx515/xx615 family uses this shared protocol; a dedicated per-model sheet was not located.
Spec above. Generic family sheet, ~170 opcodes enumerated as parameterized actions (enum/range collapsed per granularity rule, distinct opcodes kept separate). Telnet/HTTP ports, PJ Link class, exact model variants = unresolved.
## Provenance
```yaml
source_domains:
- region-resource.optoma.com
- optomaeurope.com
- optoma.de
- manualslib.com
source_urls:
- https://region-resource.optoma.com/products/import/Documents/fcc27c8d-3ab3-462f-a7f3-ee35633fdb8c.pdf
- https://region-resource.optoma.com/products/import/Documents/cf45148a-8c4b-4489-8689-b9b1c8d09d14.pdf
- https://www.optomaeurope.com/ContentStorage/Documents/731aa26e-4842-4414-999a-422879b17cee.pdf
- https://www.optoma.de/uploads/rs232/ds309-rs232-en.pdf
- https://www.manualslib.com/products/Optoma-X515-12544667.html
retrieved_at: 2026-07-24T19:08:25.942Z
last_checked_at: 2026-08-05T08:34:25.811Z
```
## Verification Summary
```yaml
verdict: verified
checked_at: 2026-08-05T08:34:25.811Z
matched_actions: 184
action_count: 184
confidence: medium
summary: "All 184 spec actions match documented ~XXnnn opcodes in the Optoma RS232 Protocol Function List; transport parameters verified verbatim. (13 unresolved item(s) noted in Known Gaps.)"
```
## Known Gaps
```yaml
- "source does not name a specific model (W515/EH515/X615/W615/EH615 etc.) — generic family sheet only."
- "TCP port for Telnet not stated in source."
- "HTTP base URL / port not stated in source."
- "PJ Link / Crestron / Extron / AMX are listed as togglable services but their protocol details (ports, join numbers) are not documented here."
- "Telnet/HTTP port not stated in source"
- "HTTP base URL not stated in source"
- "source contains no explicit safety interlock procedures or"
- "exact model variants in the xx515/xx615 family (W515, WU515, EH515, X615, W615, EH615, etc.) not enumerated in this source."
- "TCP port for Telnet control not stated."
- "HTTP base URL / port for HTTP control not stated."
- "PJ Link class, Crestron driver file, Extron driver file, AMX DDK not documented in this source — only enable/disable toggles."
- "firmware version compatibility not stated."
- "source does not document command timing limits, inter-command spacing, or response timeouts."
```
---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0