Summary
This spec covers Sony's "Simple IP Control" protocol (SSIP-based) for the KDX8005 Series professional BRAVIA displays. Communication is over TCP on port 20060 using 24-byte fixed-length messages composed of a 2-byte header, 1-byte message type, 4-byte FourCC command, 16-byte parameter, and 1-byte footer. The protocol supports power, input, volume, mute, picture-mute, scene setting, IR code relay, and basic network-info queries, plus unsolicited Notify messages.
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
- id: set_ircc_code
label: Set IR CC Code (setIrccCode)
kind: action
command: "*SCIRCC{ircc_code_padded_to_16_chars}"
notes: "Header 0x2A 0x53, type 'C', FourCC IRCC, parameter is the IR command code right-padded to 16 ASCII bytes with '0', footer 0x0A. Use one of the documented IR codes from the IR table."
params:
- name: ircc_code
type: string
description: "16-byte ASCII parameter; e.g. '0000000000000009' for Up."
- id: set_power_status_standby
label: Set Power Status - Standby
kind: action
command: "*SCPOWR0000000000000000"
notes: "24 bytes. 'C' type, POWR FourCC, parameter 16 ASCII '0' chars."
- id: set_power_status_active
label: Set Power Status - Active
kind: action
command: "*SCPOWR0000000000000001"
notes: "24 bytes. 'C' type, POWR FourCC, parameter 15 ASCII '0' chars + '1'."
- id: get_power_status
label: Get Power Status
kind: query
command: "*SEPOWR################"
notes: "E type, POWR FourCC, 16 '#' placeholders in parameter field."
- id: toggle_power_status
label: Toggle Power Status
kind: action
command: "*SCTPOW################"
notes: "C type, TPOW FourCC, 16 '#' placeholders."
- id: set_audio_volume
label: Set Audio Volume
kind: action
command: "*SCVOLU{volume_padded_to_16_chars}"
notes: "Parameter is volume right-justified in 10-digit decimal, zero-padded on the left, e.g. 0000000000000029 for 41."
params:
- name: volume
type: integer
description: "Volume value (right-padded decimal in 16-byte ASCII field)."
- id: get_audio_volume
label: Get Audio Volume
kind: query
command: "*SEVOLU################"
- id: set_audio_mute_off
label: Set Audio Mute - Off
kind: action
command: "*SCAMUT0000000000000000"
- id: set_audio_mute_on
label: Set Audio Mute - On
kind: action
command: "*SCAMUT0000000000000001"
- id: get_audio_mute
label: Get Audio Mute
kind: query
command: "*SEAMUT################"
- id: set_input_hdmi
label: Set Input - HDMI
kind: action
command: "*SCINPT000000010000{port:04d}"
notes: "Parameter bytes 7-9 are '000', byte 10 is '1' (HDMI selector), bytes 11-14 are '0000', bytes 15-18 are 4-digit decimal port number 1-9999 (e.g. 0001 = HDMI 1)."
params:
- name: port
type: integer
description: "HDMI port number 1-9999."
- id: set_input_composite
label: Set Input - Composite
kind: action
command: "*SCINPT000000030000{port:04d}"
notes: "Byte 10 = '3' (composite selector), bytes 15-18 = 4-digit port 1-9999."
params:
- name: port
type: integer
description: "Composite port number 1-9999."
- id: set_input_component
label: Set Input - Component
kind: action
command: "*SCINPT000000040000{port:04d}"
notes: "Byte 10 = '4' (component selector), bytes 15-18 = 4-digit port 1-9999."
params:
- name: port
type: integer
description: "Component port number 1-9999."
- id: set_input_screen_mirroring
label: Set Input - Screen Mirroring
kind: action
command: "*SCINPT000000050000{port:04d}"
notes: "Byte 10 = '5' (screen mirroring selector), bytes 15-18 = 4-digit port 1-9999."
params:
- name: port
type: integer
description: "Screen mirroring port number 1-9999."
- id: get_input
label: Get Input
kind: query
command: "*SEINPT################"
- id: set_picture_mute_off
label: Set Picture Mute - Off
kind: action
command: "*SCPMUT0000000000000000"
- id: set_picture_mute_on
label: Set Picture Mute - On (Black Screen)
kind: action
command: "*SCPMUT0000000000000001"
- id: get_picture_mute
label: Get Picture Mute
kind: query
command: "*SEPMUT################"
- id: toggle_picture_mute
label: Toggle Picture Mute
kind: action
command: "*SCTPMU################"
- id: set_scene_setting
label: Set Scene Setting
kind: action
command: "*SCSCEN{scene_padded_to_16_chars}"
notes: "Parameter is a scene name right-padded with '#' to 16 bytes. Valid scenes per source: 'auto', 'auto24pSync', 'general'. Case-sensitive."
params:
- name: scene
type: string
description: "Scene name (auto | auto24pSync | general), right-padded with '#'."
- id: get_scene_setting
label: Get Scene Setting
kind: query
command: "*SESCEN################"
- id: get_broadcast_address
label: Get Broadcast Address
kind: query
command: "*SEBADReth0############"
notes: "E type, BADR FourCC, parameter ASCII 'eth0' followed by 11 '#' placeholders."
# UNRESOLVED: not available on EU sales models that cannot select auth method.
- id: get_mac_address
label: Get MAC Address
kind: query
command: "*SEMADReth0############"
notes: "E type, MADR FourCC, parameter ASCII 'eth0' followed by 11 '#' placeholders. Response: MAC left-justified, right-padded with '#' to 16 bytes."
# UNRESOLVED: not available on EU sales models that cannot select auth method.
# --- IR command codes (setIrccCode per documented IR row) ---
# Each entry is the verbatim 24-byte setIrccCode payload for one IR code from the
# source IR table. All share the IRCC FourCC; the 16-byte parameter is the IR code.
- id: ircc_display
label: IR CC - Display
kind: action
command: "*SCIRCC0000000000000005"
notes: "setIrccCode; IR parameter 0000000000000005 (Display)."
- id: ircc_home
label: IR CC - Home
kind: action
command: "*SCIRCC0000000000000006"
notes: "setIrccCode; IR parameter 0000000000000006 (Home)."
- id: ircc_options
label: IR CC - Options
kind: action
command: "*SCIRCC0000000000000007"
notes: "setIrccCode; IR parameter 0000000000000007 (Options)."
- id: ircc_return
label: IR CC - Return
kind: action
command: "*SCIRCC0000000000000008"
notes: "setIrccCode; IR parameter 0000000000000008 (Return)."
- id: ircc_up
label: IR CC - Up
kind: action
command: "*SCIRCC0000000000000009"
notes: "setIrccCode; IR parameter 0000000000000009 (Up)."
- id: ircc_down
label: IR CC - Down
kind: action
command: "*SCIRCC0000000000000010"
notes: "setIrccCode; IR parameter 0000000000000010 (Down)."
- id: ircc_right
label: IR CC - Right
kind: action
command: "*SCIRCC0000000000000011"
notes: "setIrccCode; IR parameter 0000000000000011 (Right)."
- id: ircc_left
label: IR CC - Left
kind: action
command: "*SCIRCC0000000000000012"
notes: "setIrccCode; IR parameter 0000000000000012 (Left)."
- id: ircc_confirm
label: IR CC - Confirm
kind: action
command: "*SCIRCC0000000000000013"
notes: "setIrccCode; IR parameter 0000000000000013 (Confirm)."
- id: ircc_red
label: IR CC - Red
kind: action
command: "*SCIRCC0000000000000014"
notes: "setIrccCode; IR parameter 0000000000000014 (Red)."
- id: ircc_green
label: IR CC - Green
kind: action
command: "*SCIRCC0000000000000015"
notes: "setIrccCode; IR parameter 0000000000000015 (Green)."
- id: ircc_yellow
label: IR CC - Yellow
kind: action
command: "*SCIRCC0000000000000016"
notes: "setIrccCode; IR parameter 0000000000000016 (Yellow)."
- id: ircc_blue
label: IR CC - Blue
kind: action
command: "*SCIRCC0000000000000017"
notes: "setIrccCode; IR parameter 0000000000000017 (Blue)."
- id: ircc_num1
label: IR CC - Num1
kind: action
command: "*SCIRCC0000000000000018"
notes: "setIrccCode; IR parameter 0000000000000018 (Num1)."
- id: ircc_num2
label: IR CC - Num2
kind: action
command: "*SCIRCC0000000000000019"
notes: "setIrccCode; IR parameter 0000000000000019 (Num2)."
- id: ircc_num3
label: IR CC - Num3
kind: action
command: "*SCIRCC0000000000000020"
notes: "setIrccCode; IR parameter 0000000000000020 (Num3)."
- id: ircc_num4
label: IR CC - Num4
kind: action
command: "*SCIRCC0000000000000021"
notes: "setIrccCode; IR parameter 0000000000000021 (Num4)."
- id: ircc_num5
label: IR CC - Num5
kind: action
command: "*SCIRCC0000000000000022"
notes: "setIrccCode; IR parameter 0000000000000022 (Num5)."
- id: ircc_num6
label: IR CC - Num6
kind: action
command: "*SCIRCC0000000000000023"
notes: "setIrccCode; IR parameter 0000000000000023 (Num6)."
- id: ircc_num7
label: IR CC - Num7
kind: action
command: "*SCIRCC0000000000000024"
notes: "setIrccCode; IR parameter 0000000000000024 (Num7)."
- id: ircc_num8
label: IR CC - Num8
kind: action
command: "*SCIRCC0000000000000025"
notes: "setIrccCode; IR parameter 0000000000000025 (Num8)."
- id: ircc_num9
label: IR CC - Num9
kind: action
command: "*SCIRCC0000000000000026"
notes: "setIrccCode; IR parameter 0000000000000026 (Num9)."
- id: ircc_num0
label: IR CC - Num0
kind: action
command: "*SCIRCC0000000000000027"
notes: "setIrccCode; IR parameter 0000000000000027 (Num0)."
- id: ircc_volume_up
label: IR CC - Volume Up
kind: action
command: "*SCIRCC0000000000000030"
notes: "setIrccCode; IR parameter 0000000000000030 (Volume Up)."
- id: ircc_volume_down
label: IR CC - Volume Down
kind: action
command: "*SCIRCC0000000000000031"
notes: "setIrccCode; IR parameter 0000000000000031 (Volume Down)."
- id: ircc_mute
label: IR CC - Mute
kind: action
command: "*SCIRCC0000000000000032"
notes: "setIrccCode; IR parameter 0000000000000032 (Mute)."
- id: ircc_channel_up
label: IR CC - Channel Up
kind: action
command: "*SCIRCC0000000000000033"
notes: "setIrccCode; IR parameter 0000000000000033 (Channel Up)."
- id: ircc_channel_down
label: IR CC - Channel Down
kind: action
command: "*SCIRCC0000000000000034"
notes: "setIrccCode; IR parameter 0000000000000034 (Channel Down)."
- id: ircc_subtitle
label: IR CC - Subtitle
kind: action
command: "*SCIRCC0000000000000035"
notes: "setIrccCode; IR parameter 0000000000000035 (Subtitle)."
- id: ircc_dot
label: IR CC - DOT
kind: action
command: "*SCIRCC0000000000000038"
notes: "setIrccCode; IR parameter 0000000000000038 (DOT)."
- id: ircc_picture_off
label: IR CC - Picture Off
kind: action
command: "*SCIRCC0000000000000050"
notes: "setIrccCode; IR parameter 0000000000000050 (Picture Off)."
- id: ircc_wide
label: IR CC - Wide
kind: action
command: "*SCIRCC0000000000000061"
notes: "setIrccCode; IR parameter 0000000000000061 (Wide)."
- id: ircc_jump
label: IR CC - Jump
kind: action
command: "*SCIRCC0000000000000062"
notes: "setIrccCode; IR parameter 0000000000000062 (Jump)."
- id: ircc_sync_menu
label: IR CC - Sync Menu
kind: action
command: "*SCIRCC0000000000000076"
notes: "setIrccCode; IR parameter 0000000000000076 (Sync Menu)."
- id: ircc_forward
label: IR CC - Forward
kind: action
command: "*SCIRCC0000000000000077"
notes: "setIrccCode; IR parameter 0000000000000077 (Forward)."
- id: ircc_play
label: IR CC - Play
kind: action
command: "*SCIRCC0000000000000078"
notes: "setIrccCode; IR parameter 0000000000000078 (Play)."
- id: ircc_rewind
label: IR CC - Rewind
kind: action
command: "*SCIRCC0000000000000079"
notes: "setIrccCode; IR parameter 0000000000000079 (Rewind)."
- id: ircc_prev
label: IR CC - Prev
kind: action
command: "*SCIRCC0000000000000080"
notes: "setIrccCode; IR parameter 0000000000000080 (Prev)."
- id: ircc_stop
label: IR CC - Stop
kind: action
command: "*SCIRCC0000000000000081"
notes: "setIrccCode; IR parameter 0000000000000081 (Stop)."
- id: ircc_next
label: IR CC - Next
kind: action
command: "*SCIRCC0000000000000082"
notes: "setIrccCode; IR parameter 0000000000000082 (Next)."
- id: ircc_pause
label: IR CC - Pause
kind: action
command: "*SCIRCC0000000000000084"
notes: "setIrccCode; IR parameter 0000000000000084 (Pause)."
- id: ircc_flash_plus
label: IR CC - Flash Plus
kind: action
command: "*SCIRCC0000000000000086"
notes: "setIrccCode; IR parameter 0000000000000086 (Flash Plus)."
- id: ircc_flash_minus
label: IR CC - Flash Minus
kind: action
command: "*SCIRCC0000000000000087"
notes: "setIrccCode; IR parameter 0000000000000087 (Flash Minus)."
- id: ircc_tv_power
label: IR CC - TV Power
kind: action
command: "*SCIRCC0000000000000098"
notes: "setIrccCode; IR parameter 0000000000000098 (TV Power)."
- id: ircc_audio
label: IR CC - Audio
kind: action
command: "*SCIRCC0000000000000099"
notes: "setIrccCode; IR parameter 0000000000000099 (Audio)."
- id: ircc_input
label: IR CC - Input
kind: action
command: "*SCIRCC0000000000000101"
notes: "setIrccCode; IR parameter 0000000000000101 (Input)."
- id: ircc_sleep
label: IR CC - Sleep
kind: action
command: "*SCIRCC0000000000000104"
notes: "setIrccCode; IR parameter 0000000000000104 (Sleep)."
- id: ircc_sleep_timer
label: IR CC - Sleep Timer
kind: action
command: "*SCIRCC0000000000000105"
notes: "setIrccCode; IR parameter 0000000000000105 (Sleep Timer)."
- id: ircc_video_2
label: IR CC - Video 2
kind: action
command: "*SCIRCC0000000000000108"
notes: "setIrccCode; IR parameter 0000000000000108 (Video 2)."
- id: ircc_picture_mode
label: IR CC - Picture Mode
kind: action
command: "*SCIRCC0000000000000110"
notes: "setIrccCode; IR parameter 0000000000000110 (Picture Mode)."
- id: ircc_demo_surround
label: IR CC - Demo Surround
kind: action
command: "*SCIRCC0000000000000121"
notes: "setIrccCode; IR parameter 0000000000000121 (Demo Surround)."
- id: ircc_hdmi_1
label: IR CC - HDMI 1
kind: action
command: "*SCIRCC0000000000000124"
notes: "setIrccCode; IR parameter 0000000000000124 (HDMI 1)."
- id: ircc_hdmi_2
label: IR CC - HDMI 2
kind: action
command: "*SCIRCC0000000000000125"
notes: "setIrccCode; IR parameter 0000000000000125 (HDMI 2)."
- id: ircc_hdmi_3
label: IR CC - HDMI 3
kind: action
command: "*SCIRCC0000000000000126"
notes: "setIrccCode; IR parameter 0000000000000126 (HDMI 3)."
- id: ircc_hdmi_4
label: IR CC - HDMI 4
kind: action
command: "*SCIRCC0000000000000127"
notes: "setIrccCode; IR parameter 0000000000000127 (HDMI 4)."
- id: ircc_action_menu
label: IR CC - Action Menu
kind: action
command: "*SCIRCC0000000000000129"
notes: "setIrccCode; IR parameter 0000000000000129 (Action Menu)."
- id: ircc_help
label: IR CC - Help
kind: action
command: "*SCIRCC0000000000000130"
notes: "setIrccCode; IR parameter 0000000000000130 (Help)."
Feedbacks
- id: power_state
type: enum
values: [standby, active]
source: "Answer to getPowerStatus: '...0' = standby, '...1' = active; 'FFFFFFFFFF...' = error."
- id: audio_mute_state
type: enum
values: [off, on]
source: "Answer to getAudioMute: '...0' = not muted, '...1' = muted; 'FFFFFFFFFF...' = error."
- id: picture_mute_state
type: enum
values: [off, on]
source: "Answer to getPictureMute: '...0' = disabled, '...1' = enabled; 'FFFFFFFFFF...' = error."
- id: input_state
type: object
fields:
- name: type
type: enum
values: [hdmi, composite, component, screen_mirroring]
- name: port
type: integer
range: "1-9999"
source: "Answer to getInput; bytes 7-9 '000', byte 10 '1'|'3'|'4'|'5', bytes 15-18 4-digit port. 'NNNNNNNNNNNNNNNN' = not found, 'FFFFFFFFFF...' = error."
- id: scene_setting
type: string
source: "Answer to getSceneSetting: scene name left-justified, right-padded with '#'. 'NNNNNNNNNNNNNNNN' = not available for current input. 'FFFFFFFFFF...' = error."
- id: audio_volume
type: integer
source: "Answer to getAudioVolume: 16 ASCII bytes right-justified decimal. 'FFFFFFFFFF...' = error."
- id: broadcast_address
type: string
source: "Answer to getBroadcastAddress: IPv4 dotted-quad left-justified, right-padded with '#' to 16 bytes. 'FFFFFFFFFF...' = error."
- id: mac_address
type: string
source: "Answer to getMacAddress: MAC left-justified, right-padded with '#' to 16 bytes. 'FFFFFFFFFF...' = error."
- id: result_status
type: enum
values: [success, error]
source: "Generic Answer (A) message: '0000000000000000' = success, 'FFFFFFFFFFFFFFFF' = error."
Variables
# UNRESOLVED: source documents settable values as parameter bytes inside discrete actions
# (volume 0-? per source example 41; scene name; input port 1-9999) rather than as
# separate settable variables. No independent variable endpoints defined.
Events
- id: power_change_notification
command: "*SNPOWR000000000000000{0|1}"
description: "Notify from display on power state change. '...0' = power off, '...1' = power on."
- id: input_change_notification
command: "*SNINPT{parameter}"
description: "Notify on input change. Same parameter encoding as getInput response; '0000000000000000' = generic input change."
- id: volume_change_notification
command: "*SNVOLU{volume_16_bytes}"
description: "Notify on volume change. Parameter is current volume as 16-byte ASCII decimal."
- id: mute_change_notification
command: "*SNAMUT000000000000000{0|1}"
description: "Notify on audio mute change. '...0' = mute off, '...1' = mute on."
- id: picture_mute_change_notification
command: "*SNPMUT000000000000000{0|1}"
description: "Notify on picture mute change. '...0' = picture mute off, '...1' = picture mute on."
Macros
# UNRESOLVED: source describes no multi-step sequences.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source mentions remote-control and IP-control settings must be enabled in
# the on-screen Settings menu before the protocol works, but does not document
# hardware interlocks, lockout procedures, or power-on sequencing requirements.
Notes
- All messages are exactly 24 bytes: header
0x2A 0x53(ASCII*S), 1 byte message type (C/E/A/N), 4 ASCII bytes FourCC command, 16 bytes parameter (ASCII digits 0-9, letters, or#placeholders for queries), footer0x0A. C= Control (client→display),E= Enquiry (client→display),A= Answer (display→client),N= Notify (display→client).- Success Answer for Control commands: 16 ASCII
'0'bytes. Error Answer: 16 ASCII'F'bytes. "Not found/not available" Answer: 16 ASCII'N'bytes (used by setInput / setSceneSetting / getSceneSetting / getInput). - Required display settings (must be enabled in on-screen Settings before commands work): Mobile device settings → Remote control function, and Home network → IP control → Simple IP control.
- EU sales models ship in 3 RED-DA variants with different settings and command availability;
getBroadcastAddressandgetMacAddressare not available on EU models that cannot select the authentication method. See https://pro-bravia.sony.net/ja/setup/device-settings/red-da/ for details. - Example
netcatinvocation:netcat [IP address] 20060. firePicture MuteChangein source has a stray space in its command name; treated asfirePictureMuteChangehere.- Volume range (min/max) is not stated in source — only the example
0000000000000029(41) is shown. Treat 0 as the implicit lower bound; upper bound UNRESOLVED. - IR code table: each entry is a 16-byte ASCII parameter to
setIrccCode; full list in source (Display, Home, Options, Return, Up, Down, Right, Left, Confirm, Red, Green, Yellow, Blue, Num0-9, Volume Up/Down, Mute, Channel Up/Down, Subtitle, DOT, Picture Off, Wide, Jump, Sync Menu, Forward, Play, Rewind, Prev, Stop, Next, Pause, Flash Plus/Minus, TV Power, Audio, Input, Sleep, Sleep Timer, Video 2, Picture Mode, Demo Surround, HDMI 1-4, Action Menu, Help). Each is also enumerated as an explicitircc_*action above for verbatim-payload coverage.
Changes made: fixed malformed `set_ircc_code` command (`*SIRCC` → `*SCIRCC`, restored missing `C` type byte); added 56 explicit `ircc_*` actions for every documented IR code row. No existing IDs/shapes removed.
## Provenance
```yaml
source_domains:
- pro-bravia.sony.net
- aca.im
- helpguide.sony.net
source_urls:
- https://pro-bravia.sony.net/interface-for-control/simple-ip-control/
- https://pro-bravia.sony.net/interface-for-control/ircc-ip/
- https://pro-bravia.sony.net/interface-for-control/rest-api/
- "https://aca.im/driver_docs/Sony/sony%20bravia%20simple%20ip%20control.pdf"
- https://helpguide.sony.net/tv/nga3/v1/en-142/contents/TP1002006040.html
retrieved_at: 2026-06-11T04:27:27.367Z
last_checked_at: 2026-07-22T01:23:56.128Z
```
## Verification Summary
```yaml
verdict: verified
checked_at: 2026-07-22T01:23:56.128Z
matched_actions: 80
action_count: 80
confidence: medium
summary: "All 80 spec actions matched source with correct FourCC codes and parameter shapes; transport parameters verified. (5 unresolved item(s) noted in Known Gaps.)"
```
## Known Gaps
```yaml
- "EU sales models have 3 RED-DA variants with differing commands/settings; not enumerated in source."
- "not available on EU sales models that cannot select auth method."
- "source documents settable values as parameter bytes inside discrete actions"
- "source describes no multi-step sequences."
- "source mentions remote-control and IP-control settings must be enabled in"
```
---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0