Summary
Planar UltraRes P Series large-format displays. Same serial command set exposed over RS-232, TCP/Telnet (port 23), and SSH (port 22). RS-232 is always available; TCP/SSH are disabled by default and must be enabled through Remote Monitoring Software. ASCII command/response protocol with named opcodes, optional modifiers, operators, and operands terminated by CR/LF/semicolon.
Transport
protocols:
- serial
- tcp
# SSH is also supported on port 22 (user: root) but is not enumerated as a
# transport protocol in this spec; the command/response wire format is
# identical to TCP/serial.
addressing:
port: 23 # TCP/Telnet. SSH uses port 22.
serial:
baud_rate: 19200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: password # Network access requires login via Remote Monitoring Software (TCP) or SSH user/password (root). RS-232 itself has no wire-level auth.
# inferred: source describes explicit login procedure for TCP/SSH paths
Connector pin-out (DB9 female, straight-through): Pin 2 Tx, Pin 3 Rx, Pin 5 GND. All other pins NC. Power Down Mode must be set to Networked Standby or Fast Startup before RS-232 commands are accepted.
Wire format (all transports): [OPCODE](MODIFIERS)[OPERATOR][OPERANDS][TERM]
- OPCODE: named (e.g.
GAIN) or numeric (e.g.200) - MODIFIERS: zero or more in parentheses, e.g.
(ZONE.1, ALL) - OPERATOR:
=write,?read name,#read numeric,+increment,-decrement,:response,!ERRerror,@ACKack,^NAKnack, none = execute - OPERAND: enumerated, quoted string, integer, or fixed-point
- TERM: CR (0x0D), LF (0x0A), or
;
Error codes: ERR 1 invalid syntax, ERR 2 reserved, ERR 3 unknown command, ERR 4 invalid modifier, ERR 5 invalid operand, ERR 6 invalid operator.
Traits
# powerable - DISPLAY.POWER, SYSTEM.STATE, PATTERN, SYSTEM.REBOOT
# routable - SOURCE.SELECT, MULTI.VIEW, LAYOUT, CURRENT.ZONE
# queryable - most commands support ?/# read operators
# levelable - VOLUME, BRIGHTNESS, CONTRAST, COLOR, GAIN, OFFSET, BACKLIGHT, TINT, SHARPNESS, etc.
Actions
# OSD / Menus
- id: osd_allow_popup
label: Allow Pop Up Messages
kind: action
command: "OSD.ALLOW.POPUP={0|1}" # 0=NO, 1=YES
params:
- name: value
type: enum
values: [NO, YES]
description: Allow pop-up messages
- id: osd_close
label: OSD Close
kind: action
command: "OSD.CLOSE" # action operator, no operand
params: []
- id: osd_position
label: Menu Position
kind: action
command: "OSD.POSITION={0..4}"
params:
- name: value
type: enum
values: [CENTER, UPPER.LEFT, UPPER.RIGHT, LOWER.LEFT, LOWER.RIGHT]
- id: osd_rotation
label: OSD Rotation
kind: action
command: "ORIENTATION={0|1}"
params:
- name: value
type: enum
values: [LANDSCAPE, PORTRAIT]
- id: osd_status
label: OSD Status (query)
kind: query
command: "OSD.STATUS?"
params: []
- id: osd_timeout
label: OSD Timeout
kind: action
command: "OSD.TIMEOUT={0|10|30|60|120|240}"
params:
- name: value
type: enum
values: [OFF, 10.SECONDS, 30.SECONDS, 60.SECONDS, 120.SECONDS, 240.SECONDS]
- id: osd_transparency
label: OSD Transparency
kind: action
command: "OSD.TRANSPARENCY={0..100}"
params:
- name: value
type: integer
description: Transparency percentage
- id: blank_color
label: Blank Screen Color
kind: action
command: "BLANK.COLOR={0..7}"
params:
- name: value
type: enum
values: [RED, GREEN, BLUE, CYAN, MAGENTA, YELLOW, WHITE, BLACK]
- id: splash_screen
label: Splash Screen
kind: action
command: "SPLASH.SCREEN={0|1}"
params:
- name: value
type: enum
values: [DISABLE, ENABLE]
- id: language
label: Language
kind: action
command: "LANGUAGE={0..8}"
params:
- name: value
type: enum
values: [ENGLISH, FRENCH, GERMAN, SPANISH, ITALIAN, CHINESE.SIMPLIFIED, CHINESE.TRADITIONAL, PORTUGUESE, JAPANESE]
# Image Adjust
- id: aspect
label: Aspect Ratio
kind: action
command: "ASPECT({zone})={0..5}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: value
type: enum
values: [AUTO, 16X9, 4X3, FILL, NATIVE, LETTERBOX]
- id: backlight_intensity
label: Backlight Intensity
kind: action
command: "BACKLIGHT.INTENSITY={1..100}"
params:
- name: value
type: integer
description: Intensity 1-100
- id: brightness
label: Brightness
kind: action
command: "BRIGHTNESS({zone})={0..100}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: value
type: integer
description: Brightness 0-100
- id: color
label: Color
kind: action
command: "COLOR({zone})={0..100}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: value
type: integer
description: Color 0-100
- id: colorspace
label: Color Space
kind: action
command: "COLORSPACE({zone},{setting_or_actual})={0..4}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: setting_or_actual
type: enum
values: [SETTING, ACTUAL]
description: "SETTING=configured, ACTUAL=applied (cannot return AUTO)"
- name: value
type: enum
values: [REC601, REC709, RGB, RGB.VIDEO, AUTO]
- id: color_subsampling
label: Color Subsampling (query)
kind: query
command: "COLOR.SUBSAMPLING({zone})?"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, CURRENT]
- id: color_temperature
label: Color Temperature
kind: action
command: "COLOR.TEMPERATURE({zone})={0..5}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: value
type: enum
values: ["3200K", "5500K", "6500K", "7500K", "9300K", NATIVE]
- id: contrast
label: Contrast
kind: action
command: "CONTRAST({zone})={0..100}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: value
type: integer
description: Contrast 0-100
- id: gain
label: Gain (per color)
kind: action
command: "GAIN({zone},{color})={0..200}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: color
type: enum
values: [RED, GREEN, BLUE, ALL]
- name: value
type: integer
description: Gain 0-200 (per channel) or three values (R G B) for ALL
- id: gamma
label: Gamma
kind: action
command: "GAMMA({zone})={6|8|10|12|14|16|18|20|22|24|26|28}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: value
type: enum
values: ["1.8", "1.9", "2.0", "2.1", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9"]
- id: offset
label: Offset (per color)
kind: action
command: "OFFSET({zone},{color})={0..100}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: color
type: enum
values: [RED, GREEN, BLUE, ALL]
- name: value
type: integer
description: Offset 0-100 (per channel) or three values (R G B) for ALL
- id: overscan
label: Overscan
kind: action
command: "OVERSCAN({zone})={0..20}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: value
type: integer
description: Overscan 0-20
- id: revert_image_settings
label: Revert Image Settings
kind: action
command: "REVERT.IMAGE.SETTINGS({zone})"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, CURRENT]
- id: sharpness
label: Sharpness
kind: action
command: "SHARPNESS={0..5}"
params:
- name: value
type: integer
description: Sharpness 0-5
- id: tint
label: Tint
kind: action
command: "TINT({zone})={0..100}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL.INPUT, ALL, ALL.ZONE, CURRENT]
- name: value
type: integer
description: Tint 0-100
# Routing / Multi-Source View
- id: current_zone
label: Current Zone
kind: action
command: "CURRENT.ZONE={0..3}"
params:
- name: value
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4]
- id: current_zone_layout
label: Current Zone Layout (query)
kind: query
command: "CURRENT.ZONE.LAYOUT?"
params: []
- id: layout
label: Multi-Source View Layout
kind: action
command: "LAYOUT={0|1|2|3|4|5|12}"
params:
- name: value
type: enum
values: [SINGLE, PIP.UL, PIP.UR, PIP.LL, PIP.LR, DUAL.L, QUAD]
- id: multi_view
label: Multi-Source View Mode
kind: action
command: "MULTI.VIEW={0|1|3|4}"
params:
- name: value
type: enum
values: [SINGLE, DUAL, QUAD, PIP]
- id: pip_size
label: PIP Size
kind: action
command: "PIP.SIZE={0|1|2}"
params:
- name: value
type: enum
values: [SMALL, MEDIUM, LARGE]
- id: pip_swap
label: PIP Swap
kind: action
command: "PIP.SWAP"
params: []
- id: source_next
label: Next Source
kind: action
command: "SOURCE.NEXT({zone})"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ALL, CURRENT]
- id: source_select
label: Source Select
kind: action
command: "SOURCE.SELECT({zone})={1|2|5|13|14|15}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, ZONE.1.SECONDARY, ALL, CURRENT]
- name: value
type: enum
values: [HDMI.1, HDMI.2, DP, DP.2, NONE, USBC]
description: "NONE only valid for ZONE.1.SECONDARY"
- id: source_scan
label: Auto Scan Sources
kind: action
command: "SOURCE.SCAN={0|1|2}"
params:
- name: value
type: enum
values: [OFF, ON, FAILOVER]
- id: source_message
label: Source Message (query)
kind: query
command: "SOURCE.MESSAGE({zone})?"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, CURRENT]
# Audio
- id: audio_input
label: Audio Input (query)
kind: query
command: "AUDIO.INPUT?"
params: []
- id: audio_zone
label: Audio Select (zone)
kind: action
command: "AUDIO.ZONE={0..3}"
params:
- name: value
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4]
- id: audio_settings
label: Audio Settings (composite)
kind: action
command: "AUDIO.SETTINGS={zone} {volume} {treble} {bass} {balance} {mute} {speakers}"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4]
- name: volume
type: integer
description: 0-100
- name: treble
type: integer
description: 0-100
- name: bass
type: integer
description: 0-100
- name: balance
type: integer
description: 0-100
- name: mute
type: enum
values: [OFF, ON]
- name: speakers
type: enum
values: [OFF, ON]
- id: audio_balance
label: Balance
kind: action
command: "AUDIO.BALANCE={0..100}"
params:
- name: value
type: integer
description: Balance 0-100
- id: audio_bass
label: Bass
kind: action
command: "AUDIO.BASS={0..100}"
params:
- name: value
type: integer
description: Bass 0-100
- id: audio_mute
label: Mute
kind: action
command: "AUDIO.MUTE={0|1}"
params:
- name: value
type: enum
values: [OFF, ON]
- id: audio_speakers
label: Enable Internal Speakers
kind: action
command: "AUDIO.SPEAKERS={0|1}"
params:
- name: value
type: enum
values: [OFF, ON]
- id: audio_treble
label: Treble
kind: action
command: "AUDIO.TREBLE={0..100}"
params:
- name: value
type: integer
description: Treble 0-100
- id: audio_volume
label: Volume
kind: action
command: "AUDIO.VOLUME={0..100}"
params:
- name: value
type: integer
description: Volume 0-100
# Power
- id: auto_on
label: Auto Power On
kind: action
command: "AUTO.ON={0|1|2}"
params:
- name: value
type: enum
values: [OFF, ON, PREVIOUS.STATE]
- id: display_power
label: Display Power
kind: action
command: "DISPLAY.POWER={0|1}"
params:
- name: value
type: enum
values: [OFF, ON]
description: "See IR remote ON/OFF keys. Power Down Mode must be Networked Standby or Fast Startup for RS-232 to be accepted."
- id: power_down_mode
label: Power Down Mode
kind: action
command: "POWER.DOWN.MODE={0|1|2}"
params:
- name: value
type: enum
values: [Standby.Mode, Networked.Standby.Mode, Fast.Startup]
description: Must be Networked.Standby.Mode or Fast.Startup to accept RS-232 commands
- id: power_save_delay
label: Power Saving Delay
kind: action
command: "POWER.SAVE.DELAY={60|300|900|1800|3600}"
params:
- name: value
type: enum
values: ["1.MINUTE", "5.MINUTES", "15.MINUTES", "30.MINUTES", "60.MINUTES"]
- id: power_save_mode
label: Power Saving Mode
kind: action
command: "POWER.SAVE.MODE={0|1|2}"
params:
- name: value
type: enum
values: [Disable, Power.Down, Wake.On.Signal]
- id: system_state
label: System State (query)
kind: query
command: "SYSTEM.STATE?"
params: []
- id: system_reboot
label: Reboot
kind: action
command: "SYSTEM.REBOOT"
params: []
# EDID
- id: edid_timing
label: EDID Timing
kind: action
command: "EDID.TIMING({input},{param})?={signed_int}"
params:
- name: input
type: enum
values: [HDMI.1, HDMI.2, DP, DP.2, USBC]
- name: param
type: enum
values: [UPDATE, FACTORY, TYPE]
description: "UPDATE supports action operator; FACTORY/TYPE are read-only"
- name: value
type: integer
description: "-3=4K60, -2=4K30, -1=1080P"
- id: edid_selected_connector
label: EDID Zone (Selected Connector)
kind: action
command: "EDID.SELECTEDCONNECTOR={1|2|5|13|15}"
params:
- name: value
type: enum
values: [HDMI.1, HDMI.2, DP, DP.2, USBC]
# Network
- id: network_dhcp
label: DHCP
kind: action
command: "NETWORK.DHCP={0|1}"
params:
- name: value
type: enum
values: [OFF, ON]
- id: network_dns1
label: DNS Server 1
kind: action
command: "NETWORK.DNS1(STATIC)=\"{ip}\""
params:
- name: ip
type: string
description: IP address string
- id: network_dns2
label: DNS Server 2
kind: action
command: "NETWORK.DNS2(STATIC)=\"{ip}\""
params:
- name: ip
type: string
description: IP address string
- id: network_mac
label: MAC Address (query)
kind: query
command: "NETWORK.MAC?"
params: []
- id: network_ntp
label: Use Network Time
kind: action
command: "NETWORK.NTP={0|1}"
params:
- name: value
type: enum
values: [OFF, ON]
- id: network_ntpserver
label: NTP Server
kind: action
command: "NETWORK.NTPSERVER=\"{server}\""
params:
- name: server
type: string
description: NTP server hostname (default "0.pool.ntp.org")
- id: network_ping
label: Network Ping
kind: action
command: "NETWORK.PING=\"{host}\""
params:
- name: host
type: string
description: Hostname or IP. Response is "SUCCESS" or "FAILED".
- id: network_smtp_test
label: Test Email
kind: action
command: "NETWORK.SMTP.TEST({event})"
params:
- name: event
type: enum
values: [POWER.STATE.CHANGED, SOURCE.LOST, SOURCE.SELECTED]
- id: ipv4_address
label: IP Address
kind: action
command: "IPV4.ADDRESS(STATIC)=\"{ip}\""
params:
- name: ip
type: string
description: IPv4 address string
- id: ipv4_gateway
label: Default Gateway
kind: action
command: "IPV4.GATEWAY(STATIC)=\"{ip}\""
params:
- name: ip
type: string
description: IPv4 address string
- id: ipv4_netmask
label: Subnet Mask
kind: action
command: "IPV4.NETMASK(STATIC)=\"{mask}\""
params:
- name: mask
type: string
description: Subnet mask string
- id: command_enable
label: Network Commands
kind: action
command: "COMMAND.ENABLE(NETWORK)={0|1}"
params:
- name: value
type: enum
values: [OFF, ON]
description: Enable/disable network command ports
- id: lan_lock
label: LAN Lock
kind: action
command: "LAN.LOCK={0|1}"
params:
- name: value
type: enum
values: [DISABLE, ENABLE]
# CEC
- id: cec_enable
label: HDMI CEC
kind: action
command: "CEC.ENABLE={0|1}"
params:
- name: value
type: enum
values: [DISABLE, ENABLE]
- id: cec_standby
label: HDMI CEC Standby
kind: action
command: "CEC.STANDBY={0|1}"
params:
- name: value
type: enum
values: [OFF, ON]
# DisplayPort
- id: dp_type
label: DisplayPort 1 Type
kind: action
command: "DP.TYPE={1|2|3}"
params:
- name: value
type: enum
values: ["1.2", "1.4", "2.0"]
- id: dp2_type
label: DisplayPort 2 Type
kind: action
command: "DP2.TYPE={1|2|3}"
params:
- name: value
type: enum
values: ["1.2", "1.4", "2.0"]
- id: pixel_orbit
label: Pixel Orbit
kind: action
command: "PIXEL.ORBIT={0|1}"
params:
- name: value
type: enum
values: [OFF, ON]
# Lock / Security
- id: ir_lock
label: IR Remote Lock
kind: action
command: "IR.LOCK={0|1}"
params:
- name: value
type: enum
values: [DISABLE, ENABLE]
- id: ir_code
label: IR Code
kind: action
command: "IR.CODE={0..65535}"
params:
- name: value
type: integer
description: IR Remote ID code 0-65535
- id: key_lock
label: Keypad Lock
kind: action
command: "KEY.LOCK={0|1}"
params:
- name: value
type: enum
values: [DISABLE, ENABLE]
- id: rs232_lock
label: RS232 Lock
kind: action
command: "RS232.LOCK={0|1}"
params:
- name: value
type: enum
values: [DISABLE, ENABLE]
- id: usba_lock
label: USB-A Lock
kind: action
command: "USBA.LOCK={0|1}"
params:
- name: value
type: enum
values: [DISABLE, ENABLE]
# Key passthrough
- id: key
label: Key (IR remote emulation)
kind: action
command: "KEY={name}"
params:
- name: name
type: enum
description: Key code name (UP, DOWN, MENU, SOURCE, VOLUME.PLUS, VOLUME.MINUS, EXIT, LEFT, ENTER, PREV, RIGHT, KEY.0..KEY.9, MUTE, USBC, DISPLAY.PORT2, STDBY.TOGGLE, STDBY.ENTER, STDBY.EXIT, MENU.PREV, TOP, PRESETS, PRESET1..PRESET4, ZONE1..ZONE4, PIP.MODE, PIP.SWAP, HDMI1, HDMI2, DISPLAY.PORT, DVI, VGA, MISC)
values: [UP, DOWN, MENU, SOURCE, VOLUME.PLUS, VOLUME.MINUS, EXIT, LEFT, ENTER, PREV, RIGHT, KEY.0, KEY.1, KEY.2, KEY.3, KEY.4, KEY.5, KEY.6, KEY.7, KEY.8, KEY.9, MUTE, USBC, DISPLAY.PORT2, STDBY.TOGGLE, STDBY.ENTER, STDBY.EXIT, MENU.PREV, TOP, PRESETS, PRESET1, PRESET2, PRESET3, PRESET4, ZONE1, ZONE2, ZONE3, ZONE4, PIP.MODE, PIP.SWAP, HDMI1, HDMI2, DISPLAY.PORT, DVI, VGA, MISC]
# System / Maintenance
- id: factory_reset
label: Factory Reset
kind: action
command: "RESET({scope})"
params:
- name: scope
type: enum
values: [USER, FACTORY1]
description: "USER = standard factory reset. FACTORY1 also resets EDID customizations, network settings and presets. Power cycle required to complete reset."
- id: firmware_update
label: Firmware Update
kind: action
command: "FIRMWARE.UPDATE"
params: []
- id: led_enable
label: Enable Status LED
kind: action
command: "LED.ENABLE={0|1}"
params:
- name: value
type: enum
values: [DISABLE, ENABLE]
- id: pattern
label: Test Pattern
kind: action
command: "PATTERN({pattern})"
params:
- name: pattern
type: enum
values: [NONE, BLACK, WHITE, GRAY, RED, GREEN, BLUE, CYAN, MAGENTA, YELLOW]
- id: display_name
label: Display Name
kind: action
command: "DISPLAY.NAME=\"{name}\""
params:
- name: name
type: string
description: Name shown in Remote Monitoring Software title
# Presets
- id: preset_count
label: Preset Count (query)
kind: query
command: "PRESET.COUNT?"
params: []
- id: preset_delete
label: Preset Delete
kind: action
command: "PRESET.DELETE({slot})"
params:
- name: slot
type: integer
description: Preset slot 1-10
- id: preset_full
label: Preset Full (query)
kind: query
command: "PRESET.FULL({slot})?"
params:
- name: slot
type: integer
description: Preset slot 1-10
- id: preset_list
label: Preset List (query)
kind: query
command: "PRESET.LIST(FIRST)?"
params: []
- id: preset_max
label: Preset Max (query)
kind: query
command: "PRESET.MAX?"
params: []
- id: preset_name
label: Preset Name
kind: action
command: "PRESET.NAME({slot})=\"{name}\""
params:
- name: slot
type: integer
description: Preset slot 1-10
- name: name
type: string
description: 'Default "Preset n" where n is slot number'
- id: preset_recall
label: Preset Recall
kind: action
command: "PRESET.RECALL({slot})"
params:
- name: slot
type: integer
description: Preset slot 1-10
- id: preset_save
label: Preset Save
kind: action
command: "PRESET.SAVE({slot})"
params:
- name: slot
type: integer
description: Preset slot 1-10 (maximum 10 presets)
# Schedule
- id: schedule
label: Schedule (composite)
kind: action
command: "SCHEDULE({slot},{param})={unsigned_int}"
params:
- name: slot
type: integer
description: Event slot 1-10
- name: param
type: enum
values: [FREQ, MINUTE, HOUR, DAY, ACTION, DATA, ENABLE]
- name: value
type: integer
description: See SCHEDULE.ACTION/DAY/FREQUENCY for valid value sets
- id: schedule_action
label: Schedule Action
kind: action
command: "SCHEDULE.ACTION({slot})={0|1|2|3}"
params:
- name: slot
type: integer
description: Event slot 1-10
- name: value
type: enum
values: [TURN.ON, TURN.OFF, RECALL, PANEL.BRIGHTNESS]
- id: schedule_day
label: Schedule Day
kind: action
command: "SCHEDULE.DAY({slot})={0..6}"
params:
- name: slot
type: integer
description: Event slot 1-10
- name: value
type: enum
values: [MON, TUE, WED, THU, FRI, SAT, SUN]
- id: schedule_description
label: Schedule Description (query)
kind: query
command: "SCHEDULE.DESCRIPTION({slot})?"
params:
- name: slot
type: integer
description: Event slot 1-10
- id: schedule_frequency
label: Schedule Frequency
kind: action
command: "SCHEDULE.FREQUENCY({slot})={0|1|2|3}"
params:
- name: slot
type: integer
description: Event slot 1-10
- name: value
type: enum
values: [DAILY, WEEKLY, WEEKDAYS, WEEKENDS]
# Time
- id: time
label: Time (composite)
kind: action
command: "TIME({field})={unsigned_int}"
params:
- name: field
type: enum
values: [YEAR, MONTH, DATE, HOUR, MINUTE]
- id: time_day
label: Time - Day (query)
kind: query
command: "TIME.DAY?"
params: []
- id: time_month
label: Time - Month
kind: action
command: "TIME.MONTH={1..12}"
params:
- name: value
type: enum
values: [JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER]
- id: time_string
label: Time - String (query)
kind: query
command: "TIME.STRING?"
params: []
- id: timezone
label: Time Zone
kind: action
command: "TIMEZONE={name}"
params:
- name: name
type: enum
description: "See timezone table in source. Example: UTCM0800.PACIFIC.TIME.US.CANADA"
values: [UTCM1100.MIDWAY.ISLAND, UTCM1000.HAWAII, UTCM0900.ALASKA, UTCM0800.PACIFIC.TIME, UTCM0800.TIJUANA, UTCM0700.ARIZONA, UTCM0700.CHIHUAHUA, UTCM0700.MOUNTAIN.TIME, UTCM0600.CENTRAL.AMERICA, UTCM0600.CENTRAL.TIME, UTCM0600.MEXICO.CITY, UTCM0600.SASKATCHEWAN, UTCM0500.BOGOTA, UTCM0500.EASTERN.TIME, UTCM0400.VENEZUELA, UTCM0400.ATLANTIC.TIME.BARBADOS, UTCM0400.ATLANTIC.TIME.CANADA, UTCM0400.MANAUS, UTCM0400.SANTIAGO, UTCM0330.NEWFOUNDLAND, UTCM0300.BRASILIA, UTCM0300.BUENOS.AIRES, UTCM0300.GREENLAND, UTCM0300.MONTEVIDEO, UTCM0200.MID.ATLANTIC, UTCM0100.AZORES, UTCM0100.CAPE.VERDE.ISLANDS, UTCP0000.CASABLANCA, UTCP0000.LONDON.DUBLIN, UTCP0100.AMSTERDAM.BERLIN, UTCP0100.BELGRADE, UTCP0100.BRUSSELS, UTCP0100.SARAJEVO, UTCP0100.WINDHOEK, UTCP0100.W.AFRICA.TIME, UTCP0200.AMMAN.JORDAN, UTCP0200.ATHENS.ISTANBUL, UTCP0200.BEIRUT.LEBANON, UTCP0200.CAIRO, UTCP0200.HELSINKI, UTCP0200.JERUSALEM, UTCP0200.HARARE, UTCP0300.MINSK, UTCP0300.BAGHDAD, UTCP0300.MOSCOW, UTCP0300.KUWAIT, UTCP0300.NAIROBI, UTCP0330.TEHRAN, UTCP0400.BAKU, UTCP0400.TBILISI, UTCP0400.YEREVAN, UTCP0400.DUBAI, UTCP0430.KABUL, UTCP0500.ISLAMABAD.KARACHI, UTCP0500.URALSK, UTCP0500.YEKATERINBURG, UTCP0530.KOLKATA, UTCP0530.SRI.LANKA, UTCP0545.KATHMANDU, UTCP0600.ASTANA, UTCP0630.YANGON, UTCP0700.KRASNOYARSK, UTCP0700.BANGKOK, UTCP0700.JAKARTA, UTCP0800.BEIJING, UTCP0800.HONG.KONG, UTCP0800.IRKUTSK, UTCP0800.KUALA.LUMPUR, UTCP0800.PERTH, UTCP0800.TAIPEI, UTCP0900.SEOUL, UTCP0900.TOKYO.OSAKA, UTCP0900.YAKUTSK, UTCP0930.ADELAIDE, UTCP0930.DARWIN, UTCP1000.BRISBANE, UTCP1000.HOBART, UTCP1000.SYDNEY.CANBERRA, UTCP1000.VLADIVOSTOK, UTCP1000.GUAM, UTCP1100.MAGADAN, UTCP1200.MARSHALL.ISLANDS, UTCP1200.AUCKLAND, UTCP1200.FIJI, UTCP1300.TONGA]
# Email notification
- id: notification_email
label: Notification Event
kind: action
command: 'NOTIFICATION.EMAIL({event})={enable},"{recipients}","{message}"'
params:
- name: event
type: enum
values: [POWER.STATE.CHANGED, SOURCE.LOST, SOURCE.SELECTED]
- name: enable
type: enum
values: [DISABLE, ENABLE]
- name: recipients
type: string
description: Comma-separated email list
- name: message
type: string
description: Custom user message
# Information queries
- id: build_info
label: Version Info (query)
kind: query
command: "BUILD.INFO({component})?"
params:
- name: component
type: enum
values: [VERSION.VP, VERSION.SUBMCU, VERSION.NETUART]
description: "Default (no modifier) = VERSION.VP"
- id: model_id
label: Model ID (query)
kind: query
command: "MODEL.ID?"
params: []
- id: model_series
label: Model Series (query)
kind: query
command: "MODEL.SERIES?"
params: []
- id: serial_number
label: Serial Number (query)
kind: query
command: "SERIAL.NUMBER?"
params: []
- id: signal_info
label: Image Information (query)
kind: query
command: "SIGNAL.INFO({zone},{param})?"
params:
- name: zone
type: enum
values: [ZONE.1, ZONE.2, ZONE.3, ZONE.4, CURRENT]
- name: param
type: enum
values: [HACTIVE, VACTIVE, PCLK, HTOTAL, VTOTAL, VREFRESH, HREFRESH, INTERLACE, VFIELDRATE, VREFRESH.X.100, COLORDEPTH, TMDS]
description: "None = ALL"
Feedbacks
- id: power_state
type: enum
values: [on, off]
source: DISPLAY.POWER?
- id: system_state
type: enum
values: [STANDBY, ON]
source: SYSTEM.STATE?
notes: "STANDBY is lowest power mode; not all functions available. Use DISPLAY.POWER to check backlight state."
- id: audio_input_source
type: enum
values: [HDMI.1, HDMI.2, DP, DP.2, USBC]
source: AUDIO.INPUT?
- id: current_source_message
type: string
source: SOURCE.MESSAGE({zone})?
notes: 'Returns resolution/refresh e.g. "1920x1080i 60Hz" or "Searching" / "No Signal".'
- id: color_subsampling
type: string
source: COLOR.SUBSAMPLING({zone})?
notes: 'Returns e.g. "4:4:4" or "4:2:0".'
- id: osd_visible
type: enum
values: [DISABLE, ENABLE]
source: OSD.STATUS?
- id: network_ping_result
type: enum
values: [SUCCESS, FAILED]
source: NETWORK.PING=...
- id: preset_count
type: integer
source: PRESET.COUNT?
- id: preset_max
type: integer
source: PRESET.MAX?
- id: preset_full
type: enum
values: [NO, YES]
source: PRESET.FULL({slot})?
- id: preset_list
type: string
source: PRESET.LIST(FIRST)?
notes: Space-separated list of populated preset slot numbers.
- id: mac_address
type: string
source: NETWORK.MAC?
notes: 'XX:XX:XX:XX:XX:XX format.'
- id: model_id
type: string
source: MODEL.ID?
- id: model_series
type: string
source: MODEL.SERIES?
notes: Always returns "UltraRes P" for this family.
- id: serial_number
type: string
source: SERIAL.NUMBER?
- id: build_info
type: string
source: BUILD.INFO({component})?
- id: time_string
type: string
source: TIME.STRING?
notes: 'Format "YYYY-MM-DD HH:MM".'
- id: schedule_description
type: string
source: SCHEDULE.DESCRIPTION({slot})?
- id: current_zone_layout
type: integer
source: CURRENT.ZONE.LAYOUT?
notes: 'Encoded value: 0=S.1, 1=P.UL.1, 2=P.UL.2, 3=P.UR.1, 4=P.UR.2, 5=P.LL.1, 6=P.LL.2, 7=P.LR.1, 8=P.LR.2, 9=D.L.1, 10=D.L.2, 28=Q.1, 29=Q.2, 30=Q.3, 31=Q.4.'
- id: signal_info
type: integer
source: SIGNAL.INFO({zone},{param})?
notes: 'Numeric value for the requested image parameter (HACTIVE, VACTIVE, PCLK, HTOTAL, VTOTAL, VREFRESH, HREFRESH, INTERLACE, VFIELDRATE, VREFRESH.X.100, COLORDEPTH, TMDS).'
Variables
# UNRESOLVED: source documents all parameters as discrete actions with named operators
# and operands; no continuous variables outside action parameters.
Events
# Source does not document unsolicited device-initiated events over RS-232/TCP/SSH.
# Email notifications (NOTIFICATION.EMAIL) are sent by the device to an SMTP server
# on triggered conditions, not to the control client.
Macros
# UNRESOLVED: source does not document multi-step macro sequences on the device side.
# AUDIO.SETTINGS and SCHEDULE are composite commands (multiple operands in one
# command), not device-defined macros.
Safety
confirmation_required_for:
- factory_reset # FACTORY1 scope is destructive (EDID, network, presets) and requires power cycle to complete
- firmware_update # device may become unresponsive during update
interlocks:
# UNRESOLVED: source notes that Power Down Mode must be set to Networked
# Standby or Fast Startup before RS-232 commands are accepted, but does not
# describe an explicit safety interlock procedure.
- "RS-232 commands require Power Down Mode = Networked Standby or Fast Startup"
Notes
- Power Down Mode prerequisite: RS-232/TCP/SSH commands are ignored unless
POWER.DOWN.MODEisNetworked.Standby.Mode(1) orFast.Startup(2). Default Standby mode rejects commands. - Network default-off: TCP (port 23) and SSH (port 22) are disabled by default. Must be enabled through Remote Monitoring Software (default
admin/ serial number). Only one of TCP or SSH can be enabled at a time. - SSH credentials: username
root, password = the new password set in the Change Password page during first RMS login. SSH2 only. - TCP/Telnet port: 23. SSH port: 22. Same wire format as RS-232.
- RS-232 settings: 19200 baud, 8N1, no flow control. DB9 female, straight-through: Pin 2 Tx, Pin 3 Rx, Pin 5 GND.
- Case insensitive command parts; responses always uppercase.
- Terminator: CR (0x0D), LF (0x0A), or
;— same on response. - Aliases per zone: Zone modifiers 253=ALL.INPUT, 254=ALL/ALL.ZONE, 255=CURRENT. Source lists 254 twice but treats both as the same global target.
- FACTORY1 reset is more destructive than USER: also clears EDID customizations, network settings, and presets. Power cycle required.
- Source model series: This protocol is shared with other Planar products (
MODEL.SERIES?returns the model series name);MODEL.ID?returns the specific SKU (e.g.URP552).
Provenance
source_domains:
- planar.com
source_urls:
- https://www.planar.com/media/q2zg4yzj/020-1449-00a_ultrares-p-series-urpxx2-serial-commands-user-manual.pdf
retrieved_at: 2026-04-30T04:27:32.293Z
last_checked_at: 2026-06-02T17:23:51.218Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T17:23:51.218Z
matched_actions: 106
action_count: 106
confidence: medium
summary: "All 106 spec actions have literal matches in the source command table; transport parameters (19200 baud, 8N1, port 23 TCP) are verbatim; spec provides comprehensive coverage. (5 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware version compatibility ranges not stated in source"
- "source documents all parameters as discrete actions with named operators"
- "source does not document multi-step macro sequences on the device side."
- "source notes that Power Down Mode must be set to Networked"
- "error recovery sequences beyond ERR 1-6 codes not stated in source"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0