Summary
Sony BRAVIA Professional Displays (KDXH9096 series) Simple IP Control (SSIP) protocol. 24-byte fixed-length TCP frames on port 20060. Supports power, input, volume, mute, picture mute, scene setting, IR passthrough, and network info commands.
Transport
protocols:
- tcp
addressing:
port: 20060
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable
- routable
- queryable
- levelable
Actions
- id: set_ircc_code
label: Set IRCC Code (IR Passthrough)
kind: action
command: "*SCIRCC{ircc_code}################" # 24-byte frame: header *S, C, IRCC, 16-byte param (zero-padded + LF)
params:
- name: ircc_code
type: string
description: IR code as two ASCII hex digits (last two bytes of 16-byte param)
- id: set_power_status
label: Set Power Status
kind: action
command: "*SCPOWR000000000000000{state}" # 24-byte frame; last byte = 0 standby, 1 active
params:
- name: state
type: integer
enum: [0, 1]
description: "0 = Standby (Off), 1 = Active (On)"
- id: get_power_status
label: Get Power Status
kind: query
command: "*SEPOWR################" # 24-byte frame, Enquiry
params: []
- id: toggle_power_status
label: Toggle Power Status
kind: action
command: "*SCTPOW################" # 24-byte frame, Control
params: []
- id: set_audio_volume
label: Set Audio Volume
kind: action
command: "*SCVOLU{volume_padded}#" # 24-byte frame; volume in 16-byte param zero-padded decimal (e.g. 0000000000000029)
params:
- name: volume_padded
type: string
description: Volume value as 16-character zero-padded decimal ASCII
- id: get_audio_volume
label: Get Audio Volume
kind: query
command: "*SEVOLU################" # 24-byte frame, Enquiry
params: []
- id: set_audio_mute
label: Set Audio Mute
kind: action
command: "*SCAMUT000000000000000{state}" # last byte = 0 unmute, 1 mute
params:
- name: state
type: integer
enum: [0, 1]
description: "0 = Unmute, 1 = Mute"
- id: get_audio_mute
label: Get Audio Mute
kind: query
command: "*SEAMUT################" # 24-byte frame, Enquiry
params: []
- id: set_input
label: Set Input
kind: action
command: "*SCINPT00000000{kind}0000{number_padded}" # kind=1 HDMI, 3 Composite, 4 Component, 5 Screen Mirroring; number 1-9999
params:
- name: kind
type: integer
enum: [1, 3, 4, 5]
description: "1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring"
- name: number_padded
type: string
description: Input number 1-9999 as 4-character zero-padded decimal
- id: get_input
label: Get Current Input
kind: query
command: "*SEINPT################" # 24-byte frame, Enquiry
params: []
- id: set_picture_mute
label: Set Picture Mute
kind: action
command: "*SCPMUT000000000000000{state}" # last byte = 0 disable, 1 enable (black screen)
params:
- name: state
type: integer
enum: [0, 1]
description: "0 = Picture mute disabled, 1 = Picture mute enabled"
- id: get_picture_mute
label: Get Picture Mute Status
kind: query
command: "*SEPMUT################" # 24-byte frame, Enquiry
params: []
- id: toggle_picture_mute
label: Toggle Picture Mute
kind: action
command: "*SCTPMU################" # 24-byte frame, Control
params: []
- id: set_scene_setting
label: Set Scene Setting
kind: action
command: "*SCSCEN{scene_padded}#" # 16-byte param = case-sensitive scene string right-padded with '#'
params:
- name: scene
type: string
enum: [auto, auto24pSync, general]
description: Scene name; padded to 16 chars with '#'
- id: get_scene_setting
label: Get Scene Setting
kind: query
command: "*SESCEN################" # 24-byte frame, Enquiry
params: []
- id: get_broadcast_address
label: Get Broadcast IPv4 Address
kind: query
command: "*SEBADReth0##########" # 16-byte param: 'eth0' (interface name) right-padded with '#'
params: []
- id: get_mac_address
label: Get MAC Address
kind: query
command: "*SEMADReth0##########" # 16-byte param: 'eth0' (interface name) right-padded with '#'
params: []
Feedbacks
- id: power_state
type: enum
values: [off, on]
source: getPowerStatus answer param byte (0=off, 1=on)
- id: audio_volume
type: integer
source: getAudioVolume answer param bytes (16-char decimal)
- id: audio_mute_state
type: enum
values: [unmuted, muted]
source: getAudioMute answer param byte (0=unmuted, 1=muted)
- id: current_input
type: object
source: getInput answer param (kind + number)
- id: picture_mute_state
type: enum
values: [disabled, enabled]
source: getPictureMute answer param byte (0=disabled, 1=enabled)
- id: scene_setting
type: string
source: getSceneSetting answer param bytes (case-sensitive scene name)
- id: broadcast_address
type: string
source: getBroadcastAddress answer param bytes (IPv4 right-padded with '#')
- id: mac_address
type: string
source: getMacAddress answer param bytes (MAC right-padded with '#')
Variables
# No discrete settable parameters beyond those exposed as actions.
Events
- id: power_change
type: enum
values: [off, on]
source: firePowerChange notify frame (N type, POWR command, last byte 0=off, 1=on)
- id: input_change
type: object
source: fireInputChange notify frame (N type, INPT command, kind+number)
- id: volume_change
type: integer
source: fireVolumeChange notify frame (N type, VOLU command)
- id: mute_change
type: enum
values: [unmuted, muted]
source: fireMuteChange notify frame (N type, AMUT command, last byte 0=unmuted, 1=muted)
- id: picture_mute_change
type: enum
values: [enabled, disabled]
source: firePictureMuteChange notify frame (N type, PMUT command, last byte 0=enabled, 1=disabled)
Macros
# No multi-step sequences described in source.
Safety
confirmation_required_for: []
interlocks: []
# Source contains no safety warnings or interlock procedures.
Notes
Protocol frame layout: 2-byte header *S (0x2A 0x53), 1-byte message type (C/E/A/N), 4-byte FourCC command, 16-byte parameter (zero-padded ASCII), 1-byte footer LF (0x0A). Total 24 bytes.
Control messages require an Answer (A) reply. Enquiry messages require an Answer. Errors return 16 bytes of F in the parameter field.
EU area models: 3 RED-DA compliance specifications exist; settings and available commands differ per spec. See https://pro-bravia.sony.net/setup/device-settings/red-da/.
Required monitor settings: Settings → Network & Internet → Remote device settings → Control remotely; Settings → Network & Internet → Home network → IP control → Simple IP control.
Both wired and wireless LAN supported. SetIrccCode parameter bytes 7-21 must be 0, byte 22 carries the IR code (e.g. ...0000005 for Display, ...0000006 for Home, ...0000030 for Volume Up).
Spec output done. Next: wrap + ingest?
## Provenance
```yaml
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/structure/
- https://pro-bravia.sony.net/remote-display-control/rest-api/reference/
- https://pro-bravia.sony.net/remote-display-control/serial-control/command/
- https://pro-bravia.sony.net/setup/device-settings/red-da/
retrieved_at: 2026-06-12T04:43:25.495Z
last_checked_at: 2026-06-12T19:56:06.393Z
Verification Summary
verdict: verified
checked_at: 2026-06-12T19:56:06.393Z
matched_actions: 17
action_count: 17
confidence: medium
summary: "All 17 spec actions matched literally to source FourCC codes; transport verified; bidirectional coverage complete. (2 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source does not state model-specific firmware support or RED-DA spec compliance"
- "firmware version, RED-DA spec compliance per SKU, and any model-specific command restrictions not stated in source"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0