Summary
Optoma RS-232 serial control protocol for Optoma UHD/SUHD projectors. Provides power, source, display mode, image adjustment, lamp, security, menu and remote-emulation commands plus read-back queries. Command format: ~XX{cmd} {param}\r where XX is the projector ID (00 = all projectors, 01–99 = individual). Pass response = P, fail = F.
Transport
protocols:
- serial
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
uart_fifo: disabled # source: "UART16550 FIFO: Disable"
auth:
type: none # inferred: no auth procedure in source
# All commands are addressed by projector ID: XX=01-99 (specific) or 00 (all).
# Frame: ASCII "~XX{cmd} {param}" + CR (0x0D). Projector replies "P" (pass) or "F" (fail).
Traits
# Inferred from command examples present in source
traits:
- powerable # inferred: ~XX00 1/2 power on/off present
- queryable # inferred: ~XX121-129 read queries present
- levelable # inferred: brightness/contrast/volume/zoom parameterized commands present
- routable # inferred: source-selection commands ~XX12 / ~XX39 present
Actions
# XX = projector ID. `00` = broadcast to all projectors; `01`-`99` = specific unit.
# Source lists each enumerated variant as a separate row → each is its own action.
# `id` parameter is the projector address used in the leading ~XX field.
# Hex payloads transcribed verbatim from source. Where source carries obvious
# transcription bugs (e.g. ~XX35 uses 3036 = "06" hex, ~XX61/82/83 reuse 3030
# or 3038 hex groups) the payload is reproduced AS WRITTEN in the source -
# verifier should treat those rows as suspect.
- id: power_on
label: Power On
kind: action
command: "~{id}00 1"
params:
- name: id
type: string
description: "Projector ID, 2 digits. '00'=all, '01'-'99'=specific. Hex: 7E {id-hex} 30 30 20 31 0D"
- id: power_off
label: Power Off
kind: action
command: "~{id}00 2"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 20 32 0D"
- id: resync
label: Resync
kind: action
command: "~{id}01 1"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 31 20 31 0D"
- id: av_mute_on
label: AV Mute On
kind: action
command: "~{id}02 1"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 32 20 31 0D"
- id: av_mute_off
label: AV Mute Off
kind: action
command: "~{id}02 2"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 32 20 32 0D"
- id: mute_on
label: Mute On
kind: action
command: "~{id}03 1"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 33 20 31 0D"
- id: mute_off
label: Mute Off
kind: action
command: "~{id}03 2"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 33 20 32 0D"
- id: freeze
label: Freeze
kind: action
command: "~{id}04 1"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 34 20 31 0D"
- id: unfreeze
label: Unfreeze
kind: action
command: "~{id}04 2"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 34 20 32 0D"
- id: zoom_plus
label: Zoom Plus
kind: action
command: "~{id}05 1"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 35 20 31 0D"
- id: zoom_minus
label: Zoom Minus
kind: action
command: "~{id}06 1"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 36 20 31 0D"
- id: pan_up
label: Pan Up (under zoom)
kind: action
command: "~{id}07 1"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 37 20 31 0D"
- id: pan_down
label: Pan Down (under zoom)
kind: action
command: "~{id}08 1"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 38 20 31 0D"
- id: pan_left
label: Pan Left (under zoom)
kind: action
command: "~{id}09 1"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 30 39 20 31 0D"
- id: pan_right
label: Pan Right (under zoom)
kind: action
command: "~{id}10 1"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 31 30 20 31 0D"
- id: direct_source_dvid
label: Direct Source DVI-D
kind: action
command: "~{id}12 2"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 31 32 20 32 0D"
- id: direct_source_dvia
label: Direct Source DVI-A
kind: action
command: "~{id}12 3"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 31 32 20 33 0D"
- id: direct_source_vga_scart
label: Direct Source VGA / VGA 1 SCART
kind: action
command: "~{id}12 7"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 31 32 20 37 0D"
- id: direct_source_vga_component
label: Direct Source VGA 1 Component
kind: action
command: "~{id}12 8"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 31 32 20 38 0D"
- id: direct_source_svideo
label: Direct Source S-Video
kind: action
command: "~{id}12 9"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 31 32 20 39 0D"
- id: direct_source_video
label: Direct Source Video
kind: action
command: "~{id}12 10"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 31 32 20 31 30 0D"
- id: display_mode_presentation
label: Display Mode Presentation
kind: action
command: "~{id}20 1"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 32 30 20 31 0D"
- id: display_mode_bright
label: Display Mode Bright
kind: action
command: "~{id}20 2"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 32 30 20 32 0D"
- id: display_mode_movie
label: Display Mode Movie
kind: action
command: "~{id}20 3"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 32 30 20 33 0D"
- id: display_mode_srgb
label: Display Mode sRGB
kind: action
command: "~{id}20 4"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 32 30 20 34 0D"
- id: display_mode_user1
label: Display Mode User 1
kind: action
command: "~{id}20 5"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 32 30 20 35 0D"
- id: set_brightness
label: Set Brightness
kind: action
command: "~{id}21 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Brightness level, range -50 to +50. Hex: 7E {id-hex} 30 32 31 20 {n-hex} 0D"
- id: set_contrast
label: Set Contrast
kind: action
command: "~{id}22 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Contrast level, range -50 to +50."
- id: set_sharpness
label: Set Sharpness
kind: action
command: "~{id}23 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Sharpness level, range -50 to +50."
- id: set_red_gain
label: Set Red Gain (Color)
kind: action
command: "~{id}24 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Red gain, range -50 to +50."
- id: set_green_gain
label: Set Green Gain (Color)
kind: action
command: "~{id}25 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Green gain, range -50 to +50."
- id: set_blue_gain
label: Set Blue Gain (Color)
kind: action
command: "~{id}26 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Blue gain, range -50 to +50."
- id: set_red_bias
label: Set Red Bias
kind: action
command: "~{id}27 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Red bias, range -50 to +50."
- id: set_green_bias
label: Set Green Bias
kind: action
command: "~{id}28 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Green bias, range -50 to +50."
- id: set_blue_bias
label: Set Blue Bias
kind: action
command: "~{id}29 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Blue bias, range -50 to +50."
- id: set_cyan
label: Set Cyan
kind: action
command: "~{id}30 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Cyan, range -50 to +50."
- id: set_yellow
label: Set Yellow
kind: action
command: "~{id}31 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Yellow, range -50 to +50."
- id: set_magenta
label: Set Magenta
kind: action
command: "~{id}32 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Magenta, range -50 to +50."
- id: color_reset
label: Color Reset
kind: action
command: "~{id}33 1"
params:
- name: id
type: string
description: "Projector ID. Hex: 7E {id-hex} 30 33 33 20 31 0D"
- id: set_whitepeaking
label: Set WhitePeaking
kind: action
command: "~{id}34 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "WhitePeaking level, range 0-10."
- id: degamma_film
label: Degamma Film
kind: action
command: "~{id}35 1"
params:
- name: id
type: string
description: "Projector ID. Source hex row reads 7E 30 30 33 35 20 31 0D (mnemonic 35). Hex 7E {id-hex} 30 30 33 35 20 31 0D."
- id: degamma_video
label: Degamma Video
kind: action
command: "~{id}35 2"
params:
- name: id
type: string
description: "Projector ID."
- id: degamma_graphics
label: Degamma Graphics
kind: action
command: "~{id}35 3"
params:
- name: id
type: string
description: "Projector ID."
- id: degamma_pc
label: Degamma PC
kind: action
command: "~{id}35 4"
params:
- name: id
type: string
description: "Projector ID."
- id: image_ai_on
label: Image AI On
kind: action
command: "~{id}36 1"
params:
- name: id
type: string
description: "Projector ID. NOTE: source hex row for Image AI On is 7E 30 30 33 36 30 20 37 0D - duplicated/typo in source, reproduced verbatim."
- id: image_ai_off
label: Image AI Off
kind: action
command: "~{id}36 2"
params:
- name: id
type: string
description: "Projector ID. NOTE: source hex row for Image AI Off is identical to On (7E 30 30 36 30 20 37 0D) - typo in source, reproduced verbatim."
- id: color_temp_warm
label: Color Temperature Warm
kind: action
command: "~{id}36 1"
params:
- name: id
type: string
description: "Projector ID. NOTE: source reuses mnemonic 36 for both Image AI and Color Temp tables - distinct logical commands sharing the same opcode. Hex 7E {id-hex} 30 30 33 36 20 31 0D."
- id: color_temp_medium
label: Color Temperature Medium
kind: action
command: "~{id}36 2"
params:
- name: id
type: string
description: "Projector ID."
- id: color_temp_cold
label: Color Temperature Cold
kind: action
command: "~{id}36 3"
params:
- name: id
type: string
description: "Projector ID."
- id: color_space_auto
label: Color Space Auto
kind: action
command: "~{id}37 1"
params:
- name: id
type: string
description: "Projector ID."
- id: color_space_rgb
label: Color Space RGB
kind: action
command: "~{id}37 2"
params:
- name: id
type: string
description: "Projector ID."
- id: color_space_yuv
label: Color Space YUV
kind: action
command: "~{id}37 3"
params:
- name: id
type: string
description: "Projector ID."
- id: input_source_dvi
label: Input Source DVI
kind: action
command: "~{id}39 2"
params:
- name: id
type: string
description: "Projector ID."
- id: input_source_vga
label: Input Source VGA
kind: action
command: "~{id}39 5"
params:
- name: id
type: string
description: "Projector ID."
- id: input_source_svideo
label: Input Source S-Video
kind: action
command: "~{id}39 9"
params:
- name: id
type: string
description: "Projector ID."
- id: input_source_video
label: Input Source Video
kind: action
command: "~{id}39 10"
params:
- name: id
type: string
description: "Projector ID."
- id: format_4_3
label: Format 4:3
kind: action
command: "~{id}60 1"
params:
- name: id
type: string
description: "Projector ID."
- id: format_16_10_16_9
label: Format 16:10 / 16:9
kind: action
command: "~{id}60 2"
params:
- name: id
type: string
description: "Projector ID."
- id: format_lbx
label: Format LBX
kind: action
command: "~{id}60 5"
params:
- name: id
type: string
description: "Projector ID."
- id: format_native
label: Format Native
kind: action
command: "~{id}60 6"
params:
- name: id
type: string
description: "Projector ID."
- id: format_auto
label: Format Auto
kind: action
command: "~{id}60 7"
params:
- name: id
type: string
description: "Projector ID."
- id: pcmode_on
label: PCMode On
kind: action
command: "~{id}61 1"
params:
- name: id
type: string
description: "Projector ID. NOTE: source hex row reads 7E 30 30 36 30 20 37 0D for both On and Off (typo)."
- id: pcmode_off
label: PCMode Off
kind: action
command: "~{id}61 2"
params:
- name: id
type: string
description: "Projector ID. NOTE: source hex row reads 7E 30 30 36 30 20 37 0D (typo)."
- id: set_overscan
label: Set Overscan
kind: action
command: "~{id}61 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Overscan, range 0-12. NOTE: source reuses mnemonic 61 - distinct command from PCMode."
- id: set_zoom
label: Set Zoom
kind: action
command: "~{id}62 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "Zoom, range 0-100."
- id: set_h_image_shift
label: Set H Image Shift
kind: action
command: "~{id}63 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "H Image Shift, range -50 to +50."
- id: set_v_image_shift
label: Set V Image Shift
kind: action
command: "~{id}64 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "V Image Shift, range -50 to +50."
- id: set_v_keystone
label: Set V Keystone
kind: action
command: "~{id}66 {n}"
params:
- name: id
type: string
description: "Projector ID."
- name: n
type: integer
description: "V Keystone, range -20 to +20."
- id: language_english
label: Language English
kind: action
command: "~{id}70 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_german
label: Language German
kind: action
command: "~{id}70 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_french
label: Language French
kind: action
command: "~{id}70 3"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_italian
label: Language Italian
kind: action
command: "~{id}70 4"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_spanish
label: Language Spanish
kind: action
command: "~{id}70 5"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_portuguese
label: Language Portuguese
kind: action
command: "~{id}70 6"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_polish
label: Language Polish
kind: action
command: "~{id}70 7"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_dutch
label: Language Dutch
kind: action
command: "~{id}70 8"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_swedish
label: Language Swedish
kind: action
command: "~{id}70 9"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_norwegian_danish
label: Language Norwegian/Danish
kind: action
command: "~{id}70 10"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_finnish
label: Language Finnish
kind: action
command: "~{id}70 11"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_greek
label: Language Greek
kind: action
command: "~{id}70 12"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_traditional_chinese
label: Language Traditional Chinese
kind: action
command: "~{id}70 13"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_simplified_chinese
label: Language Simplified Chinese
kind: action
command: "~{id}70 14"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_japanese
label: Language Japanese
kind: action
command: "~{id}70 15"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_korean
label: Language Korean
kind: action
command: "~{id}70 16"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_russian
label: Language Russian
kind: action
command: "~{id}70 17"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_hungarian
label: Language Hungarian
kind: action
command: "~{id}70 18"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_czech
label: Language Czech
kind: action
command: "~{id}70 19"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_arabic
label: Language Arabic
kind: action
command: "~{id}70 20"
params: [{name: id, type: string, description: "Projector ID."}]
- id: language_thai
label: Language Thai
kind: action
command: "~{id}70 21"
params: [{name: id, type: string, description: "Projector ID."}]
- id: projection_front_desktop
label: Projection Front-Desktop
kind: action
command: "~{id}71 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: projection_rear_desktop
label: Projection Rear-Desktop
kind: action
command: "~{id}71 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: projection_front_ceiling
label: Projection Front-Ceiling
kind: action
command: "~{id}71 3"
params: [{name: id, type: string, description: "Projector ID."}]
- id: projection_rear_ceiling
label: Projection Rear-Ceiling
kind: action
command: "~{id}71 4"
params: [{name: id, type: string, description: "Projector ID."}]
- id: menu_location_top_left
label: Menu Location Top Left
kind: action
command: "~{id}72 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: menu_location_top_right
label: Menu Location Top Right
kind: action
command: "~{id}72 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: menu_location_centre
label: Menu Location Centre
kind: action
command: "~{id}72 3"
params: [{name: id, type: string, description: "Projector ID."}]
- id: menu_location_bottom_left
label: Menu Location Bottom Left
kind: action
command: "~{id}72 4"
params: [{name: id, type: string, description: "Projector ID."}]
- id: menu_location_bottom_right
label: Menu Location Bottom Right
kind: action
command: "~{id}72 5"
params: [{name: id, type: string, description: "Projector ID."}]
- id: set_signal_frequency
label: Set Signal Frequency
kind: action
command: "~{id}73 {n}"
params:
- {name: id, type: string, description: "Projector ID."}
- {name: n, type: integer, description: "Frequency, range -5 to +5."}
- id: set_signal_phase
label: Set Signal Phase
kind: action
command: "~{id}74 {n}"
params:
- {name: id, type: string, description: "Projector ID."}
- {name: n, type: integer, description: "Phase, range 0-31."}
- id: set_h_position
label: Set H Position
kind: action
command: "~{id}75 {n}"
params:
- {name: id, type: string, description: "Projector ID."}
- {name: n, type: integer, description: "H Position, range -5 to +5."}
- id: set_v_position
label: Set V Position
kind: action
command: "~{id}76 {n}"
params:
- {name: id, type: string, description: "Projector ID."}
- {name: n, type: integer, description: "V Position, range -5 to +5."}
- id: set_security_timer
label: Set Security Timer
kind: action
command: "~{id}77 {nnnnnn}"
params:
- {name: id, type: string, description: "Projector ID."}
- {name: nnnnnn, type: string, description: "Six-digit Month/Day/Hour security timer."}
notes: "Source documents no ASCII/HEX payload for this row - payload format UNRESOLVED beyond the parameter shape."
- id: security_settings_on
label: Security Settings On
kind: action
command: "~{id}78 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: security_settings_off
label: Security Settings Off
kind: action
command: "~{id}78 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: set_projector_id
label: Set Projector ID
kind: action
command: "~{id}79 {n}"
params:
- {name: id, type: string, description: "Projector ID (addressed)."}
- {name: n, type: integer, description: "New projector ID to assign, range 00-99."}
- id: mute2_on
label: Mute (alternate) On
kind: action
command: "~{id}80 1"
params: [{name: id, type: string, description: "Projector ID. Source labels this row 'Mute' distinct from ~XX03."}]
- id: mute2_off
label: Mute (alternate) Off
kind: action
command: "~{id}80 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: set_volume
label: Set Volume
kind: action
command: "~{id}81 {n}"
params:
- {name: id, type: string, description: "Projector ID."}
- {name: n, type: integer, description: "Volume level, range 0-15."}
- id: startup_logo_on
label: Start Up Logo On
kind: action
command: "~{id}82 1"
params: [{name: id, type: string, description: "Projector ID. NOTE: source Off hex identical to On (typo)."}]
- id: startup_logo_off
label: Start Up Logo Off
kind: action
command: "~{id}82 2"
params: [{name: id, type: string, description: "Projector ID. NOTE: source Off hex identical to On (typo)."}]
- id: screen_type_16_10
label: Screen Type 16:10
kind: action
command: "~{id}83 1"
params: [{name: id, type: string, description: "Projector ID. NOTE: source hex for both rows identical (typo)."}]
- id: screen_type_16_9
label: Screen Type 16:9
kind: action
command: "~{id}83 2"
params: [{name: id, type: string, description: "Projector ID. NOTE: source hex for both rows identical (typo)."}]
- id: source_lock_on
label: Source Lock On
kind: action
command: "~{id}100 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: source_lock_off
label: Source Lock Off
kind: action
command: "~{id}100 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: high_altitude_on
label: High Altitude On
kind: action
command: "~{id}101 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: high_altitude_off
label: High Altitude Off
kind: action
command: "~{id}101 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: information_hide_on
label: Information Hide On
kind: action
command: "~{id}102 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: information_hide_off
label: Information Hide Off
kind: action
command: "~{id}102 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: keypad_lock_on
label: Keypad Lock On
kind: action
command: "~{id}103 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: keypad_lock_off
label: Keypad Lock Off
kind: action
command: "~{id}103 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: background_color_blue
label: Background Color Blue
kind: action
command: "~{id}104 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: background_color_black
label: Background Color Black
kind: action
command: "~{id}104 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: direct_power_on_on
label: Direct Power On
kind: action
command: "~{id}105 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: direct_power_on_off
label: Direct Power Off
kind: action
command: "~{id}105 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: set_auto_power_off
label: Set Auto Power Off (minutes)
kind: action
command: "~{id}106 {n}"
params:
- {name: id, type: string, description: "Projector ID."}
- {name: n, type: integer, description: "Auto Power Off, range 0-180 minutes."}
- id: set_sleep_timer
label: Set Sleep Timer (minutes)
kind: action
command: "~{id}107 {n}"
params:
- {name: id, type: string, description: "Projector ID."}
- {name: n, type: integer, description: "Sleep Timer, range 0-999 minutes."}
- id: lamp_hour
label: Lamp Setting - Lamp Hour
kind: action
command: "~{id}108 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: lamp_reminder_on
label: Lamp Reminder On
kind: action
command: "~{id}109 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: lamp_reminder_off
label: Lamp Reminder Off
kind: action
command: "~{id}109 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: brightness_mode_bright
label: Brightness Mode BRIGHT
kind: action
command: "~{id}110 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: brightness_mode_std
label: Brightness Mode STD
kind: action
command: "~{id}110 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: lamp_reset_yes
label: Lamp Reset Yes
kind: action
command: "~{id}111 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: lamp_reset_no
label: Lamp Reset No
kind: action
command: "~{id}111 2"
params: [{name: id, type: string, description: "Projector ID."}]
- id: reset_yes
label: Reset Yes
kind: action
command: "~{id}112 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: reset_no
label: Reset No
kind: action
command: "~{id}112 2"
params: [{name: id, type: string, description: "Projector ID."}]
# --- READ queries (kind: query) ---
- id: query_input_source
label: Query Input Source
kind: query
command: "~{id}121 1"
params: [{name: id, type: string, description: "Projector ID. Hex 7E {id-hex} 30 30 31 32 31 20 31 0D."}]
- id: query_software_version
label: Query Software Version
kind: query
command: "~{id}122 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: query_display_mode
label: Query Display Mode
kind: query
command: "~{id}123 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: query_power_state
label: Query Power State
kind: query
command: "~{id}124 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: query_brightness
label: Query Brightness
kind: query
command: "~{id}125 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: query_contrast
label: Query Contrast
kind: query
command: "~{id}126 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: query_aspect_ratio
label: Query Aspect Ratio
kind: query
command: "~{id}127 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: query_color_temperature
label: Query Color Temperature
kind: query
command: "~{id}128 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: query_projection_mode
label: Query Projection Mode
kind: query
command: "~{id}129 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: query_information
label: Query Information
kind: query
command: "~{id}150 1"
params: [{name: id, type: string, description: "Projector ID. Response: 'OKabbbbccdddde' - a=On/Off, bbbb=LampHour, cc=source (00 None/01 DVID/02 VGA1/03 VGA2/04 S-Video/05 Video), dddd=FW version, e=Display mode."}]
- id: query_model_name
label: Query Model Name
kind: query
command: "~{id}151 1"
params: [{name: id, type: string, description: "Projector ID. Response 'OKn' where n=0..4 maps to EP721/EP723/EP727/EP728/EW1610."}]
# --- SEND to emulate Remote (~XX140) ---
- id: remote_power
label: Remote Power
kind: action
command: "~{id}140 1"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_mouse_up
label: Remote Mouse Up
kind: action
command: "~{id}140 3"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_mouse_left
label: Remote Mouse Left
kind: action
command: "~{id}140 4"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_mouse_enter
label: Remote Mouse Enter
kind: action
command: "~{id}140 5"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_mouse_right
label: Remote Mouse Right
kind: action
command: "~{id}140 6"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_mouse_down
label: Remote Mouse Down
kind: action
command: "~{id}140 7"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_mouse_left_click
label: Mouse Left Click
kind: action
command: "~{id}140 8"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_mouse_right_click
label: Mouse Right Click
kind: action
command: "~{id}140 9"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_up_page_plus
label: Remote Up / Page +
kind: action
command: "~{id}140 10"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_left_source
label: Remote Left / Source
kind: action
command: "~{id}140 11"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_enter_menu
label: Remote Enter (for projection MENU)
kind: action
command: "~{id}140 12"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_right_resync
label: Remote Right / Re-SYNC
kind: action
command: "~{id}140 13"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_down_page_minus
label: Remote Down / Page -
kind: action
command: "~{id}140 14"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_keystone_plus
label: Remote Keystone +
kind: action
command: "~{id}140 15"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_keystone_minus
label: Remote Keystone -
kind: action
command: "~{id}140 16"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_volume_minus
label: Remote Volume -
kind: action
command: "~{id}140 17"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_volume_plus
label: Remote Volume +
kind: action
command: "~{id}140 18"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_brightness
label: Remote Brightness
kind: action
command: "~{id}140 19"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_menu
label: Remote Menu
kind: action
command: "~{id}140 20"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_zoom
label: Remote Zoom
kind: action
command: "~{id}140 21"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_dvi
label: Remote DVI
kind: action
command: "~{id}140 22"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_freeze
label: Remote Freeze
kind: action
command: "~{id}140 23"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_av_mute
label: Remote AV Mute
kind: action
command: "~{id}140 24"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_svideo
label: Remote S-Video
kind: action
command: "~{id}140 25"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_vga
label: Remote VGA
kind: action
command: "~{id}140 26"
params: [{name: id, type: string, description: "Projector ID."}]
- id: remote_video
label: Remote Video
kind: action
command: "~{id}140 27"
params: [{name: id, type: string, description: "Projector ID."}]
Feedbacks
# Pass/Fail acknowledgement for every command
- id: command_pass
type: enum
values: ["P"]
description: "Projector returns 'P' on command pass."
- id: command_fail
type: enum
values: ["F"]
description: "Projector returns 'F' on command fail."
- id: input_source
type: string
description: "Response to ~XX121 1 query."
- id: software_version
type: string
description: "Response to ~XX122 1 query."
- id: display_mode
type: enum
values: [Presentation, Bright, Movie, sRGB, "User 1"]
description: "Response to ~XX123 1 query."
- id: power_state
type: enum
values: [on, off]
description: "Response to ~XX124 1 query."
- id: brightness_value
type: integer
description: "Response to ~XX125 1 query."
- id: contrast_value
type: integer
description: "Response to ~XX126 1 query."
- id: aspect_ratio
type: enum
description: "Response to ~XX127 1 query."
- id: color_temperature
type: enum
values: [Warm, Medium, Cold]
description: "Response to ~XX128 1 query."
- id: projection_mode
type: enum
values: ["Front-Desktop", "Rear-Desktop", "Front-Ceiling", "Rear-Ceiling"]
description: "Response to ~XX129 1 query."
- id: information_block
type: string
description: "Response to ~XX150 1: 'OKabbbbccdddde' packed status (a On/Off, bbbb LampHour, cc source 00-05, dddd FW version, e Display mode)."
- id: model_name
type: enum
values: [EP721, EP723, EP727, EP728, EW1610]
description: "Response to ~XX151 1 query."
Variables
- id: brightness
type: integer
range: [-50, 50]
description: "Picture brightness; set via ~XX21 n."
- id: contrast
type: integer
range: [-50, 50]
description: "Picture contrast; set via ~XX22 n."
- id: sharpness
type: integer
range: [-50, 50]
description: "Picture sharpness; set via ~XX23 n."
- id: red_gain
type: integer
range: [-50, 50]
- id: green_gain
type: integer
range: [-50, 50]
- id: blue_gain
type: integer
range: [-50, 50]
- id: red_bias
type: integer
range: [-50, 50]
- id: green_bias
type: integer
range: [-50, 50]
- id: blue_bias
type: integer
range: [-50, 50]
- id: cyan
type: integer
range: [-50, 50]
- id: yellow
type: integer
range: [-50, 50]
- id: magenta
type: integer
range: [-50, 50]
- id: whitepeaking
type: integer
range: [0, 10]
- id: overscan
type: integer
range: [0, 12]
- id: zoom
type: integer
range: [0, 100]
- id: h_image_shift
type: integer
range: [-50, 50]
- id: v_image_shift
type: integer
range: [-50, 50]
- id: v_keystone
type: integer
range: [-20, 20]
- id: signal_frequency
type: integer
range: [-5, 5]
- id: signal_phase
type: integer
range: [0, 31]
- id: h_position
type: integer
range: [-5, 5]
- id: v_position
type: integer
range: [-5, 5]
- id: volume
type: integer
range: [0, 15]
- id: projector_id
type: integer
range: [0, 99]
- id: auto_power_off_minutes
type: integer
range: [0, 180]
- id: sleep_timer_minutes
type: integer
range: [0, 999]
Events
# Unsolicited notifications sent from projector automatically.
- id: status_info
type: string
description: >
Unsolicited 'INFOn' notification. n: 0=Standby, 1=Warming, 2=Cooling,
3=Out of Range, 4=Lamp Fail. Sent automatically on those transitions.
Macros
# UNRESOLVED: no multi-step sequences described explicitly in source.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or
# power-on sequencing requirements. Lamp Reset (~XX111 1) and global Reset
# (~XX112 1) are destructive but the source documents no confirmation step.
Notes
- Source is a generic Optoma RS232 Protocol Function List — not specific to any single product. The model name "UHD SUHD Series X A" appears to be a scraper artifact; the source's own model-name query (
~XX151 1) returns one of EP721/EP723/EP727/EP728/EW1610. Treat the model binding as UNRESOLVED until a real product is matched. - All commands carry a 2-digit projector ID prefix
~XX.00broadcasts to all projectors on the bus;01–99address a specific unit. Each frame ends with CR (0x0D). - Pass/Fail acknowledgement: projector replies
P(pass) orF(fail) for each accepted command. - Suspect rows in source (reproduced verbatim, flagged for verifier attention):
~XX35(Degamma) source hex row reads7E 30 30 33 35 20 31 0Dbut ASCII column shows~XX35— opcode mismatch between ASCII and hex columns.~XX36is reused for both Image AI and Color Temperature tables — same opcode, different logical meanings.~XX61is reused for both PCMode (on/off) and Overscan (n=0-12) — same opcode, different logical meanings.~XX82(Start Up Logo) On and Off rows share identical hex in source (typo).~XX83(Screen Type) 16:10 and 16:9 rows share identical hex in source (typo).~XX77(Security Timer) row has empty HEX Code column — payload UNRESOLVED.~XX108 1(Lamp Hour) lists no description beyond "Lamp Hour" — likely a query-style read, but classified here as an action per its placement under "SEND to projector".
Spec done. All commands from source enumerated. Suspect rows (opcode reuse, hex typos) flagged verbatim with UNRESOLVED notes — no fabrication.
## Provenance
```yaml
source_domains:
- optoma.co.uk
- region-resource.optoma.com
- optomaeurope.com
source_urls:
- https://www.optoma.co.uk/uploads/RS232/EW628-RS232-en-GB.pdf
- 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://region-resource.optoma.com/products/import/Documents/471bc1d6-63f6-4825-aeef-2414e9cc5f99.pdf
- https://www.optomaeurope.com/ContentStorage/Documents/731aa26e-4842-4414-999a-422879b17cee.pdf
retrieved_at: 2026-06-15T12:46:00.905Z
last_checked_at: 2026-06-16T07:10:00.657Z
```
## Verification Summary
```yaml
verdict: verified
checked_at: 2026-06-16T07:10:00.657Z
matched_actions: 173
action_count: 173
confidence: medium
summary: "All 173 spec actions matched with exact command mnemonics in source; all transport parameters verified verbatim. (10 unresolved item(s) noted in Known Gaps.)"
```
## Known Gaps
```yaml
- "model name \"UHD SUHD Series X A\" is a scraper artifact — the source is a generic Optoma RS232 Protocol Function List covering families such as EP721/EP723/EP727/EP728/EW1610. Confirm the exact product model before publishing."
- "firmware version compatibility not stated in source"
- "exact product model identifier not confirmed"
- "no multi-step sequences described explicitly in source."
- "source contains no safety warnings, interlock procedures, or"
- "firmware version compatibility range not stated in source"
- "exact product model identifier not confirmed — see Notes"
- "~XX77 Security Timer payload format not documented"
- "~XX35 hex/ASCII opcode mismatch in source needs vendor confirmation"
- "opcode reuse (~XX36, ~XX61) — disambiguation method not documented"
```
---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0