Summary
Sony BRAVIA Simple IP Control (SSIP) over TCP/IP for the KDX8066 series displays. Uses 24-byte fixed-size message frames on TCP port 20060 with FourCC opcodes for power, input, volume, mute, picture mute, scene, IR pass-through, and unsolicited state notifications.
Transport
protocols:
- tcp
addressing:
port: 20060
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable # inferred from setPowerStatus/togglePowerStatus commands
- routable # inferred from setInput commands across HDMI/Composite/Component/Screen Mirroring
- queryable # inferred from getPowerStatus/getAudioVolume/getAudioMute/getInput/getPictureMute/getSceneSetting/getBroadcastAddress/getMacAddress
- levelable # inferred from setAudioVolume command
Actions
# Protocol note: every command literal below is the ASCII content of a 24-byte
# fixed-length frame: header "*S" (0x2A 0x53) + 1-byte message type
# (C=Control, E=Enquiry, A=Answer, N=Notify) + 4-byte FourCC + 16-byte
# parameter + footer 0x0A (LF). The trailing LF is omitted from the
# `command` strings for readability - implementations MUST append 0x0A.
# ---------- Power ----------
- id: set_power_on
label: Set Power On
kind: action
command: "*SCPOWR0000000000000001"
params: []
- id: set_power_off
label: Set Power Off (Standby)
kind: action
command: "*SCPOWR0000000000000000"
params: []
- id: toggle_power
label: Toggle Power
kind: action
command: "*SCTPOW################"
params: []
- id: get_power_status
label: Power Status Query
kind: query
command: "*SEPOWR################"
params: []
# ---------- Audio Volume ----------
- id: set_audio_volume
label: Set Audio Volume
kind: action
command: "*SCVOLU{level}"
params:
- name: level
type: string
description: "Volume value as decimal digits, left-padded with '0' to 16 characters. Example: 29 -> 0000000000000029."
- id: get_audio_volume
label: Audio Volume Query
kind: query
command: "*SEVOLU################"
params: []
# ---------- Audio Mute ----------
- id: set_audio_mute_on
label: Mute Audio
kind: action
command: "*SCAMUT0000000000000001"
params: []
- id: set_audio_mute_off
label: Unmute Audio
kind: action
command: "*SCAMUT0000000000000000"
params: []
- id: get_audio_mute
label: Audio Mute Query
kind: query
command: "*SEAMUT################"
params: []
# ---------- Input Selection ----------
- id: set_input_hdmi
label: Select HDMI Input
kind: action
command: "*SCINPT00000001{index}"
params:
- name: index
type: string
description: "HDMI input index 0001-9999, 4-character zero-padded decimal."
- id: set_input_composite
label: Select Composite Input
kind: action
command: "*SCINPT00000003{index}"
params:
- name: index
type: string
description: "Composite input index 0001-9999, 4-character zero-padded decimal."
- id: set_input_component
label: Select Component Input
kind: action
command: "*SCINPT00000004{index}"
params:
- name: index
type: string
description: "Component input index 0001-9999, 4-character zero-padded decimal."
- id: set_input_screen_mirroring
label: Select Screen Mirroring Input
kind: action
command: "*SCINPT00000005{index}"
params:
- name: index
type: string
description: "Screen Mirroring input index 0001-9999, 4-character zero-padded decimal."
- id: get_input
label: Current Input Query
kind: query
command: "*SEINPT################"
params: []
# ---------- Picture Mute ----------
- id: set_picture_mute_on
label: Enable Picture Mute (Screen Black)
kind: action
command: "*SCPMUT0000000000000001"
params: []
- id: set_picture_mute_off
label: Disable Picture Mute
kind: action
command: "*SCPMUT0000000000000000"
params: []
- id: toggle_picture_mute
label: Toggle Picture Mute
kind: action
command: "*SCTPMU################"
params: []
- id: get_picture_mute
label: Picture Mute Query
kind: query
command: "*SEPMUT################"
params: []
# ---------- Scene Setting ----------
- id: set_scene_setting
label: Set Scene Setting
kind: action
command: "*SCSCEN{scene}"
params:
- name: scene
type: enum
values: [auto, auto24pSync, general]
description: "Scene name (case-sensitive), right-padded with '#' to 16 characters. Example: auto24pSync#####."
- id: get_scene_setting
label: Scene Setting Query
kind: query
command: "*SESCEN################"
params: []
# ---------- Network Information ----------
- id: get_broadcast_address
label: Broadcast IPv4 Address Query
kind: query
command: "*SEBADReth0############"
params:
- name: interface
type: string
description: "Network interface name, right-padded with '#' to fill 16-byte parameter. Source documents 'eth0'."
- id: get_mac_address
label: MAC Address Query
kind: query
command: "*SEMADReth0############"
params:
- name: interface
type: string
description: "Network interface name, right-padded with '#' to fill 16-byte parameter. Source documents 'eth0'."
# ---------- IR Code Pass-Through (setIrccCode) ----------
# Each entry below is one named IR code documented in the source's "IR Commands"
# sub-table, sent via the IRCC FourCC opcode with a distinct 16-digit code value.
- id: ir_display
label: "IR: Display"
kind: action
command: "*SCIRCC0000000000000005"
params: []
- id: ir_home
label: "IR: Home"
kind: action
command: "*SCIRCC0000000000000006"
params: []
- id: ir_options
label: "IR: Options"
kind: action
command: "*SCIRCC0000000000000007"
params: []
- id: ir_return
label: "IR: Return"
kind: action
command: "*SCIRCC0000000000000008"
params: []
- id: ir_up
label: "IR: Up"
kind: action
command: "*SCIRCC0000000000000009"
params: []
- id: ir_down
label: "IR: Down"
kind: action
command: "*SCIRCC0000000000000010"
params: []
- id: ir_right
label: "IR: Right"
kind: action
command: "*SCIRCC0000000000000011"
params: []
- id: ir_left
label: "IR: Left"
kind: action
command: "*SCIRCC0000000000000012"
params: []
- id: ir_confirm
label: "IR: Confirm"
kind: action
command: "*SCIRCC0000000000000013"
params: []
- id: ir_red
label: "IR: Red"
kind: action
command: "*SCIRCC0000000000000014"
params: []
- id: ir_green
label: "IR: Green"
kind: action
command: "*SCIRCC0000000000000015"
params: []
- id: ir_yellow
label: "IR: Yellow"
kind: action
command: "*SCIRCC0000000000000016"
params: []
- id: ir_blue
label: "IR: Blue"
kind: action
command: "*SCIRCC0000000000000017"
params: []
- id: ir_num1
label: "IR: Num1"
kind: action
command: "*SCIRCC0000000000000018"
params: []
- id: ir_num2
label: "IR: Num2"
kind: action
command: "*SCIRCC0000000000000019"
params: []
- id: ir_num3
label: "IR: Num3"
kind: action
command: "*SCIRCC0000000000000020"
params: []
- id: ir_num4
label: "IR: Num4"
kind: action
command: "*SCIRCC0000000000000021"
params: []
- id: ir_num5
label: "IR: Num5"
kind: action
command: "*SCIRCC0000000000000022"
params: []
- id: ir_num6
label: "IR: Num6"
kind: action
command: "*SCIRCC0000000000000023"
params: []
- id: ir_num7
label: "IR: Num7"
kind: action
command: "*SCIRCC0000000000000024"
params: []
- id: ir_num8
label: "IR: Num8"
kind: action
command: "*SCIRCC0000000000000025"
params: []
- id: ir_num9
label: "IR: Num9"
kind: action
command: "*SCIRCC0000000000000026"
params: []
- id: ir_num0
label: "IR: Num0"
kind: action
command: "*SCIRCC0000000000000027"
params: []
- id: ir_volume_up
label: "IR: Volume Up"
kind: action
command: "*SCIRCC0000000000000030"
params: []
- id: ir_volume_down
label: "IR: Volume Down"
kind: action
command: "*SCIRCC0000000000000031"
params: []
- id: ir_mute
label: "IR: Mute"
kind: action
command: "*SCIRCC0000000000000032"
params: []
- id: ir_channel_up
label: "IR: Channel Up"
kind: action
command: "*SCIRCC0000000000000033"
params: []
- id: ir_channel_down
label: "IR: Channel Down"
kind: action
command: "*SCIRCC0000000000000034"
params: []
- id: ir_subtitle
label: "IR: Subtitle"
kind: action
command: "*SCIRCC0000000000000035"
params: []
- id: ir_dot
label: "IR: DOT"
kind: action
command: "*SCIRCC0000000000000038"
params: []
- id: ir_picture_off
label: "IR: Picture Off"
kind: action
command: "*SCIRCC0000000000000050"
params: []
- id: ir_wide
label: "IR: Wide"
kind: action
command: "*SCIRCC0000000000000061"
params: []
- id: ir_jump
label: "IR: Jump"
kind: action
command: "*SCIRCC0000000000000062"
params: []
- id: ir_sync_menu
label: "IR: Sync Menu"
kind: action
command: "*SCIRCC0000000000000076"
params: []
- id: ir_forward
label: "IR: Forward"
kind: action
command: "*SCIRCC0000000000000077"
params: []
- id: ir_play
label: "IR: Play"
kind: action
command: "*SCIRCC0000000000000078"
params: []
- id: ir_rewind
label: "IR: Rewind"
kind: action
command: "*SCIRCC0000000000000079"
params: []
- id: ir_prev
label: "IR: Prev"
kind: action
command: "*SCIRCC0000000000000080"
params: []
- id: ir_stop
label: "IR: Stop"
kind: action
command: "*SCIRCC0000000000000081"
params: []
- id: ir_next
label: "IR: Next"
kind: action
command: "*SCIRCC0000000000000082"
params: []
- id: ir_pause
label: "IR: Pause"
kind: action
command: "*SCIRCC0000000000000084"
params: []
- id: ir_flash_plus
label: "IR: Flash Plus"
kind: action
command: "*SCIRCC0000000000000086"
params: []
- id: ir_flash_minus
label: "IR: Flash Minus"
kind: action
command: "*SCIRCC0000000000000087"
params: []
- id: ir_tv_power
label: "IR: TV Power"
kind: action
command: "*SCIRCC0000000000000098"
params: []
- id: ir_audio
label: "IR: Audio"
kind: action
command: "*SCIRCC0000000000000099"
params: []
- id: ir_input
label: "IR: Input"
kind: action
command: "*SCIRCC0000000000000101"
params: []
- id: ir_sleep
label: "IR: Sleep"
kind: action
command: "*SCIRCC0000000000000104"
params: []
- id: ir_sleep_timer
label: "IR: Sleep Timer"
kind: action
command: "*SCIRCC0000000000000105"
params: []
- id: ir_video_2
label: "IR: Video 2"
kind: action
command: "*SCIRCC0000000000000108"
params: []
- id: ir_picture_mode
label: "IR: Picture Mode"
kind: action
command: "*SCIRCC0000000000000110"
params: []
- id: ir_demo_surround
label: "IR: Demo Surround"
kind: action
command: "*SCIRCC0000000000000121"
params: []
- id: ir_hdmi_1
label: "IR: HDMI 1"
kind: action
command: "*SCIRCC0000000000000124"
params: []
- id: ir_hdmi_2
label: "IR: HDMI 2"
kind: action
command: "*SCIRCC0000000000000125"
params: []
- id: ir_hdmi_3
label: "IR: HDMI 3"
kind: action
command: "*SCIRCC0000000000000126"
params: []
- id: ir_hdmi_4
label: "IR: HDMI 4"
kind: action
command: "*SCIRCC0000000000000127"
params: []
- id: ir_action_menu
label: "IR: Action Menu"
kind: action
command: "*SCIRCC0000000000000129"
params: []
- id: ir_help
label: "IR: Help"
kind: action
command: "*SCIRCC0000000000000130"
params: []
Feedbacks
- id: power_state
type: enum
values: [off, on]
description: "0000000000000000 = Standby (Off); 0000000000000001 = Active (On). Returned in Answer to getPowerStatus and in firePowerChange notify."
- id: audio_volume
type: integer
description: "Volume value in 16-character zero-left-padded decimal returned in Answer to getAudioVolume. Source does not state numeric range."
# UNRESOLVED: numeric volume range not stated in source
- id: audio_mute_state
type: enum
values: [not_muted, muted]
description: "0000000000000000 = Not Muted; 0000000000000001 = Muted. Returned in Answer to getAudioMute and in fireMuteChange notify."
- id: current_input
type: object
description: "Returned in Answer to getInput and in fireInputChange notify. Encoded as 8-character input-type code + 4-byte zero-pad + 4-character input index. Type codes: 00000001=HDMI, 00000003=Composite, 00000004=Component, 00000005=Screen Mirroring. Index range 1-9999."
- id: picture_mute_state
type: enum
values: [disabled, enabled]
description: "0000000000000000 = Picture mute disabled; 0000000000000001 = Picture mute enabled. Returned in Answer to getPictureMute and in firePictureMuteChange notify."
- id: scene_setting
type: string
description: "Scene name returned in Answer to getSceneSetting (16-character parameter, right-padded with '#'). Documented values: auto, auto24pSync, general."
- id: broadcast_address
type: string
description: "IPv4 broadcast address returned in Answer to getBroadcastAddress, right-padded with '#' to 16 characters. Example: 192.168.0.14####."
- id: mac_address
type: string
description: "MAC address returned in Answer to getMacAddress, right-padded with '#' to 16 characters."
- id: ack
type: enum
values: [success, error, not_found, not_available]
description: "Answer payload: 0000000000000000 = Success; FFFFFFFFFFFFFFFF = Error (invalid parameter); NNNNNNNNNNNNNNNN = Not Found (only for setInput) or Not Available for current input (only for SCEN)."
Variables
# UNRESOLVED: source does not define settable parameters outside the discrete
# action set above; volume/input/mute/scene state is mutated only via the
# corresponding set/get/toggle actions, so no separate Variables entries apply.
Events
# Unsolicited Notify messages (message type 0x4E [N]) emitted by the monitor.
- id: power_change
label: Power State Change Notification
command_prefix: "*SNPOWR"
description: "Emitted on power transition. Parameter 0000000000000000 = sent when powering off; 0000000000000001 = sent when powering on."
- id: input_change
label: Input Change Notification
command_prefix: "*SNINPT"
description: "Emitted when the monitor's input changes. Parameter encodes input type + index using the same encoding as setInput: 00000001/00000003/00000004/00000005 for HDMI/Composite/Component/Screen Mirroring respectively, then 4-byte zero-pad + 4-digit input number."
- id: volume_change
label: Volume Change Notification
command_prefix: "*SNVOLU"
description: "Emitted when audio volume changes. Parameter carries the new volume value as 16-character zero-left-padded decimal."
- id: mute_change
label: Audio Mute Change Notification
command_prefix: "*SNAMUT"
description: "Emitted on audio mute toggle. Parameter 0000000000000000 = sent when unmuting; 0000000000000001 = sent when muting."
- id: picture_mute_change
label: Picture Mute Change Notification
command_prefix: "*SNPMUT"
description: "Emitted on picture mute toggle. Source rows: 0000000000000000 = 'Sent when picture mute is enabled'; 0000000000000001 = 'Sent when picture mute is disabled' (transcribed verbatim from source - direction of these two labels is as written in the table)."
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 for the Simple IP Control interface.
Notes
- All Simple IP Control frames are fixed-length 24 bytes: header
*S(0x2A 0x53), 1-byte message type (CControl /EEnquiry /AAnswer /NNotify), 4-byte ASCII FourCC opcode, 16-byte ASCII parameter, footer 0x0A (LF). Implementations MUST append the LF byte that thecommandstrings above omit for readability. - Parameter padding rules from the source: numeric values are left-padded with
0(e.g. volume29->0000000000000029); text/enum values are right-padded with#(e.g.auto24pSync#####,eth0############); query enquiries use 16#characters for the empty parameter. - Answer payload conventions:
0000000000000000= success / state value;FFFFFFFFFFFFFFFF= error;NNNNNNNNNNNNNNNN= "Not Found" (returned by setInput when the indexed source is absent) or "Not Available for the current input" (returned by SCEN). - Required monitor settings before control will succeed (per source): [Settings] -> [Network & Internet] -> [Remote device settings] -> [Control remotely] = enabled; and [Settings] -> [Network & Internet] -> [Home network] -> [IP control] -> [Simple IP control] = enabled. Without these, the monitor will not respond on TCP 20060.
- EU-area models follow RED-DA compliance and may expose a reduced command set per the source's "EU models Note" — the spec above does not model this restriction.
- Source documents
getBroadcastAddressandgetMacAddresswith the interface parametereth0; other interface identifiers are not documented. - The KDX8066 model identifiers (KD-49X8066D, KD-55X8066E) are carried from the operator-supplied family bootstrap; the source itself documents the protocol generically across BRAVIA Professional Displays.
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/rest-api/reference/
- https://pro-bravia.sony.net/
retrieved_at: 2026-05-26T19:50:47.130Z
last_checked_at: 2026-06-02T06:13:10.911Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T06:13:10.911Z
matched_actions: 79
action_count: 79
confidence: medium
summary: "All 79 spec actions matched verbatim to source; transport (TCP 20060, no auth) verified; 45 IR codes fully enumerated. (6 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "KDX8066 series model identifiers (KD-49X8066D, KD-55X8066E) are not explicitly named in the source; the source documents the generic BRAVIA Professional Displays Simple IP Control protocol which is shared across the BRAVIA TV family. EU-area RED-DA-compliant variants may restrict the available command set."
- "numeric volume range not stated in source"
- "source does not define settable parameters outside the discrete"
- "source documents no multi-step macro sequences."
- "source contains no safety warnings, interlock procedures, or"
- "firmware version compatibility; numeric range for audio volume; behavior on dropped/partial frames; max simultaneous client connections to TCP 20060; KDX8066-series-specific deviations (if any) from the generic BRAVIA Simple IP Control protocol; whether RED-DA reduced command set applies to KDX8066 EU SKUs."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0