Summary
Simple IP control (SSIP) for Sony Bravia professional/consumer displays using fixed 24-byte TCP messages on port 20060. Spec covers power, input, audio volume/mute, picture mute, scene setting, IR-code passthrough, network info queries, and unsolicited notify events.
Transport
protocols:
- tcp
addressing:
port: 20060
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable
- routable
- queryable
- levelable
Actions
# Fixed 24-byte frame: 0x2A 0x53 | msgType(1) | fourCC(4) | params(16) | 0x0A
# msgType C=Control, E=Enquiry, A=Answer, N=Notify
- id: power_off
label: Power Off
kind: action
command: "*SCPOWR0000000000000000\n"
notes: msgType=0x43 'C', fourCC=POWR, param 16 ASCII '0's, footer 0x0A
- id: power_on
label: Power On
kind: action
command: "*SCPOWR0000000000000001\n"
- id: toggle_power
label: Toggle Power
kind: action
command: "*SCTPOW0000000000000000\n"
notes: msgType C, fourCC TPOW
- id: get_power
label: Get Power Status
kind: query
command: "*SEPOWR################\n"
- id: set_volume
label: Set Audio Volume
kind: action
command: "*SCVOLU00000000000000{XX}\n"
notes: param 16 bytes, right-padded '0', volume decimal (e.g. 29 → 0000000000000029)
params:
- name: volume
type: integer
description: Volume value, 16 ASCII decimal digits right-padded with '0'
- id: get_volume
label: Get Audio Volume
kind: query
command: "*SEVOLU################\n"
- id: mute_on
label: Mute On
kind: action
command: "*SCAMUT0000000000000001\n"
- id: mute_off
label: Mute Off
kind: action
command: "*SCAMUT0000000000000000\n"
- id: get_mute
label: Get Mute Status
kind: query
command: "*SEAMUT################\n"
- id: set_input_hdmi
label: Set Input HDMI
kind: action
command: "*SCINPT00000000010000{XXXX}\n"
notes: byte[12]=1 (HDMI), bytes[18-21]=HDMI number 1-9999 ASCII
params:
- name: hdmi_number
type: integer
description: HDMI input number 1-9999
- id: set_input_composite
label: Set Input Composite
kind: action
command: "*SCINPT00000000030000{XXXX}\n"
params:
- name: composite_number
type: integer
description: Composite input number 1-9999
- id: set_input_component
label: Set Input Component
kind: action
command: "*SCINPT00000000040000{XXXX}\n"
params:
- name: component_number
type: integer
description: Component input number 1-9999
- id: set_input_screen_mirroring
label: Set Input Screen Mirroring
kind: action
command: "*SCINPT00000000050000{XXXX}\n"
params:
- name: screen_mirroring_number
type: integer
description: Screen Mirroring input number 1-9999
- id: get_input
label: Get Current Input
kind: query
command: "*SEINPT################\n"
- id: set_picture_mute_on
label: Picture Mute On
kind: action
command: "*SCPMUT0000000000000001\n"
- id: set_picture_mute_off
label: Picture Mute Off
kind: action
command: "*SCPMUT0000000000000000\n"
- id: get_picture_mute
label: Get Picture Mute
kind: query
command: "*SEPMUT################\n"
- id: toggle_picture_mute
label: Toggle Picture Mute
kind: action
command: "*SCTPMU0000000000000000\n"
- id: set_scene
label: Set Scene Setting
kind: action
command: "*SCSCEN{string}########\n"
notes: 16-byte param, case-sensitive, right-padded '#'. Valid: auto, auto24pSync, general
params:
- name: scene
type: string
enum: [auto, auto24pSync, general]
- id: get_scene
label: Get Scene Setting
kind: query
command: "*SESCEN################\n"
- id: ir_command
label: Send IR Command
kind: action
command: "*SCIRCC00000000000000{HH}\n"
notes: 16-byte param, byte[21-22] = IR code hex from IR Commands table
params:
- name: ir_code
type: string
description: Two hex digits from IR Commands table (e.g. 05 Display, 09 Up, 30 VolUp, 32 Mute, 98 TV Power)
- id: get_broadcast_address
label: Get Broadcast Address
kind: query
command: "*SEBADREth0############\n"
notes: param starts with "eth0" then 11 pad bytes; answer echoes broadcast IPv4 right-padded '#'
- id: get_mac_address
label: Get MAC Address
kind: query
command: "*SEMADREth0############\n"
notes: param starts with "eth0"; answer echoes MAC right-padded '#'
Feedbacks
- id: power_state
type: enum
values: [off, on]
notes: Answer suffix byte[22]: '0'=Standby/Off, '1'=Active/On
- id: volume_value
type: integer
notes: Answer param bytes hold volume decimal
- id: mute_state
type: enum
values: [unmuted, muted]
notes: Answer suffix byte[22]: '0'=Not Muted, '1'=Muted
- id: input_state
type: enum
values: [hdmi, composite, component, screen_mirroring]
notes: Answer param byte[12]: 1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring
- id: picture_mute_state
type: enum
values: [disabled, enabled]
notes: Answer suffix byte[22]: '0'=Disabled, '1'=Enabled
- id: scene_value
type: string
notes: 16-byte answer param, case-sensitive scene name
- id: broadcast_address
type: string
notes: IPv4 dotted-quad in answer param
- id: mac_address
type: string
notes: MAC address in answer param
- id: command_result
type: enum
values: [success, error, not_found, not_available]
notes: '0...0' success, 'F...F' error, 'N...N' not found / not available
Events
- id: power_change
trigger: power state change
message: "*SNPOWR0000000000000000\n" # off
message_on: "*SNPOWR0000000000000001\n" # on
notes: msgType N, fourCC POWR
- id: input_change
trigger: input source change
message: "*SNINPT0000000000000000\n" # generic
notes: msgType N, fourCC INPT; byte[12] indicates source type
- id: volume_change
trigger: volume change
message: "*SNVOLU{16-byte value}\n"
notes: msgType N, fourCC VOLU
- id: mute_change
trigger: mute state change
message: "*SNAMUT0000000000000000\n" # unmuted
message_muted: "*SNAMUT0000000000000001\n"
- id: picture_mute_change
trigger: picture mute toggle
message: "*SNPMUT0000000000000000\n" # enabled
message_disabled: "*SNPMUT0000000000000001\n"
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlocks, or power-on sequencing requirements.
Notes
- Frame format: header 0x2A 0x53, msgType byte (C/E/A/N), fourCC 4 bytes, params 16 bytes, footer 0x0A. Total 24 bytes; all-non-ASCII text above shown as 24 ASCII characters for readability but real bytes follow this byte layout.
- 16-byte param fields: ASCII digits (volume) right-padded with '0'; scene strings right-padded with '#'; fixed-value C/E commands fill with '#'; interface params prefix with "eth0" + padding.
- EU region: 3 RED-DA compliance spec variants — command set may differ. See https://pro-bravia.sony.net/setup/device-settings/red-da/.
- IR Codes table maps remote buttons to two hex digits used as suffix in setIrccCode. List: Display 05, Home 06, Options 07, Return 08, Up 09, Down 10, Right 11, Left 12, Confirm 13, Red 14, Green 15, Yellow 16, Blue 17, Num1 18..Num0 27, VolUp 30, VolDown 31, Mute 32, ChUp 33, ChDown 34, Subtitle 35, DOT 38, Picture Off 50, Wide 61, Jump 62, SyncMenu 76, Forward 77, Play 78, Rewind 79, Prev 80, Stop 81, Next 82, Pause 84, FlashPlus 86, FlashMinus 87, TV Power 98, Audio 99, Input 101, Sleep 104, SleepTimer 105, Video2 108, PictureMode 110, DemoSurround 121, HDMI1 124, HDMI2 125, HDMI3 126, HDMI4 127, ActionMenu 129, Help 130.
- Transport framed over TCP, no auth, no encryption in source.
Provenance
source_domains:
- pro-bravia.sony.net
- helpguide.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://pro-bravia.sony.net/remote-display-control/ircc-ip/
- https://helpguide.sony.net/tv/naep3/v1/en/contents/TP1002006040.html
- "https://aca.im/driver_docs/Sony/sony%20bravia%20simple%20ip%20control.pdf"
retrieved_at: 2026-06-15T12:45:55.579Z
last_checked_at: 2026-06-16T07:19:51.227Z
Verification Summary
verdict: verified
checked_at: 2026-06-16T07:19:51.227Z
matched_actions: 23
action_count: 23
confidence: medium
summary: "All 23 spec actions verified against source command table with exact wire-token matches; transport port 20060 TCP confirmed; complete bidirectional coverage. (3 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "spec generated from pro-bravia.sony.net Simple IP control page; consumer KDXE8577 firmware/feature parity not explicitly confirmed in source."
- "source contains no safety warnings, interlocks, or power-on sequencing requirements."
- "no firmware version compatibility range stated; no error-recovery sequence beyond retry on 'F...F' answer."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0