Summary
The Sony KEA89 series is a line of BRAVIA Professional Displays. This spec covers Sony's "Simple IP Control" protocol (SSIP), a proprietary TCP-based control interface intended for developers integrating with CIS and commercial AV control systems. Every command and response is a fixed 24-byte ASCII frame.
Transport
protocols:
- tcp
addressing:
port: 20060
auth:
type: none # inferred: no auth procedure in source
Traits
powerable: true # setPowerStatus / getPowerStatus / togglePowerStatus / firePowerChange
levelable: true # setAudioVolume / getAudioVolume / fireVolumeChange
queryable: true # get* commands
routable: true # setInput / getInput / fireInputChange (HDMI, Composite, Component, Screen Mirroring)
Actions
# Every message is a 24-byte ASCII frame:
# byte[0-1] header "*S" (0x2A 0x53, fixed)
# byte[2] type "C" "E" "A" "N" (Control / Enquiry / Answer / Notify)
# byte[3-6] FourCC e.g. "POWR"
# byte[7-22] params 16 bytes; numeric params pad with "0", strings pad with "#"
# byte[23] footer "\n" (0x0A, fixed)
# The command strings below are the literal 24-byte payload (header + body + footer).
- id: set_ircc_code
label: Send IR Remote Code
kind: action
command: "*SCIRCC{ircc_param}\n"
params:
- name: ircc_param
type: string
description: 16 ASCII decimal digits (left-padded with "0"); see IR Commands table for code values.
- id: set_power_status
label: Set Power Status
kind: action
command: "*SCPOWR000000000000000{state}\n"
params:
- name: state
type: string
enum: ["0", "1"]
description: 0 = Standby (Off), 1 = Active (On). Sits in the last parameter byte.
- id: get_power_status
label: Get Power Status
kind: query
command: "*SEPOWR################\n"
- id: toggle_power_status
label: Toggle Power Status
kind: action
command: "*SCTPOW################\n"
- id: set_audio_volume
label: Set Audio Volume
kind: action
command: "*SCVOLU{volume}\n"
params:
- name: volume
type: string
description: Volume as 16 ASCII decimal digits, left-padded with "0" (e.g. 29 -> "0000000000000029"). Maximum value not stated in source.
- id: get_audio_volume
label: Get Audio Volume
kind: query
command: "*SEVOLU################\n"
- id: set_audio_mute
label: Set Audio Mute
kind: action
command: "*SCAMUT000000000000000{state}\n"
params:
- name: state
type: string
enum: ["0", "1"]
description: 0 = Unmute, 1 = Mute. Sits in the last parameter byte.
- id: get_audio_mute
label: Get Audio Mute
kind: query
command: "*SEAMUT################\n"
- id: set_input
label: Set Input
kind: action
command: "*SCINPT0000000{type}0000{input_number}\n"
params:
- name: type
type: string
enum: ["1", "3", "4", "5"]
description: 1 = HDMI, 3 = Composite, 4 = Component, 5 = Screen Mirroring (per source). Single ASCII digit.
- name: input_number
type: string
description: 4 ASCII decimal digits, left-padded with "0"; source range 1-9999.
- id: get_input
label: Get Current Input
kind: query
command: "*SEINPT################\n"
- id: set_picture_mute
label: Set Picture Mute
kind: action
command: "*SCPMUT000000000000000{state}\n"
params:
- name: state
type: string
enum: ["0", "1"]
description: 0 = Disabled (picture mute off), 1 = Enabled (screen black). Sits in the last parameter byte.
- id: get_picture_mute
label: Get Picture Mute
kind: query
command: "*SEPMUT################\n"
- id: toggle_picture_mute
label: Toggle Picture Mute
kind: action
command: "*SCTPMU################\n"
- id: set_scene_setting
label: Set Scene Setting
kind: action
command: "*SCSCEN{scene_padded}\n"
params:
- name: scene_padded
type: string
description: 16-byte case-sensitive string right-padded with "#". Allowed values: "auto", "auto24pSync", "general" (e.g. "auto24pSync#####").
- id: get_scene_setting
label: Get Scene Setting
kind: query
command: "*SESCEN################\n"
- id: get_broadcast_address
label: Get Broadcast Address (eth0)
kind: query
command: "*SEBADREth0############\n"
notes: 'eth0' literal ASCII then 12 '#' padding bytes. EU-area models only (per source footnote).
- id: get_mac_address
label: Get MAC Address (eth0)
kind: query
command: "*SEMADREth0############\n"
notes: 'eth0' literal ASCII then 12 '#' padding bytes. EU-area models only (per source footnote).
Feedbacks
- id: power_state
type: enum
values: [off, on]
notes: From getPowerStatus answer (0 = Standby, 1 = Active) or firePowerChange notification.
- id: audio_mute
type: enum
values: [unmuted, muted]
notes: From getAudioMute answer (0 = Not Muted, 1 = Muted) or fireMuteChange.
- id: picture_mute
type: enum
values: [off, on]
notes: From getPictureMute answer (0 = Disabled, 1 = Enabled).
- id: current_input
type: object
description: |
Composite of (type, number) from getInput / fireInputChange.
type: hdmi (1) | composite (3) | component (4) | screen_mirroring (5)
number: 1-9999
- id: scene_setting
type: enum
values: [auto, auto24pSync, general]
notes: From getSceneSetting answer; strings are case-sensitive.
- id: broadcast_address
type: string
description: IPv4 broadcast address (e.g. "192.168.0.14") from getBroadcastAddress answer. EU models only.
- id: mac_address
type: string
description: MAC address from getMacAddress answer. EU models only.
- id: volume
type: integer
description: Audio volume. Minimum 0; maximum not stated in source (example given: 29). # UNRESOLVED: max volume value not stated
Variables
- id: volume
type: integer
description: Audio volume. Minimum 0; maximum not stated in source. # UNRESOLVED: max volume value not stated
set_action: set_audio_volume
get_action: get_audio_volume
Events
- id: fire_power_change
type: notification
fourcc: POWR
description: "Sent by monitor on power state change. Param last byte: 0 = powering off, 1 = powering on."
- id: fire_input_change
type: notification
fourcc: INPT
description: "Sent by monitor on input change. Param format mirrors getInput (type marker + 4-digit number)."
- id: fire_volume_change
type: notification
fourcc: VOLU
description: "Sent by monitor on volume change. Param is the new volume value (16 ASCII decimal digits)."
- id: fire_mute_change
type: notification
fourcc: AMUT
description: "Sent by monitor on audio mute change. Param last byte: 0 = unmuting, 1 = muting."
- id: fire_picture_mute_change
type: notification
fourcc: PMUT
description: "Sent by monitor on picture mute change. Param last byte: 0 = enabling, 1 = disabling."
Macros
# UNRESOLVED: source does not describe multi-step sequences.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures in source.
Notes
- Every frame is 24 ASCII bytes:
*Sheader + msg type + FourCC + 16-byte params +\nfooter. Header and footer are fixed; only msg type, FourCC, and 16-byte param field vary. - Parameter padding: numeric params right-pad (or, for
setAudioVolume, left-pad) with ASCII0; string params right-pad with#(0x23). Enquiry (E) commands use#padding throughout the param area since they carry no value. - Message types:
C(Control) client→monitor,E(Enquiry) client→monitor,A(Answer) monitor→client,N(Notify) monitor→client for unsolicited state changes. - The
setIrccCodecommand forwards consumer remote-control key codes (HDMI 1-4, Volume Up/Down, Mute, Channel Up/Down, Play/Pause/Stop, etc.). The source enumerates 30+ IR codes by 16-digit param value. getBroadcastAddressandgetMacAddressare marked EU-models-only in the source. EU-area models have 3 RED-DA specification tiers; available commands differ per tier (see https://pro-bravia.sony.net/setup/device-settings/red-da/).- The toggle variants use distinct FourCCs:
TPOW(toggle power) andTPMU(toggle picture mute), not the basePOWR/PMUTmnemonics with no params.
Provenance
source_domains:
- pro-bravia.sony.net
source_urls:
- https://pro-bravia.sony.net/remote-display-control/simple-ip-control/
- https://pro-bravia.sony.net/remote-display-control/serial-control/command/
- https://pro-bravia.sony.net/remote-display-control/serial-control/
- https://pro-bravia.sony.net/remote-display-control/rest-api/
- https://pro-bravia.sony.net/remote-display-control/rest-api/reference/
retrieved_at: 2026-06-02T06:52:25.672Z
last_checked_at: 2026-05-31T22:41:23.905Z
Verification Summary
verdict: verified
checked_at: 2026-05-31T22:41:23.905Z
matched_actions: 17
action_count: 17
confidence: medium
summary: "All 17 spec actions matched to source FourCC codes; transport port 20060 verified; one-to-one coverage of complete command catalogue. (5 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source describes Simple IP Control for BRAVIA Professional Displays generally, not the KEA89 model specifically. Spec is family-level until per-model confirmation. EU-area models have 3 RED-DA specification tiers; available commands differ per tier."
- "max volume value not stated"
- "source does not describe multi-step sequences."
- "no safety warnings or interlock procedures in source."
- "- Source does not name the KEA89 model family explicitly; spec is family-level for BRAVIA Pro Displays until per-model confirmation."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0