Summary
Clevertouch Pro Series interactive flat panels accept hex-framed control commands over RS-232 and LAN (TCP). The command set covers power, audio (treble/bass/balance/volume/mute/sound mode), picture (contrast/brightness/sharpness/hue/backlight/color temp/picture mode/aspect ratio), source selection, language, IR remote enable, navigation keys, and a whiteboard launcher. Both transport paths use identical payloads. The device answers each SET with a 401+/401- ack and each GET with a :01r{feature}{value} reply.
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: null # UNRESOLVED: flow control not stated in source
addressing:
port: 4664 # LAN port stated in source (DEBUG MENU > Remote Control > Android Remote > ON required for IP)
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- powerable # inferred: power on/off/backlight on/off commands present
- levelable # inferred: volume/treble/bass/balance/contrast/brightness/sharpness/hue/backlight set commands
- routable # inferred: video source selection present
- queryable # inferred: GET commands for every settable feature present
Actions
# Framing: commands are ASCII rendered as hex bytes.
# ":01S{feat}{val}\r" = SET -> hex 3A 30 31 53 {feat} {3-digit val} 0D
# ":01G{feat}000\r" = GET -> hex 3A 30 31 47 {feat} 30 30 30 0D
# ":01r{feat}{val}\r" = GET reply
# Ack success = 34 30 31 2B 0D ("401+\r"), Ack fail = 34 30 31 2D 0D ("401-\r")
# Default ID = 1. All commands below carry the ID=1 prefix verbatim from source.
# --- SET commands (S) ---
- id: set_power
label: Power Set
kind: action
command: "3A 30 31 53 30 {val} 0D" # ":01S0{val}\r" - val is 3 ASCII digits
params:
- name: val
type: string
description: "Power state as 3 ASCII digit chars: 000=backlight off, 001=backlight on, 002=power off (serial line only), 003=power on (serial line only)"
notes:
- "002/003 (full power off/on) supported through serial port line only"
- id: set_treble
label: Treble Set
kind: action
command: "3A 30 31 53 31 {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits, range 000-100 (source test value 050)"
- id: set_bass
label: Bass Set
kind: action
command: "3A 30 31 53 32 {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits, range 000-100 (source test value 100)"
- id: set_balance
label: Balance Set
kind: action
command: "3A 30 31 53 33 {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits, range 000-100 (source test value 050)"
- id: set_contrast
label: Contrast Set
kind: action
command: "3A 30 31 53 34 {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits, range 000-100 (source test value 050)"
- id: set_brightness
label: Brightness Set
kind: action
command: "3A 30 31 53 35 {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits, range 000-100 (source test value 050)"
- id: set_sharpness
label: Sharpness Set
kind: action
command: "3A 30 31 53 36 {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits, range 000-100 (source test value 010)"
- id: set_sound_mode
label: Sound Mode Set
kind: action
command: "3A 30 31 53 37 {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits: 000=Movie, 001=Standard, 002=Custom, 003=Classroom, 004=Meeting"
- id: set_volume
label: Volume Set
kind: action
command: "3A 30 31 53 38 {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits, range 000-100 (source test value 050)"
- id: set_mute
label: Mute Set
kind: action
command: "3A 30 31 53 39 {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits: 000=Off, 001=On"
- id: set_video_source
label: Video Source Set
kind: action
command: "3A 30 31 53 3A {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits: 000=VGA, 001=HDMI1, 002=HDMI2, 003=AV/CVBS, 007=Display Port, 021=HDMI3, 022=HDMI4, 031=VGA2, 032=VGA3, 051=TV, 101=android, 102=android+, 103=Slot-in PC, 104=Type-C1, 105=Type-C2"
- id: set_aspect_ratio
label: Aspect Ratio Set
kind: action
command: "3A 30 31 53 3B {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits: 000=16:9, 001=4:3, 002=PTP"
- id: set_language
label: Language Set
kind: action
command: "3A 30 31 53 3C {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits, sets Android channel language: 000=English, 001=Français, 002=Español, 003=繁中, 004=简中, 005=Português, 006=German, 007=Dutch, 008=Polish, 009=Russian, 010=Czech, 011=Danish, 012=Swedish, 013=Italian, 014=Romanian, 015=Norwegian, 016=Finnish, 017=Greek, 018=Turkish, 019=Arabic, 020=Japanese, 021=Ukrainian"
- id: set_picture_mode
label: Picture Mode Set
kind: action
command: "3A 30 31 53 3D {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits: 000=standard, 001=bright, 002=soft, 003=customer"
- id: set_hue
label: Hue (Color) Set
kind: action
command: "3A 30 31 53 3E {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits, range 000-100 (source test value 030)"
- id: set_backlight
label: Backlight Set
kind: action
command: "3A 30 31 53 3F {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits, range 000-100 (source test value 050)"
- id: set_color_temp
label: Color Temperature Set
kind: action
command: "3A 30 31 53 40 {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits: 000=Cool, 001=Standard, 002=Warm"
- id: send_remote_key
label: Remote Control Command
kind: action
command: "3A 30 31 53 41 {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits emulating IR remote keys: 000=Vol+, 001=Vol-, 010=Up, 011=Down, 012=Left, 013=Right, 014=OK, 020=Menu, 021=Input Source, 022=Exit, 031=Blank (black screen), 032=Freeze"
- id: set_ir_remote
label: IR Remote Enable/Disable
kind: action
command: "3A 30 31 53 42 {val} 0D"
params:
- name: val
type: string
description: "3 ASCII digits: 000=Enable IR remote, 001=Disable IR remote"
- id: launch_whiteboard
label: Launch Legacy Whiteboard
kind: action
command: "3A 30 31 53 E2 30 30 30 0D" # ":01S E2 000\r"
params: []
notes:
- "Runs the legacy Whiteboard application"
# --- GET commands (G) -> each emits a reply frame ---
- id: get_power
label: Power Query
kind: query
command: "3A 30 31 47 30 30 30 30 0D" # ":01G0000\r"
params: []
notes:
- "002/003 status (full power off) only obtainable over serial port line"
- id: get_treble
label: Treble Query
kind: query
command: "3A 30 31 47 31 30 30 30 0D"
params: []
- id: get_bass
label: Bass Query
kind: query
command: "3A 30 31 47 32 30 30 30 0D"
params: []
- id: get_balance
label: Balance Query
kind: query
command: "3A 30 31 47 33 30 30 30 0D"
params: []
- id: get_contrast
label: Contrast Query
kind: query
command: "3A 30 31 47 34 30 30 30 0D"
params: []
- id: get_brightness
label: Brightness Query
kind: query
command: "3A 30 31 47 35 30 30 30 0D"
params: []
- id: get_sharpness
label: Sharpness Query
kind: query
command: "3A 30 31 47 36 30 30 30 0D"
params: []
- id: get_sound_mode
label: Sound Mode Query
kind: query
command: "3A 30 31 47 37 30 30 30 0D"
params: []
- id: get_volume
label: Volume Query
kind: query
command: "3A 30 31 47 38 30 30 30 0D"
params: []
- id: get_mute
label: Mute Query
kind: query
command: "3A 30 31 47 39 30 30 30 0D"
params: []
- id: get_video_source
label: Video Source Query
kind: query
command: "3A 30 31 47 3A 30 30 30 0D"
params: []
- id: get_aspect_ratio
label: Aspect Ratio Query
kind: query
command: "3A 30 31 47 3B 30 30 30 0D"
params: []
- id: get_language
label: Language Query
kind: query
command: "3A 30 31 47 3C 30 30 30 0D"
params: []
notes:
- "Returns Android channel language"
- id: get_picture_mode
label: Picture Mode Query
kind: query
command: "3A 30 31 47 3D 30 30 30 0D"
params: []
- id: get_hue
label: Hue Query
kind: query
command: "3A 30 31 47 3E 30 30 30 0D"
params: []
- id: get_backlight
label: Backlight Query
kind: query
command: "3A 30 31 47 3F 30 30 30 0D"
params: []
- id: get_color_temp
label: Color Temperature Query
kind: query
command: "3A 30 31 47 40 30 30 30 0D"
params: []
- id: get_ir_remote
label: IR Remote State Query
kind: query
command: "3A 30 31 47 42 30 30 30 0D"
params: []
Feedbacks
# All GET replies share the frame ":01r{feature}{value}\r"
# i.e. hex 3A 30 31 72 {feature} {3-digit val} 0D.
# The single ack frames for SET commands are:
# success: 34 30 31 2B 0D ("401+\r")
# fail: 34 30 31 2D 0D ("401-\r")
- id: set_ack
type: enum
values: [success, fail]
description: "Universal SET acknowledgement. success=34 30 31 2B 0D, fail=34 30 31 2D 0D"
- id: power_state
type: enum
values: [backlight_off, backlight_on, power_off, power_on]
description: "Reply to GET power (feature 30). 000/001/002/003 as in set_power. power_off/power_on only readable over serial."
- id: treble_value
type: integer
range: [0, 100]
description: "Reply to GET treble (feature 31)"
- id: bass_value
type: integer
range: [0, 100]
description: "Reply to GET bass (feature 32)"
- id: balance_value
type: integer
range: [0, 100]
description: "Reply to GET balance (feature 33)"
- id: contrast_value
type: integer
range: [0, 100]
description: "Reply to GET contrast (feature 34)"
- id: brightness_value
type: integer
range: [0, 100]
description: "Reply to GET brightness (feature 35)"
- id: sharpness_value
type: integer
range: [0, 100]
description: "Reply to GET sharpness (feature 36)"
- id: sound_mode_value
type: enum
values: [movie, standard, custom, classroom, meeting]
description: "Reply to GET sound mode (feature 37)"
- id: volume_value
type: integer
range: [0, 100]
description: "Reply to GET volume (feature 38)"
- id: mute_state
type: enum
values: [off, on]
description: "Reply to GET mute (feature 39)"
- id: video_source_value
type: enum
values: [vga, hdmi1, hdmi2, av_cvbs, display_port, hdmi3, hdmi4, vga2, vga3, tv, android, android_plus, slot_in_pc, type_c1, type_c2]
description: "Reply to GET video source (feature 3A). See set_video_source for code->name map."
- id: aspect_ratio_value
type: enum
values: ["16:9", "4:3", ptp]
description: "Reply to GET aspect ratio (feature 3B)"
- id: language_value
type: enum
values: [english, français, español, 繁中, 简中, português, german, dutch, polish, russian, czech, danish, swedish, italian, romanian, norwegian, finnish, greek, turkish, arabic, japanese, ukrainian]
description: "Reply to GET language (feature 3C)"
- id: picture_mode_value
type: enum
values: [standard, bright, soft, customer]
description: "Reply to GET picture mode (feature 3D)"
- id: hue_value
type: integer
range: [0, 100]
description: "Reply to GET hue (feature 3E)"
- id: backlight_value
type: integer
range: [0, 100]
description: "Reply to GET backlight (feature 3F)"
- id: color_temp_value
type: enum
values: [cool, standard, warm]
description: "Reply to GET color temp (feature 40)"
- id: ir_remote_state
type: enum
values: [enabled, disabled]
description: "Reply to GET IR remote (feature 42)"
Variables
# All settable parameters are exposed as discrete actions above (set_* actions).
# No additional continuous variables are described in the source beyond those.
Events
# UNRESOLVED: source describes no unsolicited notifications. All reply frames are
# direct responses to GET commands; no push/event frames documented.
Macros
# UNRESOLVED: source describes no multi-step command sequences.
Safety
confirmation_required_for: []
interlocks:
- "Full power off (002) and power on (003) only supported over the serial port line - not over LAN"
- "IP control requires DEBUG MENU > Remote Control > Android Remote > ON"
# UNRESOLVED: source contains no voltage/current/power specs, no formal
# interlock procedures, and no power-on sequencing requirements. Values above
# are taken verbatim from source notes, not inferred.
Notes
- All command and reply frames are ASCII encoded and shown in the source as hex byte sequences. Decoded form:
:01{S|G|r}{feature}{3-digit value}\r. The leading01is a fixed device ID (default = 1) and is included verbatim in every documented payload. - A separate generic SET ack frame is sent on every successful/failed SET regardless of feature: success
34 30 31 2B 0D("401+\r"), fail34 30 31 2D 0D("401-\r"). - Source lists some rows with duplicate NO values and typo'd feature names ("Reomte comtrol", "Japanse", "Type-C1" listed twice for 104 and 105). 105 corrected to Type-C2 in GET table per source. Preserved verbatim value maps where unambiguous.
- Source refers to "all range of Clevertouch interactive screens" — does not enumerate specific Pro Series SKUs.
## Provenance
```yaml
source_domains:
- clevertouch.zendesk.com
source_urls:
- https://clevertouch.zendesk.com/hc/en-gb/articles/23384984694674-Clevertouch-Quick-Tips-RS232-and-IP-commands
retrieved_at: 2026-07-25T00:45:59.016Z
last_checked_at: 2026-08-05T08:15:27.854Z
```
## Verification Summary
```yaml
verdict: verified
checked_at: 2026-08-05T08:15:27.854Z
matched_actions: 38
action_count: 38
confidence: medium
summary: "All 38 spec actions (20 SET + 18 GET) and 5 transport values match source verbatim; source has no additional commands. (6 unresolved item(s) noted in Known Gaps.)"
```
## Known Gaps
```yaml
- "voltage/current/power specs not in source. Auth procedure not in source. Flow control not stated. Source does not specify which exact Pro Series SKU/part numbers are covered (\"all range of Clevertouch interactive screens\")."
- "flow control not stated in source"
- "source describes no unsolicited notifications. All reply frames are"
- "source describes no multi-step command sequences."
- "source contains no voltage/current/power specs, no formal"
- "voltage/current/power specs not stated. Flow control not stated. Firmware compatibility not stated. Auth/credentials not stated (assumed none). IP hostname discovery (panel IP) left to operator. Whether port 4664 is TCP or UDP not explicitly stated — assumed TCP given \"LAN Settings\" + Android remote context. Whether GET video source reply includes android+ (102) and Type-C variants is implied but not separately enumerated in source reply table. Whether whiteboard launch (E2) has a GET/reply form is not documented."
```
---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0