Summary
RS-232 control protocol for Hisense E-Series (digital signage), M-Series (24/7), and WR Interactive Touch Displays. Three command sets documented with HEX encoding, XOR check bits, and screen ID targeting. No IP control documented in this source.
Transport
# Source documents RS-232 only. Three series share the transport block but
# differ on baud rate (all values below ARE stated verbatim in source):
# E-SERIES: 115200 | M-SERIES: 9600 | WR-SERIES: 9600
# Primary value below is E-SERIES (first listed). See Notes for per-series split.
protocols:
- serial
serial:
baud_rate: 115200 # E-SERIES value from source; M-SERIES and WR-SERIES = 9600 (see Notes)
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: no auth procedure in source
Traits
# inferred from command examples
- powerable # power on/off commands present
- routable # input source selection commands present
- queryable # query commands for power state, input, volume, version present
- levelable # volume and brightness control present
Actions
# ============================================================================
# E-SERIES commands (baud 115200). Format: A6 <xx=screenID 01-FF> ... <yy=XOR check bit>.
# xx = screen ID (00 broadcast, 01-FF specific). yy = XOR check bit of highlighted bytes.
# vv = volume 0-100 hex. ww = mains mode. zz = response value.
# ============================================================================
- id: e_power_on
label: E-Series Power On
kind: action
command: "A6 xx 00 00 00 04 01 18 02 yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX (00=broadcast, 01-FF)"
- name: check_bit
type: string
description: "yy - XOR check bit of highlighted bytes (computed)"
notes: Uart Wake On function must be On
- id: e_power_off
label: E-Series Power Off
kind: action
command: "A6 xx 00 00 00 04 01 18 01 yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX (00=broadcast, 01-FF)"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: e_select_hdmi1
label: E-Series HDMI 1 Input
kind: action
command: "A6 xx 00 00 00 04 01 AC 0D yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: e_select_hdmi2
label: E-Series HDMI 2 Input
kind: action
command: "A6 xx 00 00 00 04 01 AC 06 yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: e_select_ops
label: E-Series OPS Input
kind: action
command: "A6 xx 00 00 00 04 01 AC 0B yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: e_select_cms
label: E-Series CMS Input
kind: action
command: "A6 xx 00 00 00 04 01 AC 15 yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: e_select_pdf
label: E-Series PDF Input
kind: action
command: "A6 xx 00 00 00 04 01 AC 17 yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: e_select_media
label: E-Series Media Input
kind: action
command: "A6 xx 00 00 00 04 01 AC 16 yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: e_select_usb
label: E-Series USB Input
kind: action
command: "A6 xx 00 00 00 04 01 AC 0C yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: e_set_volume
label: E-Series Set Volume
kind: action
command: "A6 xx 00 00 00 04 01 44 vv yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX"
- name: level
type: integer
description: "vv - volume level 0-100 in HEX"
range: [0, 100]
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: e_set_mains_mode
label: E-Series Set Mains Application Mode
kind: action
command: "A6 01 00 00 00 04 01 A3 ww yy"
params:
- name: mode
type: enum
description: "ww - 00=Standby, 01=Power On, 02=Last known state"
values: ["00", "01", "02"]
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: e_query_input
label: E-Series Query Input Selection
kind: query
command: "A6 xx 00 00 00 03 01 AD yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
notes: Response zz byte = current input (see Feedbacks e_input_query)
- id: e_query_power
label: E-Series Query Power State
kind: query
command: "A6 xx 00 00 00 03 01 19 yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
notes: Response zz byte = power state (see Feedbacks e_power_state_query)
- id: e_query_version
label: E-Series Query Software Version
kind: query
command: "A6 xx 00 00 00 04 01 A2 02 yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
notes: Returns platform version string (see Feedbacks e_version_query)
- id: e_query_volume
label: E-Series Query Volume Level
kind: query
command: "A6 xx 00 00 00 03 01 45 yy"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
notes: Returns volume level (see Feedbacks e_volume_query)
# --- E-SERIES IR/navigation key commands (fixed screen ID 01, distinct HEX per key) ---
- id: e_key_source_menu
label: E-Series Source Menu Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 FA E9"
params: []
- id: e_key_settings_menu
label: E-Series Settings Menu Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 FD EE"
params: []
- id: e_key_up
label: E-Series Up Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 67 74"
params: []
- id: e_key_down
label: E-Series Down Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 6C 7F"
params: []
- id: e_key_ok
label: E-Series OK Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 1C 0F"
params: []
- id: e_key_right
label: E-Series Right Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 6A 79"
params: []
- id: e_key_left
label: E-Series Left Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 69 7A"
params: []
- id: e_key_home
label: E-Series Home Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 66 75"
params: []
- id: e_key_vol_plus
label: E-Series Volume Plus Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 73 60"
params: []
- id: e_key_vol_minus
label: E-Series Volume Minus Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 72 61"
params: []
- id: e_key_return
label: E-Series Return Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 0A 03"
params: []
- id: e_key_back
label: E-Series Back Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 09 00"
params: []
- id: e_key_num0
label: E-Series Num 0 Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 30 29"
params: []
- id: e_key_num1
label: E-Series Num 1 Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 31 28"
params: []
- id: e_key_num2
label: E-Series Num 2 Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 32 2B"
params: []
- id: e_key_num3
label: E-Series Num 3 Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 33 2A"
params: []
- id: e_key_num4
label: E-Series Num 4 Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 34 25"
params: []
- id: e_key_num5
label: E-Series Num 5 Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 35 24"
params: []
- id: e_key_num6
label: E-Series Num 6 Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 36 27"
params: []
- id: e_key_num7
label: E-Series Num 7 Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 37 26"
params: []
- id: e_key_num8
label: E-Series Num 8 Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 38 21"
params: []
- id: e_key_num9
label: E-Series Num 9 Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 39 20"
params: []
- id: e_key_channel_up
label: E-Series Channel Up Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 63 52"
params: []
- id: e_key_channel_down
label: E-Series Channel Down Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 64 53"
params: []
- id: e_key_subtitle
label: E-Series Subtitle Key
kind: action
command: "A6 01 00 00 00 05 01 B0 00 71 62"
params: []
# ============================================================================
# M-SERIES commands (baud 9600). Format: DD FF ... <xx=screenID> ... <yy=check bit> BB CC.
# xx = screen ID 01-FF. yy = XOR check bit. vv = volume 0-100 hex.
# ============================================================================
- id: m_power_on
label: M-Series Power On
kind: action
command: "DD FF 00 08 C1 15 00 00 xx BB BB yy BB CC"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX (01-FF)"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: m_power_off
label: M-Series Power Off
kind: action
command: "DD FF 00 08 C1 15 00 00 xx AA AA yy BB CC"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX (01-FF)"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: m_select_displayport
label: M-Series DisplayPort Input
kind: action
command: "DD FF 00 07 C1 08 00 00 xx 16 yy BB CC"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX (01-FF)"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: m_select_vga
label: M-Series VGA Input
kind: action
command: "DD FF 00 07 C1 08 00 00 xx 17 yy BB CC"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX (01-FF)"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: m_select_hdmi
label: M-Series HDMI Input
kind: action
command: "DD FF 00 07 C1 08 00 00 xx 08 yy BB CC"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX (01-FF)"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: m_select_dvi
label: M-Series DVI Input
kind: action
command: "DD FF 00 07 C1 08 00 00 xx 09 yy BB CC"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX (01-FF)"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: m_mute_on
label: M-Series Audio Mute On
kind: action
command: "DD FF 00 07 C1 26 00 00 xx 01 yy BB CC"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX (01-FF)"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: m_mute_off
label: M-Series Audio Mute Off
kind: action
command: "DD FF 00 07 C1 26 00 00 xx 00 yy BB CC"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX (01-FF)"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: m_set_volume
label: M-Series Set Volume
kind: action
command: "DD FF 00 07 C1 27 00 00 xx vv yy BB CC"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX (01-FF)"
- name: level
type: integer
description: "vv - volume level 0-100 in HEX"
range: [0, 100]
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
- id: m_query_status
label: M-Series Query Status
kind: query
command: "DD FF 00 06 C1 28 00 00 xx yy BB CC"
params:
- name: screen_id
type: string
description: "xx - screen ID in HEX (01-FF)"
- name: check_bit
type: string
description: "yy - XOR check bit (computed)"
notes: Returns composite status word (see Feedbacks m_status)
# ============================================================================
# WR-SERIES commands (baud 9600). Format: DD FF ... BB CC. Fixed screen ID 01.
# xx = volume/brightness value. ww/xx/yy = date/time fields. zz = check bit.
# ============================================================================
- id: wr_power_on
label: WR-Series Power On
kind: action
command: "DD FF 01 04 A1 00 00 00 BB CC"
params: []
- id: wr_power_off
label: WR-Series Power Off
kind: action
command: "DD FF 01 04 A1 01 00 00 BB CC"
params: []
- id: wr_select_pc
label: WR-Series PC Input
kind: action
command: "DD FF 00 07 C1 08 00 00 01 04 CB BB CC"
params: []
- id: wr_select_hdmi1
label: WR-Series HDMI 1 Input
kind: action
command: "DD FF 00 07 C1 08 00 00 01 05 CA BB CC"
params: []
- id: wr_select_hdmi2
label: WR-Series HDMI 2 Input
kind: action
command: "DD FF 00 07 C1 08 00 00 01 06 C9 BB CC"
params: []
- id: wr_select_vga
label: WR-Series VGA Input
kind: action
command: "DD FF 00 07 C1 08 00 00 01 07 C8 BB CC"
params: []
- id: wr_select_displayport
label: WR-Series DisplayPort Input
kind: action
command: "DD FF 00 07 C1 08 00 00 01 0B C4 BB CC"
params: []
- id: wr_reboot
label: WR-Series Reboot TV
kind: action
command: "DD FF 00 06 C1 1E 00 00 01 D8 BB CC"
params: []
- id: wr_set_volume
label: WR-Series Set Volume
kind: action
command: "DD FF 01 04 A1 07 00 xx BB CC"
params:
- name: level
type: integer
description: "xx - volume level in HEX"
- id: wr_video_mute_on
label: WR-Series Video Mute On
kind: action
command: "DD FF 00 07 C1 31 00 00 01 00 F6 BB CC"
params: []
- id: wr_video_mute_off
label: WR-Series Video Mute Off
kind: action
command: "DD FF 00 07 C1 31 00 00 01 01 F7 BB CC"
params: []
- id: wr_set_brightness
label: WR-Series Set Brightness
kind: action
command: "DD FF 01 04 A1 08 00 xx BB CC"
params:
- name: level
type: integer
description: "xx - brightness value in HEX"
- id: wr_set_date
label: WR-Series Set Date
kind: action
command: "DD FF 00 09 C1 1C 00 00 01 ww xx yy zz BB CC"
params:
- name: year
type: integer
description: "ww - year"
- name: month
type: integer
description: "xx - month"
- name: day
type: integer
description: "yy - day"
- name: check_bit
type: string
description: "zz - XOR check bit (computed)"
- id: wr_set_time
label: WR-Series Set Time
kind: action
command: "DD FF 00 09 C1 1D 00 00 01 ww xx yy zz BB CC"
params:
- name: hour
type: integer
description: "ww - hour"
- name: minute
type: integer
description: "xx - minute"
- name: second
type: integer
description: "yy - seconds"
- name: check_bit
type: string
description: "zz - XOR check bit (computed)"
- id: wr_query_input
label: WR-Series Query Input Selection
kind: query
command: "DD FF 00 06 C1 1A 00 00 01 DC BB CC"
params: []
notes: Response ww xx yy = current input (see Feedbacks wr_input_query)
- id: wr_query_power
label: WR-Series Query Power State
kind: query
command: "DD FF 00 06 C1 32 00 00 01 F4 BB CC"
params: []
notes: Response xx = power state (see Feedbacks wr_power_state_query)
- id: wr_query_version
label: WR-Series Query Software Version
kind: query
command: "DD FF 00 06 C1 1B 00 00 01 DD BB CC"
params: []
notes: Response xx = software version (see Feedbacks wr_version_query)
- id: wr_query_volume
label: WR-Series Query Volume Level
kind: query
command: "DD FF 00 06 C1 33 00 00 01 E0 BB CC"
params: []
notes: Response xx = volume level (see Feedbacks wr_volume_query)
Feedbacks
# E-SERIES query responses
- id: e_input_query
type: enum
values: ["0D=HDMI1", "06=HDMI2", "0B=OPS", "15=CMS", "17=PDF", "16=Media", "0C=USB", "14=HomeScreen"]
notes: zz byte in query response
- id: e_power_state_query
type: enum
values: ["01=Off", "02=On"]
notes: zz byte in query response
- id: e_volume_query
type: integer
range: [0, 100]
notes: returned in query response
- id: e_version_query
type: string
notes: platform version string
# M-SERIES query response (single composite status word)
- id: m_status
type: object
fields:
- name: volume
type: integer
description: aa = current volume level
- name: input
type: enum
values: ["05 02=DVI", "05 03=DisplayPort", "05 04=HDMI", "08 01=VGA"]
description: bb cc = current input source
- name: power
type: enum
values: ["00=On", "FF=Off"]
description: dd = current power state
- name: muted
type: enum
values: ["01=Muted", "00=Unmuted"]
description: ee = current mute state
- name: signal
type: enum
values: ["00=No signal", "01=Signal present"]
description: ff = signal presence at selected input
# WR-SERIES query responses
- id: wr_input_query
type: enum
values: ["05 03 02=PC", "06 04 00=VGA", "05 05 00=HDMI1", "05 03 01=HDMI2", "05 03 03=DisplayPort"]
notes: ww xx yy bytes in query response
- id: wr_power_state_query
type: enum
values: ["00=Off", "01=On"]
notes: xx byte in query response
- id: wr_version_query
type: string
notes: xx byte = software version
- id: wr_volume_query
type: integer
notes: xx byte = volume level
Variables
# No standalone settable parameters separate from actions in source
Events
# No unsolicited event notifications documented in source.
# Note: M-SERIES and WR-SERIES emit an acknowledgement frame (AB AB ... CD CD)
# in response to each command, but these are solicited responses, not events.
Macros
# No multi-step macro sequences documented in source
Safety
confirmation_required_for: []
interlocks:
- description: "E-Series: UART Wake On must be enabled for Power On command to function"
source: "Notes field in source document"
Notes
Three distinct Hisense display series share this document but use different HEX command formats and different baud rates:
- E-Series: 115200 baud, A6-prefixed commands, XOR check bit on highlighted bytes, screen IDs 01–FF
- M-Series: 9600 baud, DD FF-prefixed commands, separate check bit bytes (yy)
- WR-Series: 9600 baud, similar DD FF format to M-Series but different command opcodes
All series use RJ45-to-DB9 adapter pinouts (documented in source). All commands are HEX-encoded (not ASCII). Check bit calculation requires XOR of specific bytes per command — online calculator reference provided in source (https://onlinehextools.com/xor-hex-numbers).
Variable byte legend (per source):
xx= screen ID in HEX (E/M-series). 00 = broadcast to all panels; 01–FF = specific panel.yy= XOR check bit of the highlighted HEX bytes.vv= volume level to set (0–100 in HEX).ww= mains application mode (E-series: 00=Standby, 01=Power On, 02=Last known state) OR year/hour field (WR-series date/time).zz= currently-selected input / power state in query responses (E-series), or check bit (WR-series date/time).aa=current volume,bb cc=current input,dd=power state,ee=mute state,ff=signal presence (M-series status response).
Caveman changelog: added `command:` payload to all 48 actions (was zero). Expanded collapsed `e_nav` → 24 distinct key actions (coverage rule; one enum can't carry 24 different HEX payloads). Added 9 query actions (4 E + 1 M + 4 WR) with `kind: query`. Fixed transport: M/WR baud 9600 now marked from-source, not UNRESOLVED. Preserved all original IDs + Feedbacks/Safety/Notes. Added note flagging XOR-highlight uncertainty from text extraction.
## Provenance
```yaml
source_domains:
- hisense-b2b.com
source_urls:
- "https://www.hisense-b2b.com/Attachment/DownloadFile?downloadId=5"
- "https://www.hisense-b2b.com/Attachment/DownloadFile?downloadId=784"
- https://www.hisense-b2b.com
retrieved_at: 2026-04-26T16:18:28.247Z
last_checked_at: 2026-07-21T22:47:53.864Z
```
## Verification Summary
```yaml
verdict: verified
checked_at: 2026-07-21T22:47:53.864Z
matched_actions: 68
action_count: 68
confidence: medium
summary: "All 68 spec actions match literal source commands verbatim; transport parameters verified; 100% coverage of documented command set. (6 unresolved item(s) noted in Known Gaps.)"
```
## Known Gaps
```yaml
- "model 5U8L not found in source. Source documents E-series, M-series, WR-series only."
- "TCP/IP protocol not present in source"
- "5U8L model number not found in source document. Compatible models listed as E/M/WR series from document text."
- "TCP/IP protocol not documented — source covers RS-232 only"
- "entity_id is placeholder hisense_5u8l per input; not verified against Convex"
- "source highlights XOR-input bytes in green/red color; which bytes are highlighted cannot be determined from the plain-text extraction, so the exact XOR input set per command is not captured here. Each command's check bit must be recomputed against the full documented byte set."
```
---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0