Summary
Boxlight Clevertouch Pro Series ("Clevertouch Plus") large-format LED LCD touch display controlled over an RS-232C serial interface (DSUB 9-pin male). This spec covers the binary frame protocol documented in the Clevertouch Plus RS232 control codes reference: power control, source/channel selection, volume and mute, aspect ratio, TV channel tuning, attached-PC power, an emulated remote-control key set (50 keys), and status-query commands for power, volume, audio-mute, input and PC state.
Transport
protocols:
- serial
serial:
baud_rate: 9600 # source: "Baud Rate Select: 9600bps (fixed)"
data_bits: 8 # source: "Data bits: 8bits (fixed)"
parity: none # source: "Parity: None (fixed)"
stop_bits: 1 # source: "Stop Bits: 1(fixed)"
flow_control: null # UNRESOLVED: flow control not stated in source
auth:
type: none # inferred: no auth procedure in source
Connector: DSUB 9-pin male (rear, near Tuner). Pin 2 = TXD (output to TV), Pin 3 = RXD (input from TV), Pin 5 = GND, Pin frame = GND; pins 1,4,6,7,8,9 = NC. Pin-to-pin (straight) connection per source.
Frame format (10 bytes), verbatim from source command-format table:
| Byte # | Value | Description |
|---|---|---|
| 1 | 0xAA | Head (fixed) |
| 2 | 0xBB | fixed |
| 3 | 0xCC | fixed |
| 4 | — | Main Command |
| 5 | — | Subcommand |
| 6 | 0x00 | Length / valid data |
| 7 | — | Checksum = (byte4 + byte5 + byte6) & 0xFF, "Sum from No.4 to No.6" |
| 8 | 0xDD | End (fixed) |
| 9 | 0xEE | fixed |
| 10 | 0xFF | fixed |
Traits
traits:
- powerable # inferred from Power ON/OFF (main 01) and Power of PC ON/OFF (main 09)
- routable # inferred from source/channel selection commands (main 02)
- levelable # inferred from Volume 000-100 set (main 03) and TV channel tune (main 05)
- queryable # inferred from status-checking commands (power/volume/audio/input/PC)
Actions
# All payloads are hex byte strings verbatim from the source code list.
# Checksum byte is included verbatim where the source lists a fixed command.
# For parameterized commands (volume, TV channel) the checksum must be computed
# as (main + sub + value) & 0xFF - see params notes.
# --- Power (main 01) ---
- id: power_on
label: Power On
kind: action
command: "AA BB CC 01 00 00 01 DD EE FF"
params: []
- id: power_off
label: Power Off
kind: action
command: "AA BB CC 01 01 00 02 DD EE FF"
params: []
# --- Source / Channel select (main 02) ---
- id: select_tv
label: Select Source TV
kind: action
command: "AA BB CC 02 01 00 03 DD EE FF"
params: []
- id: select_cvbs
label: Select Source CVBS
kind: action
command: "AA BB CC 02 02 00 04 DD EE FF"
params: []
- id: select_vga3
label: Select Source VGA3
kind: action
command: "AA BB CC 02 0B 00 0D DD EE FF"
params: []
- id: select_vga1
label: Select Source VGA1
kind: action
command: "AA BB CC 02 03 00 05 DD EE FF"
params: []
- id: select_vga2
label: Select Source VGA2
kind: action
command: "AA BB CC 02 04 00 06 DD EE FF"
params: []
- id: select_hdmi1
label: Select Source HDMI1
kind: action
command: "AA BB CC 02 06 00 08 DD EE FF"
params: []
- id: select_hdmi2
label: Select Source HDMI2
kind: action
command: "AA BB CC 02 07 00 09 DD EE FF"
params: []
- id: select_hdmi3
label: Select Source HDMI3
kind: action
command: "AA BB CC 02 05 00 07 DD EE FF"
params: []
- id: select_pc
label: Select Source PC
kind: action
command: "AA BB CC 02 08 00 0A DD EE FF"
params: []
- id: select_hdmi4k
label: Select Source HDMI4K (4K*2K)
kind: action
command: "AA BB CC 02 0D 00 0F DD EE FF"
params: []
- id: select_android
label: Select Source Android
kind: action
command: "AA BB CC 02 0A 00 0C DD EE FF"
params: []
# --- Volume (main 03) ---
- id: set_volume
label: Set Volume
kind: action
command: "AA BB CC 03 00 {level} {checksum} DD EE FF"
params:
- name: level
type: integer
description: "Volume level 0-100 decimal, sent as two-hex-digit byte (e.g. 30 decimal -> 1E). Source row: '000-100'."
- name: checksum
type: string
description: "Computed: (0x03 + 0x00 + level) & 0xFF, two hex digits. Source example: level 1E -> checksum 21."
- id: mute
label: Mute
kind: action
command: "AA BB CC 03 01 00 04 DD EE FF"
params: []
- id: unmute
label: Unmute
kind: action
command: "AA BB CC 03 01 01 05 DD EE FF"
params: []
# --- Aspect ratio (main 08) ---
- id: aspect_16_9
label: Aspect 16:9
kind: action
command: "AA BB CC 08 00 00 08 DD EE FF"
params: []
- id: aspect_4_3
label: Aspect 4:3
kind: action
command: "AA BB CC 08 01 00 09 DD EE FF"
params: []
- id: aspect_point_to_point
label: Aspect Point to Point
kind: action
command: "AA BB CC 08 07 00 0F DD EE FF"
params: []
# --- TV channel tune (main 05) ---
- id: set_tv_channel
label: Set ATV Channel
kind: action
command: "AA BB CC 05 00 {channel} {checksum} DD EE FF"
params:
- name: channel
type: integer
description: "ATV channel 00-99, sent as two-hex-digit byte. Source row: 'ATV 00-99'."
- name: checksum
type: string
description: "Computed: (0x05 + 0x00 + channel) & 0xFF, two hex digits."
# --- Power of PC (main 09) ---
- id: pc_power_on
label: Power of PC On
kind: action
command: "AA BB CC 09 01 00 0A DD EE FF"
params: []
- id: pc_power_off
label: Power of PC Off
kind: action
command: "AA BB CC 09 00 00 09 DD EE FF"
params: []
# --- Remote-control emulation (main 07) - 50 keys, each a distinct source row ---
- id: rc_win
label: Remote WIN
kind: action
command: "AA BB CC 07 0B 00 12 DD EE FF"
params: []
- id: rc_space
label: Remote Space
kind: action
command: "AA BB CC 07 46 00 4D DD EE FF"
params: []
- id: rc_alt_tab
label: Remote Alt+Tab
kind: action
command: "AA BB CC 07 1D 00 24 DD EE FF"
params: []
- id: rc_alt_f4
label: Remote Alt+F4
kind: action
command: "AA BB CC 07 1F 00 26 DD EE FF"
params: []
- id: rc_num_1
label: Remote NUM_1
kind: action
command: "AA BB CC 07 00 00 07 DD EE FF"
params: []
- id: rc_num_2
label: Remote NUM_2
kind: action
command: "AA BB CC 07 10 00 17 DD EE FF"
params: []
- id: rc_num_3
label: Remote NUM_3
kind: action
command: "AA BB CC 07 11 00 18 DD EE FF"
params: []
- id: rc_num_4
label: Remote NUM_4
kind: action
command: "AA BB CC 07 13 00 1A DD EE FF"
params: []
- id: rc_num_5
label: Remote NUM_5
kind: action
command: "AA BB CC 07 14 00 1B DD EE FF"
params: []
- id: rc_num_6
label: Remote NUM_6
kind: action
command: "AA BB CC 07 15 00 1C DD EE FF"
params: []
- id: rc_num_7
label: Remote NUM_7
kind: action
command: "AA BB CC 07 17 00 1E DD EE FF"
params: []
- id: rc_num_8
label: Remote NUM_8
kind: action
command: "AA BB CC 07 18 00 1F DD EE FF"
params: []
- id: rc_num_9
label: Remote NUM_9
kind: action
command: "AA BB CC 07 19 00 20 DD EE FF"
params: []
- id: rc_num_0
label: Remote NUM_0
kind: action
command: "AA BB CC 07 1B 00 22 DD EE FF"
params: []
- id: rc_display
label: Remote Display
kind: action
command: "AA BB CC 07 1C 00 23 DD EE FF"
params: []
- id: rc_refresh
label: Remote Refresh
kind: action
command: "AA BB CC 07 4C 00 53 DD EE FF"
params: []
- id: rc_input
label: Remote Input
kind: action
command: "AA BB CC 07 07 00 0E DD EE FF"
params: []
- id: rc_home
label: Remote Home
kind: action
command: "AA BB CC 07 48 00 4F DD EE FF"
params: []
- id: rc_menu
label: Remote Menu
kind: action
command: "AA BB CC 07 0D 00 14 DD EE FF"
params: []
- id: rc_delete
label: Remote Delete
kind: action
command: "AA BB CC 07 40 00 47 DD EE FF"
params: []
- id: rc_energy
label: Remote Energy
kind: action
command: "AA BB CC 07 4E 00 55 DD EE FF"
params: []
- id: rc_up
label: Remote UP
kind: action
command: "AA BB CC 07 47 00 4E DD EE FF"
params: []
- id: rc_down
label: Remote DOWN
kind: action
command: "AA BB CC 07 4D 00 54 DD EE FF"
params: []
- id: rc_left
label: Remote LEFT
kind: action
command: "AA BB CC 07 49 00 50 DD EE FF"
params: []
- id: rc_right
label: Remote RIGHT
kind: action
command: "AA BB CC 07 4B 00 52 DD EE FF"
params: []
- id: rc_enter
label: Remote ENTER
kind: action
command: "AA BB CC 07 4A 00 51 DD EE FF"
params: []
- id: rc_point
label: Remote Point
kind: action
command: "AA BB CC 07 06 00 0D DD EE FF"
params: []
- id: rc_back
label: Remote Back
kind: action
command: "AA BB CC 07 0A 00 11 DD EE FF"
params: []
- id: rc_ch_up
label: Remote CH+
kind: action
command: "AA BB CC 07 02 00 09 DD EE FF"
params: []
- id: rc_ch_down
label: Remote CH-
kind: action
command: "AA BB CC 07 09 00 10 DD EE FF"
params: []
- id: rc_vol_up
label: Remote VOL+
kind: action
command: "AA BB CC 07 03 00 0A DD EE FF"
params: []
- id: rc_vol_down
label: Remote VOL-
kind: action
command: "AA BB CC 07 41 00 48 DD EE FF"
params: []
- id: rc_page_up
label: Remote PageUp
kind: action
command: "AA BB CC 07 42 00 49 DD EE FF"
params: []
- id: rc_page_down
label: Remote PageDown
kind: action
command: "AA BB CC 07 0F 00 16 DD EE FF"
params: []
- id: rc_f1
label: Remote F1
kind: action
command: "AA BB CC 07 45 00 4C DD EE FF"
params: []
- id: rc_f2
label: Remote F2
kind: action
command: "AA BB CC 07 12 00 19 DD EE FF"
params: []
- id: rc_f3
label: Remote F3
kind: action
command: "AA BB CC 07 51 00 58 DD EE FF"
params: []
- id: rc_f4
label: Remote F4
kind: action
command: "AA BB CC 07 5B 00 62 DD EE FF"
params: []
- id: rc_f5
label: Remote F5
kind: action
command: "AA BB CC 07 44 00 4B DD EE FF"
params: []
- id: rc_f6
label: Remote F6
kind: action
command: "AA BB CC 07 50 00 57 DD EE FF"
params: []
- id: rc_f7
label: Remote F7
kind: action
command: "AA BB CC 07 43 00 4A DD EE FF"
params: []
- id: rc_f8
label: Remote F8
kind: action
command: "AA BB CC 07 1A 00 21 DD EE FF"
params: []
- id: rc_f9
label: Remote F9
kind: action
command: "AA BB CC 07 04 00 0B DD EE FF"
params: []
- id: rc_f10
label: Remote F10
kind: action
command: "AA BB CC 07 59 00 60 DD EE FF"
params: []
- id: rc_f11
label: Remote F11
kind: action
command: "AA BB CC 07 57 00 5E DD EE FF"
params: []
- id: rc_f12
label: Remote F12
kind: action
command: "AA BB CC 07 08 00 0F DD EE FF"
params: []
- id: rc_red
label: Remote RED
kind: action
command: "AA BB CC 07 5C 00 63 DD EE FF"
params: []
- id: rc_green
label: Remote GREEN
kind: action
command: "AA BB CC 07 5D 00 64 DD EE FF"
params: []
- id: rc_yellow
label: Remote YELLOW
kind: action
command: "AA BB CC 07 5E 00 65 DD EE FF"
params: []
- id: rc_blue
label: Remote BLUE
kind: action
command: "AA BB CC 07 5F 00 66 DD EE FF"
params: []
# --- Status queries (main command echoed with sub 02 / 00 / 03) ---
- id: query_power_status
label: Check Power Status
kind: query
command: "AA BB CC 01 02 00 03 DD EE FF"
params: []
- id: query_volume
label: Check Volume
kind: query
command: "AA BB CC 03 02 00 05 DD EE FF" # trailing "00 05 DD EE FF" reconstructed from documented framing; source table splits the search code cell
params: []
- id: query_audio_status
label: Check Audio (Mute) Status
kind: query
command: "AA BB CC 03 03 00 06 DD EE FF"
params: []
- id: query_input_status
label: Check Input Status
kind: query
command: "AA BB CC 02 00 00 02 DD EE FF"
params: []
- id: query_pc_status
label: Check PC Status
kind: query
command: "AA BB CC 09 02 00 0B DD EE FF"
params: []
Feedbacks
# Query reply frames. Reply main command = 0x80 + (query main command).
# Format: AA BB CC [reply_main] [state] 00 [checksum] DD EE FF
- id: power_state
type: enum
values: [on, off]
description: "Reply to query_power_status. ON: 'AA BB CC 80 00 00 80 DD EE FF'; OFF: 'AA BB CC 80 01 00 81 DD EE FF'."
- id: volume_level
type: integer
description: "Reply to query_volume. 'AA BB CC 82 00 xx ** DD EE FF' where xx = volume in hex (e.g. 1E = 30 decimal), ** = checksum (0x82+0x00+xx)."
- id: audio_mute_state
type: enum
values: [mute, unmute]
description: "Reply to query_audio_status. MUTE: 'AA BB CC 82 01 00 83 DD EE FF'; UNMUTE: 'AA BB CC 82 01 01 84 DD EE FF'."
- id: input_state
type: enum
values: [tv, av, vga1, vga2, hdmi3, hdmi1, hdmi2, pc, android, hdmi4k, whdi, vga3]
description: "Reply to query_input_status. Reply main = 0x81, second byte = source id. TV:81 01; AV:81 02; VGA1:81 03; VGA2:81 04; HDMI3:81 05; HDMI1:81 06; HDMI2:81 07; PC:81 08; ANDROID:81 0A; HDMI4K:81 0D; WHDI:81 0C; VGA3:81 0B."
- id: pc_state
type: enum
values: [on, off, sleep, hibernate]
description: "Reply to query_pc_status. Reply main = 0x83. ON:83 00 00 83; OFF:83 01 00 84; SLEEP:83 02 00 85; Hibernate:83 03 00 86 (all followed by 'DD EE FF')."
Variables
# No settable parameters beyond the discrete actions and the parameterized
# set_volume / set_tv_channel actions already covered in Actions.
Events
# UNRESOLVED: source documents no unsolicited/notification events.
Macros
# UNRESOLVED: source documents no multi-step macro sequences.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or
# power-on sequencing requirements.
Notes
- Command framing: every command is 10 bytes,
AA BB CC [main] [sub] [data] [checksum] DD EE FF. Checksum = low byte of (main + sub + data). For fixed commands the checksum is precomputed in the source; for parameterized commands (set_volume main 03, set_tv_channel main 05) compute it dynamically. - Reply framing uses reply-main = 0x80 + query-main (e.g. power query main 01 -> reply main 80; input query main 02 -> reply main 81; volume/audio query main 03 -> reply main 82; PC query main 09 -> reply main 83).
- Volume is sent/received as a hex byte (00-64 = 0-100 decimal). Source example: volume 30 decimal = 1E hex, checksum = 03+00+1E = 21.
- Source labels the second source-select entry "CVBS"; the input-status reply labels the same value "AV" (0x02) — same input, two names.
- Serial settings are all marked "(fixed)" in the source; they are not configurable.
## Provenance
```yaml
source_domains:
- old.support.clevertouch.com
- manualslib.com
source_urls:
- "https://old.support.clevertouch.com/Support/RS232%20code%20for%20Clevertouch%20Plus.pdf"
- https://www.manualslib.com/manual/3179079/Boxlight-Clevertouch-Ctl-86ds94kv2.html
retrieved_at: 2026-06-30T11:41:19.373Z
last_checked_at: 2026-07-07T11:04:06.132Z
```
## Verification Summary
```yaml
verdict: verified
checked_at: 2026-07-07T11:04:06.132Z
matched_actions: 77
action_count: 77
confidence: medium
summary: "All 77 spec actions verified against source command table; parameterized set_volume and set_tv_channel correctly annotated; all 50 remote control keys present; transport parameters (baud, bits, parity, stop) match source exactly. (9 unresolved item(s) noted in Known Gaps.)"
```
## Known Gaps
```yaml
- "firmware version compatibility not stated in source. The source title is \"Clevertouch Plus\"; the product is marketed under the Clevertouch By Boxlight Pro Series line."
- "flow control not stated in source"
- "source documents no unsolicited/notification events."
- "source documents no multi-step macro sequences."
- "source contains no safety warnings, interlock procedures, or"
- "flow control mode not stated in source."
- "firmware version compatibility not stated in source."
- "query_volume search code trailing bytes reconstructed from documented framing (source status-checking table cell is split); confirmed by checksum formula and consistent reply main 0x82."
- "exact product model string — source title \"Clevertouch Plus\" vs entity/device name \"Clevertouch By Boxlight Pro Series\"."
```
---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0