Summary

The source describes a Hisense Prosumer TV control protocol over RS-232 (DB9 serial), using fixed-length ASCII commands with an 8-bit checksum. It documents power, input selection, picture and audio settings, tuner, remote-button simulation, and other controls. Discrete IR (Pronto CCF) codes are also documented in the source but are not modeled here as machine-actionable commands. Applicability to the 65U8K Series is unresolved because the source's Models section is blank.

Transport

protocols:
  - serial
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
  connector: DB9  # female chassis mount on TV; RS-232C compliant
auth:
  type: UNRESOLVED  # source does not state this (was inferred none: no auth procedure in source)

Frame Format

Commands are fixed-length, case-sensitive ASCII strings terminated by Carriage Return (0x0D):

Set:   S[CLIENT_ID:3][COMMAND:4][DATA:4][CHECKSUM:1][CR]
Query: Q[CLIENT_ID:3][COMMAND:4]????[CHECKSUM:1][CR]
ACK:   [CLIENT_ID:3]:OKAY[DATA:4][CHECKSUM:1][CR]
       [CLIENT_ID:3]:EROR[DATA:4][CHECKSUM:1][CR]
       [CLIENT_ID:3]:WAIT[DATA:4][CHECKSUM:1][CR]
  • CLIENT_ID: Last 3 hex digits of TV's Ethernet MAC address for unicast; ALL for broadcast to all TVs on RS-232 bus.
  • CHECKSUM: 8-bit value such that the sum of all bytes in the full command string (including checksum byte) equals zero (mod 256).
  • Padding character for unused data bytes: # (0x23).
  • Query data field is always ????.

Traits

- powerable       # inferred from POWR set/query commands
- queryable       # inferred from extensive Q-prefix query commands throughout
- routable        # inferred from INPT input selection commands
- levelable       # inferred from VOLM, BRIT, CONT, COLR, TINT, SHRP, BKLV numeric-range commands

Actions

- id: power_standby
  label: Set Standby
  kind: action
  command: "POWR0000"
  params: []

- id: power_on
  label: Power On
  kind: action
  command: "POWR0001"
  params: []

- id: rs232_power_enable
  label: Enable RS-232 Remote Power On
  kind: action
  command: "PWRE0001"
  note: "Must be set to allow RS-232 to wake TV from standby. Also requires Custom Install menu to have Custom Installation set to Enable."
  params: []

- id: rs232_power_disable
  label: Disable RS-232 Remote Power On
  kind: action
  command: "PWRE0000"
  params: []

- id: set_input
  label: Set Input Source
  kind: action
  command: "INPT{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": cycle
        "0001": TV
        "0003": Component
        "0004": AV
        "0006": VGA
        "0009": HDMI1
        "0010": HDMI2
        "0011": HDMI3
        "0012": HDMI4

- id: set_picture_mode
  label: Set Picture Mode
  kind: action
  command: "PMOD{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": Standard
        "0002": Vivid
        "0003": EnergySaving
        "0004": Theater
        "0005": Game
        "0006": Sport

- id: set_brightness
  label: Set Brightness
  kind: action
  command: "BRIT{value}"
  params:
    - name: value
      type: integer
      range: [0, 100]
      format: "4-digit zero-padded decimal (e.g. 0050)"

- id: set_contrast
  label: Set Contrast
  kind: action
  command: "CONT{value}"
  params:
    - name: value
      type: integer
      range: [0, 100]
      format: "4-digit zero-padded decimal"

- id: set_color_saturation
  label: Set Color Saturation
  kind: action
  command: "COLR{value}"
  params:
    - name: value
      type: integer
      range: [0, 100]
      format: "4-digit zero-padded decimal"

- id: set_tint
  label: Set Tint
  kind: action
  command: "TINT{value}"
  params:
    - name: value
      type: integer
      range: [0, 100]
      format: "4-digit zero-padded decimal"

- id: set_sharpness
  label: Set Sharpness
  kind: action
  command: "SHRP{value}"
  params:
    - name: value
      type: integer
      range: [0, 20]
      format: "4-digit zero-padded decimal"

- id: set_aspect_ratio
  label: Set Aspect Ratio
  kind: action
  command: "ASPT{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": Auto
        "0002": Normal
        "0003": Zoom
        "0004": Wide
        "0005": Direct
        "0006": 1-to-1pixel
        "0007": Panoramic
        "0008": Cinema

- id: set_overscan
  label: Set Overscan
  kind: action
  command: "OVSN{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": on
        "0002": off

- id: reset_picture
  label: Reset Picture Settings
  kind: action
  command: "RSTP1000"
  params: []

- id: set_color_temp
  label: Set Color Temperature
  kind: action
  command: "CTEM{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": High
        "0002": Middle
        "0003": Mid-Low
        "0004": Low

- id: set_backlight
  label: Set Backlight Value
  kind: action
  command: "BKLV{value}"
  params:
    - name: value
      type: integer
      range: [0, 100]
      format: "4-digit zero-padded decimal"

- id: set_sound_mode
  label: Set Sound Mode
  kind: action
  command: "AMOD{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": Standard
        "0002": Theater
        "0003": Music
        "0004": Speech
        "0005": Late_night

- id: reset_audio
  label: Reset Audio Settings
  kind: action
  command: "RSTA2000"
  params: []

- id: set_volume
  label: Set Volume
  kind: action
  command: "VOLM{value}"
  params:
    - name: value
      type: integer
      range: [0, 100]
      format: "4-digit zero-padded decimal"

- id: set_mute
  label: Set Mute
  kind: action
  command: "MUTE{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": off
        "0001": on

- id: set_tv_speaker
  label: Set TV Speaker
  kind: action
  command: "ASPK{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": off
        "0002": on

- id: set_tuner_mode
  label: Set Tuner Mode
  kind: action
  command: "TUNR{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": Antenna
        "0002": Cable

- id: auto_channel_scan
  label: Automatic Channel Search
  kind: action
  command: "TSCN0001"
  params: []

- id: channel_change
  label: Channel Up/Down
  kind: action
  command: "CHAN{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": down
        "0001": up

- id: set_caption
  label: Set Closed Caption
  kind: action
  command: "CC##{value}"
  note: "Command uses literal '##' characters in position 3-4 of command field"
  params:
    - name: value
      type: enum
      values:
        "0000": off
        "0002": on
        "0003": on_when_mute

- id: factory_reset
  label: Restore Factory Settings
  kind: action
  command: "RSET9999"
  params: []

- id: set_osd_language
  label: Set OSD Language
  kind: action
  command: "LANG{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": English
        "0002": Español
        "0003": Français

- id: set_standby_led
  label: Set Standby LED
  kind: action
  command: "PLED{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": off
        "0002": on

- id: set_power_off_control_mode
  label: Set Power Off Control Mode
  kind: action
  command: "PBTN{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": AC_ONLY
        "0001": ALL

- id: set_volume_range
  label: Set Volume Range (max)
  kind: action
  command: "MAVL{value}"
  params:
    - name: value
      type: integer
      range: [0, 100]
      format: "4-digit zero-padded decimal"

- id: set_volume_control_mode
  label: Set Volume Control Mode
  kind: action
  command: "SVOL{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": LOCKED
        "0001": LAST_VOLUME
        "0002": AC_RESET
        "0003": STANDBY_RESET

- id: set_volume_locked_level
  label: Set Volume Locked Level
  kind: action
  command: "VLFL{value}"
  params:
    - name: value
      type: integer
      range: [0, 100]
      format: "4-digit zero-padded decimal"

- id: set_remote_key
  label: Set Remote Key Mode
  kind: action
  command: "RMOT{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": ENABLE
        "0001": DISABLE
        "0002": PARTIAL

- id: set_panel_key
  label: Set Panel Key Mode
  kind: action
  command: "PANL{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": ENABLE
        "0001": DISABLE

- id: set_menu_access
  label: Set Menu Access
  kind: action
  command: "MENU{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": ENABLE
        "0001": DISABLE

- id: set_av_setting_menu
  label: Set AV Setting Menu
  kind: action
  command: "AVMN{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": DISABLE
        "0001": ENABLE

- id: set_osd_mode
  label: Set OSD Mode
  kind: action
  command: "OSD#{value}"
  note: "Command uses literal '#' in position 4 of command field"
  params:
    - name: value
      type: enum
      values:
        "0000": ENABLE
        "0001": DISABLE

- id: set_input_mode
  label: Set Input Mode
  kind: action
  command: "INPM{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": LOCKED
        "0001": SELECTABLE
        "0002": AC_RESET
        "0003": STANDBY_RESET

- id: simulate_button
  label: Simulate Remote/Panel Button Press
  kind: action
  command: "BTTN{button_code}"
  note: "Button codes have a '1' prefix. See Notes section for full code table."
  params:
    - name: button_code
      type: string
      description: "4-character button code (e.g. 1012=POWER, 1032=VOL-, 1033=VOL+, 1034=CH+, 1035=CH-, 1040=OK, 1041=UP, 1042=DOWN, 1043=LEFT, 1044=RIGHT, 1045=BACK, 1046=EXIT, 1036=INPUT, 1031=MUTE, 1038=MENU, 1000-1009=digits 0-9)"
- id: set_power_on_input
  label: Set Power On Input Selection
  kind: action
  command: "POIS{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": LAST
        "0001": Air
        "0002": AV
        "0003": Component
        "0004": VGA
        "0005": HDMI1
        "0006": HDMI2
        "0007": HDMI3
        "0008": HDMI4

- id: set_tv_speaker_mode
  label: Set TV Speaker Mode
  kind: action
  command: "SPKM{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": SPEAKER
        "0001": OFF
        "0002": ARC_FIRST

- id: set_b2b_mode
  label: Set B2B Function Mode
  kind: action
  command: "B2BM{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": ENABLE
        "0001": DISABLE

- id: set_usb_behavior
  label: Set USB Behavior
  kind: action
  command: "USBM{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": Home
        "0001": B2B

- id: set_pixel_shifting
  label: Set Pixel Shifting
  kind: action
  command: "PSHF{value}"
  params:
    - name: value
      type: enum
      values:
        "0000": off
        "0001": on

- id: send_discrete_ir_code
  label: Send Discrete IR Command
  kind: action
  command: "04FB{value}"
  note: "Discrete IR complete hex codes use the documented 04FB prefix and the listed code/complement value."
  params:
    - name: value
      type: enum
      values:
        "POWER Toggle": "708F"
        "Power On": "718E"
        "Power Off": "728D"
        "Input Toggle": "738C"
        "TV Tuner1": "748B"
        "TV Tuner2": "758A"
        "AV1": "7689"
        "AV2": "7788"
        "SCART/AV3": "7887"
        "Component1": "7986"
        "Component2": "7A85"
        "Component3": "7B84"
        "HDMI.1": "7C83"
        "HDMI.2": "7D82"
        "HDMI.3": "7E81"
        "HDMI.4": "7F80"
        "HDMI.5": "807F"
        "VGA": "817E"
        "USB": "827D"
        "Picture Mode Toggle": "837C"
        "Sound Mode Toggle": "847B"
        "Aspect Ratio Wide 16:9": "857A"
        "Aspect Ratio Normal 4:3": "8679"
        "Aspect Ratio Cinema": "8778"
        "Aspect Ratio Panorama": "8877"
        "Aspect Ratio Zoom": "8976"
        "Channel List": "8A75"
        "Fav Channel": "8B74"
        "Sleep": "8C73"
        "TV Menu Toggle": "8D72"
        "Home": "8E71"
        "Tools Second Menu": "8F70"
        "Digit 0": "906F"
        "Digit 1": "916E"
        "Digit 2": "926D"
        "Digit 3": "936C"
        "Digit 4": "946B"
        "Digit 5": "956A"
        "Digit 6": "9669"
        "Digit 7": "9768"
        "Digit 8": "9867"
        "Digit 9": "9966"
        "Digit Dash": "9A65"
        "Previous Channel": "9B64"
        "Up Arrow": "9C63"
        "Down Arrow": "9D62"
        "Left Arrow": "9E61"
        "Right Arrow": "9F60"
        "Enter": "A05F"
        "Select OK": "A15E"
        "Return": "A25D"
        "Exit": "A35C"
        "Info Display Toggle": "A45B"
        "Volume -": "A55A"
        "Volume +": "A659"
        "Channel -": "A758"
        "Channel +": "A857"
        "PIP Toggle": "A956"
        "PIP Input": "AA55"
        "PIP Swap": "AB54"
        "PIP Position": "AC53"
        "PIP Size": "AD52"
        "Guide Toggle": "AE51"
        "Freeze Toggle": "AF50"

Feedbacks

- id: power_on_command_setting
  label: RS-232 Remote Power On Setting
  query_command: "PWRE????"
  type: enum
  values:
    "0": disabled
    "1": enabled

- id: current_input
  label: Current Input Source
  query_command: "INPT????"
  type: enum
  values:
    "1": TV
    "3": Component
    "4": AV
    "6": VGA
    "9": HDMI1
    "10": HDMI2
    "11": HDMI3
    "12": HDMI4

- id: picture_mode
  label: Current Picture Mode
  query_command: "PMOD????"
  type: enum
  values:
    "0": Standard
    "2": Vivid
    "3": EnergySaving
    "4": Theater
    "5": Game
    "6": Sport

- id: brightness
  label: Brightness Value
  query_command: "BRIT????"
  type: integer
  range: [0, 100]

- id: contrast
  label: Contrast Value
  query_command: "CONT????"
  type: integer
  range: [0, 100]

- id: color_saturation
  label: Color Saturation Value
  query_command: "COLR????"
  type: integer
  range: [0, 100]

- id: tint
  label: Tint Value
  query_command: "TINT????"
  type: integer
  range: [0, 100]

- id: sharpness
  label: Sharpness Value
  query_command: "SHRP????"
  type: integer
  range: [0, 20]

- id: aspect_ratio
  label: Current Aspect Ratio
  query_command: "ASPT????"
  type: enum
  values:
    "0": Auto
    "2": Normal
    "3": Zoom
    "4": Wide
    "5": Direct
    "6": 1-to-1pixel
    "7": Panoramic
    "8": Cinema

- id: overscan
  label: Overscan State
  query_command: "OVSN????"
  type: enum
  values:
    "0": on
    "2": off

- id: color_temp
  label: Current Color Temperature
  query_command: "CTEM????"
  type: enum
  values:
    "0": High
    "2": Middle
    "3": Mid-Low
    "4": Low

- id: backlight
  label: Backlight Value
  query_command: "BKLV????"
  type: integer
  range: [0, 100]

- id: sound_mode
  label: Current Sound Mode
  query_command: "AMOD????"
  type: enum
  values:
    "0": Standard
    "2": Theater
    "3": Music
    "4": Speech
    "5": Late_night

- id: volume
  label: Current Volume
  query_command: "VOLM????"
  type: integer
  range: [0, 100]

- id: mute_state
  label: Mute State
  query_command: "MUTE????"
  type: enum
  values:
    "0": unmuted
    "1": muted

- id: tv_speaker
  label: TV Speaker State
  query_command: "ASPK????"
  type: enum
  values:
    "0": off
    "2": on

- id: tuner_mode
  label: Tuner Mode
  query_command: "TUNR????"
  type: enum
  values:
    "0": Antenna
    "2": Cable

- id: caption_state
  label: Closed Caption State
  query_command: "CC##????"
  type: enum
  values:
    "0": off
    "2": on
    "3": on_when_mute

- id: osd_language
  label: OSD Language
  query_command: "LANG????"
  type: enum
  values:
    "0": English
    "2": Español
    "3": Français

- id: standby_led
  label: Standby LED State
  query_command: "PLED????"
  type: enum
  values:
    "0": off
    "2": on

- id: power_off_control_mode
  label: Power Off Control Mode
  query_command: "PBTN????"
  type: enum
  values:
    "0": AC_ONLY
    "1": ALL

- id: volume_range
  label: Volume Range (max)
  query_command: "MAVL????"
  type: integer
  range: [0, 100]

- id: volume_control_mode
  label: Volume Control Mode
  query_command: "SVOL????"
  type: enum
  values:
    "0": LOCKED
    "1": LAST_VOLUME
    "2": AC_RESET
    "3": STANDBY_RESET

- id: volume_locked_level
  label: Volume Locked Level
  query_command: "VLFL????"
  type: integer
  range: [0, 100]

- id: remote_key_mode
  label: Remote Key Mode
  query_command: "RMOT????"
  type: enum
  values:
    "0": ENABLE
    "1": DISABLE
    "2": PARTIAL

- id: panel_key_mode
  label: Panel Key Mode
  query_command: "PANL????"
  type: enum
  values:
    "0": ENABLE
    "1": DISABLE

- id: menu_access
  label: Menu Access State
  query_command: "MENU????"
  type: enum
  values:
    "0": ENABLE
    "1": DISABLE

- id: av_setting_menu
  label: AV Setting Menu State
  query_command: "AVMN????"
  type: enum
  values:
    "0": DISABLE
    "1": ENABLE

- id: osd_mode
  label: OSD Mode
  query_command: "OSD#????"
  type: enum
  values:
    "0": ENABLE
    "1": DISABLE

- id: input_mode
  label: Input Mode
  query_command: "INPM????"
  type: enum
  values:
    "0": LOCKED
    "1": SELECTABLE
    "2": AC_RESET
    "3": STANDBY_RESET

- id: power_on_input_selection
  label: Power On Input Selection
  query_command: "POIS????"
  type: enum
  values:
    "0": LAST
    "1": Air
    "2": AV
    "3": Component
    "4": VGA
    "5": HDMI1
    "6": HDMI2
    "7": HDMI3
    "8": HDMI4

- id: tv_speaker_mode
  label: TV Speaker Mode
  query_command: "SPKM????"
  type: enum
  values:
    "0": SPEAKER
    "1": OFF

- id: b2b_function_mode
  label: B2B Function Mode
  query_command: "B2BM????"
  type: enum
  values:
    "0": ENABLE
    "1": DISABLE

- id: usb_behavior
  label: USB Behavior
  query_command: "USBM????"
  type: enum
  values:
    "0": Home
    "1": B2B

- id: pixel_shifting
  label: Pixel Shifting
  query_command: "PSHF????"
  type: enum
  values:
    "0": Off
    "1": On

Variables

# The source includes the full POIS parameter and query value table; the POIS set command is represented by set_power_on_input.

Events

# UNRESOLVED: No unsolicited notification mechanism described in source.
# TV responds only to explicit commands; no push events documented.

Macros

# UNRESOLVED: No multi-step macro sequences described in source.

Safety

confirmation_required_for: []
interlocks:
  - description: >
      RS-232 control must be explicitly enabled via the TV's Custom Install menu
      before any serial commands will be accepted. Access code: press Quick Settings,
      then enter 7310 on remote. Set "Custom Installation" to Enable.
  - description: >
      RS-232 power-on from standby requires an additional prerequisite: set
      "Power On Command" to Enable in the Custom Install menu, then send
      PWRE0001 via RS-232 to arm remote power-on. A WAIT response may precede
      the final OKAY on power-on commands.

Notes

BTTN button code reference (partial):

Function Code Function Code
POWER 1012 MUTE 1031
VOL- 1032 VOL+ 1033
CH+ 1034 CH- 1035
INPUT 1036 MENU 1038
Connected Home 1039 OK/ENTER 1040
UP 1041 DOWN 1042
LEFT 1043 RIGHT 1044
BACK 1045 EXIT 1046
Digit 0–9 1000–1009 — (DASH) 1010
PLAY 1016 FFW >> 1017
PAUSE 1018 PREVIOUS 1019
STOP 1020 NEXT >> 1021
Media Player 1023 SLEEP 1024
CC 1027 MTS/SAP 1054
Live TV 1055 Red 1050
Green 1051 Blue 1052
Yellow 1053 FRW << 1015

Protocol notes:

  • The protocol is case-sensitive. Commands must be sent in UPPERCASE.
  • # (0x23) is the padding character for unused data positions.
  • When targeting a specific TV in a multi-TV daisy-chain, use the last 3 hex digits of that TV's Ethernet MAC address as CLIENT_ID. Use ALL to broadcast to all TVs (no individual ACK returned for broadcasts).
  • The TV may respond WAIT before OKAY for slow operations (e.g. power-on boot).
  • Acknowledged responses for queries embed the data value in the 4-byte DATA field of the ACK, right-aligned, padded with #.

Source document discrepancy: The input metadata specified "Known protocol: TCP/IP" and the source file is named with _ip. However, the source document describes RS-232 serial control. No TCP port, IP addressing, or socket protocol is present in the source. This spec reflects the RS-232 protocol as documented. If a separate IP/TCP control document exists for this series, a separate spec revision should be created.

Provenance

source_domains:
  - assets.hisense-usa.com
source_urls:
  - https://assets.hisense-usa.com/assets/ProductDownloads/18/5342defe83/Hisense-RS-232-and-IR-Protocol-English_2.pdf
retrieved_at: 2026-04-30T04:31:49.212Z
last_checked_at: 2026-10-07T17:48:44.253Z

Verification Summary

verdict: verified
checked_at: 2026-10-07T17:48:44.253Z
matched_actions: 80
action_count: 80
confidence: medium
summary: "All 80 action units match source mnemonics and values, serial transport matches, and the source command families are all represented. Models section is blank, so model applicability is unconfirmed. (10 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "Source document title is \"RS-232/IR Protocol for Hisense® Prosumer TV\" — no TCP/IP transport is described. The input metadata stated \"Known protocol: TCP/IP\" but the source contains no TCP port, no IP addressing, and no socket-level protocol. This spec reflects serial-only control as stated in the source."
- "Specific model numbers were blank in the source \"Models\" section; entity ID supplied by caller."
- "Power-on via RS-232 requires the TV's Custom Install menu to be enabled (code 7310); this is a setup prerequisite, not a command sequence."
- "The source's Models section is blank, so support for the 65U8K Series is not established."
- "No unsolicited notification mechanism described in source."
- "No multi-step macro sequences described in source."
- "Source document \"Models\" section was blank; specific model numbers that implement this protocol (beyond \"Prosumer TV\" and \"65U8K Series\" from entity metadata) are not stated."
- "The source includes the full Power-On Input Selection (POIS) command and query table; its parameters are represented in set_power_on_input."
- "Firmware version compatibility not stated in source."
- "RS-232 multi-drop wiring topology (daisy-chain vs. star) not described in source."
- "source applicability inferred: the manufacturer protocol document names no model; commands verified against it but not confirmed for this exact model"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0