Summary
This spec covers a Depili display (source document labeled TBX-2201, RS232 Command List v1.0) controllable over RS-232 (9600 8N1) and TCP/IP Ethernet (port 5000). The protocol is a binary packet format with a fixed header, monitor ID, command code, optional data, and an XOR checksum. Commands cover power, image settings (backlight, brightness, contrast, black level, sharpness, hue, saturation, color temperature, color RGB, gamma, noise reduction, DCR), audio (volume, mute), input/IR/keypad lock, network configuration, network name, signal info, blue screen, logo, anti-burn-in, power saving, and read-only queries (miscellaneous/operating hours, platform/version, model name).
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
addressing:
port: 5000
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable # power on/off commands present (0x18)
- routable # input selection is implicit via Signal Info (0x54); lock control present
- queryable # explicit Get commands for nearly every setting
- levelable # backlight, brightness, contrast, black, sharpness, hue, saturation, volume
Actions
# Packet structure (command, host -> display):
# A6 {id} 00 00 00 {len} 01 {opcode} {data...} {cs}
# - 0xA6: Header (fixed)
# - {id}: Monitor ID 1..255 (0 = broadcast, no reply)
# - 0x00 0x00 0x00: Category, Code0, Code1 (all fixed 0x00)
# - {len}: length from Data Control byte through Checksum (inclusive)
# - 0x01: Data Control (fixed)
# - {opcode}: command code from tables below
# - {data...}: zero or more data bytes per command
# - {cs}: XOR of all preceding bytes (header through last data byte)
#
# Report packet (display -> host):
# 21 {id} 00 00 {len} 01 {opcode} {data...} {cs}
# Header is 0x21 for reports; otherwise same structure.
# Reply semantics (Data[1] of report): 0x00 = OK, 0x03 = NACK/command canceled, 0x04 = NAV/parse error.
#
# All actions below assume Monitor ID = 0x01 in the example; substitute
# the target display's ID at runtime and recompute the checksum.
# --- 4.1 Network Configuration ---
- id: network_config_set
label: Network Configuration Set
kind: action
command: "A6 {id} 00 00 00 {len} 01 05 {data...} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255; 0 = broadcast)
- name: network_mode
type: integer
description: "0x01 = DHCP, 0x02 = Static IP"
- name: address_function
type: integer
description: |
DHCP: 0x00 = disable address writing (1 byte). Static IP:
0x00 = disable, 0x01 = IP Address, 0x02 = Netmask,
0x03 = Ethernet MAC Address, 0x04 = Gateway,
0x05 = DNS 1, 0x06 = DNS 2.
- name: address_bytes
type: bytes
description: |
4 bytes for IP/Netmask/Gateway/DNS; 6 bytes for MAC.
Omit (and set address_function=0x00) to leave unchanged.
notes: |
Length = 3 + N where N is the number of address bytes
(4 for IP, 6 for MAC, 1 for the disable variant).
Example (Display 01, Static IP, IP=192.168.0.1):
A6 01 00 00 00 09 01 05 02 01 C0 A8 00 01 C0
- id: network_config_get
label: Network Configuration Get
kind: query
command: "A6 {id} 00 00 00 04 01 06 {address_function} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: address_function
type: integer
description: "0x01 = IP, 0x02 = Netmask, 0x03 = MAC, 0x04 = Gateway, 0x05 = DNS 1, 0x06 = DNS 2"
notes: |
Response: 0x21 report; Data[1] = network mode (0x01 DHCP / 0x02 Static),
Data[2] = address function, Data[3..N] = address bytes.
# --- 4.2 Network Name ---
- id: network_name_set
label: Network Name Set
kind: action
command: "A6 {id} 00 00 00 {len} 01 09 {ascii_bytes} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: name
type: string
description: |
Up to 16 ASCII characters from the set 0-9, A-Z, Space, +, -, /, :.
Each character becomes one data byte.
notes: |
Length = 3 + N (N = name length). Example: "AGN TBX-2201" (12 chars)
yields: A6 01 00 00 00 13 01 09 41 47 4E 20 54 42 58 2D 32 32 30 31 20 B6
- id: network_name_get
label: Network Name Get
kind: query
command: "A6 {id} 00 00 00 03 01 0A {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report with N ASCII bytes (N = 0..16).
# --- 4.3 Miscellaneous (Operating Hours) ---
- id: miscellaneous_operating_hours_get
label: Operating Hours Get
kind: query
command: "A6 {id} 00 00 00 04 01 0F 02 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Sub-command Data[1] = 0x02 (Operating Hours; all other sub-commands reserved).
Response: 0x21 report; Data[1] = MSByte, Data[2] = LSByte of 16-bit hours value.
# --- 4.4 Power State ---
- id: power_state_set
label: Power State Set
kind: action
command: "A6 {id} 00 00 00 04 01 18 {state} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: state
type: integer
description: "0x01 = Power OFF, 0x02 = Power ON"
notes: |
Acceptable in power-off (saving) mode per source. Example OFF (ID 01):
A6 01 00 00 00 04 01 18 01 BB
- id: power_state_get
label: Power State Get
kind: query
command: "A6 {id} 00 00 00 03 01 19 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0x01 (OFF) or 0x02 (ON).
Acceptable in power-off (saving) mode.
# --- 4.5 User Input (Keypad/Remote) Control ---
- id: user_input_control_set
label: User Input Control Set
kind: action
command: "A6 {id} 00 00 00 04 01 1C {lock_bits} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: lock_bits
type: integer
description: |
Bit-mask (per source): bit2 = Power key lock,
bit1 = Local keyboard, bit0 = Remote control.
0 = locked, 1 = unlocked. Bits 7..3 reserved.
Current model only supports power-key lock; practical values:
0x01 = lock all (except power), 0x03 = unsupported,
0x05 = lock all (except power), 0x07 = unlock all.
notes: |
Acceptable in power-off (saving) mode.
- id: user_input_control_get
label: User Input Control Get
kind: query
command: "A6 {id} 00 00 00 03 01 1D {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = lock bits as above.
# --- 4.6 Backlight Level ---
- id: backlight_set
label: Backlight Level Set
kind: action
command: "A6 {id} 00 00 00 04 01 30 {level} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: level
type: integer
description: Backlight 0..100 (0x00..0x64)
notes: |
Acceptable in power-off (saving) mode.
- id: backlight_get
label: Backlight Level Get
kind: query
command: "A6 {id} 00 00 00 03 01 31 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0..100.
# --- 4.7 Color Temperature ---
- id: color_temperature_set
label: Color Temperature Set
kind: action
command: "A6 {id} 00 00 00 04 01 34 {preset} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: preset
type: integer
description: "0x20 = WARM, 0x21 = COOL, 0x23 = USER, 0x24 = NEUTRAL"
notes: ~
- id: color_temperature_get
label: Color Temperature Get
kind: query
command: "A6 {id} 00 00 00 03 01 35 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = preset value as above.
# --- 4.8 Volume ---
- id: volume_set
label: Volume Set
kind: action
command: "A6 {id} 00 00 00 04 01 44 {level} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: level
type: integer
description: Volume 0..100 (0x00..0x64)
notes: |
Acceptable in power-off (saving) mode.
- id: volume_get
label: Volume Get
kind: query
command: "A6 {id} 00 00 00 03 01 45 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0..100.
# --- 4.9 Color Range ---
- id: color_range_set
label: Color Range Set
kind: action
command: "A6 {id} 00 00 00 04 01 50 {range} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: range
type: integer
description: "0x00 = FULL, 0x01 = LIMITED"
notes: ~
- id: color_range_get
label: Color Range Get
kind: query
command: "A6 {id} 00 00 00 03 01 51 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0x00 (FULL) / 0x01 (LIMITED).
# --- 4.10 LED ON/OFF ---
- id: led_set
label: LED ON/OFF Set
kind: action
command: "A6 {id} 00 00 00 04 01 52 {state} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: state
type: integer
description: "0x00 = OFF, 0x01 = ON"
notes: ~
- id: led_get
label: LED ON/OFF Get
kind: query
command: "A6 {id} 00 00 00 03 01 53 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0x00 / 0x01.
# --- 4.11 Signal Info ---
- id: signal_info_set
label: Signal Info Set
kind: action
command: "A6 {id} 00 00 00 04 01 54 {state} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: state
type: integer
description: "0x00 = OFF, 0x01 = ON"
notes: ~
- id: signal_info_get
label: Signal Info Get
kind: query
command: "A6 {id} 00 00 00 03 01 55 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0x00 / 0x01.
# --- 4.12 Blue Screen ---
- id: blue_screen_set
label: Blue Screen Set
kind: action
command: "A6 {id} 00 00 00 04 01 56 {state} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: state
type: integer
description: "0x00 = OFF, 0x01 = ON"
notes: ~
- id: blue_screen_get
label: Blue Screen Get
kind: query
command: "A6 {id} 00 00 00 03 01 57 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0x00 / 0x01.
# --- 4.13 LOGO ---
- id: logo_set
label: LOGO Set
kind: action
command: "A6 {id} 00 00 00 04 01 58 {state} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: state
type: integer
description: "0x00 = OFF, 0x01 = ON"
notes: ~
- id: logo_get
label: LOGO Get
kind: query
command: "A6 {id} 00 00 00 03 01 59 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0x00 / 0x01.
# --- 4.14 Color RGB (gain) ---
- id: color_rgb_set
label: Color RGB Set
kind: action
command: "A6 {id} 00 00 00 06 01 66 {red} {green} {blue} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: red
type: integer
description: Red gain 0..255 (0x00..0xFF)
- name: green
type: integer
description: Green gain 0..255 (0x00..0xFF)
- name: blue
type: integer
description: Blue gain 0..255 (0x00..0xFF)
notes: |
Length byte = 0x06 (fixed for 3-byte RGB payload).
- id: color_rgb_get
label: Color RGB Get
kind: query
command: "A6 {id} 00 00 00 03 01 67 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1..3] = R, G, B (0..255 each).
# --- 4.15 Platform / Version Label ---
- id: platform_version_get
label: Platform/Version Label Get
kind: query
command: "A6 {id} 00 00 00 04 01 A2 {label} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: label
type: integer
description: "0x00 = F/W version, 0x01 = Model Name"
notes: |
Acceptable in power-off (saving) mode. Response: 0x21 report with up to 36 ASCII bytes.
# --- 4.16 Brightness ---
- id: brightness_set
label: Brightness Set
kind: action
command: "A6 {id} 00 00 00 04 01 C0 {level} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: level
type: integer
description: Brightness 0..100 (0x00..0x64)
notes: |
Acceptable in power-off (saving) mode.
- id: brightness_get
label: Brightness Get
kind: query
command: "A6 {id} 00 00 00 03 01 C1 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0..100.
# --- 4.17 Contrast ---
- id: contrast_set
label: Contrast Set
kind: action
command: "A6 {id} 00 00 00 04 01 C2 {level} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: level
type: integer
description: Contrast 0..100 (0x00..0x64)
notes: ~
- id: contrast_get
label: Contrast Get
kind: query
command: "A6 {id} 00 00 00 03 01 C3 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0..100.
# --- 4.18 Black Level ---
- id: black_level_set
label: Black Level Set
kind: action
command: "A6 {id} 00 00 00 04 01 C4 {level} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: level
type: integer
description: Black level 0..100 (0x00..0x64)
notes: ~
- id: black_level_get
label: Black Level Get
kind: query
command: "A6 {id} 00 00 00 03 01 C5 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0..100.
# --- 4.19 Sharpness ---
- id: sharpness_set
label: Sharpness Set
kind: action
command: "A6 {id} 00 00 00 04 01 C6 {level} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: level
type: integer
description: Sharpness 0..100 (0x00..0x64)
notes: ~
- id: sharpness_get
label: Sharpness Get
kind: query
command: "A6 {id} 00 00 00 03 01 C7 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0..100.
# --- 4.20 HUE (TINT) ---
- id: hue_tint_set
label: HUE (TINT) Set
kind: action
command: "A6 {id} 00 00 00 04 01 C8 {level} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: level
type: integer
description: HUE/TINT 0..100 (0x00..0x64)
notes: ~
- id: hue_tint_get
label: HUE (TINT) Get
kind: query
command: "A6 {id} 00 00 00 03 01 C9 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0..100.
# --- 4.21 Saturation ---
- id: saturation_set
label: Saturation Set
kind: action
command: "A6 {id} 00 00 00 04 01 CA {level} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: level
type: integer
description: Saturation 0..100 (0x00..0x64)
notes: ~
- id: saturation_get
label: Saturation Get
kind: query
command: "A6 {id} 00 00 00 03 01 CB {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0..100.
# --- 4.22 DCR ---
- id: dcr_set
label: DCR Set
kind: action
command: "A6 {id} 00 00 00 04 01 D2 {state} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: state
type: integer
description: "0x00 = OFF, 0x01 = ON"
notes: ~
- id: dcr_get
label: DCR Get
kind: query
command: "A6 {id} 00 00 00 03 01 D3 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0x00 / 0x01.
# --- 4.23 Gamma ---
- id: gamma_set
label: Gamma Set
kind: action
command: "A6 {id} 00 00 00 04 01 DC {gamma} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: gamma
type: integer
description: "0x00 = 2.2, 0x01 = 2.4, 0x04 = 2.0, 0x05 = S-Curve"
notes: ~
- id: gamma_get
label: Gamma Get
kind: query
command: "A6 {id} 00 00 00 03 01 DD {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = gamma value as above.
# --- 4.24 Noise Reduction ---
- id: noise_reduction_set
label: Noise Reduction Set
kind: action
command: "A6 {id} 00 00 00 04 01 DE {level} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: level
type: integer
description: "0x00 = OFF, 0x01 = LOW, 0x02 = MEDIUM, 0x03 = HIGH"
notes: ~
- id: noise_reduction_get
label: Noise Reduction Get
kind: query
command: "A6 {id} 00 00 00 03 01 DF {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0..3 per above.
# --- 4.25 Audio Mute ---
- id: audio_mute_set
label: Audio Mute Set
kind: action
command: "A6 {id} 00 00 00 04 01 E0 {state} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: state
type: integer
description: "0x00 = OFF, 0x01 = ON"
notes: ~
- id: audio_mute_get
label: Audio Mute Get
kind: query
command: "A6 {id} 00 00 00 03 01 E1 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0x00 / 0x01.
# --- 4.26 Power Saving ---
- id: power_saving_set
label: Power Saving Set
kind: action
command: "A6 {id} 00 00 00 04 01 E2 {state} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: state
type: integer
description: "0x00 = OFF, 0x01 = ON"
notes: ~
- id: power_saving_get
label: Power Saving Get
kind: query
command: "A6 {id} 00 00 00 03 01 E3 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = 0x00 / 0x01.
# --- 4.27 Anti-Burn-in (Pixel Shift) ---
- id: anti_burn_in_set
label: Anti-Burn-in Set
kind: action
command: "A6 {id} 00 00 00 06 01 E4 {enable} {hours} {type} {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
- name: enable
type: integer
description: "0x00 = OFF, 0x01 = ON"
- name: hours
type: integer
description: "0x01 = 4h, 0x02 = 5h, 0x03 = 6h, 0x04 = 8h"
- name: type
type: integer
description: "0x01 = A, 0x02 = B, 0x03 = C"
notes: |
Length byte = 0x06 (fixed for 3-byte payload).
- id: anti_burn_in_get
label: Anti-Burn-in Get
kind: query
command: "A6 {id} 00 00 00 03 01 E5 {cs}"
params:
- name: id
type: integer
description: Monitor ID (1-255)
notes: |
Response: 0x21 report; Data[1] = enable, Data[2] = hours, Data[3] = type.
Feedbacks
- id: power_state
type: enum
values: [off, on]
source: power_state_get (0x19)
- id: backlight_level
type: integer
range: [0, 100]
source: backlight_get (0x31)
- id: color_temperature
type: enum
values: [warm, cool, user, neutral]
source: color_temperature_get (0x35)
- id: volume_level
type: integer
range: [0, 100]
source: volume_get (0x45)
- id: color_range
type: enum
values: [full, limited]
source: color_range_get (0x51)
- id: led_state
type: enum
values: [off, on]
source: led_get (0x53)
- id: signal_info
type: enum
values: [off, on]
source: signal_info_get (0x55)
- id: blue_screen
type: enum
values: [off, on]
source: blue_screen_get (0x57)
- id: logo
type: enum
values: [off, on]
source: logo_get (0x59)
- id: color_rgb
type: object
fields:
red: {type: integer, range: [0, 255]}
green: {type: integer, range: [0, 255]}
blue: {type: integer, range: [0, 255]}
source: color_rgb_get (0x67)
- id: brightness
type: integer
range: [0, 100]
source: brightness_get (0xC1)
- id: contrast
type: integer
range: [0, 100]
source: contrast_get (0xC3)
- id: black_level
type: integer
range: [0, 100]
source: black_level_get (0xC5)
- id: sharpness
type: integer
range: [0, 100]
source: sharpness_get (0xC7)
- id: hue_tint
type: integer
range: [0, 100]
source: hue_tint_get (0xC9)
- id: saturation
type: integer
range: [0, 100]
source: saturation_get (0xCB)
- id: dcr
type: enum
values: [off, on]
source: dcr_get (0xD3)
- id: gamma
type: enum
values: [g22, g24, g20, s_curve]
source: gamma_get (0xDD)
- id: noise_reduction
type: enum
values: [off, low, medium, high]
source: noise_reduction_get (0xDF)
- id: audio_mute
type: enum
values: [off, on]
source: audio_mute_get (0xE1)
- id: power_saving
type: enum
values: [off, on]
source: power_saving_get (0xE3)
- id: anti_burn_in
type: object
fields:
enable: {type: enum, values: [off, on]}
hours: {type: enum, values: [h4, h5, h6, h8]}
type: {type: enum, values: [a, b, c]}
source: anti_burn_in_get (0xE5)
- id: user_input_control
type: object
fields:
power_key_lock: {type: enum, values: [locked, unlocked]}
local_keyboard: {type: enum, values: [locked, unlocked]}
remote_control: {type: enum, values: [locked, unlocked]}
source: user_input_control_get (0x1D)
- id: network_config
type: object
fields:
mode: {type: enum, values: [dhcp, static]}
address_function: {type: enum, values: [ip, netmask, mac, gateway, dns1, dns2]}
address: {type: string, description: "IP as dotted-quad, MAC as colon-hex"}
source: network_config_get (0x06)
- id: network_name
type: string
source: network_name_get (0x0A)
- id: operating_hours
type: integer
description: 16-bit hours (MSB/LSB) reported by miscellaneous_get (0x0F, sub 0x02)
- id: platform_version_label
type: string
source: platform_version_get (0xA2), label=0x00
- id: model_name
type: string
source: platform_version_get (0xA2), label=0x01
Variables
# (Section omitted - all settable parameters in this spec are modeled as
# discrete Set actions per the source protocol; no free-form scalar
# variables exposed beyond what the actions already cover.)
Events
# Source defines no unsolicited asynchronous notifications. All display->host
# traffic is in response to a Set or Get request (ACK/NAV/NACK or Get Report).
# UNRESOLVED: no event/notif protocol in source
Macros
# UNRESOLVED: source does not define any composite / multi-step sequences.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or
# power-on sequencing requirements. User Input Control (0x1C) can lock the
# power key, which is the only near-safety-critical capability described.
Notes
- Model identity: the source document is titled "TBX-2201 RS232 Command List v1.0". The user-supplied model is "MVision WUXGALED". The spec is generated under the MVision WUXGALED entity; if TBX-2201 turns out to be a different product, regenerate.
- Transport: the same binary protocol runs on both RS-232 (9600 8N1, no flow control) and TCP port 5000. The packet framing is identical on both transports.
- Timing: source states a new command must not be sent until the previous one is acknowledged. A retry may be triggered if no response is received within 500 ms.
- Broadcast: Monitor ID = 0 is broadcast. The display does not ACK or report broadcast commands. Using a non-zero ID with no reply implies the wrong ID is in use.
- ACK semantics: every valid command receives an ACK (0x00). A valid-but-unsupported command gets NAV (0x04). A corrupt buffer (transmission error) gets NACK (0x03). The Data[1] field of the report encodes the result: 0x00 = OK, 0x03 = canceled/incorrect data, 0x04 = parse/checksum error.
- Checksum: XOR of all bytes preceding the checksum byte (header through last data byte). 8-bit, range 0x00..0xFF.
- Length byte: the Length field counts bytes from Data Control through Checksum, inclusive. For 0-data commands this is 0x03; for 1-data commands 0x04; for 3-data (RGB, anti-burn-in) 0x06; for variable-length payloads (network config, network name) it scales with the payload.
- Reserved sub-codes: sub-commands other than 0x02 for the miscellaneous get (0x0F) are reserved per source.
- Keypad lock limitation: source notes "Current model not support: Only power key lock" for the User Input Control command, with documented values 0x01/0x03/0x05/0x07 of which 0x03 is "no support".
- Fields not in source: voltage/current/power draw, fault recovery, firmware compatibility ranges, protocol version, RS-232 connector pinout, default IP address (source defers to "user manual"). All marked unresolved.
Provenance
source_domains:
- agneovo.com
- oceanoptics.com
- assets.lutron.com
source_urls:
- https://www.agneovo.com/wp-content/uploads/2021/09/TBX-2201_RS232_CommandList.pdf
- https://www.oceanoptics.com/wp-content/uploads/2025/04/Serial_Communications_Protocol_RS-232_Tech_Note_Rev8.pdf
- "https://assets.lutron.com/a/documents/hwi%20rs232%20protocol.pdf"
- https://www.agneovo.com/wp-content/uploads/2021/07/QD-98_RS232_CommandList1.pdf
- https://www.agneovo.com/wp-content/uploads/2021/07/QX-28_RS232_CommandList.pdf
retrieved_at: 2026-05-14T15:32:43.432Z
last_checked_at: 2026-06-02T21:41:29.992Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:41:29.992Z
matched_actions: 52
action_count: 52
confidence: medium
summary: "All 52 spec actions (27 Set/Get pairs + 1 platform query) match source opcodes exactly; transport port 5000 and 9600-8N1 confirmed verbatim. (4 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source document is labeled \"TBX-2201\" inside; the user-supplied model \"MVision WUXGALED\" may be a higher-level family designation. Source does not confirm firmware versions, voltage/current, or physical connector pinout beyond \"RS232 / Ethernet LAN\"."
- "no event/notif protocol in source"
- "source does not define any composite / multi-step sequences."
- "source contains no safety warnings, interlock procedures, or"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0