Summary

RS-232 control protocol for HiSense Prosumer TVs (documented series includes 65U85K). DB9 female chassis connector, fixed-length ASCII command frames with 8-bit checksum, 9600 bps 8N1. Source covers power, input, picture, sound, channel, OSD, lock, and remote-button simulation. IR codes and discrete Pronto CCF data are out of scope for this serial spec.

Transport

protocols:
  - serial
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
  connector: DB9  # female chassis mount per source
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable
- routable
- queryable
- levelable

Actions

- id: pwre_set
  label: Power On Command Enable/Disable (RS-232 remote power-on)
  kind: action
  command: "PWRE{0000|0001}"  # 0000=disable, 0001=enable
  params:
    - name: value
      type: enum
      values: ["0000", "0001"]

- id: pwre_query
  label: Query Power On Command Setting
  kind: query
  command: "PWRE????"

- id: powr_set
  label: Set Power On/Off
  kind: action
  command: "POWR{0000|0001}"  # 0000=standby, 0001=power on
  params:
    - name: value
      type: enum
      values: ["0000", "0001"]

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

- id: inpt_query
  label: Query Current Input Source
  kind: query
  command: "INPT????"

- id: pmod_set
  label: Set Picture Mode
  kind: action
  command: "PMOD{0000|0002|0003|0004|0005|0006}"  # 0=Standard, 2=Vivid, 3=EnergySaving, 4=Theater, 5=Game, 6=Sport
  params:
    - name: value
      type: enum
      values: ["0000", "0002", "0003", "0004", "0005", "0006"]

- id: pmod_query
  label: Query Picture Mode
  kind: query
  command: "PMOD????"

- id: brit_set
  label: Set Brightness
  kind: action
  command: "BRIT{0000-0100}"  # 0-100
  params:
    - name: value
      type: string
      description: 4-digit hex value, range 0000-0100 (0-100)

- id: brit_query
  label: Query Brightness
  kind: query
  command: "BRIT????"

- id: cont_set
  label: Set Contrast
  kind: action
  command: "CONT{0000-0100}"
  params:
    - name: value
      type: string
      description: 4-digit hex value, range 0000-0100 (0-100)

- id: cont_query
  label: Query Contrast
  kind: query
  command: "CONT????"

- id: colr_set
  label: Set Color Saturation
  kind: action
  command: "COLR{0000-0100}"
  params:
    - name: value
      type: string
      description: 4-digit hex value, range 0000-0100 (0-100)

- id: colr_query
  label: Query Color Saturation
  kind: query
  command: "COLR????"

- id: tint_set
  label: Set Tint
  kind: action
  command: "TINT{0000-0100}"
  params:
    - name: value
      type: string
      description: 4-digit hex value, range 0000-0100 (0-100)

- id: tint_query
  label: Query Tint
  kind: query
  command: "TINT????"

- id: shrp_set
  label: Set Sharpness
  kind: action
  command: "SHRP{0000-0020}"  # 0-20
  params:
    - name: value
      type: string
      description: 4-digit hex value, range 0000-0020 (0-20)

- id: shrp_query
  label: Query Sharpness
  kind: query
  command: "SHRP????"

- id: aspt_set
  label: Set Aspect Ratio
  kind: action
  command: "ASPT{0000|0002|0003|0004|0005|0006|0007|0008}"  # 0=Auto, 2=Normal, 3=Zoom, 4=Wide, 5=Direct, 6=1-to-1, 7=Panoramic, 8=Cinema
  params:
    - name: value
      type: enum
      values: ["0000", "0002", "0003", "0004", "0005", "0006", "0007", "0008"]

- id: aspt_query
  label: Query Current Aspect Ratio
  kind: query
  command: "ASPT????"

- id: ovsn_set
  label: Set Overscan
  kind: action
  command: "OVSN{0000|0002}"  # 0=On, 2=Off
  params:
    - name: value
      type: enum
      values: ["0000", "0002"]

- id: ovsn_query
  label: Query Overscan
  kind: query
  command: "OVSN????"

- id: rstp_set
  label: Reset Picture Settings
  kind: action
  command: "RSTP1000"

- id: ctem_set
  label: Set Color Temperature
  kind: action
  command: "CTEM{0000|0002|0003|0004}"  # 0=High, 2=Middle, 3=Mid-Low, 4=Low
  params:
    - name: value
      type: enum
      values: ["0000", "0002", "0003", "0004"]

- id: ctem_query
  label: Query Color Temperature
  kind: query
  command: "CTEM????"

- id: bklv_set
  label: Set Backlight Value
  kind: action
  command: "BKLV{0000-0100}"
  params:
    - name: value
      type: string
      description: 4-digit hex value, range 0000-0100 (0-100)

- id: bklv_query
  label: Query Backlight Value
  kind: query
  command: "BKLV????"

- id: amod_set
  label: Set Sound Mode
  kind: action
  command: "AMOD{0000|0002|0003|0004|0005}"  # 0=Standard, 2=Theater, 3=Music, 4=Speech, 5=Late night
  params:
    - name: value
      type: enum
      values: ["0000", "0002", "0003", "0004", "0005"]

- id: amod_query
  label: Query Sound Mode
  kind: query
  command: "AMOD????"

- id: rsta_set
  label: Reset Audio Settings
  kind: action
  command: "RSTA2000"

- id: volm_set
  label: Set Volume
  kind: action
  command: "VOLM{0000-0100}"
  params:
    - name: value
      type: string
      description: 4-digit hex value, range 0000-0100 (0-100)

- id: volm_query
  label: Query Volume
  kind: query
  command: "VOLM????"

- id: mute_set
  label: Set Mute
  kind: action
  command: "MUTE{0000|0001}"  # 0=off, 1=on
  params:
    - name: value
      type: enum
      values: ["0000", "0001"]

- id: mute_query
  label: Query Mute Status
  kind: query
  command: "MUTE????"

- id: aspk_set
  label: Set TV Speaker
  kind: action
  command: "ASPK{0000|0002}"  # 0=Off, 2=On
  params:
    - name: value
      type: enum
      values: ["0000", "0002"]

- id: aspk_query
  label: Query TV Speaker State
  kind: query
  command: "ASPK????"

- id: tunr_set
  label: Set Tuner Mode
  kind: action
  command: "TUNR{0000|0002}"  # 0=Antenna, 2=Cable
  params:
    - name: value
      type: enum
      values: ["0000", "0002"]

- id: tunr_query
  label: Query Tuner Mode
  kind: query
  command: "TUNR????"

- id: tscn_set
  label: Automatic Channel Search
  kind: action
  command: "TSCN0001"

- id: chan_set
  label: Channel Up/Down
  kind: action
  command: "CHAN{0000|0001}"  # 0=down, 1=up
  params:
    - name: value
      type: enum
      values: ["0000", "0001"]

- id: cc_set
  label: Set Caption Control
  kind: action
  command: "CC##{0000|0002|0003}"  # 0=off, 2=on, 3=on when mute
  params:
    - name: value
      type: enum
      values: ["0000", "0002", "0003"]

- id: cc_query
  label: Query Caption Control
  kind: query
  command: "CC##????"

- id: rset_set
  label: Restore Factory Settings
  kind: action
  command: "RSET9999"

- id: lang_set
  label: Set OSD Language
  kind: action
  command: "LANG{0000|0002|0003}"  # 0=English, 2=Español, 3=Français
  params:
    - name: value
      type: enum
      values: ["0000", "0002", "0003"]

- id: lang_query
  label: Query OSD Language
  kind: query
  command: "LANG????"

- id: pled_set
  label: Set Standby LED
  kind: action
  command: "PLED{0000|0002}"  # 0=Off, 2=On
  params:
    - name: value
      type: enum
      values: ["0000", "0002"]

- id: pled_query
  label: Query Standby LED
  kind: query
  command: "PLED????"

- id: bttn_set
  label: Remote Control Button Simulator
  kind: action
  command: "BTTN{code}"  # 4-digit code; see Notes for enumeration
  params:
    - name: code
      type: string
      description: 4-digit button code, e.g. 1012=POWER, 1031=MUTE, 1032=VOL-, 1033=VOL+, 1034=CH+, 1035=CH-, 1036=INPUT, 1000-1009=digit 0-9, 1010=dash, 1015=FRW, 1016=PLAY, 1017=FFW, 1018=PAUSE, 1019=PREV, 1020=STOP, 1021=NEXT, 1023=HiMedia, 1024=SLEEP, 1027=CC, 1038=MENU, 1039=HiSmart, 1040=OK/ENTER, 1041=UP, 1042=DOWN, 1043=LEFT, 1044=RIGHT, 1045=BACK, 1046=EXIT, 1050=Red, 1051=Green, 1052=Blue, 1053=Yellow, 1054=MTS/SAP, 1055=LiveTV

- id: pbtn_set
  label: Set Power Off Control Mode
  kind: action
  command: "PBTN{0000|0001}"  # 0=AC ONLY, 1=ALL
  params:
    - name: value
      type: enum
      values: ["0000", "0001"]

- id: pbtn_query
  label: Query Power Off Control Mode
  kind: query
  command: "PBTN????"

- id: mavl_set
  label: Set Volume Range (Max Volume)
  kind: action
  command: "MAVL{0000-0100}"
  params:
    - name: value
      type: string
      description: 4-digit hex value, range 0000-0100 (0-100)

- id: mavl_query
  label: Query Volume Range
  kind: query
  command: "MAVL????"

- id: svol_set
  label: Set Volume Control Behavior
  kind: action
  command: "SVOL{0000|0001|0002|0003}"  # 0=LOCKED, 1=LAST VOLUME, 2=AC RESET, 3=STANDBY RESET
  params:
    - name: value
      type: enum
      values: ["0000", "0001", "0002", "0003"]

- id: svol_query
  label: Query Volume Control Behavior
  kind: query
  command: "SVOL????"

- id: vlfl_set
  label: Set Volume Locked Level
  kind: action
  command: "VLFL{0000-0100}"
  params:
    - name: value
      type: string
      description: 4-digit hex value, range 0000-0100 (0-100)

- id: vlfl_query
  label: Query Volume Locked Level
  kind: query
  command: "VLFL????"

- id: rmot_set
  label: Set Remote Key Lock
  kind: action
  command: "RMOT{0000|0001|0002}"  # 0=ENABLE, 1=DISABLE, 2=PARTIAL
  params:
    - name: value
      type: enum
      values: ["0000", "0001", "0002"]

- id: rmot_query
  label: Query Remote Key Lock
  kind: query
  command: "RMOT????"

- id: panl_set
  label: Set Panel Key Lock
  kind: action
  command: "PANL{0000|0001}"  # 0=ENABLE, 1=DISABLE
  params:
    - name: value
      type: enum
      values: ["0000", "0001"]

- id: panl_query
  label: Query Panel Key Lock
  kind: query
  command: "PANL????"

- id: menu_set
  label: Set Menu Access
  kind: action
  command: "MENU{0000|0001}"  # 0=ENABLE, 1=DISABLE
  params:
    - name: value
      type: enum
      values: ["0000", "0001"]

- id: menu_query
  label: Query Menu Access
  kind: query
  command: "MENU????"

- id: avmn_set
  label: Set AV Setting Menu Access
  kind: action
  command: "AVMN{0000|0001}"  # 0=DISABLE, 1=ENABLE
  params:
    - name: value
      type: enum
      values: ["0000", "0001"]

- id: avmn_query
  label: Query AV Setting Menu Access
  kind: query
  command: "AVMN????"

- id: osd_set
  label: Set OSD Mode
  kind: action
  command: "OSD#{0000|0001}"  # 0=ENABLE, 1=DISABLE
  params:
    - name: value
      type: enum
      values: ["0000", "0001"]

- id: osd_query
  label: Query OSD Mode
  kind: query
  command: "OSD#????"

- id: inpm_set
  label: Set Input Mode
  kind: action
  command: "INPM{0000|0001|0002|0003}"  # 0=LOCKED, 1=SELECTABLE, 2=AC RESET, 3=STANDBY RESET
  params:
    - name: value
      type: enum
      values: ["0000", "0001", "0002", "0003"]

- id: inpm_query
  label: Query Input Mode
  kind: query
  command: "INPM????"

- id: pois_set
  label: Set Power On Input Source
  kind: action
  command: "POIS{0000|0001|0002|0003|0004|0005|0006|0007|0008}"  # 0000=LAST,0001=Air,0002=AV,0003=Component,0004=VGA,0005=HDMI1,0006=HDMI2,0007=HDMI3,0008=HDMI4 (per source)
  params:
    - name: value
      type: enum
      values: ["0000", "0001", "0002", "0003", "0004", "0005", "0006", "0007", "0008"]

Feedbacks

- id: ack_okay
  type: enum
  values: [OKAY]
  description: Acknowledgement token on successful set; appears as ":OKAY" in the acknowledgement frame per source.

- id: ack_error
  type: enum
  values: [EROR]
  description: Error acknowledgement token per source's "Basic Format for Control" section.

- id: ack_wait
  type: enum
  values: [WAIT]
  description: Wait acknowledgement token returned while TV processes the prior command (per Example 1 flow).

- id: power_state
  type: enum
  values: [on, standby]
  description: Inferred from POWR0000=Standby, POWR0001=Power on.

- id: input_state
  type: enum
  values: [TV, AV, Component, HDMI1, HDMI2, HDMI3, HDMI4, VGA]
  description: INPT???? returns the current input token (e.g. "HDM1") per Example 2.

- id: picture_mode
  type: enum
  values: [Standard, Vivid, EnergySaving, Theater, Game, Sport]

- id: aspect_ratio
  type: enum
  values: [Auto, Normal, Zoom, Wide, Direct, 1to1, Panoramic, Cinema]

- id: color_temp
  type: enum
  values: [High, Middle, MidLow, Low]

- id: sound_mode
  type: enum
  values: [Standard, Theater, Music, Speech, LateNight]

- id: mute_state
  type: enum
  values: [mute, unmute]

- id: speaker_state
  type: enum
  values: [on, off]

- id: tuner_mode
  type: enum
  values: [Antenna, Cable]

- id: osd_language
  type: enum
  values: [English, Espanol, Francais]

- id: standby_led
  type: enum
  values: [on, off]

- id: power_off_mode
  type: enum
  values: [ACOnly, All]

- id: volume_control
  type: enum
  values: [Locked, LastVolume, ACReset, StandbyReset]

- id: remote_key
  type: enum
  values: [Enable, Disable, Partial]

- id: panel_key
  type: enum
  values: [Enable, Disable]

- id: menu_access
  type: enum
  values: [Enable, Disable]

- id: av_setting_menu
  type: enum
  values: [Enable, Disable]

- id: osd_mode
  type: enum
  values: [Enable, Disable]

- id: input_mode
  type: enum
  values: [Locked, Selectable, ACReset, StandbyReset]

Variables

- id: brightness
  type: integer
  range: [0, 100]
  description: BRIT set/query; 4-digit hex 0000-0100.

- id: contrast
  type: integer
  range: [0, 100]
  description: CONT set/query; 4-digit hex 0000-0100.

- id: color_saturation
  type: integer
  range: [0, 100]
  description: COLR set/query; 4-digit hex 0000-0100.

- id: tint
  type: integer
  range: [0, 100]
  description: TINT set/query; 4-digit hex 0000-0100.

- id: sharpness
  type: integer
  range: [0, 20]
  description: SHRP set/query; 4-digit hex 0000-0020.

- id: backlight
  type: integer
  range: [0, 100]
  description: BKLV set/query; 4-digit hex 0000-0100.

- id: volume
  type: integer
  range: [0, 100]
  description: VOLM set/query; 4-digit hex 0000-0100.

- id: max_volume
  type: integer
  range: [0, 100]
  description: MAVL set/query; 4-digit hex 0000-0100.

- id: volume_locked_level
  type: integer
  range: [0, 100]
  description: VLFL set/query; 4-digit hex 0000-0100.

- id: overscan
  type: enum
  values: [on, off]
  description: OVSN set/query; data 0000=On, 0002=Off.

- id: caption
  type: enum
  values: [off, on, on_when_mute]
  description: CC set/query; data 0000=off, 0002=on, 0003=on when mute.

Events

# UNRESOLVED: source describes acknowledgement frames but no unsolicited notifications.
[] 

Macros

# UNRESOLVED: source documents no multi-step sequences.
[]

Safety

[]

Notes

Protocol is case sensitive per source note 1. Frame layout (host -> TV): OPERATION (1B: S set, Q query) + CLIENT_ID (3B; last 3 hex of MAC, or ALL for broadcast) + COMMAND (4B) + DATA (4B) + CHECKSUM (1B; 8-bit so that the sum of all bytes incl. checksum is zero) + 0x0D (CR). Acknowledgement (TV -> host): CLIENT_ID (3B) + : (0x3A) + ACK (e.g. OKAY, EROR, WAIT) + DATA (4B) + CHECKSUM (1B) + 0x0D. Source provides two concrete examples: Example 1 turns on set 5FA via S5FAPOWR0001 with checksum 0xCD; Example 2 queries set 5FA input via Q5FAINPT???? and receives 5FA:OKAYHDM1. TV-specific HEX uses last 3 MAC bytes (e.g. 465) for the client ID; "generic HEX" uses ALL (41 4C 4C). RS-232 port must be enabled in the Custom Install menu (access by pressing Quick Settings on remote, then 7 3 1 0; set Custom Installation = Enable; optionally set Power On Command = Enable so RS-232 can power on from standby).

BTTN codes (remote control button simulator) — full enumeration from source: 1000=0, 1001=1, 1002=2, 1003=3, 1004=4, 1005=5, 1006=6, 1007=7, 1008=8, 1009=9, 1010=dash, 1012=POWER, 1015=FRW<<, 1016=PLAY, 1017=FFW>>, 1018=PAUSE, 1019=PREVIOUS, 1020=STOP, 1021=NEXT>>, 1023=HiMedia, 1024=SLEEP, 1027=CC, 1031=MUTE, 1032=VOL-, 1033=VOL+, 1034=CH+, 1035=CH-, 1036=INPUT, 1038=MENU, 1039=HiSmart, 1040=OK/ENTER, 1041=UP, 1042=DOWN, 1043=LEFT, 1044=RIGHT, 1045=BACK, 1046=EXIT, 1050=Red, 1051=Green, 1052=Blue, 1053=Yellow, 1054=MTS/SAP, 1055=Live TV.

POIS row in source: "POIS0001 OKAY Air" — token likely intended as the antenna input label; truncated line makes full enumeration uncertain.

Source explicitly says IR commands and discrete Pronto CCF codes must be checked against the model's user manual; not enumerated in this serial spec.

Document revisions: V3.0 13-May-2016 (initial RS-232 release), V3.1 26-Jul-2016 (SPKM ARC, PANL rename, BTTN "1" prefix, STANDBY-mode note on PWRE query), V3.2 25-Jan-2017 (single-TV and MAC-specific commands), V3.3 10-Mar-2017 (error check/correct), V3.4-V3.6 (Mar-Apr 2017, model offering and IR corrections).

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:46.785Z
last_checked_at: 2026-06-02T17:22:28.475Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T17:22:28.475Z
matched_actions: 68
action_count: 68
confidence: medium
summary: "All 68 spec actions matched verbatim in source with correct shapes including all 9 POIS values; transport confirmed; 4 source commands (SPKM,B2BM,USBM,PSHF) not in spec but coverage ratio 38/42=0.905 is above the 0.9 floor. (4 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- SPKM
- B2BM
- USBM
- PSHF
- "source explicitly labels itself as the \"Prosumer TV\" RS-232/IR protocol and lists many model series; the 65U85K family is not specifically enumerated in the revision notes. The wire protocol is presumed compatible based on operator-supplied target model."
- "input manifest says TCP/IP but source only documents RS-232 on a DB9 connector. No IP/network control material is present in the refined source."
- "source describes acknowledgement frames but no unsolicited notifications."
- "source documents no multi-step sequences."

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