Summary
RS-232C external control spec for ZEN Z50PJ240 / Z42PJ240 display panels, covering the 23-command ASCII protocol documented in the owner's manual (power, input select, picture/audio adjust, channel tuning, key emulation). Communication is 9600 bps 8N1 ASCII over a D-Sub 9-pin male connector using a crossed (null-modem) cable.
Transport
protocols:
- serial
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: null # UNRESOLVED: flow control not explicitly stated; DTR/DSR/RTS/CTS pins present on D-Sub 9 and 7-wire config documented
auth:
type: none # inferred: no auth procedure in source
Notes on transport (verbatim from source):
- Connector: D-Sub 9-Pin Male. Pinout: 1 N/C, 2 RXD, 3 TXD, 4 DTR, 5 GND, 6 DSR, 7 RTS, 8 CTS, 9 N/C.
- Use a crossed (reverse / null-modem) cable. Both 7-wire and 3-wire configurations documented.
- Communication code: ASCII.
- Command frame:
[Command1][Command2][ ][Set ID][ ][Data][Cr]—[ ]is ASCII space 0x20,[Cr]is 0x0D. - Set ID range 1–99 (hex 0x0–0x63 on the wire); Set ID
0addresses every connected TV. Set ID and data sent as lowercase hex character pairs.
Traits
# powerable: ka power command present
# routable: xb input select command present
# queryable: FF data read-status mechanism present
# levelable: kf volume, kg contrast, kh brightness, ki color, kj tint, kk sharpness, kr treble, ks bass, kt balance, xu color temperature
traits:
- powerable # inferred from power command examples
- routable # inferred from input select command examples
- queryable # inferred: transmit FF data to read status of any command
- levelable # inferred from volume/gain control command examples
Actions
# Frame format for all actions: [Command1][Command2][ ][Set ID][ ][Data][Cr]
# {set_id}: hex pair, 00-63 (00 = broadcast to all TVs); {data}: lowercase hex pair unless noted.
# Transmit data FF on any command to read its current status (query).
- id: power
label: Power
kind: action
command: "ka {set_id} {data}"
params:
- name: data
type: enum
values: ["00", "01"]
description: "00 = Power Off, 01 = Power On; FF = read status"
notes: "TV sends ACK only after power-on processing completes; there may be a time delay between command and acknowledge. TV will not send status during standby mode."
- id: input_select
label: Input Select
kind: action
command: "xb {set_id} {data}"
params:
- name: data
type: enum
values: ["00", "01", "10", "11", "20", "21", "40", "41", "60", "90", "91", "92"]
description: "00 = DTV (Antenna), 01 = DTV (Cable), 10 = Analog (Antenna), 11 = Analog (Cable), 20 = AV1, 21 = AV2, 40 = Component 1, 41 = Component 2, 60 = RGB-PC, 90 = HDMI1, 91 = HDMI2, 92 = HDMI3; FF = read status"
- id: aspect_ratio
label: Aspect Ratio
kind: action
command: "kc {set_id} {data}"
params:
- name: data
type: enum
values: ["01", "02", "04", "06", "09", "10", "1f"]
description: "01 = 4:3, 02 = 16:9, 04 = Zoom, 06 = Set by program, 09 = Just scan, 10 = Cinema Zoom (1), 1f = Cinema Zoom (16); FF = read status"
- id: screen_mute
label: Screen Mute
kind: action
command: "kd {set_id} {data}"
params:
- name: data
type: enum
values: ["00", "01", "10"]
description: "00 = Screen mute off (picture on), Video-Out Mute Off; 01 = Screen mute on (picture off); 10 = Video-Out Mute On; FF = read status"
notes: "Video-Out mute on displays OSD; Screen Mute On does not display OSD."
- id: volume_mute
label: Volume Mute
kind: action
command: "ke {set_id} {data}"
params:
- name: data
type: enum
values: ["00", "01"]
description: "00 = Volume mute on (volume off), 01 = Volume mute off (volume on); FF = read status"
- id: volume_control
label: Volume Control
kind: action
command: "kf {set_id} {data}"
params:
- name: data
type: integer
description: "Min 00 ~ Max 64, hexadecimal; FF = read status"
- id: contrast
label: Contrast
kind: action
command: "kg {set_id} {data}"
params:
- name: data
type: integer
description: "Min 00 ~ Max 64, hexadecimal; FF = read status"
- id: brightness
label: Brightness
kind: action
command: "kh {set_id} {data}"
params:
- name: data
type: integer
description: "Min 00 ~ Max 64, hexadecimal; FF = read status"
- id: color
label: Color
kind: action
command: "ki {set_id} {data}"
params:
- name: data
type: integer
description: "Min 00 ~ Max 64, hexadecimal; FF = read status"
- id: tint
label: Tint
kind: action
command: "kj {set_id} {data}"
params:
- name: data
type: integer
description: "Red 00 ~ Green 64, hexadecimal; FF = read status"
- id: sharpness
label: Sharpness
kind: action
command: "kk {set_id} {data}"
params:
- name: data
type: integer
description: "Min 00 ~ Max 64, hexadecimal; FF = read status"
- id: osd_select
label: OSD Select
kind: action
command: "kl {set_id} {data}"
params:
- name: data
type: enum
values: ["00", "01"]
description: "00 = OSD off, 01 = OSD on; FF = read status"
- id: remote_control_lock_mode
label: Remote Control Lock Mode
kind: action
command: "km {set_id} {data}"
params:
- name: data
type: enum
values: ["00", "01"]
description: "00 = Lock off, 01 = Lock on (locks remote control and front panel controls); FF = read status"
notes: "Lock is released when main power is toggled on/off."
- id: treble
label: Treble
kind: action
command: "kr {set_id} {data}"
params:
- name: data
type: integer
description: "Min 00 ~ Max 64, hexadecimal; FF = read status"
- id: bass
label: Bass
kind: action
command: "ks {set_id} {data}"
params:
- name: data
type: integer
description: "Min 00 ~ Max 64, hexadecimal; FF = read status"
- id: balance
label: Balance
kind: action
command: "kt {set_id} {data}"
params:
- name: data
type: integer
description: "Min 00 ~ Max 64, hexadecimal; FF = read status"
- id: color_temperature
label: Color Temperature
kind: action
command: "xu {set_id} {data}"
params:
- name: data
type: integer
description: "Min 00 ~ Max 64, hexadecimal; FF = read status"
- id: ism_method
label: ISM Method
kind: action
command: "jp {set_id} {data}"
params:
- name: data
type: enum
values: ["02", "04", "08", "20"]
description: "02 = Orbiter, 04 = White Wash, 08 = Normal, 20 = Color Wash; FF = read status"
- id: power_saving
label: Power Saving
kind: action
command: "jq {set_id} {data}"
params:
- name: data
type: enum
values: ["00", "01", "02", "03", "05", "10"]
description: "00 = off, 01 = Minimum, 02 = Medium, 03 = Maximum, 05 = Screen Off, 10 = Intelligent Sensor; FF = read status"
- id: auto_configuration
label: Auto Configuration
kind: action
command: "ju {set_id} {data}"
params:
- name: data
type: enum
values: ["01"]
description: "1 = To set (adjusts picture position and minimizes image shaking)"
notes: "Auto configuration only works in RGB-PC mode."
- id: channel_tuning
label: Channel Tuning
kind: action
command: "ma {set_id} {data00} {data01} {data02} {data03} {data04} {data05}"
params:
- name: data00
type: integer
description: "Physical channel number. NTSC air 02-45, NTSC cable 01/0E-7D, ATSC air 01-45, ATSC cable 01-87. Send 00 if unknown (ATSC maps automatically)."
- name: data01
type: integer
description: "Major channel number, high byte"
- name: data02
type: integer
description: "Major channel number, low byte"
- name: data03
type: integer
description: "Minor channel number, high byte (not needed for NTSC)"
- name: data04
type: integer
description: "Minor channel number, low byte (not needed for NTSC)"
- name: data05
type: string
description: "Attribute byte, binary converted to hex. Bit7: 0=Main/1=Sub picture; bit6: two/one part channel; bit5: use physical channel; bit4: 0; bits3-0 signal type: 0000 NTSC Air, 0001 NTSC Cable, 0010 ATSC Air, 0011 ATSC Cable_std, 0100 ATSC Cable_hrc, 0101 ATSC Cable_irc, 0110 ATSC cable_auto, 0111/1111 Reserved"
notes: "Source examples: tune NTSC cable ch 35 -> 'ma 00 23 00 00 00 00 01'; tune ATSC 30-3 -> 'ma 00 00 00 1E 00 03 22'."
- id: channel_add_del
label: Channel Add/Del
kind: action
command: "mb {set_id} {data}"
params:
- name: data
type: enum
values: ["00", "01"]
description: "00 = Channel Delete, 01 = Channel Add; FF = read status"
- id: key
label: Key (IR Remote Key Code Send)
kind: action
command: "mc {set_id} {data}"
params:
- name: data
type: enum
description: "IR key code (hex) from remote control IR code table: 08 POWER, 45 Q.MENU, 43 MENU, 0B INPUT, 10-19 Number Keys 0-9, 4C Dash(List), 1A FLASHBK, 09 MUTE, 02 VOL+, 03 VOL-, 00 CH+, 01 CH-, 1E FAV, 40, 41, 07, 06, 44 ENTER, 28 RETURN, 79 RATIO, 65 POWER SAVING, 95 ENERGY, AA INFO, 72 Red, 71 Green, 63 Yellow, 61 Blue, 0F TV, 5B EXIT, D6 TV (discrete), C4 POWER ON (discrete), C5 POWER OFF (discrete), 5A AV1 (discrete), D0 AV2 (discrete), BF COMPONENT1 (discrete), D4 COMPONENT2 (discrete), D5 RGB-PC (discrete), CE HDMI1 (discrete), CC HDMI2 (discrete), E9 HDMI3 (discrete), 76 Ratio 4:3 (discrete), 77 Ratio 16:9 (discrete), AF Ratio Zoom (discrete)"
Feedbacks
- id: ok_acknowledgement
type: string
format: "[Command2][ ][Set ID][ ][OK][Data][x]"
description: "TV transmits ACK when receiving normal data. If data read mode (FF sent), Data field indicates present status; if data write mode, returns the data of the PC."
- id: error_acknowledgement
type: string
format: "[Command2][ ][Set ID][ ][NG][Data][x]"
description: "TV transmits NAK on abnormal data from non-viable functions or communication errors. Data codes: Data1 = Illegal Code, Data2 = Not supported function, Data3 = Wait more time."
- id: power_state
type: enum
values: ["00", "01"]
description: "Read by transmitting ka with data FF; ACK data 00 = Power Off, 01 = Power On. TV will not send status during standby mode."
- id: channel_tuning_ack
type: string
format: "[a][ ][Set ID][ ][OK][Data00][Data01][Data02][Data03][Data04][x]"
description: "OK acknowledgement for channel tuning returns tuned channel data bytes; NG form is [a][ ][Set ID][ ][NG][Data00][x]."
Variables
# Settable parameters are represented as parameterized Actions above (volume, contrast,
# brightness, color, tint, sharpness, treble, bass, balance, color temperature).
# No additional settable non-action variables documented in source.
Events
# No unsolicited notifications documented in source. Section not applicable.
Macros
# No multi-step sequences documented in source. Section not applicable.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no explicit safety warnings, interlock procedures, or
# power-on sequencing requirements for external control. Power command note (ACK sent
# only after power-on processing completes) is operational, not a safety interlock.
Notes
- Device is a display panel ("TV" throughout the source) despite projector family naming in the pipeline; RS-232C IN port labeled "CONTROL & SERVICE", intended for third-party control hardware/software.
- Command 1 is the first character (j, k, m or x); Command 2 is the actual command. Set ID and data are lowercase hex character pairs on the wire (Set ID 10 sends '0','a'; data 0xAB sends 'a','b'); OK/NG sent as uppercase.
- Set ID
0broadcasts to every connected TV; menu range 1-99 decimal = 0x01-0x63 on the wire. - "TV will not send the status during the standby mode" (stated three times in source).
- IR remote control codes (37.917 KHz modulated NEC-style frames, discrete power/input codes C4/C5/5A/D0/BF/D4/D5/CE/CC/E9, etc.) are documented in the source and usable via the
mcKey command; IR feature "not available for all models." - Real data mapping for Set ID: 0=Step 0, A=Step 10, F=Step 15, 10=Step 16, 63=Step 99, 64=Step 100.
Provenance
source_domains:
- research.encompass.com
- files.omron.eu
- docs.zenprotocol.com
- manualsnet.com
source_urls:
- https://research.encompass.com/ZEN/om/Z50PJ240.pdf
- "https://files.omron.eu/downloads/latest/manual/en/z212_zen_v2_communications_manual_en.pdf?v=1"
- https://docs.zenprotocol.com/apps/headless/api
- https://docs.zenprotocol.com/
- https://manualsnet.com/omron/zen
retrieved_at: 2026-08-18T12:59:55.871Z
last_checked_at: 2026-09-22T11:51:33.347Z
Verification Summary
verdict: verified
checked_at: 2026-09-22T11:51:33.347Z
matched_actions: 23
action_count: 23
confidence: medium
summary: "All 23 spec actions (ka..mc) match source Command Reference List 01-23 with verified opcode + data range; transport parameters verbatim. (4 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source does not state IR hex codes mapping to serial Key command data values beyond the IR code table (discrete codes listed); no TCP/IP control documented; no firmware compatibility ranges stated"
- "flow control not explicitly stated; DTR/DSR/RTS/CTS pins present on D-Sub 9 and 7-wire config documented"
- "source contains no explicit safety warnings, interlock procedures, or"
- "flow control setting not stated; firmware versions not stated; command list references pages p.91/p.92/p.93 for Input Select / ISM Method / Auto Configuration data ranges not included in the refined excerpt; IR hex codes 40/41/07/06 in IR table have blank function names in source"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0