Summary
The Sony XBR-X957 Series is a professional BRAVIA display. This spec covers the Simple IP control interface — Sony's SSIP proprietary TCP-based protocol on port 20060 using fixed 24-byte framed messages with Four-CC commands for power, input, volume, mute, picture mute, scene setting, and network info.
Transport
protocols:
- tcp
addressing:
port: 20060
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable # inferred from setPowerStatus, getPowerStatus, togglePowerStatus
- routable # inferred from setInput, getInput
- queryable # inferred from getPowerStatus, getInput, getAudioVolume, getAudioMute, getPictureMute, getSceneSetting, getBroadcastAddress, getMacAddress
- levelable # inferred from setAudioVolume, getAudioVolume
Actions
# Simple IP control uses 24-byte fixed frames: header 0x2A 0x53, type byte (C/E/A/N),
# Four-CC command (bytes 3-6), 16-byte parameters (bytes 7-22), footer 0x0A.
# All commands below use type 'C' (Control) unless noted. Enquiry commands use 'E'.
- id: set_ircc_code
label: Send IR Remote Code
kind: action
command: "*SCIRCC{code:016d}#" # UNRESOLVED: parameter is the IR code value padded per IR table
params:
- name: code
type: string
description: IR code value (hex digit pair from IR Commands table, left-padded with 0s, right-padded with # to 16 chars)
- id: set_power_status
label: Set Power Status
kind: action
command: "*SCPOWR000000000000000{state}" # state: 0=Standby, 1=Active
params:
- name: state
type: integer
description: 0 for Standby (Off), 1 for Active (On)
- id: get_power_status
label: Get Power Status
kind: query
command: "*SEPOWR################" # 24 bytes, Four-CC POWR, type E
params: []
- id: toggle_power_status
label: Toggle Power Status
kind: action
command: "*SCTPOW################"
params: []
- id: set_audio_volume
label: Set Audio Volume
kind: action
command: "*SCVOLU{level:016d}" # volume value left-padded with 0s, e.g. 0000000000000029
params:
- name: level
type: integer
description: Volume value (left-padded with 0s to 16 chars, e.g. 41 = 0000000000000029)
- id: get_audio_volume
label: Get Audio Volume
kind: query
command: "*SEVOLU################"
params: []
- id: set_audio_mute
label: Set Audio Mute
kind: action
command: "*SCAMUT000000000000000{state}" # state: 0=Unmute, 1=Mute
params:
- name: state
type: integer
description: 0 for Unmute, 1 for Mute
- id: get_audio_mute
label: Get Audio Mute Status
kind: query
command: "*SEAMUT################"
params: []
- id: set_input
label: Set Input
kind: action
command: "*SCINPT0000000000{source_type:01d}000{port:04d}"
params:
- name: source_type
type: integer
description: 1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring
- name: port
type: integer
description: Port number 1-9999
- id: get_input
label: Get Current Input
kind: query
command: "*SEINPT################"
params: []
- id: set_picture_mute
label: Set Picture Mute
kind: action
command: "*SCPMUT000000000000000{state}" # state: 0=Disabled, 1=Enabled (screen black)
params:
- name: state
type: integer
description: 0 for Disabled (picture mute off), 1 for Enabled (screen black)
- id: get_picture_mute
label: Get Picture Mute Status
kind: query
command: "*SEPMUT################"
params: []
- id: toggle_picture_mute
label: Toggle Picture Mute
kind: action
command: "*SCTPMU################"
params: []
- id: set_scene_setting
label: Set Scene Setting
kind: action
command: "*SCSCEN{value:16s}" # value right-padded with '#', case-sensitive; values: auto, auto24pSync, general
params:
- name: value
type: string
description: Scene name (auto, auto24pSync, general); case-sensitive, right-padded with '#' to 16 chars
- id: get_scene_setting
label: Get Scene Setting
kind: query
command: "*SESCEN################"
params: []
- id: get_broadcast_address
label: Get Broadcast Address
kind: query
command: "*SEBADR{interface:4s}############" # interface (e.g. 'eth0') padded to 4 chars then #s
params:
- name: interface
type: string
description: Network interface name (e.g. eth0)
- id: get_mac_address
label: Get MAC Address
kind: query
command: "*SEMADR{interface:4s}############"
params:
- name: interface
type: string
description: Network interface name (e.g. eth0)
Feedbacks
- id: power_state
type: enum
values: [standby, active]
source: get_power_status answer (POWR ... 0 = standby, 1 = active)
- id: audio_mute_state
type: enum
values: [unmuted, muted]
source: get_audio_mute answer (AMUT ... 0 = unmuted, 1 = muted)
- id: audio_volume
type: integer
source: get_audio_volume answer (VOLU ... 16-digit zero-padded volume value)
- id: picture_mute_state
type: enum
values: [disabled, enabled]
source: get_picture_mute answer (PMUT ... 0 = disabled, 1 = enabled)
- id: current_input
type: object
source: get_input answer (INPT ... source_type byte: 1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring; port 1-9999)
- id: scene_setting
type: string
source: get_scene_setting answer (SCEN ... 16-char value, right-padded with '#')
Variables
# UNRESOLVED: no settable variables documented in source beyond the action parameters above
Events
- id: power_change
source: firePowerChange (N POWR ... 0=powering off, 1=powering on)
- id: input_change
source: fireInputChange (N INPT ... source_type + port)
- id: volume_change
source: fireVolumeChange (N VOLU ... 16-digit zero-padded new volume)
- id: mute_change
source: fireMuteChange (N AMUT ... 0=unmuting, 1=muting)
- id: picture_mute_change
source: firePictureMuteChange (N PMUT ... 0=enabled, 1=disabled)
Macros
# UNRESOLVED: no multi-step sequences described in source
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings, interlock procedures, or power-on sequencing
# requirements stated in source.
Notes
- All Simple IP control messages are 24 bytes: header
0x2A 0x53("*S"), message type byte (C/E/A/N), Four-CC command (bytes 3-6), 16-byte parameters, footer0x0A(LF). - Sample power-off request frame from source:
*SCPOWR0000000000000000(24 bytes, includes trailing LF). - Sample power-off response from source:
*SAPOWR0000000000000000 *SNPOWR0000000000000000— SAPOWR accepts the command, SNPOWR reports current power status. - For setInput/setAudioVolume, parameters are zero-padded ASCII decimal digits; for setSceneSetting, parameters are right-padded with
#; for getBroadcastAddress/getMacAddress, the interface name is padded to 4 chars then#s. - EU area models have 3 RED-DA compliance variants — settings and available commands differ per specification. See https://pro-bravia.sony.net/setup/device-settings/red-da/ for details.
- IR codes via setIrccCode mirror the remote controller; see IR Commands table for the 50+ supported codes (Display, Home, Options, navigation, color keys, numeric, volume, channel, transport, etc.).
Provenance
source_domains:
- pro-bravia.sony.net
- aca.im
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://aca.im/driver_docs/Sony/sony%20bravia%20simple%20ip%20control.pdf"
- https://pro-bravia.sony.net/remote-display-control/
retrieved_at: 2026-06-09T03:13:42.349Z
last_checked_at: 2026-06-09T07:24:25.799Z
Verification Summary
verdict: verified
checked_at: 2026-06-09T07:24:25.799Z
matched_actions: 17
action_count: 17
confidence: medium
summary: "All 17 spec actions matched exactly to source Four-CC codes; transport parameters verified; bidirectional coverage complete. (7 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "EU models have 3 RED-DA compliance variants; per-variant command availability not stated in source."
- "parameter is the IR code value padded per IR table"
- "no settable variables documented in source beyond the action parameters above"
- "no multi-step sequences described in source"
- "no safety warnings, interlock procedures, or power-on sequencing"
- "firmware version compatibility not stated in source."
- "per-RED-DA-variant command availability not stated in source."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0