Summary
The Planar QE Series is a professional LCD display lineup supporting RS-232, TCP, and UDP control. All models accept ASCII command strings over a serial connection (19200 baud 8N1) or via TCP/UDP on port 57. The protocol uses a consistent [OPCODE](MODIFIERS)[OPERATOR][OPERANDS][TERM] structure with named or numeric command codes. Termination may be [CR] (0x0D), [LF] (0x0A), or ;.
Transport
protocols:
- serial
- tcp
- udp
serial:
baud_rate: 19200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
addressing:
port: 57 # TCP and UDP port 57; source does not state RS-232 port number
auth:
type: none # inferred: no auth procedure in source
Traits
# Evidence: DISPLAY.POWER commands present (powerable); AUDIO.VOLUME/BRIGHTNESS/BACKLIGHT (levelable);
# SOURCE.SELECT / SOURCE.NEXT (routable); broad ?-query support (queryable).
traits:
- powerable # inferred from DISPLAY.POWER, AUTO.ON, POWER.SAVE.MODE
- levelable # inferred from AUDIO.VOLUME, BRIGHTNESS, CONTRAST, BACKLIGHT.INTENSITY
- routable # inferred from SOURCE.SELECT, SOURCE.NEXT, AUDIO.ZONE
- queryable # inferred from broad ? operator support across the command set
# UNRESOLVED: events - device sends unsolicited email notifications per NETWORK.SMTP
# configuration but no event command structure for the control channel is documented
Actions
# Command structure: [OPCODE](MODIFIERS)[OPERATOR][OPERANDS][TERM]
# Operators: = (write), ? (read named), # (read numeric), + (increment), - (decrement),
# : (response), !ERR (failure), @ACK / ^NAK (ack/nak for no-operator actions).
# Each entry below mirrors one row in the source RS232 Codes table. Named opcodes shown
# verbatim; numeric command code included where the source documents it. Modifiers and
# operands appear in `params`; ranges/enum values kept verbatim from source.
# Termination [CR] omitted from `command:` template - append at transport layer.
# --- Image Adjust (per-zone where modifiers indicate) ---
- id: brightness
label: Brightness
kind: set
command: "BRIGHTNESS({zone})={value}"
numeric_code: 200
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: value
type: integer
range: 0-100
notes: "Operators: = # ? + -"
- id: contrast
label: Contrast
kind: set
command: "CONTRAST({zone})={value}"
numeric_code: 201
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: value
type: integer
range: 0-100
notes: "Operators: = # ? + -"
- id: color
label: Color
kind: set
command: "COLOR({zone})={value}"
numeric_code: 202
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: value
type: integer
range: 0-100
notes: "Operators: = # ? + -"
- id: tint
label: Tint
kind: set
command: "TINT({zone})={value}"
numeric_code: 203
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: value
type: integer
range: 0-100
notes: "Operators: = # ? + -"
- id: sharpness
label: Sharpness
kind: set
command: "SHARPNESS({zone})={value}"
numeric_code: 204
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: value
type: integer
range: 0-100
notes: "Operators: = # ? + -"
- id: noise_reduction
label: Noise Reduction
kind: set
command: "NOISE.REDUCTION({zone})={value}"
numeric_code: 205
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: value
type: enum
values: [OFF, LOW, MEDIUM, HIGH]
notes: "Operators: = # ? + -"
- id: diagnostic_color
label: Diagnostic Color
kind: set
command: "DIAGNOSTIC.COLOR({zone})={value}"
numeric_code: 206
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: value
type: enum
values: [RED, GREEN, BLUE, OFF]
notes: "Operators: = # ? + -"
- id: colorspace
label: Color Space
kind: set
command: "COLORSPACE({zone}, {value_type})={value}"
numeric_code: 207
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: value_type
type: enum
values: [SETTING, ACTUAL]
- name: value
type: enum
values: [REC601, REC709, RGB, RGB.VIDEO, AUTO]
notes: "Operators: = # ? + -. ACTUAL is read-only and cannot return AUTO."
- id: color_temperature
label: Color Temperature
kind: set
command: "COLOR.TEMPERATURE({zone})={value}"
numeric_code: 208
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: value
type: enum
values: [3200K, 5500K, 6500K, 7500K, 9300K, NATIVE]
notes: "Operators: = # ? + -"
- id: gain
label: Gain (RGB)
kind: set
command: "GAIN({zone}, {color})={value}"
numeric_code: 209
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: color
type: enum
values: [RED, GREEN, BLUE, ALL]
default: ALL
- name: value
type: integer
range: 0-200 # when color=ALL, three operands Red Green Blue each 0-200
notes: "Operators: = # ? + -. ALL modifier takes three operands."
- id: offset
label: Offset (RGB)
kind: set
command: "OFFSET({zone}, {color})={value}"
numeric_code: 210
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: color
type: enum
values: [RED, GREEN, BLUE, ALL]
default: ALL
- name: value
type: integer
range: 0-100 # when color=ALL, three operands each 0-100
notes: "Operators: = # ? + -"
- id: advanced_color
label: Advanced Color (CMS)
kind: set
command: "CMS({zone}, {gamut}, {color_point})={value}"
numeric_code: 211
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, CURRENT]
- name: gamut
type: enum
values: [REC709, SMPTEC, EBU, USER, AUTO, CURRENT]
- name: color_point
type: enum
values: [RED.X, RED.Y, GREEN.X, GREEN.Y, BLUE.X, BLUE.Y, CYAN.X, CYAN.Y, MAGENTA.X, MAGENTA.Y, YELLOW.X, YELLOW.Y, WHITE.X, WHITE.Y]
- name: value
type: integer
range: 0-800
notes: "Operators: = # ? + -. Omit color_point to set all 14 values (one operand per value)."
- id: cms_flag
label: Advanced Color Flag (CMSFLAG)
kind: query
command: "CMSFLAG({zone}, {gamut}, {color_point})?"
numeric_code: 212
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, CURRENT]
- name: gamut
type: enum
values: [REC709, SMPTEC, EBU, USER, AUTO, CURRENT]
- name: color_point
type: enum
values: [RED.X, RED.Y, GREEN.X, GREEN.Y, BLUE.X, BLUE.Y, CYAN.X, CYAN.Y, MAGENTA.X, MAGENTA.Y, YELLOW.X, YELLOW.Y, WHITE.X, WHITE.Y]
notes: "Returns '*' if target unachievable, else empty string."
- id: color_gamut
label: Color Gamut
kind: set
command: "COLOR.GAMUT({zone}, {type}, {gamut})={value}"
numeric_code: 214
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, CURRENT]
default: CURRENT
- name: type
type: enum
values: [SETTING, ACTUAL, COPY, REVERT]
default: SETTING
- name: gamut
type: enum
values: [REC709, SMPTE.C, EBU, USER, AUTO, CURRENT]
- name: value
type: enum
values: [REC709, SMPTE.C, EBU, USER, AUTO, DISABLE]
notes: "SET/ACTUAL take = # ?; COPY/REVERT are execute actions (@ACK)."
- id: revert_image_settings
label: Revert Image Settings
kind: action
command: "REVERT.IMAGE.SETTINGS({zone})"
numeric_code: 215
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, CURRENT]
default: CURRENT
- id: aspect
label: Aspect Ratio
kind: set
command: "ASPECT({zone})={value}"
numeric_code: 500
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: value
type: enum
values: [AUTO, 16X9, 4X3, FILL, NATIVE, LETTERBOX]
notes: "Operators: = # ? + -"
- id: overscan
label: Overscan
kind: set
command: "OVERSCAN({zone})={value}"
numeric_code: 501
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: value
type: integer
range: 0-20
notes: "Operators: = # ? + -"
- id: pan
label: Image Position (Pan)
kind: set
command: "PAN({zone}, {direction})={value}"
numeric_code: 502
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: direction
type: enum
values: [X, Y, ALL]
default: ALL
- name: value
type: integer
range: -1000 to 1000
notes: "Operators: = # ? + -. ALL takes two operands (X then Y)."
- id: rotate
label: Content Rotation
kind: set
command: "ROTATE({zone})={value}"
numeric_code: 504
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: value
type: enum
values: [NONE, 90, 180, 270]
notes: "Operators: = # ? + -"
# --- Inputs and Views ---
- id: source_select
label: Source Select
kind: set
command: "SOURCE.SELECT({zone})={source}"
numeric_code: 101
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL, CURRENT]
default: CURRENT
- name: source
type: enum
values: [OPS, HDMI.1, HDMI.2, HDMI.3, HDMI.4, DP]
notes: "Operators: = # ? + -"
- id: source_next
label: Next Source
kind: action
command: "SOURCE.NEXT({zone})"
numeric_code: 104
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL, CURRENT]
default: CURRENT
- id: source_scan
label: Auto Scan Sources
kind: set
command: "SOURCE.SCAN={value}"
numeric_code: 105
params:
- name: value
type: enum
values: [OFF, ON]
notes: "Operators: = # ? + -"
- id: multi_view
label: Multi-Source View
kind: set
command: "MULTI.VIEW={value}"
numeric_code: 102
params:
- name: value
type: enum
values: [SINGLE, QUAD]
notes: "Operators: = # ? + -"
- id: layout
label: Layout
kind: set
command: "LAYOUT({modifier})={value}"
numeric_code: 103
params:
- name: modifier
type: enum
values: [SINGLE, DUAL, QUAD]
- name: value
type: enum
values: [SINGLE, QUAD]
notes: "Operators: = # ? + -"
- id: current_zone
label: Current Zone
kind: set
command: "CURRENT.ZONE={zone}"
numeric_code: 100
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4]
notes: "Operators: = # ? + -"
- id: current_zone_layout
label: Current Zone Layout
kind: query
command: "CURRENT.ZONE.LAYOUT?"
numeric_code: 108
params: []
notes: "Returns S.1 / Q.1 / Q.2 / Q.3 / Q.4."
- id: source_message
label: Source Message
kind: query
command: "SOURCE.MESSAGE({zone})?"
numeric_code: 111
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, CURRENT]
default: CURRENT
notes: "Returns input resolution + frame rate; 'Searching' / 'No Signal' when no signal."
- id: signal_info
label: Image Information (Signal Info)
kind: query
command: "SIGNAL.INFO({zone}, {parameter})?"
numeric_code: 300
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, CURRENT]
default: CURRENT
- name: parameter
type: enum
values: [HACTIVE, VACTIVE, PCLK, HTOTAL, VTOTAL, VREFRESH, HREFRESH, INTERLACE, VFIELDRATE, VREFRESH.X.100, COLORDEPTH, TMDS, ALL]
default: ALL
- id: color_subsampling
label: Color Subsampling
kind: query
command: "COLOR.SUBSAMPLING({zone})?"
numeric_code: 301
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, CURRENT]
default: CURRENT
notes: "Returns e.g. \"4:4:4\" / \"4:2:0\"."
- id: edid_timing
label: EDID Timing
kind: set
command: "EDID.TIMING({input}, {param}){operator}{value}"
numeric_code: 400
params:
- name: input
type: enum
values: [OPS, HDMI.1, HDMI.2, HDMI.3, HDMI.4, DP, ALL]
- name: param
type: enum
values: [UPDATE, HACTIVE, VACTIVE, VREFRESH, FULL.SPEC, PCLK, HBLANK, HFP, HSYNC, VBLANK, VFP, VSYNC, FACTORY, TYPE]
- name: operator
type: enum
values: ["=", "?"]
- name: value
type: integer
range: "-3 to N (signed); -3=4K60, -2=4K30, -1=1080P"
notes: "Operators: = ? !. UPDATE is execute-only (@ACK)."
- id: edid_selected_connector
label: EDID Zone (Selected Connector)
kind: set
command: "EDID.SELECTEDCONNECTOR={value}"
numeric_code: 401
params:
- name: value
type: enum
values: [OPS, HDMI.1, HDMI.2, HDMI.3, HDMI.4, DP, ALL]
notes: "Operators: = # ? + -"
# --- Audio ---
- id: audio_balance
label: Balance
kind: set
command: "AUDIO.BALANCE={value}"
numeric_code: 1000
params:
- name: value
type: integer
range: 0-100
notes: "Operators: = # ? + -"
- id: audio_bass
label: Bass
kind: set
command: "AUDIO.BASS={value}"
numeric_code: 1001
params:
- name: value
type: integer
range: 0-100
notes: "Operators: = # ? + -"
- id: audio_mute
label: Mute
kind: set
command: "AUDIO.MUTE={value}"
numeric_code: 1002
params:
- name: value
type: enum
values: [OFF, ON]
notes: "Operators: = # ? + -"
- id: audio_input
label: Audio Input
kind: query
command: "AUDIO.INPUT?"
numeric_code: 1003
params: []
notes: "Returns source for zone currently playing audio (per Audio Select)."
- id: audio_speakers
label: Enable Internal Speakers
kind: set
command: "AUDIO.SPEAKERS={value}"
numeric_code: 1004
params:
- name: value
type: enum
values: [OFF, ON]
notes: "Operators: = # ? + -"
- id: audio_treble
label: Treble
kind: set
command: "AUDIO.TREBLE={value}"
numeric_code: 1005
params:
- name: value
type: integer
range: 0-100
notes: "Operators: = # ? + -"
- id: audio_volume
label: Volume
kind: set
command: "AUDIO.VOLUME={value}"
numeric_code: 1006
params:
- name: value
type: integer
range: 0-100
notes: "Operators: = # ? + -"
- id: audio_zone
label: Audio Select
kind: set
command: "AUDIO.ZONE={zone}"
numeric_code: 1007
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4]
notes: "Operators: = # ? + -"
- id: audio_settings
label: Audio Settings
kind: set
command: "AUDIO.SETTINGS={zone} {volume} {treble} {bass} {balance} {mute} {speakers}"
numeric_code: 1009
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4]
- name: volume
type: integer
range: 0-100
- name: treble
type: integer
range: 0-100
- name: bass
type: integer
range: 0-100
- name: balance
type: integer
range: 0-100
- name: mute
type: enum
values: ["0", "1"]
- name: speakers
type: enum
values: ["0", "1"]
notes: "Operators: = ?. Sets/returns all audio params in fixed order."
# --- OSD / Menus and Messages ---
- id: osd_position
label: Menu Position
kind: set
command: "OSD.POSITION={value}"
numeric_code: 1301
params:
- name: value
type: enum
values: [CENTER, UPPER.LEFT, UPPER.RIGHT, LOWER.LEFT, LOWER.RIGHT]
notes: "Operators: = # ? + -"
- id: orientation
label: OSD Rotation
kind: set
command: "ORIENTATION={value}"
numeric_code: 1302
params:
- name: value
type: enum
values: [LANDSCAPE, PORTRAIT]
notes: "Operators: = # ? + -"
- id: osd_transparency
label: OSD Transparency
kind: set
command: "OSD.TRANSPARENCY={value}"
numeric_code: 1303
params:
- name: value
type: integer
range: 0-5
notes: "Operators: = # ? + -"
- id: osd_timeout
label: OSD Timeout
kind: set
command: "OSD.TIMEOUT={value}"
numeric_code: 1304
params:
- name: value
type: integer
range: 0,10,30,60,120,240 # seconds
notes: "Operators: = # ? + -. Numeric value is seconds; arbitrary delay programmable."
- id: splash_screen
label: Splash Screen
kind: set
command: "SPLASH.SCREEN={value}"
numeric_code: 1305
params:
- name: value
type: enum
values: [DISABLE, ENABLE]
notes: "Operators: = # ? + -"
- id: blank_color
label: Blank Screen Color
kind: set
command: "BLANK.COLOR={value}"
numeric_code: 1306
params:
- name: value
type: enum
values: [RED, GREEN, BLUE, CYAN, MAGENTA, YELLOW, WHITE, BLACK]
notes: "Operators: = # ? + -"
- id: pattern
label: Test Pattern
kind: action
command: "PATTERN({pattern})"
numeric_code: 1307
params:
- name: pattern
type: enum
values: [NONE, BLACK, WHITE, GRAY, RED, GREEN, BLUE, CYAN, MAGENTA, YELLOW, GRAYBAR, REDBAR, GREENBAR, BLUEBAR, CHECKERBOARD, COLORBAR]
- id: osd_status
label: OSD Status
kind: query
command: "OSD.STATUS?"
numeric_code: 1308
params: []
notes: "Returns ENABLE if OSD currently shown."
- id: osd_allow_popup
label: Allow Pop Up Messages
kind: set
command: "OSD.ALLOW.POPUP={value}"
numeric_code: 1300
params:
- name: value
type: enum
values: [NO, YES]
notes: "Operators: = # ? + -"
- id: osd_close
label: OSD Close
kind: action
command: "OSD.CLOSE"
numeric_code: 1310
params: []
notes: "Forces any open menus/message boxes to close."
# --- Advanced Settings / Backlight ---
- id: backlight_intensity
label: Backlight Intensity
kind: set
command: "BACKLIGHT.INTENSITY={value}"
numeric_code: 1400
params:
- name: value
type: integer
range: 1-100
notes: "Operators: = # ? + -"
- id: local_dimming
label: Local Dimming
kind: set
command: "LOCAL.DIMMING={value}"
numeric_code: 1415
params:
- name: value
type: enum
values: [OFF, ON]
notes: "Operators: = # ? + -"
- id: memc_level
label: MEMC
kind: set
command: "MEMC.LEVEL={value}"
numeric_code: 1503
params:
- name: value
type: enum
values: [OFF, LOW, MEDIUM, HIGH]
notes: "Operators: = # ? + -"
- id: gamma
label: Gamma
kind: set
command: "GAMMA({zone})={value}"
numeric_code: 1504
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
default: CURRENT
- name: value
type: enum
values: ["1.5", "1.55", "1.6", "1.65", "1.7", "1.75", "1.8", "1.85", "1.9", "1.95", "2.0", "2.05", "2.1", "2.15", "2.2", "2.25", "2.3", "2.35", "2.4", "2.45", "2.5", "2.55", "2.6", "2.65", "2.7", "2.75", "2.8"]
notes: "Operators: = # ? + -"
# --- Advanced Settings / Power ---
- id: display_power
label: Display Power
kind: set
command: "DISPLAY.POWER={value}"
numeric_code: 1408
params:
- name: value
type: enum
values: [OFF, ON]
notes: "Operators: = # ? + -. Mirrors IR remote ON/OFF."
- id: auto_on
label: Auto Power On
kind: set
command: "AUTO.ON={value}"
numeric_code: 1407
params:
- name: value
type: enum
values: [OFF, ON]
notes: "Operators: = # ? + -"
- id: power_save_mode
label: Power Saving Mode
kind: set
command: "POWER.SAVE.MODE={value}"
numeric_code: 1405
params:
- name: value
type: enum
values: [DISABLED, LOW.POWER, WAKE.ON.SIGNAL]
notes: "Operators: = # ? + -"
- id: power_save_delay
label: Power Saving Delay
kind: set
command: "POWER.SAVE.DELAY={value}"
numeric_code: 1406
params:
- name: value
type: integer
range: 60,300,900,1800,3600 # seconds
notes: "Operators: = # ? + -. Numeric value is seconds."
- id: power_on_delay
label: Power On Delay
kind: set
command: "POWER.ON.DELAY={value}"
numeric_code: 1420
params:
- name: value
type: number
range: 0.0-10.0 # fixed-point seconds
notes: "Operators: = # ? + -"
# --- Advanced Settings / System Settings ---
- id: dp_type
label: DisplayPort Type
kind: set
command: "DP.TYPE={value}"
numeric_code: 1904
params:
- name: value
type: enum
values: ["1.1", "1.2"]
notes: "Operators: = # ? + -"
- id: pixel_orbit
label: Pixel Orbit
kind: set
command: "PIXEL.ORBIT={value}"
numeric_code: 1906
params:
- name: value
type: enum
values: [OFF, ON]
notes: "Operators: = # ? + -"
- id: led_enable
label: Enable Status LED
kind: set
command: "LED.ENABLE={value}"
numeric_code: 1902
params:
- name: value
type: enum
values: [DISABLE, ENABLE]
notes: "Operators: = ? only (no +/-)."
- id: firmware_update
label: Firmware Update
kind: action
command: "FIRMWARE.UPDATE({firmware}, {type}){operator}{value}"
numeric_code: 2200
params:
- name: firmware
type: enum
values: [AUTO, VP.AP, HDMI]
- name: type
type: enum
values: [START, PACKET, FINISH, URL]
- name: operator
type: enum
values: ["=", "?", "!"]
- name: value
type: string
notes: "Operators: = ? !. START is execute-only."
# --- Advanced Settings / Network ---
- id: ipv4_address
label: IP Address
kind: set
command: "IPV4.ADDRESS(STATIC)=\"{value}\""
numeric_code: 1205
params:
- name: value
type: string
notes: "Operators: = ?. STATIC modifier required for writes."
- id: ipv4_netmask
label: Subnet Mask
kind: set
command: "IPV4.NETMASK(STATIC)=\"{value}\""
numeric_code: 1205
params:
- name: value
type: string
notes: "Operators: = ?. STATIC modifier required for writes. Shares numeric code 1205 with IPV4.ADDRESS per source table."
- id: ipv4_gateway
label: Default Gateway
kind: set
command: "IPV4.GATEWAY(STATIC)=\"{value}\""
numeric_code: 1206
params:
- name: value
type: string
notes: "Operators: = ?. STATIC modifier required for writes."
- id: network_dhcp
label: DHCP
kind: set
command: "NETWORK.DHCP={value}"
numeric_code: 1207
params:
- name: value
type: enum
values: [OFF, ON]
notes: "Operators: = ?"
- id: network_mac
label: MAC Address
kind: query
command: "NETWORK.MAC?"
numeric_code: 1203
params: []
- id: network_dns1
label: DNS Server 1
kind: set
command: "NETWORK.DNS1(STATIC)=\"{value}\""
numeric_code: 1212
params:
- name: value
type: string
notes: "Operators: = ?. STATIC modifier required for writes."
- id: network_dns2
label: DNS Server 2
kind: set
command: "NETWORK.DNS2(STATIC)=\"{value}\""
numeric_code: 1213
params:
- name: value
type: string
notes: "Operators: = ?. STATIC modifier required for writes."
- id: network_ping
label: Network Ping
kind: set
command: "NETWORK.PING=\"{host}\""
numeric_code: 1211
params:
- name: host
type: string
notes: "Response string: SUCCESS or FAILED."
- id: network_ntp
label: Use Network Time
kind: set
command: "NETWORK.NTP={value}"
numeric_code: 1209
params:
- name: value
type: enum
values: [OFF, ON]
notes: "Operators: = ?"
- id: network_ntpserver
label: NTP Server
kind: set
command: "NETWORK.NTPSERVER=\"{value}\""
numeric_code: 1214
params:
- name: value
type: string
notes: "Default = 0.pool.ntp.org. Operators: = ?"
- id: hostname
label: Hostname
kind: set
command: "HOSTNAME=\"{value}\""
numeric_code: 2403
params:
- name: value
type: string
max_length: 65
notes: "Letters and numbers only (no spaces). Default = \"QE Series\"."
- id: display_name
label: Display Name
kind: set
command: "DISPLAY.NAME=\"{value}\""
numeric_code: 2404
params:
- name: value
type: string
# --- SMTP / Notifications ---
- id: smtp_server
label: SMTP Server
kind: set
command: "NETWORK.SMTP.SERVER=\"{value}\""
numeric_code: 1215
params:
- name: value
type: string
notes: "Operators: = ?"
- id: smtp_port
label: SMTP Port
kind: set
command: "NETWORK.SMTP.PORT={value}"
numeric_code: 1223
params:
- name: value
type: integer
notes: "Operators: = ?"
- id: smtp_username
label: SMTP Username
kind: set
command: "NETWORK.SMTP.USERNAME=\"{value}\""
numeric_code: 1224
params:
- name: value
type: string
notes: "Operators: = ?"
- id: smtp_password
label: SMTP Password
kind: set
command: "NETWORK.SMTP.PASSWORD=\"{value}\""
numeric_code: 1225
params:
- name: value
type: string
notes: "Operators: = ?"
- id: smtp_encryption
label: SMTP Connection Encryption
kind: set
command: "NETWORK.SMTP.ENCRYPTION={value}"
numeric_code: 1226
params:
- name: value
type: enum
values: [NONE, TLS, START.TLS]
notes: "Operators: = ?"
- id: smtp_authentication
label: SMTP Authentication
kind: set
command: "NETWORK.SMTP.AUTHENTICATION={value}"
numeric_code: 1227
params:
- name: value
type: enum
values: [NONE, AUTO, PLAIN, SCRAM_SHA1, CRAM_MD5, DIGEST_MD5, LOGIN, NTLM]
notes: "Operators: = ?"
- id: smtp_from
label: SMTP Email From Address
kind: set
command: "NETWORK.SMTP.FROM=\"{value}\""
numeric_code: 1228
params:
- name: value
type: string
notes: "Operators: = ?"
- id: smtp_test
label: Test Email
kind: action
command: "NETWORK.SMTP.TEST({event})"
numeric_code: 1229
params:
- name: event
type: enum
values: [POWER.STATE.CHANGED, ERROR.OCCURRED, SOURCE.DETECTED, SOURCE.LOST, SOURCE.SELECTED]
- id: notification_email
label: Notification Event
kind: set
command: "NOTIFICATION.EMAIL({event})={enable}, \"{recipients}\", \"{message}\""
numeric_code: 1222
params:
- name: event
type: enum
values: [POWER.STATE.CHANGED, ERROR.OCCURRED, SOURCE.DETECTED, SOURCE.LOST, SOURCE.SELECTED]
- name: enable
type: enum
values: [DISABLE, ENABLE]
- name: recipients
type: string
- name: message
type: string
notes: "Operators: = ?"
# --- Locks / IR / Keys ---
- id: key
label: Key
kind: set
command: "KEY={value}"
numeric_code: 1200
params:
- name: value
type: enum
values: [UP, DOWN, MENU, SOURCE, VOLUME.PLUS, VOLUME.MINUS, EXIT, LEFT, ENTER, PREV, RIGHT, KEY.1, KEY.2, KEY.3, KEY.4, KEY.5, KEY.6, KEY.7, KEY.8, KEY.9, MUTE, KEY.0, STDBY.TOGGLE, STDBY.ENTER, STDBY.EXIT, MENU.PREV, TOP, PRESETS, PRESET1, PRESET2, PRESET3, PRESET4, ZONE1, ZONE2, ZONE3, ZONE4, PIP.MODE, PIP.SWAP, HDMI1, HDMI2, HDMI3, HDMI4, DISPLAY.PORT, DVI, VGA, OPS, WALL, COLOR, MISC, ARROW.LEFT, ARROW.RIGHT, STAR.STAR]
notes: "Operator: = only. See Key table in source for numeric codes."
- id: key_lock
label: Keypad Lock
kind: set
command: "KEY.LOCK={value}"
numeric_code: 1201
params:
- name: value
type: enum
values: [DISABLE, ENABLE]
notes: "Operators: = ?"
- id: ir_lock
label: IR Remote Lock
kind: set
command: "IR.LOCK={value}"
numeric_code: 1202
params:
- name: value
type: enum
values: [DISABLE, ENABLE]
notes: "Operators: = ?"
- id: ir_code
label: IR Code
kind: set
command: "IR.CODE={value}"
numeric_code: 1210
params:
- name: value
type: integer
range: 0-65535
notes: "Operators: = # ? + -"
- id: timezone
label: Time Zone
kind: set
command: "TIMEZONE={value}"
numeric_code: 1208
params:
- name: value
type: enum
values: [UTCM1200.INTERNATIONAL.DATE.LINE.WEST, UTCM1100.COORDINATED.UNIVERSAL.TIMEM11, UTCM1000.HAWAII, UTCM0900.ALASKA, UTCM0800.BAJA.CALIFORNIA, UTCM0800.PACIFIC.TIME.US.CANADA, UTCM0700.ARIZONA, UTCM0700.CHIHUAHUA.LA.PAZ.MAZATLAN, UTCM0700.MOUNTAIN.TIME.US.CANADA, UTCM0600.CENTRAL.AMERICA, UTCM0600.CENTRAL.TIME.US.CANADA, UTCM0600.GUADALAJARA.MEXICO.CITY.MONTERREY, UTCM0600.SASKATCHEWAN, UTCM0500.BOGOTA.LIMA.QUITO.RIO.BRANCO, UTCM0500.CHETUMAL, UTCM0500.EASTERN.TIME.US.CANADA, UTCM0500.INDIANA.EAST, UTCM0430.CARACAS, UTCM0400.ASUNCION, UTCM0400.ATLANTIC.TIME.CANADA, UTCM0400.CUIABA, UTCM0400.GEORGETOWN.LA.PAZ.MANAUS.SAN.JUAN, UTCM0330.NEWFOUNDLAND, UTCM0300.BRASILIA, UTCM0300.CAYENNE.FORTALEZA, UTCM0300.CITY.OF.BUENOS.AIRES, UTCM0300.GREENLAND, UTCM0300.MONTEVIDEO, UTCM0300.SALVADOR, UTCM0300.SANTIAGO, UTCM0200.COORDINATED.UNIVERSAL.TIMEM02, UTCM0100.AZORES, UTCM0100.CABO.VERDE.IS, UTC.CASABLANCA, UTC.COORDINATED.UNIVERSAL.TIME, UTC.DUBLIN.EDINBURGH.LISBON.LONDON, UTC.MONROVIA.REYKJAVIK, UTCP0100.AMSTERDAM.BERLIN.BERN.ROME.STOCKHOLM.VIENNA, UTCP0100.BELGRADE.BRATISLAVA.BUDAPEST.LJUBLJANA.PRAGUE, UTCP0100.BRUSSELS.COPENHAGEN.MADRID.PARIS, UTCP0100.SARAJEVO.SKOPJE.WARSAW.ZAGREB, UTCP0100.WEST.CENTRAL.AFRICA, UTCP0100.WINDHOEK, UTCP0200.AMMAN, UTCP0200.ATHENS.BUCHAREST, UTCP0200.BEIRUT, UTCP0200.CAIRO, UTCP0200.DAMASCUS, UTCP0200.HARARE.PRETORIA, UTCP0200.HELSINKI.KYIV.RIGA.SOFIA.TALLINN.VILNIUS, UTCP0200.ISTANBUL, UTCP0200.JERUSALEM, UTCP0200.KALININGRAD.RTZ.1, UTCP0200.TRIPOLI, UTCP0300.BAGHDAD, UTCP0300.KUWAIT.RIYADH, UTCP0300.MINSK, UTCP0300.MOSCOW.ST.PETERSBURG.VOLGOGRAD.RTZ.2, UTCP0300.NAIROBI, UTCP0330.TEHRAN, UTCP0400.ABU.DHABI.MUSCAT, UTCP0400.BAKU, UTCP0400.IZHEVSK.SAMARA.RTZ.3, UTCP0400.PORT.LOUIS, UTCP0400.TBILISI, UTCP0400.YEREVAN, UTCP0430.KABUL, UTCP0500.ASHGABAT.TASHKENT, UTCP0500.EKATERINBURG.RTZ.4, UTCP0500.ISLAMABAD.KARACHI, UTCP0530.CHENNAI.KOLKATA.MUMBAI.NEW.DELHI, UTCP0530.SRI.JAYAWARDENEPURA, UTCP0545.KATHMANDU, UTCP0600.ASTANA, UTCP0600.DHAKA, UTCP0600.NOVOSIBIRSK.RTZ.5, UTCP0630.YANGON.RANGOON, UTCP0700.BANGKOK.HANOI.JAKARTA, UTCP0700.KRASNOYARSK.RTZ.6, UTCP0800.BEIJING.CHONGQING.HONG.KONG.URUMQI, UTCP0800.IRKUTSK.RTZ.7, UTCP0800.KUALA.LUMPUR.SINGAPORE, UTCP0800.PERTH, UTCP0800.TAIPEI, UTCP0800.ULAANBAATAR, UTCP0900.OSAKA.SAPPORO.TOKYO, UTCP0900.SEOUL, UTCP0900.YAKUTSK.RTZ.8, UTCP0930.ADELAIDE, UTCP0930.DARWIN, UTCP1000.BRISBANE, UTCP1000.CANBERRA.MELBOURNE.SYDNEY, UTCP1000.GUAM.PORT.MORESBY, UTCP1000.HOBART, UTCP1000.MAGADAN, UTCP1000.VLADIVOSTOK.MAGADAN.RTZ.9, UTCP1100.CHOKURDAKH.RTZ.10, UTCP1100.SOLOMON.IS.NEW.CALEDONIA, UTCP1200.ANADYR.PETROPAVLOVSK.KAMCHATSKY.RTZ.11, UTCP1200.AUCKLAND.WELLINGTON, UTCP1200.COORDINATED.UNIVERSAL.TIMEP12, UTCP1200.FIJI, UTCP1300.NUKU.ALOFA, UTCP1300.SAMOA, UTCP1400.KIRITIMATI.ISLAND]
notes: "Operators: = # ? + -"
- id: serial_device
label: Serial Device
kind: set
command: "SERIAL.DEVICE({port}, {setting})=\"{value}\""
numeric_code: 1220
params:
- name: port
type: enum
values: [DB9, USB, OPS]
- name: setting
type: enum
values: [BAUD]
- name: value
type: string
notes: "Operators: = ?"
# --- Time / Schedule ---
- id: time
label: Time
kind: set
command: "TIME({field})={value}"
numeric_code: 1100
params:
- name: field
type: enum
values: [YEAR, MONTH, DATE, HOUR, MINUTE, ALL]
default: ALL
- name: value
type: integer
notes: "Operators: = ?"
- id: time_day
label: Time - Day
kind: query
command: "TIME.DAY?"
numeric_code: 1101
params: []
notes: "Returns MON-SUN."
- id: time_month
label: Time - Month
kind: set
command: "TIME.MONTH={value}"
numeric_code: 1102
params:
- name: value
type: enum
values: [JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER]
notes: "Operators: = ?"
- id: time_string
label: Time - String
kind: query
command: "TIME.STRING?"
numeric_code: 1103
params: []
notes: "Returns e.g. \"2015-09-01 13:21\"."
- id: schedule
label: Schedule
kind: set
command: "SCHEDULE({slot}, {parameter})={value}"
numeric_code: 2100
params:
- name: slot
type: integer
range: 1-20
- name: parameter
type: enum
values: [FREQ, MINUTE, HOUR, DAY, ACTION, DATA, ENABLE, ALL]
default: ALL
- name: value
type: integer
notes: "Operators: = ?"
- id: schedule_day
label: Schedule Day
kind: set
command: "SCHEDULE.DAY({slot})={value}"
numeric_code: 2101
params:
- name: slot
type: integer
range: 1-20
- name: value
type: enum
values: [MON, TUE, WED, THU, FRI, SAT, SUN]
notes: "Operators: = ?"
- id: schedule_action
label: Schedule Action
kind: set
command: "SCHEDULE.ACTION({slot})={value}"
numeric_code: 2102
params:
- name: slot
type: integer
range: 1-20
- name: value
type: enum
values: [TURN.ON, TURN.OFF, PANEL.BRIGHTNESS]
notes: "Operators: = ?"
- id: schedule_frequency
label: Schedule Frequency
kind: set
command: "SCHEDULE.FREQUENCY({slot})={value}"
numeric_code: 2103
params:
- name: slot
type: integer
range: 1-20
- name: value
type: enum
values: [DAILY, WEEKLY, WEEKDAYS, WEEKENDS]
notes: "Operators: = ?"
- id: schedule_description
label: Schedule Description
kind: query
command: "SCHEDULE.DESCRIPTION({slot})?"
numeric_code: 2104
params:
- name: slot
type: integer
range: 1-20
# --- System / Diagnostics / Reset ---
- id: error_log
label: Error Log
kind: query
command: "ERROR.LOG({entry})?"
numeric_code: 2311
params:
- name: entry
type: integer
range: 1-65535
notes: "Entry #1 is most recent. Empty string = no more entries."
- id: build_info
label: Version Info (Build Info)
kind: query
command: "BUILD.INFO({field})?"
numeric_code: 2302
params:
- name: field
type: enum
values: [DATE.SCP, VERSION.SCP, DATE.VP, VERSION.VP, SRC.INFO.VP, VERSION.HDMI, VERSION.FRC, PKG.DATE, PKG.VERSION]
- id: serial_number
label: Serial Number
kind: query
command: "SERIAL.NUMBER?"
numeric_code: 2303
params: []
- id: model_id
label: Model ID
kind: query
command: "MODEL.ID?"
numeric_code: 2306
params: []
notes: "Returns e.g. \"QE4050\"."
- id: model_series
label: Model Series
kind: query
command: "MODEL.SERIES?"
numeric_code: 2316
params: []
notes: "Always returns \"QE Series\" for this product."
- id: help
label: Help
kind: query
command: "HELP({mode})?"
numeric_code: 2300
params:
- name: mode
type: enum
values: [FIRST, NEXT]
description: "Or pass a command name to get help on that command."
notes: "HELP(FIRST)? to start; HELP(NEXT)? until ^NAK. Or HELP(\"OSD.STATUS\")? for single command."
- id: system_state
label: System State
kind: query
command: "SYSTEM.STATE?"
numeric_code: 2310
params: []
notes: "Returns STANDBY / POWERING.ON / ON / POWERING.DOWN / BACKLIGHT.OFF / FAULT."
- id: save_diagnostics
label: Save Diagnostics
kind: action
command: "SAVE.DIAGNOSTICS({location})"
numeric_code: 2314
params:
- name: location
type: enum
values: [USB]
- id: clone_settings
label: Save and Restore Settings
kind: action
command: "CLONE.SETTINGS({operation}, {location})"
numeric_code: 2315
params:
- name: operation
type: enum
values: [COPY, PASTE]
- name: location
type: enum
values: [USB]
- id: reset
label: Factory Reset
kind: action
command: "RESET({level})"
numeric_code: 2400
params:
- name: level
type: enum
values: [USER, FACTORY1]
notes: "FACTORY1 also resets EDID customizations, network settings, presets."
- id: system_reboot
label: Reboot
kind: action
command: "SYSTEM.REBOOT"
numeric_code: 2402
params: []
notes: "Forces system restart."
Feedbacks
# Response syntax: OPCODE[(modifiers)]:VALUE [TERM] (':' operator = response to =?# + -)
# Error responses: OPCODE!ERR N where N = 1..6
# 1 = Invalid syntax
# 2 = Reserved for future use
# 3 = Command not recognized
# 4 = Invalid modifier
# 5 = Invalid operands
# 6 = Invalid operator
# ACK/NAK for execute actions: OPCODE[(modifiers)]@ACK | OPCODE[(modifiers)]^NAK
# Termination matches the request terminator ([CR], [LF], or ';').
# Responses are always UPPERCASE regardless of request case; whitespace normalized to single space.
- id: ack
type: literal
syntax: "{OPCODE}@ACK"
meaning: "Execute command accepted"
- id: nak
type: literal
syntax: "{OPCODE}^NAK"
meaning: "Execute command received but cannot be processed at this time"
- id: err
type: enum
syntax: "{OPCODE}!ERR {code}"
values: [1, 2, 3, 4, 5, 6]
meaning: "Failure response with error code"
- id: value_response
type: literal
syntax: "{OPCODE}[(modifiers)]:{value}"
meaning: "Response to = ? # + - operators"
Variables
# Settable parameters exposed via the = operator and readable via ? or #.
# One entry per stateful parameter that is not a discrete action.
# Full operand/range details live on each Action entry above; this section
# lists the canonical writable variables.
variables:
- name: brightness
type: integer
range: 0-100
- name: contrast
type: integer
range: 0-100
- name: color
type: integer
range: 0-100
- name: tint
type: integer
range: 0-100
- name: sharpness
type: integer
range: 0-100
- name: audio_volume
type: integer
range: 0-100
- name: audio_balance
type: integer
range: 0-100
- name: audio_bass
type: integer
range: 0-100
- name: audio_treble
type: integer
range: 0-100
- name: backlight_intensity
type: integer
range: 1-100
- name: overscan
type: integer
range: 0-20
- name: pan_x
type: integer
range: -1000 to 1000
- name: pan_y
type: integer
range: -1000 to 1000
- name: power_on_delay
type: number
range: 0.0-10.0
- name: ir_code
type: integer
range: 0-65535
# UNRESOLVED: full enum-valued variables (aspect, gamma, timezone, etc.) intentionally
# listed as Action params rather than duplicated here; see Actions section.
Events
# UNRESOLVED: device can send email notifications (NETWORK.SMTP) on the events
# POWER.STATE.CHANGED, ERROR.OCCURRED, SOURCE.DETECTED, SOURCE.LOST, SOURCE.SELECTED,
# but a protocol for receiving unsolicited events over the RS-232/TCP/UDP control
# channel is NOT documented in the source. Notifications are SMTP-only.
Macros
# UNRESOLVED: no multi-step macro sequences documented
Safety
confirmation_required_for:
- reset # FACTORY1 wipes EDID, network, presets
- system_reboot # forces restart
- firmware_update # START triggers firmware flow
- display_power # power state change
- edid_timing # UPDATE modifier applies EDID changes
interlocks: []
# UNRESOLVED: no explicit safety warnings or interlock procedures in source.
# Available-in-Standby column in source table lists which commands are accepted
# while the display is in STANDBY; see Notes.
Notes
The command set is shared across RS-232, USB-B, LAN (TCP), and LAN (UDP) — all use the same ASCII protocol on port 57 for IP paths. Termination characters are [CR] (0x0D), [LF] (0x0A), or ;. Numeric command codes (e.g. 200=BRIGHTNESS) are documented alongside named codes — either form may be sent. Multiple modifiers/operands are separated by commas, spaces, or both; responses always use single spaces. Commands are case-insensitive; responses are always uppercase.
The device supports 4 zones (ZONE.1–ZONE.4) with CURRENT/ALL.INPUT/ALL/ALL.ZONE modifiers on most image/audio commands. Several commands (NETWORK params) accept the STATIC modifier for writes only and omit it for reads.
UDP note from source: most UDP terminal programs won't auto-append [CR], so hex-encoded commands (e.g. 444953504C41592E504F5745523D310D for DISPLAY.POWER=1[CR]) are commonly used. Tera Term used for TCP testing ("Other" service = raw TCP, no Telnet/SSH). Hercules used for UDP testing.
Standby availability: source "Available in Standby" column marks which commands are accepted in STANDBY — power/network/schedule/IR/SMTP/hostname commands are; most image/audio commands are not.
Source have 110 command rows. Spec now enumerate all of them verbatim with `command:` payloads, modifiers as params, operators in notes. Preserved transport/summary/traits structure; extended Actions from empty placeholder to full coverage. Marked STANDBY-availability + safety items. Events still UNRESOLVED (control-channel event protocol not documented — only SMTP).
## Provenance
```yaml
source_domains:
- planar.com
source_urls:
- https://www.planar.com/media/p1wfdp10/020-1321-01a_qe-series-rs232-user-manual-wm.pdf
retrieved_at: 2026-07-17T17:20:56.388Z
last_checked_at: 2026-07-22T00:39:35.973Z
Verification Summary
verdict: verified
checked_at: 2026-07-22T00:39:35.973Z
matched_actions: 110
action_count: 110
confidence: medium
summary: "All 110 spec actions map 1:1 to the source RS232 Codes table rows with exact numeric codes, opcodes, and matching enum/range shapes; transport values confirmed. (10 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "USB-B and OPS serial paths not independently documented; commands appear identical to RS-232 set"
- "events - device sends unsolicited email notifications per NETWORK.SMTP"
- "full enum-valued variables (aspect, gamma, timezone, etc.) intentionally"
- "device can send email notifications (NETWORK.SMTP) on the events"
- "no multi-step macro sequences documented"
- "no explicit safety warnings or interlock procedures in source."
- "TCP/Telnet-specific behavior (keepalive, echo suppression) not documented"
- "authentication for any networked control path not documented"
- "firmware update packet payload format (PACKET operand) partial details only"
- "KEY command numeric values 4, 7, 8, 10, 11, 16, 271-285 marked \"Not used\" in source"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0