Summary
The SIM2 Crystal 4 SH (CRYSTAL4 SH) is a home theatre projector controlled over an RS-232C serial connection using a binary (hex) packet-oriented protocol. Packets consist of a fixed 7-byte header (BE EF sync + packet type + payload size + CRC16) followed by a variable payload. This spec covers the remote-control emulation keys, direct source selection, display/setup/network menu commands, and status queries documented in the vendor protocol reference (Rev. 1.0, 21 December 2020). ASCII mode is not supported; commands require no termination character.
Transport
protocols:
- serial
serial:
baud_rate: 19200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
# Communication Mode: Binary/Hex (ASCII not supported). No termination char.
# Cable: NULL modem, 9-pin male (controller) to 9-pin female (projector).
# Max distance: 15 m / 50 ft.
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- powerable # inferred: power on/off commands present
- queryable # inferred: status query commands present
- levelable # inferred: brightness/contrast/etc. adjust commands present
Actions
# Packet header: BE EF [type] [sizeLo sizeHi] [crcLo crcHi] + payload
# Type 02 = remote-control/direct action (ack 06, fail 15)
# Type 1A = set/get/inc/dec (ack 20 XX XX or 15; CRC computed over full packet)
# Type 10 = status query
# "crc crc" = CRC16 (Modbus) placeholder; must be computed at runtime, then
# placed in bytes 5-6 of header. Compute with CRC field zeroed first.
# ---- 2.1 Remote Control Key Emulation (type 02) ----
- id: power_on
label: Power On
kind: action
command: "BE EF 02 06 00 6B E6 52 01 00 00 00 00"
params: []
- id: power_off
label: Power Off
kind: action
command: "BE EF 02 06 00 51 E4 48 01 00 00 00 00"
params: []
- id: function_f1
label: Function Button (F1)
kind: action
command: "BE EF 02 06 00 F7 EA 0E 01 00 00 00 00"
params: []
- id: function_f2
label: Function Button (F2)
kind: action
command: "BE EF 02 06 00 26 EB 0F 01 00 00 00 00"
params: []
- id: function_f3
label: Function Button (F3)
kind: action
command: "BE EF 02 06 00 49 E9 10 01 00 00 00 00"
params: []
- id: mode
label: Mode
kind: action
command: "BE EF 02 06 00 98 E8 11 01 00 00 00 00"
params: []
- id: up
label: Up
kind: action
command: "BE EF 02 06 00 DC E7 55 01 00 00 00 00"
params: []
- id: down
label: Down
kind: action
command: "BE EF 02 06 00 C1 E6 58 01 00 00 00 00"
params: []
- id: left
label: Left
kind: action
command: "BE EF 02 06 00 EF E7 56 01 00 00 00 00"
params: []
- id: right
label: Right
kind: action
command: "BE EF 02 06 00 3E E6 57 01 00 00 00 00"
params: []
- id: enter
label: Enter
kind: action
command: "BE EF 02 06 00 BA E7 53 01 00 00 00 00"
params: []
- id: source
label: Source
kind: action
command: "BE EF 02 06 00 AB E8 12 01 00 00 00 00"
params: []
- id: resync
label: Re-sync
kind: action
command: "BE EF 02 06 00 0D E6 54 01 00 00 00 00"
params: []
- id: menu
label: Menu
kind: action
command: "BE EF 02 06 00 23 E7 5A 01 00 00 00 00"
params: []
- id: freeze
label: Freeze
kind: action
command: "BE EF 02 06 00 7A E9 13 01 00 00 00 00"
params: []
- id: aspect_ratio_key
label: Aspect Ratio (key)
kind: action
command: "BE EF 02 06 00 CD E8 14 01 00 00 00 00"
params: []
- id: information
label: Information
kind: action
command: "BE EF 02 06 00 1C E9 15 01 00 00 00 00"
params: []
- id: av_mute
label: AV Mute
kind: action
command: "BE EF 02 06 00 2F E9 16 01 00 00 00 00"
params: []
- id: digital_zoom
label: Digital Zoom
kind: action
command: "BE EF 02 06 00 FE E8 17 01 00 00 00 00"
params: []
- id: vga_key
label: VGA (key)
kind: action
command: "BE EF 02 06 00 01 E8 18 01 00 00 00 00"
params: []
- id: hdmi2_key
label: HDMI2 (key)
kind: action
command: "BE EF 02 06 00 D0 E9 19 01 00 00 00 00"
params: []
- id: hdmi1_key
label: HDMI1 (key)
kind: action
command: "BE EF 02 06 00 E3 E9 1A 01 00 00 00 00"
params: []
- id: num_1
label: Number Key 1
kind: action
command: "BE EF 02 06 00 67 E8 1E 01 00 00 00 00"
params: []
- id: num_2
label: Number Key 2
kind: action
command: "BE EF 02 06 00 B6 E9 1F 01 00 00 00 00"
params: []
- id: num_3
label: Number Key 3
kind: action
command: "BE EF 02 06 00 B9 EC 20 01 00 00 00 00"
params: []
- id: num_4
label: Number Key 4
kind: action
command: "BE EF 02 06 00 68 ED 21 01 00 00 00 00"
params: []
- id: num_5
label: Number Key 5
kind: action
command: "BE EF 02 06 00 5B ED 22 01 00 00 00 00"
params: []
- id: num_6
label: Number Key 6
kind: action
command: "BE EF 02 06 00 8A EC 23 01 00 00 00 00"
params: []
- id: num_7
label: Number Key 7
kind: action
command: "BE EF 02 06 00 3D ED 24 01 00 00 00 00"
params: []
- id: num_8
label: Number Key 8
kind: action
command: "BE EF 02 06 00 EC EC 25 01 00 00 00 00"
params: []
- id: num_9
label: Number Key 9
kind: action
command: "BE EF 02 06 00 DF EC 26 01 00 00 00 00"
params: []
- id: num_0
label: Number Key 0
kind: action
command: "BE EF 02 06 00 0E ED 27 01 00 00 00 00"
params: []
# ---- 2.2.2.1 Direct Source Selection (type 02) ----
- id: select_hdmi1
label: Select HDMI1
kind: action
command: "BE EF 02 06 00 D5 E5 4C 01 00 00 00 00"
params: []
- id: select_hdmi2
label: Select HDMI2
kind: action
command: "BE EF 02 06 00 04 E4 4D 01 00 00 00 00"
params: []
- id: select_vga
label: Select VGA
kind: action
command: "BE EF 02 06 00 62 E4 4B 01 00 00 00 00"
params: []
# ---- 2.2.2.2 Display Mode (type 02) ----
- id: display_mode_dynamic
label: Display Mode Dynamic
kind: action
command: "BE EF 02 06 00 EA EB 03 01 00 00 00 00"
params: []
- id: display_mode_bright
label: Display Mode Bright
kind: action
command: "BE EF 02 06 00 9B F2 A2 01 00 00 00 00"
params: []
- id: display_mode_cinema
label: Display Mode Cinema
kind: action
command: "BE EF 02 06 00 A8 F2 A1 01 00 00 00 00"
params: []
- id: display_mode_sport
label: Display Mode Sport
kind: action
command: "BE EF 02 06 00 5D EA 04 01 00 00 00 00"
params: []
- id: display_mode_natural
label: Display Mode Natural
kind: action
command: "BE EF 02 06 00 8C EB 05 01 00 00 00 00"
params: []
- id: display_mode_hdr
label: Display Mode HDR
kind: action
command: "BE EF 02 06 00 BF EB 06 01 00 00 00 00"
params: []
- id: display_mode_user
label: Display Mode User
kind: action
command: "BE EF 02 06 00 4A F3 A3 01 00 00 00 00"
params: []
- id: display_mode_userhdr
label: Display Mode UserHDR
kind: action
command: "BE EF 02 06 00 FD F2 A4 01 00 00 00 00"
params: []
- id: display_mode_hlg
label: Display Mode HLG
kind: action
command: "BE EF 02 06 00 29 EE 30 01 00 00 00 00"
params: []
- id: display_mode_userhlg
label: Display Mode UserHLG
kind: action
command: "BE EF 02 06 00 F8 EF 31 01 00 00 00 00"
params: []
# ---- HDR Settings (type 02) ----
- id: hdr_auto
label: HDR Auto
kind: action
command: "BE EF 02 06 00 CE F2 A7 01 00 00 00 00"
params: []
- id: hdr_settings_sdr
label: HDR Settings SDR
kind: action
command: "BE EF 02 06 00 31 F2 A8 01 00 00 00 00"
params: []
- id: hdr_hlg_1
label: HDR/HLG 1
kind: action
command: "BE EF 02 06 00 E0 F3 A9 01 00 00 00 00"
params: []
- id: hdr_hlg_2
label: HDR/HLG 2
kind: action
command: "BE EF 02 06 00 D3 F3 AA 01 00 00 00 00"
params: []
- id: hdr_hlg_3
label: HDR/HLG 3
kind: action
command: "BE EF 02 06 00 02 F2 AB 01 00 00 00 00"
params: []
- id: hdr_hlg_4
label: HDR/HLG 4
kind: action
command: "BE EF 02 06 00 B5 F3 AC 01 00 00 00 00"
params: []
# ---- Noise Reduction (type 1A, n=0-3) ----
- id: noise_reduction_inc
label: Noise Reduction Increment
kind: action
command: "BE EF 1A 0C 00 B1 72 1C 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: noise_reduction_dec
label: Noise Reduction Decrement
kind: action
command: "BE EF 1A 0C 00 74 23 1C 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: noise_reduction_get
label: Noise Reduction Get
kind: query
command: "BE EF 1A 0C 00 BE 82 1C 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- Brightness (type 1A, n=-50 - +50) ----
- id: brightness_inc
label: Brightness Increment
kind: action
command: "BE EF 1A 0C 00 5E A3 00 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: brightness_dec
label: Brightness Decrement
kind: action
command: "BE EF 1A 0C 00 9B F2 00 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: brightness_get
label: Brightness Get
kind: query
command: "BE EF 1A 0C 00 51 53 00 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
- id: brightness_set
label: Brightness Set
kind: action
command: "BE EF 1A 0C 00 crc crc 00 00 00 00 {data} 00 00 00 00 00 00 00"
params:
- name: data
type: integer
description: "Brightness value, -50 to +50 (signed). Compute CRC16 over full packet with CRC bytes zeroed."
# ---- Contrast (type 1A, n=-50 - +50) ----
- id: contrast_inc
label: Contrast Increment
kind: action
command: "BE EF 1A 0C 00 9D 5E 01 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: contrast_dec
label: Contrast Decrement
kind: action
command: "BE EF 1A 0C 00 58 0F 01 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: contrast_get
label: Contrast Get
kind: query
command: "BE EF 1A 0C 00 92 AE 01 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
- id: contrast_set
label: Contrast Set
kind: action
command: "BE EF 1A 0C 00 crc crc 01 00 00 00 {data} 00 00 00 00 00 00 00"
params:
- name: data
type: integer
description: "Contrast value, -50 to +50 (signed). Compute CRC16 over full packet with CRC bytes zeroed."
# ---- Sharpness (type 1A, n=1-15) ----
- id: sharpness_inc
label: Sharpness Increment
kind: action
command: "BE EF 1A 0C 00 91 52 04 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: sharpness_dec
label: Sharpness Decrement
kind: action
command: "BE EF 1A 0C 00 54 03 04 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: sharpness_get
label: Sharpness Get
kind: query
command: "BE EF 1A 0C 00 9E A2 04 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- Color (type 1A, n=-50 - +50) ----
- id: color_inc
label: Color Increment
kind: action
command: "BE EF 1A 0C 00 5A A7 03 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: color_dec
label: Color Decrement
kind: action
command: "BE EF 1A 0C 00 9F F6 03 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: color_get
label: Color Get
kind: query
command: "BE EF 1A 0C 00 55 57 03 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- Tint (type 1A, n=-50 - +50) ----
- id: tint_inc
label: Tint Increment
kind: action
command: "BE EF 1A 0C 00 99 5A 02 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: tint_dec
label: Tint Decrement
kind: action
command: "BE EF 1A 0C 00 5C 0B 02 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: tint_get
label: Tint Get
kind: query
command: "BE EF 1A 0C 00 96 AA 02 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- Gamma (type 1A) ----
- id: gamma_film
label: Gamma Film
kind: action
command: "BE EF 1A 0C 00 4F E7 0B 00 00 00 00 00 00 00 00 00 00 00 00"
params: []
# UNRESOLVED: other gamma set variants (Video, Graphic, Standard, 1.8, 2.0, 2.4) obscured in source extraction
# ---- Color Temperature (type 1A) ----
- id: color_temperature_on
label: Color Temperature On
kind: action
command: "BE EF 1A 0C 00 A3 06 13 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: color_temperature_d55
label: Color Temperature D55
kind: action
command: "BE EF 1A 0C 00 11 DF 39 00 00 00 02 00 00 00 00 00 00 00"
params: []
- id: color_temperature_d65
label: Color Temperature D65
kind: action
command: "BE EF 1A 0C 00 7B 1F 39 00 00 00 0B 00 00 00 00 00 00 00"
params: []
- id: color_temperature_d75
label: Color Temperature D75
kind: action
command: "BE EF 1A 0C 00 44 DF 39 00 00 00 0E 00 00 00 00 00 00 00"
params: []
- id: color_temperature_d83
label: Color Temperature D83
kind: action
command: "BE EF 1A 0C 00 04 9F 39 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: color_temperature_d93
label: Color Temperature D93
kind: action
command: "BE EF 1A 0C 00 C8 5E 39 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: color_temperature_native
label: Color Temperature Native
kind: action
command: "BE EF 1A 0C 00 DD 1E 39 00 00 00 03 00 00 00 00 00 00 00"
params: []
# ---- Color Gamut (type 1A) ----
- id: color_gamut_native
label: Color Gamut Native
kind: action
command: "BE EF 1A 0C 00 68 FE 41 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: color_gamut_hdtv
label: Color Gamut HDTV
kind: action
command: "BE EF 1A 0C 00 A4 3F 41 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: color_gamut_user
label: Color Gamut User
kind: action
command: "BE EF 1A 0C 00 CE FF 41 00 00 00 08 00 00 00 00 00 00 00"
params: []
- id: color_gamut_cinema
label: Color Gamut Cinema
kind: action
command: "BE EF 1A 0C 00 02 3E 41 00 00 00 09 00 00 00 00 00 00 00"
params: []
- id: color_gamut_lcc
label: Color Gamut LCC
kind: action
command: "BE EF 1A 0C 00 17 7E 41 00 00 00 0A 00 00 00 00 00 00 00"
params: []
# ---- CMS Color Select (type 1A) ----
- id: cms_red
label: CMS Red
kind: action
command: "BE EF 1A 0C 00 1F B7 37 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: cms_green
label: CMS Green
kind: action
command: "BE EF 1A 0C 00 D3 76 37 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: cms_blue
label: CMS Blue
kind: action
command: "BE EF 1A 0C 00 C6 36 37 00 00 00 02 00 00 00 00 00 00 00"
params: []
- id: cms_cyan
label: CMS Cyan
kind: action
command: "BE EF 1A 0C 00 0A F7 37 00 00 00 03 00 00 00 00 00 00 00"
params: []
- id: cms_yellow
label: CMS Yellow
kind: action
command: "BE EF 1A 0C 00 EC B6 37 00 00 00 04 00 00 00 00 00 00 00"
params: []
- id: cms_magenta
label: CMS Magenta
kind: action
command: "BE EF 1A 0C 00 20 77 37 00 00 00 05 00 00 00 00 00 00 00"
params: []
- id: cms_white
label: CMS White
kind: action
command: "BE EF 1A 0C 00 35 37 37 00 00 00 06 00 00 00 00 00 00 00"
params: []
# ---- CMS xOffset (type 1A, n=-50 - +50) ----
- id: cms_xoffset_inc
label: CMS xOffset Increment
kind: action
command: "BE EF 1A 0C 00 06 FB 3A 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: cms_xoffset_dec
label: CMS xOffset Decrement
kind: action
command: "BE EF 1A 0C 00 C3 AA 3A 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: cms_xoffset_get
label: CMS xOffset Get
kind: query
command: "BE EF 1A 0C 00 09 0B 3A 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- Clock (type 1A, n=-50 - +50, depends on signal) ----
- id: clock_dec
label: Clock Decrement
kind: action
command: "BE EF 1A 0C 00 3C 6B 2A 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: clock_get
label: Clock Get
kind: query
command: "BE EF 1A 0C 00 F6 CA 2A 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- Phase (type 1A, n=0 - +31, depends on signal) ----
- id: phase_inc
label: Phase Increment
kind: action
command: "BE EF 1A 0C 00 3A C7 2B 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: phase_dec
label: Phase Decrement
kind: action
command: "BE EF 1A 0C 00 FF 96 2B 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: phase_get
label: Phase Get
kind: query
command: "BE EF 1A 0C 00 35 37 2B 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- H Position (type 1A, n=-50 - +50, depends on signal) ----
- id: h_position_inc
label: H Position Increment
kind: action
command: "BE EF 1A 0C 00 F1 32 2C 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: h_position_dec
label: H Position Decrement
kind: action
command: "BE EF 1A 0C 00 34 63 2C 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: h_position_get
label: H Position Get
kind: query
command: "BE EF 1A 0C 00 FE C2 2C 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- V Position (type 1A, n=-50 - +50, depends on signal) ----
- id: v_position_inc
label: V Position Increment
kind: action
command: "BE EF 1A 0C 00 32 CF 2D 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: v_position_dec
label: V Position Decrement
kind: action
command: "BE EF 1A 0C 00 F7 9E 2D 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: v_position_get
label: V Position Get
kind: query
command: "BE EF 1A 0C 00 3D 3F 2D 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- Auto Adaptive Contrast (type 1A) ----
- id: auto_adaptive_contrast_on
label: Auto Adaptive Contrast On
kind: action
command: "BE EF 1A 0C 00 AB 0E 15 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: auto_adaptive_contrast_off
label: Auto Adaptive Contrast Off
kind: action
command: "BE EF 1A 0C 00 67 CF 15 00 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- Super Hybrid Mode (type 1A) ----
- id: super_hybrid_off
label: Super Hybrid Mode Off
kind: action
command: "BE EF 1A 0C 00 64 F2 44 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: super_hybrid_standard
label: Super Hybrid Mode Standard
kind: action
command: "BE EF 1A 0C 00 A8 33 44 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: super_hybrid_enhanced
label: Super Hybrid Mode Enhanced
kind: action
command: "BE EF 1A 0C 00 BD 73 44 00 00 00 02 00 00 00 00 00 00 00"
params: []
- id: super_hybrid_deep_black
label: Super Hybrid Mode Deep Black
kind: action
command: "BE EF 1A 0C 00 71 B2 44 00 00 00 03 00 00 00 00 00 00 00"
params: []
# ---- Lamp Power (type 1A) ----
- id: lamp_power_100
label: Lamp Power 100%
kind: action
command: "BE EF 1A 0C 00 6C FA 42 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: lamp_power_95
label: Lamp Power 95%
kind: action
command: "BE EF 1A 0C 00 A0 3B 42 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: lamp_power_90
label: Lamp Power 90%
kind: action
command: "BE EF 1A 0C 00 B5 7B 42 00 00 00 02 00 00 00 00 00 00 00"
params: []
# ---- Enhanced Details (type 1A) ----
- id: enhanced_details_off
label: Enhanced Details Off
kind: action
command: "BE EF 1A 0C 00 97 3F 51 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: enhanced_details_1
label: Enhanced Details 1
kind: action
command: "BE EF 1A 0C 00 5B FE 51 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: enhanced_details_2
label: Enhanced Details 2
kind: action
command: "BE EF 1A 0C 00 4E BE 51 00 00 00 02 00 00 00 00 00 00 00"
params: []
- id: enhanced_details_3
label: Enhanced Details 3
kind: action
command: "BE EF 1A 0C 00 82 7F 51 00 00 00 03 00 00 00 00 00 00 00"
params: []
# ---- Enhanced Advanced Colors (type 1A) ----
- id: enhanced_colors_off
label: Enhanced Advanced Colors Off
kind: action
command: "BE EF 1A 0C 00 93 3B 52 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: enhanced_colors_1
label: Enhanced Advanced Colors 1
kind: action
command: "BE EF 1A 0C 00 5F FA 52 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: enhanced_colors_2
label: Enhanced Advanced Colors 2
kind: action
command: "BE EF 1A 0C 00 4A BA 52 00 00 00 02 00 00 00 00 00 00 00"
params: []
- id: enhanced_colors_3
label: Enhanced Advanced Colors 3
kind: action
command: "BE EF 1A 0C 00 86 7B 52 00 00 00 03 00 00 00 00 00 00 00"
params: []
- id: enhanced_colors_4
label: Enhanced Advanced Colors 4
kind: action
command: "BE EF 1A 0C 00 60 3A 52 00 00 00 04 00 00 00 00 00 00 00"
params: []
- id: enhanced_colors_5
label: Enhanced Advanced Colors 5
kind: action
command: "BE EF 1A 0C 00 AC FB 52 00 00 00 05 00 00 00 00 00 00 00"
params: []
# ---- Motion Compensation (type 1A) ----
- id: motion_compensation_off
label: Motion Compensation Off
kind: action
command: "BE EF 1A 0C 00 83 2B 5E 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: motion_compensation_1
label: Motion Compensation 1
kind: action
command: "BE EF 1A 0C 00 4F EA 5E 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: motion_compensation_2
label: Motion Compensation 2
kind: action
command: "BE EF 1A 0C 00 5A AA 5E 00 00 00 02 00 00 00 00 00 00 00"
params: []
- id: motion_compensation_3
label: Motion Compensation 3
kind: action
command: "BE EF 1A 0C 00 96 6B 5E 00 00 00 03 00 00 00 00 00 00 00"
params: []
# ---- Image Reset (type 1A) ----
- id: image_reset
label: Image Reset
kind: action
command: "BE EF 1A 0C 00 AF 07 43 00 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- Aspect Ratio (type 02) ----
- id: aspect_4_3
label: Aspect Ratio 4:3
kind: action
command: "BE EF 02 06 00 2A F4 83 01 00 00 00 00"
params: []
- id: aspect_16_9
label: Aspect Ratio 16:9
kind: action
command: "BE EF 02 06 00 7F F4 86 01 00 00 00 00"
params: []
- id: aspect_lbx
label: Aspect Ratio LBX
kind: action
command: "BE EF 02 06 00 4C F4 85 01 00 00 00 00"
params: []
- id: aspect_superwide
label: Aspect Ratio SuperWide
kind: action
command: "BE EF 02 06 00 9D E4 44 01 00 00 00 00"
params: []
- id: aspect_native
label: Aspect Ratio Native
kind: action
command: "BE EF 02 06 00 AE F5 87 01 00 00 00 00"
params: []
- id: aspect_auto
label: Aspect Ratio Auto
kind: action
command: "BE EF 02 06 00 4C E5 45 01 00 00 00 00"
params: []
# ---- Edge Mask (type 1A, n=0-10) ----
- id: edge_mask_inc
label: Edge Mask Increment
kind: action
command: "BE EF 1A 0C 00 66 9B 12 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: edge_mask_dec
label: Edge Mask Decrement
kind: action
command: "BE EF 1A 0C 00 A3 CA 12 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
# UNRESOLVED: edge_mask_get command partially obscured in extraction
# ---- H Image Shift (type 1A) ----
- id: h_image_shift_set
label: H Image Shift Set
kind: action
command: "BE EF 1A 0C 00 crc crc 16 00 00 00 {data} {data} 00 00 00 00 00 00"
params:
- name: data
type: integer
description: "H image shift value. Compute CRC16 over full packet with CRC bytes zeroed."
- id: h_image_shift_get
label: H Image Shift Get
kind: query
command: "BE EF 1A 0C 00 A6 9A 16 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
- id: h_image_shift_inc
label: H Image Shift Increment
kind: action
command: "BE EF 1A 0C 00 6A 97 17 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: h_image_shift_dec
label: H Image Shift Decrement
kind: action
command: "BE EF 1A 0C 00 AF C6 17 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- V Image Shift (type 1A, n=-100 - +100) ----
- id: v_image_shift_set
label: V Image Shift Set
kind: action
command: "BE EF 1A 0C 00 crc crc 17 00 00 00 {data} {data} 00 00 00 00 00 00"
params:
- name: data
type: integer
description: "V image shift value, -100 to +100. Compute CRC16 over full packet with CRC bytes zeroed."
- id: v_image_shift_get
label: V Image Shift Get
kind: query
command: "BE EF 1A 0C 00 65 67 17 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
# ---- 2.2.2.3 Setup Menu ----
# Projection (type 1A)
- id: projection_front_desktop
label: Projection Front-Desktop
kind: action
command: "BE EF 1A 0C 00 01 CF 35 00 00 00 02 00 00 00 00 00 00 00"
params: []
- id: projection_rear_desktop
label: Projection Rear-Desktop
kind: action
command: "BE EF 1A 0C 00 D8 4E 35 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: projection_front_ceiling
label: Projection Front-Ceiling
kind: action
command: "BE EF 1A 0C 00 14 8F 35 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: projection_rear_ceiling
label: Projection Rear-Ceiling
kind: action
command: "BE EF 1A 0C 00 CD 0E 35 00 00 00 03 00 00 00 00 00 00 00"
params: []
# Direct Power On (type 1A)
- id: direct_power_on
label: Direct Power On
kind: action
command: "BE EF 1A 0C 00 7B DE 49 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: direct_power_on_off
label: Direct Power On Off
kind: action
command: "BE EF 1A 0C 00 B7 1F 49 00 00 00 00 00 00 00 00 00 00 00"
params: []
# Auto Power Off (min) (type 1A, n=0-180, 5 min steps)
- id: auto_power_off_inc
label: Auto Power Off Increment
kind: action
command: "BE EF 1A 0C 00 3E C3 28 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: auto_power_off_dec
label: Auto Power Off Decrement
kind: action
command: "BE EF 1A 0C 00 FB 92 28 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: auto_power_off_get
label: Auto Power Off Get
kind: query
command: "BE EF 1A 0C 00 31 33 28 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
# Sleep Timer (min) (type 1A, n=0-990, 30 min steps)
- id: sleep_timer_inc
label: Sleep Timer Increment
kind: action
command: "BE EF 1A 0C 00 79 BA 4A 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: sleep_timer_dec
label: Sleep Timer Decrement
kind: action
command: "BE EF 1A 0C 00 BC EB 4A 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
- id: sleep_timer_get
label: Sleep Timer Get
kind: query
command: "BE EF 1A 0C 00 76 4A 4A 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
# Power Mode (Standby) (type 1A)
- id: power_mode_active
label: Power Mode Active (Standby)
kind: action
command: "BE EF 1A 0C 00 70 E6 4B 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: power_mode_eco
label: Power Mode Eco (<0.5W)
kind: action
command: "BE EF 1A 0C 00 BC 27 4B 00 00 00 01 00 00 00 00 00 00 00"
params: []
# Security Timer (type 1A, parameterized: mm dd hh)
- id: security_timer_set
label: Security Timer Set
kind: action
command: "BE EF 1A 0C 00 crc crc 4C 00 00 00 {mm} {dd} {hh} 00 00 00 00 00"
params:
- name: mm
type: integer
description: "Month (00-12)"
- name: dd
type: integer
description: "Day (00-30)"
- name: hh
type: integer
description: "Hour (00-24). Compute CRC16 over full packet with CRC bytes zeroed."
# Security (type 1A)
- id: security_on
label: Security On
kind: action
command: "BE EF 1A 0C 00 E5 3C 81 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: security_off
label: Security Off
kind: action
command: "BE EF 1A 0C 00 29 FD 81 00 00 00 00 00 00 00 00 00 00 00"
params: []
# Test Pattern (type 1A)
- id: test_pattern_off
label: Test Pattern Off
kind: action
command: "BE EF 1A 0C 00 78 EE 4D 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: test_pattern_grid_green
label: Test Pattern Grid (Green)
kind: action
command: "BE EF 1A 0C 00 B4 2F 4D 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: test_pattern_grid_magenta
label: Test Pattern Grid (Magenta)
kind: action
command: "BE EF 1A 0C 00 A1 6F 4D 00 00 00 02 00 00 00 00 00 00 00"
params: []
- id: test_pattern_grid_white
label: Test Pattern Grid (White)
kind: action
command: "BE EF 1A 0C 00 6D AE 4D 00 00 00 03 00 00 00 00 00 00 00"
params: []
- id: test_pattern_white
label: Test Pattern White
kind: action
command: "BE EF 1A 0C 00 8B EF 4D 00 00 00 04 00 00 00 00 00 00 00"
params: []
# IR Function (type 1A)
- id: ir_function_on
label: IR Function On
kind: action
command: "BE EF 1A 0C 00 2B 83 20 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: ir_function_front
label: IR Function Front
kind: action
command: "BE EF 1A 0C 00 E7 42 20 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: ir_function_top
label: IR Function Top
kind: action
command: "BE EF 1A 0C 00 F2 02 20 00 00 00 02 00 00 00 00 00 00 00"
params: []
- id: ir_function_off
label: IR Function Off
kind: action
command: "BE EF 1A 0C 00 3E C3 20 00 00 00 03 00 00 00 00 00 00 00"
params: []
# F1/F2/F3 Remote assignment (type 1A, parameterized)
- id: f1_remote_set
label: F1 Remote Set
kind: action
command: "BE EF 1A 0C 00 crc crc 82 00 00 00 {xx} 00 00 00 00 00 00 00"
params:
- name: xx
type: integer
description: "Assigned function code. Compute CRC16 over full packet with CRC bytes zeroed."
- id: f2_remote_set
label: F2 Remote Set
kind: action
command: "BE EF 1A 0C 00 crc crc 83 00 00 00 {xx} 00 00 00 00 00 00 00"
params:
- name: xx
type: integer
description: "Assigned function code. Compute CRC16 over full packet with CRC bytes zeroed."
- id: f3_remote_set
label: F3 Remote Set
kind: action
command: "BE EF 1A 0C 00 crc crc 84 00 00 00 {xx} 00 00 00 00 00 00 00"
params:
- name: xx
type: integer
description: "Assigned function code. Compute CRC16 over full packet with CRC bytes zeroed."
# 12V Trigger (type 1A)
- id: trigger_12v_off
label: 12V Trigger Off
kind: action
command: "BE EF 1A 0C 00 54 C2 50 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: trigger_12v_on
label: 12V Trigger On
kind: action
command: "BE EF 1A 0C 00 98 03 50 00 00 00 01 00 00 00 00 00 00 00"
params: []
# Language (type 1A)
- id: language_english
label: Language English
kind: action
command: "BE EF 1A 0C 00 2F 87 23 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: language_french
label: Language French
kind: action
command: "BE EF 1A 0C 00 F6 06 23 00 00 00 02 00 00 00 00 00 00 00"
params: []
- id: language_german
label: Language German
kind: action
command: "BE EF 1A 0C 00 E3 46 23 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: language_portuguese
label: Language Portuguese
kind: action
command: "BE EF 1A 0C 00 10 47 23 00 00 00 05 00 00 00 00 00 00 00"
params: []
- id: language_simplified_chinese
label: Language Simplified Chinese
kind: action
command: "BE EF 1A 0C 00 A3 06 23 00 00 00 0E 00 00 00 00 00 00 00"
params: []
- id: language_italian
label: Language Italian
kind: action
command: "BE EF 1A 0C 00 3A C7 23 00 00 00 03 00 00 00 00 00 00 00"
params: []
- id: language_russian
label: Language Russian
kind: action
command: "BE EF 1A 0C 00 45 47 23 00 00 00 09 00 00 00 00 00 00 00"
params: []
# Menu Location (type 1A)
- id: menu_location_top_left
label: Menu Location Top Left
kind: action
command: "BE EF 1A 0C 00 C7 6F 6D 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: menu_location_top_right
label: Menu Location Top Right
kind: action
command: "BE EF 1A 0C 00 0B AE 6D 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: menu_location_centre
label: Menu Location Centre
kind: action
command: "BE EF 1A 0C 00 1E EE 6D 00 00 00 02 00 00 00 00 00 00 00"
params: []
- id: menu_location_bottom_left
label: Menu Location Bottom Left
kind: action
command: "BE EF 1A 0C 00 D2 2F 6D 00 00 00 03 00 00 00 00 00 00 00"
params: []
- id: menu_location_bottom_right
label: Menu Location Bottom Right
kind: action
command: "BE EF 1A 0C 00 34 6E 6D 00 00 00 04 00 00 00 00 00 00 00"
params: []
# Menu Timer (type 1A)
- id: menu_timer_off
label: Menu Timer Off
kind: action
command: "BE EF 1A 0C 00 C3 6B 6E 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: menu_timer_5sec
label: Menu Timer 5sec
kind: action
command: "BE EF 1A 0C 00 0F AA 6E 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: menu_timer_10sec
label: Menu Timer 10sec
kind: action
command: "BE EF 1A 0C 00 1A EA 6E 00 00 00 02 00 00 00 00 00 00 00"
params: []
# Auto Source (type 1A)
- id: auto_source_off
label: Auto Source Off
kind: action
command: "BE EF 1A 0C 00 00 96 6F 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: auto_source_on
label: Auto Source On
kind: action
command: "BE EF 1A 0C 00 CC 57 6F 00 00 00 01 00 00 00 00 00 00 00"
params: []
# High Altitude (type 1A)
- id: high_altitude_off
label: High Altitude Off
kind: action
command: "BE EF 1A 0C 00 23 8B 26 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: high_altitude_on
label: High Altitude On
kind: action
command: "BE EF 1A 0C 00 EF 4A 26 00 00 00 01 00 00 00 00 00 00 00"
params: []
# Background Color (type 1A)
- id: background_color_none
label: Background Color None
kind: action
command: "BE EF 1A 0C 00 B3 16 1F 00 00 00 01 00 00 00 00 00 00 00"
params: []
- id: background_color_blue
label: Background Color Blue
kind: action
command: "BE EF 1A 0C 00 7F D7 1F 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: background_color_red
label: Background Color Red
kind: action
command: "BE EF 1A 0C 00 6A 97 1F 00 00 00 03 00 00 00 00 00 00 00"
params: []
- id: background_color_green
label: Background Color Green
kind: action
command: "BE EF 1A 0C 00 8C D6 1F 00 00 00 04 00 00 00 00 00 00 00"
params: []
- id: background_color_gray
label: Background Color Gray
kind: action
command: "BE EF 1A 0C 00 A6 56 1F 00 00 00 02 00 00 00 00 00 00 00"
params: []
# HDMI Setting EDID (type 1A)
- id: hdmi_edid_1
label: HDMI EDID 1
kind: action
command: "BE EF 1A 0C 00 20 B6 77 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: hdmi_edid_2
label: HDMI EDID 2
kind: action
command: "BE EF 1A 0C 00 EC 77 77 00 00 00 01 00 00 00 00 00 00 00"
params: []
# HDMI1 EQ (type 1A, 1~7, parameterized)
- id: hdmi1_eq_set
label: HDMI1 EQ Set
kind: action
command: "BE EF 1A 0C 00 crc crc 85 00 00 00 {data} 00 00 00 00 00 00 00"
params:
- name: data
type: integer
description: "EQ value 1-7. Compute CRC16 over full packet with CRC bytes zeroed."
- id: hdmi1_eq_get
label: HDMI1 EQ Get
kind: query
command: "BE EF 1A 0C 00 23 5D 85 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
- id: hdmi1_eq_inc
label: HDMI1 EQ Increment
kind: action
command: "BE EF 1A 0C 00 2C AD 85 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: hdmi1_eq_dec
label: HDMI1 EQ Decrement
kind: action
command: "BE EF 1A 0C 00 E9 FC 85 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
# HDMI2 EQ (type 1A, 1~7, parameterized)
- id: hdmi2_eq_set
label: HDMI2 EQ Set
kind: action
command: "BE EF 1A 0C 00 crc crc 86 00 00 00 {data} 00 00 00 00 00 00 00"
params:
- name: data
type: integer
description: "EQ value 1-7. Compute CRC16 over full packet with CRC bytes zeroed."
- id: hdmi2_eq_get
label: HDMI2 EQ Get
kind: query
command: "BE EF 1A 0C 00 27 59 86 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
- id: hdmi2_eq_inc
label: HDMI2 EQ Increment
kind: action
command: "BE EF 1A 0C 00 28 A9 86 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: hdmi2_eq_dec
label: HDMI2 EQ Decrement
kind: action
command: "BE EF 1A 0C 00 ED F8 86 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
# Detail Filter (type 1A, 0~2, parameterized)
- id: detail_filter_set
label: Detail Filter Set
kind: action
command: "BE EF 1A 0C 00 crc crc 88 00 00 00 {data} 00 00 00 00 00 00 00"
params:
- name: data
type: integer
description: "Filter value 0-2. Compute CRC16 over full packet with CRC bytes zeroed."
- id: detail_filter_get
label: Detail Filter Get
kind: query
command: "BE EF 1A 0C 00 F0 B0 88 00 01 00 00 00 00 00 00 00 00 00 00"
params: []
- id: detail_filter_inc
label: Detail Filter Increment
kind: action
command: "BE EF 1A 0C 00 FF 40 88 00 02 00 00 00 00 00 00 00 00 00 00"
params: []
- id: detail_filter_dec
label: Detail Filter Decrement
kind: action
command: "BE EF 1A 0C 00 3A 11 88 00 03 00 00 00 00 00 00 00 00 00 00"
params: []
# Reset (type 02)
- id: reset_osd
label: Reset OSD
kind: action
command: "BE EF 02 06 00 1F E2 66 01 00 00 00 00"
params: []
- id: reset_to_default
label: Reset to Default
kind: action
command: "BE EF 02 06 00 A1 E1 78 01 00 00 00 00"
params: []
# ---- 2.2.2.4 Network Menu (type 1A, larger payload 0C 00 ... 18 bytes) ----
- id: lan_dhcp_off
label: LAN DHCP Off
kind: action
command: "BE EF 1A 0C 00 F3 5B 7A 00 00 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: lan_dhcp_on
label: LAN DHCP On
kind: action
command: "BE EF 1A 0C 00 3F 9A 7A 00 00 00 01 00 00 00 00 00 00 00 00 00"
params: []
- id: crestron_control_off
label: Crestron Control Off
kind: action
command: "BE EF 1A 0C 00 30 A6 7B 00 00 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: crestron_control_on
label: Crestron Control On
kind: action
command: "BE EF 1A 0C 00 FC 67 7B 00 00 00 01 00 00 00 00 00 00 00 00 00"
params: []
- id: extron_control_off
label: Extron Control Off
kind: action
command: "BE EF 1A 0C 00 FB 53 7C 00 00 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: extron_control_on
label: Extron Control On
kind: action
command: "BE EF 1A 0C 00 37 92 7C 00 00 00 01 00 00 00 00 00 00 00 00 00"
params: []
- id: pjlink_control_off
label: PJ Link Control Off
kind: action
command: "BE EF 1A 0C 00 38 AE 7D 00 00 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: pjlink_control_on
label: PJ Link Control On
kind: action
command: "BE EF 1A 0C 00 F4 6F 7D 00 00 00 01 00 00 00 00 00 00 00 00 00"
params: []
- id: amx_device_discovery_off
label: AMX Device Discovery Off
kind: action
command: "BE EF 1A 0C 00 3C AA 7E 00 00 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: amx_device_discovery_on
label: AMX Device Discovery On
kind: action
command: "BE EF 1A 0C 00 F0 6B 7E 00 00 00 01 00 00 00 00 00 00 00 00 00"
params: []
- id: http_control_off
label: HTTP Control Off
kind: action
command: "BE EF 1A 0C 00 EA 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: http_control_on
label: HTTP Control On
kind: action
command: "BE EF 1A 0C 00 26 C1 80 00 00 00 01 00 00 00 00 00 00 00 00 00"
params: []
- id: telnet_control_off
label: Telnet Control Off
kind: action
command: "BE EF 1A 0C 00 31 E5 8B 00 00 00 00 00 00 00 00 00 00 00 00 00"
params: []
- id: telnet_control_on
label: Telnet Control On
kind: action
command: "BE EF 1A 0C 00 FD 24 8B 00 00 00 01 00 00 00 00 00 00 00 00 00"
params: []
# ---- 2.3 Status Queries (type 10) ----
- id: projector_status_query
label: Projector Status Query
kind: query
command: "BE EF 10 0A 00 34 B7 01 01 00 01 01 15 01 00 00 02"
params: []
- id: signal_status_query
label: Signal Status Query
kind: query
command: "BE EF 10 0A 00 33 37 01 01 00 01 01 15 01 00 00 08"
params: []
- id: lamp_status_query
label: Lamp Status Query
kind: query
command: "BE EF 10 0A 00 A9 36 01 01 00 01 01 15 01 00 01 10"
params: []
- id: generic_info_query
label: Generic Info Query
kind: query
command: "BE EF 10 0A 00 9F 97 01 01 06 00 01 15 01 FF FF FF"
params: []
Feedbacks
# Pass response for type 02 / ack commands: single byte 0x06
- id: command_ack
type: raw
values: ["06"]
description: "Acknowledgement byte returned when a command is successfully executed (ack-only response)."
# Fail response: single byte 0x15
- id: command_fail
type: raw
values: ["15"]
description: "Fail byte returned when the projector cannot execute the command."
# Pass response for type 1A (set/get/inc/dec): 20 XX XX (3 bytes; word value LSB first)
- id: parameter_response
type: raw
values: ["20 XX XX"]
description: "Three-byte pass response; bytes 2-3 hold the 16-bit parameter value (LSB first)."
# Projector Status (byte 21 of projector_status_query response): On=01
- id: projector_state
type: enum
values: [on, standby]
description: "On = 0x01. No response when in Standby."
# Signal Status (byte 21 of signal_status_query response)
- id: signal_state
type: enum
values: [ok, no_signal]
mapping: {ok: "00", no_signal: "01"}
# Current Input (byte 24 of signal_status_query response)
- id: current_input
type: enum
values: [vga, hdmi1, hdmi2, hdmi3, displayport]
mapping: {vga: "05", hdmi1: "12", hdmi2: "13", hdmi3: "14", displayport: "15"}
# Lamp Status (byte 25 of lamp_status_query response)
- id: lamp_state
type: enum
values: [off, on]
mapping: {off: "00", on: "02"}
# Unit Working Hours (bytes 21-23 of lamp_status_query response)
- id: unit_working_hours
type: integer
description: "Hex representation of working hours (3 bytes)."
# Lamp Working Hours (bytes 25-27 of lamp_status_query response)
- id: lamp_working_hours
type: integer
description: "Hex representation of lamp working hours (3 bytes)."
# Generic info response includes (excerpt): input source, signal status, test pattern,
# lamp on/off, serial number, FW versions, H/V freq, H/V res, sync info, display mode,
# color temperature, color gamut, brilliant color, aspect, gamma, color space,
# ultra detail, pure color, pure motion, dynamic contrast, spoke white, lamp hours,
# projection hours.
# UNRESOLVED: full generic-info field map is large and partially garbled in extraction;
# see Notes for documented byte meanings.
Variables
# Settable continuous parameters exposed via type 1A Set/Inc/Dec/Get commands.
- id: brightness
type: integer
range: [-50, 50]
description: "Display brightness."
- id: contrast
type: integer
range: [-50, 50]
description: "Display contrast."
- id: sharpness
type: integer
range: [1, 15]
description: "Display sharpness."
- id: color
type: integer
range: [-50, 50]
description: "Color level."
- id: tint
type: integer
range: [-50, 50]
description: "Tint level."
- id: noise_reduction
type: integer
range: [0, 3]
description: "Noise reduction level."
- id: edge_mask
type: integer
range: [0, 10]
description: "Edge mask amount."
- id: h_image_shift
type: integer
description: "Horizontal image shift. UNRESOLVED: exact range not clearly stated."
- id: v_image_shift
type: integer
range: [-100, 100]
description: "Vertical image shift."
- id: auto_power_off
type: integer
range: [0, 180]
description: "Auto power off timer in minutes (5 min steps)."
- id: sleep_timer
type: integer
range: [0, 990]
description: "Sleep timer in minutes (30 min steps)."
- id: hdmi1_eq
type: integer
range: [1, 7]
description: "HDMI1 cable equalization."
- id: hdmi2_eq
type: integer
range: [1, 7]
description: "HDMI2 cable equalization."
- id: detail_filter
type: integer
range: [0, 2]
description: "Detail filter level."
- id: cms_xoffset
type: integer
range: [-50, 50]
description: "CMS xOffset."
Events
# UNRESOLVED: source documents no unsolicited event/notification packets.
# The protocol is request/response only. Event packet size (13 bytes) is mentioned
# in the header description but no event packet contents are documented.
Macros
# UNRESOLVED: source documents no multi-step macro sequences.
Safety
confirmation_required_for: []
interlocks:
- description: "When unit is switched on from Standby, wait 15 seconds before sending commands or reading responses."
- description: "Command execution time may vary 0.1-2.0 seconds; allow sufficient time between successive commands or the projector may drop commands when busy."
# UNRESOLVED: no explicit safety interlock procedures or power-on sequencing
# requirements beyond the standby timing note are stated in the source.
Notes
- Protocol is binary/hex only; ASCII mode is not supported. No termination character (
<LF>,<CR>,<EOT>) must be appended. - Packet header is fixed 7 bytes:
BE EF(sync, LSB-first) + packet type (1B) + payload size (2B, LSB first) + CRC16 (2B).BE EFalignment marker guards against dropped/partial packets. - CRC is Modbus CRC16 over the entire packet (header + payload). To compute: zero the CRC field (bytes 5-6), run the lookup-table algorithm, place result LSB-first into bytes 5-6. Worked example from source: set brightness +20 (
0x14) → final packetBE EF 1A 0C 00 6B 02 00 00 00 00 14 00 00 00 00 00 00 00, response20 14 00. - Three response types: (1) ack-only Pass =
06; (2) value Pass =20 XX XX(for set/get/inc/dec); (3) Fail =15. - Type 10 status-query responses are prefixed with
1E, echo the sent command (bytes 1-17 minus CRC), then 3 error bytes (bytes 18-20;00 00 00= valid), then data bytes. - Projector does not respond to status commands while in Standby.
- Generic info query response carries a large structured payload; documented field meanings (from source): byte A = input source, byte B = signal status, byte E = test pattern, byte F = lamp on/off, 18 bytes serial number, FW version groups (MST, MCU, MST7410, DDP4422), H/V freq, H/V res, sync info bitmask, display mode, color temperature, color gamut, brilliant color, aspect, gamma, color space, ultra detail, pure color, pure motion, dynamic contrast, spoke white, lamp hours, projection hours.
- The Network menu commands (Crestron/Extron/PJ Link/AMX/HTTP/Telnet enable-disable) are serial commands that toggle the projector's network control services; they do not change the transport of this serial protocol itself.
Provenance
source_domains:
- screenprofessional.de
source_urls:
- https://screenprofessional.de/wp-content/uploads/2024/07/CRYSTAL4_SH__RS232_communication_protocol_vers.1.0.pdf
retrieved_at: 2026-06-29T19:46:51.005Z
last_checked_at: 2026-06-30T07:12:10.878Z
Verification Summary
verdict: verified
checked_at: 2026-06-30T07:12:10.878Z
matched_actions: 232
action_count: 232
confidence: medium
summary: "All 232 spec actions verified against source document; complete bidirectional coverage with wire-literal command matching. (11 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "PDF extraction garbled several multi-column command tables (display menu middle sections, parts of setup menu); some rows below are transcribed from readable portions. Lines marked UNRESOLVED in commands indicate payload bytes obscured in extraction."
- "other gamma set variants (Video, Graphic, Standard, 1.8, 2.0, 2.4) obscured in source extraction"
- "edge_mask_get command partially obscured in extraction"
- "full generic-info field map is large and partially garbled in extraction;"
- "exact range not clearly stated.\""
- "source documents no unsolicited event/notification packets."
- "source documents no multi-step macro sequences."
- "no explicit safety interlock procedures or power-on sequencing"
- "Several display-menu command tables (gamma variants beyond Film, additional CMS adjust axes, and some middle rows) were garbled during PDF text extraction and could not be transcribed with confidence. A re-extraction from the original PDF with table-aware tooling is recommended to recover the full command set."
- "firmware version compatibility not stated in source."
- "protocol version noted as \"Rev. 1.0 (21 December 2020)\" of the document; device firmware protocol version not separately stated."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0