Summary

BRAVIA Professional Displays KDAG8 Series monitor controlled over TCP via Sony's SSIP (Simple IP Control) protocol on port 20060. Messages are fixed 24-byte frames using 4-character command mnemonics. Source includes power, volume, mute, input, picture mute, scene setting, IR passthrough, and broadcast/MAC address queries.

Transport

protocols:
  - tcp
addressing:
  port: 20060
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable   # inferred: setPowerStatus, getPowerStatus, togglePowerStatus
- routable    # inferred: setInput, getInput
- queryable   # inferred: getPowerStatus, getAudioVolume, getAudioMute, getInput, getPictureMute, getSceneSetting, getBroadcastAddress, getMacAddress
- levelable   # inferred: setAudioVolume, getAudioVolume

Actions

- id: set_power_status
  label: Set Power Status
  kind: action
  command: "*SCPOWR{state}"
  params:
    - name: state
      type: integer
      description: "0 = Standby (Off), 1 = Active (On); left-pad the 16-byte param field with '0'"
  notes: |
    Header *S (0x2A 0x53), msgType 'C' (0x43), FourCC 'POWR', 16-byte param, footer 0x0A. Total 24 bytes.
    Examples: *SCPOWR0000000000000000 (Off), *SCPOWR0000000000000001 (On).

- id: get_power_status
  label: Get Power Status
  kind: query
  command: "*SEPOWR################"
  params: []
  notes: "Response: 0 = Standby, 1 = Active, F...F = Error."

- id: toggle_power_status
  label: Toggle Power Status
  kind: action
  command: "*SCTPOW################"
  params: []
  notes: "FourCC 'TPOW'."

- id: set_audio_volume
  label: Set Audio Volume
  kind: action
  command: "*SCVOLU{volume}"
  params:
    - name: volume
      type: integer
      description: "Volume value, decimal ASCII, right-justified in 16-byte param, pad left with '0'. Example: 0000000000000029"
  notes: "FourCC 'VOLU'."

- id: get_audio_volume
  label: Get Audio Volume
  kind: query
  command: "*SEVOLU################"
  params: []
  notes: "Response: ASCII volume value padded with 'X' (source uses X placeholders) right-padded."

- id: set_audio_mute
  label: Set Audio Mute
  kind: action
  command: "*SCAMUT{state}"
  params:
    - name: state
      type: integer
      description: "0 = Unmute, 1 = Mute"
  notes: "FourCC 'AMUT'."

- id: get_audio_mute
  label: Get Audio Mute
  kind: query
  command: "*SEAMUT################"
  params: []
  notes: "Response: 0 = Not Muted, 1 = Muted, F...F = Error."

- id: set_input
  label: Set Input
  kind: action
  command: "*SCINPT00000000{type}000{port}"
  params:
    - name: type
      type: integer
      description: "1 = HDMI, 3 = Composite, 4 = Component, 5 = Screen Mirroring"
    - name: port
      type: integer
      description: "Port number 1-9999, right-justified in 4-byte field, pad left with '0' (per source: XXXX placeholders)"
  notes: |
    FourCC 'INPT'. Param layout per source: 0000000{type}000{port} (16 bytes).
    0000000 = type code digit, then 000{port}.

- id: get_input
  label: Get Input
  kind: query
  command: "*SEINPT################"
  params: []
  notes: "Response: type digit (1/3/4/5) at byte 8, port in trailing 4 bytes (XXXX)."

- id: set_picture_mute
  label: Set Picture Mute
  kind: action
  command: "*SCPMUT{state}"
  params:
    - name: state
      type: integer
      description: "0 = Disable picture mute, 1 = Turn screen black (picture mute)"
  notes: "FourCC 'PMUT'."

- id: get_picture_mute
  label: Get Picture Mute
  kind: query
  command: "*SEPMUT################"
  params: []
  notes: "Response: 0 = Disabled, 1 = Enabled, F...F = Error."

- id: toggle_picture_mute
  label: Toggle Picture Mute
  kind: action
  command: "*SCTPMU################"
  params: []
  notes: "FourCC 'TPMU'."

- id: set_scene_setting
  label: Set Scene Setting
  kind: action
  command: "*SCSCEN{value}#########"
  params:
    - name: value
      type: string
      description: "Case-sensitive scene name, right-padded with '#' to fill 16 bytes. Values: auto, auto24pSync, general. Example: auto24pSync#####"
  notes: "FourCC 'SCEN'."

- id: get_scene_setting
  label: Get Scene Setting
  kind: query
  command: "*SESCEN################"
  params: []
  notes: "Response: scene name right-padded with X; N...N = not available for current input; F...F = Error."

- id: set_ircc_code
  label: Send IR Remote Code
  kind: action
  command: "*SCIRCC{ircc_code}"
  params:
    - name: ircc_code
      type: string
      description: "2-digit IRCC code from the IR Commands table, right-justified in 16-byte param. Example: Display = 0000000000000005"
  notes: "FourCC 'IRCC'. IRCC table below."

- id: get_broadcast_address
  label: Get Broadcast Address
  kind: query
  command: "*SEBADREth0###########"
  params: []
  notes: |
    FourCC 'BADR', interface 'eth0' literal in param bytes 1-4. Response: IPv4 address in dotted notation
    right-padded with '#'. Example: 192.168.0.14####. F...F = Error.

- id: get_mac_address
  label: Get MAC Address
  kind: query
  command: "*SEMADREth0###########"
  params: []
  notes: |
    FourCC 'MADR', interface 'eth0' literal in param bytes 1-4. Response: MAC address right-padded with '#'.
    F...F = Error.

- id: ircc_display
  label: IR Display
  kind: action
  command: "*SCIRCC0000000000000005"
  params: []
- id: ircc_home
  label: IR Home
  kind: action
  command: "*SCIRCC0000000000000006"
  params: []
- id: ircc_options
  label: IR Options
  kind: action
  command: "*SCIRCC0000000000000007"
  params: []
- id: ircc_return
  label: IR Return
  kind: action
  command: "*SCIRCC0000000000000008"
  params: []
- id: ircc_up
  label: IR Up
  kind: action
  command: "*SCIRCC0000000000000009"
  params: []
- id: ircc_down
  label: IR Down
  kind: action
  command: "*SCIRCC0000000000000010"
  params: []
- id: ircc_right
  label: IR Right
  kind: action
  command: "*SCIRCC0000000000000011"
  params: []
- id: ircc_left
  label: IR Left
  kind: action
  command: "*SCIRCC0000000000000012"
  params: []
- id: ircc_confirm
  label: IR Confirm
  kind: action
  command: "*SCIRCC0000000000000013"
  params: []
- id: ircc_red
  label: IR Red
  kind: action
  command: "*SCIRCC0000000000000014"
  params: []
- id: ircc_green
  label: IR Green
  kind: action
  command: "*SCIRCC0000000000000015"
  params: []
- id: ircc_yellow
  label: IR Yellow
  kind: action
  command: "*SCIRCC0000000000000016"
  params: []
- id: ircc_blue
  label: IR Blue
  kind: action
  command: "*SCIRCC0000000000000017"
  params: []
- id: ircc_num1
  label: IR Num1
  kind: action
  command: "*SCIRCC0000000000000018"
  params: []
- id: ircc_num2
  label: IR Num2
  kind: action
  command: "*SCIRCC0000000000000019"
  params: []
- id: ircc_num3
  label: IR Num3
  kind: action
  command: "*SCIRCC0000000000000020"
  params: []
- id: ircc_num4
  label: IR Num4
  kind: action
  command: "*SCIRCC0000000000000021"
  params: []
- id: ircc_num5
  label: IR Num5
  kind: action
  command: "*SCIRCC0000000000000022"
  params: []
- id: ircc_num6
  label: IR Num6
  kind: action
  command: "*SCIRCC0000000000000023"
  params: []
- id: ircc_num7
  label: IR Num7
  kind: action
  command: "*SCIRCC0000000000000024"
  params: []
- id: ircc_num8
  label: IR Num8
  kind: action
  command: "*SCIRCC0000000000000025"
  params: []
- id: ircc_num9
  label: IR Num9
  kind: action
  command: "*SCIRCC0000000000000026"
  params: []
- id: ircc_num0
  label: IR Num0
  kind: action
  command: "*SCIRCC0000000000000027"
  params: []
- id: ircc_volume_up
  label: IR Volume Up
  kind: action
  command: "*SCIRCC0000000000000030"
  params: []
- id: ircc_volume_down
  label: IR Volume Down
  kind: action
  command: "*SCIRCC0000000000000031"
  params: []
- id: ircc_mute
  label: IR Mute
  kind: action
  command: "*SCIRCC0000000000000032"
  params: []
- id: ircc_channel_up
  label: IR Channel Up
  kind: action
  command: "*SCIRCC0000000000000033"
  params: []
- id: ircc_channel_down
  label: IR Channel Down
  kind: action
  command: "*SCIRCC0000000000000034"
  params: []
- id: ircc_subtitle
  label: IR Subtitle
  kind: action
  command: "*SCIRCC0000000000000035"
  params: []
- id: ircc_dot
  label: IR DOT
  kind: action
  command: "*SCIRCC0000000000000038"
  params: []
- id: ircc_picture_off
  label: IR Picture Off
  kind: action
  command: "*SCIRCC0000000000000050"
  params: []
- id: ircc_wide
  label: IR Wide
  kind: action
  command: "*SCIRCC0000000000000061"
  params: []
- id: ircc_jump
  label: IR Jump
  kind: action
  command: "*SCIRCC0000000000000062"
  params: []
- id: ircc_sync_menu
  label: IR Sync Menu
  kind: action
  command: "*SCIRCC0000000000000076"
  params: []
- id: ircc_forward
  label: IR Forward
  kind: action
  command: "*SCIRCC0000000000000077"
  params: []
- id: ircc_play
  label: IR Play
  kind: action
  command: "*SCIRCC0000000000000078"
  params: []
- id: ircc_rewind
  label: IR Rewind
  kind: action
  command: "*SCIRCC0000000000000079"
  params: []
- id: ircc_prev
  label: IR Prev
  kind: action
  command: "*SCIRCC0000000000000080"
  params: []
- id: ircc_stop
  label: IR Stop
  kind: action
  command: "*SCIRCC0000000000000081"
  params: []
- id: ircc_next
  label: IR Next
  kind: action
  command: "*SCIRCC0000000000000082"
  params: []
- id: ircc_pause
  label: IR Pause
  kind: action
  command: "*SCIRCC0000000000000084"
  params: []
- id: ircc_flash_plus
  label: IR Flash Plus
  kind: action
  command: "*SCIRCC0000000000000086"
  params: []
- id: ircc_flash_minus
  label: IR Flash Minus
  kind: action
  command: "*SCIRCC0000000000000087"
  params: []
- id: ircc_tv_power
  label: IR TV Power
  kind: action
  command: "*SCIRCC0000000000000098"
  params: []
- id: ircc_audio
  label: IR Audio
  kind: action
  command: "*SCIRCC0000000000000099"
  params: []
- id: ircc_input
  label: IR Input
  kind: action
  command: "*SCIRCC0000000000000101"
  params: []
- id: ircc_sleep
  label: IR Sleep
  kind: action
  command: "*SCIRCC0000000000000104"
  params: []
- id: ircc_sleep_timer
  label: IR Sleep Timer
  kind: action
  command: "*SCIRCC0000000000000105"
  params: []
- id: ircc_video_2
  label: IR Video 2
  kind: action
  command: "*SCIRCC0000000000000108"
  params: []
- id: ircc_picture_mode
  label: IR Picture Mode
  kind: action
  command: "*SCIRCC0000000000000110"
  params: []
- id: ircc_demo_surround
  label: IR Demo Surround
  kind: action
  command: "*SCIRCC0000000000000121"
  params: []
- id: ircc_hdmi_1
  label: IR HDMI 1
  kind: action
  command: "*SCIRCC0000000000000124"
  params: []
- id: ircc_hdmi_2
  label: IR HDMI 2
  kind: action
  command: "*SCIRCC0000000000000125"
  params: []
- id: ircc_hdmi_3
  label: IR HDMI 3
  kind: action
  command: "*SCIRCC0000000000000126"
  params: []
- id: ircc_hdmi_4
  label: IR HDMI 4
  kind: action
  command: "*SCIRCC0000000000000127"
  params: []
- id: ircc_action_menu
  label: IR Action Menu
  kind: action
  command: "*SCIRCC0000000000000129"
  params: []
- id: ircc_help
  label: IR Help
  kind: action
  command: "*SCIRCC0000000000000130"
  params: []

Feedbacks

- id: power_state
  type: enum
  values: [standby, active]
  source: getPowerStatus response 0/1
- id: audio_mute_state
  type: enum
  values: [unmuted, muted]
  source: getAudioMute response 0/1
- id: picture_mute_state
  type: enum
  values: [disabled, enabled]
  source: getPictureMute response 0/1
- id: current_input
  type: object
  fields:
    - name: type
      type: enum
      values: [hdmi, composite, component, screen_mirroring]
    - name: port
      type: integer
      range: "1-9999"
  source: getInput response
- id: scene_setting
  type: string
  values: [auto, auto24pSync, general]
  source: getSceneSetting response
- id: broadcast_address
  type: string
  source: getBroadcastAddress response
- id: mac_address
  type: string
  source: getMacAddress response

Variables

- id: audio_volume
  type: integer
  source: setAudioVolume / getAudioVolume
  notes: "Decimal ASCII volume, right-justified in 16-byte param field."

Events

- id: fire_power_change
  type: enum
  values: [standby, active]
  source: "Notify message '*SNPOWR...', FourCC 'POWR', param byte 16 = 0/1"
  description: Sent by monitor on power state change.
- id: fire_input_change
  type: object
  fields:
    - name: type
      type: enum
      values: [hdmi, composite, component, screen_mirroring]
    - name: port
      type: integer
      range: "1-9999"
  source: "Notify '*SNINPT...', FourCC 'INPT'"
  description: Sent by monitor when input changes.
- id: fire_volume_change
  type: integer
  source: "Notify '*SNVOLU...', FourCC 'VOLU'"
  description: Sent by monitor on volume change.
- id: fire_mute_change
  type: enum
  values: [unmuted, muted]
  source: "Notify '*SNAMUT...', FourCC 'AMUT'"
  description: Sent by monitor on mute state change.
- id: fire_picture_mute_change
  type: enum
  values: [enabled, disabled]
  source: "Notify '*SNPMUT...', FourCC 'PMUT'"
  description: Sent by monitor on picture mute state change.

Macros

# UNRESOLVED: source does not document multi-step sequences.

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or power-on sequencing requirements.

Notes

Protocol uses fixed 24-byte ASCII frames: *S header (0x2A 0x53) + msgType (C/E/A/N) + 4-char FourCC + 16-byte params + LF (0x0A) footer. Control messages use 'C', queries use 'E', replies use 'A', unsolicited notifications use 'N'. Successful 'A' replies pad params with '0', errors with 'F' (hex F = 0x46). Source notes EU-area models have 3 RED-DA compliance variants; command availability may differ per variant. Monitor must have "Control remotely" and "Simple IP control" enabled in network settings before TCP port 20060 accepts connections.

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://pro-bravia.sony.net/remote-display-control/serial-control/
  - "https://aca.im/driver_docs/Sony/sony%20bravia%20simple%20ip%20control.pdf"
  - https://pro-bravia.sony.net/
retrieved_at: 2026-06-08T14:23:33.984Z
last_checked_at: 2026-06-09T07:17:41.506Z

Verification Summary

verdict: verified
checked_at: 2026-06-09T07:17:41.506Z
matched_actions: 74
action_count: 74
confidence: medium
summary: "All 74 spec actions verified in source; complete command coverage with transport parameters confirmed. (6 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "source notes EU models have 3 RED-DA compliance variants with differing settings/commands; specific command availability per variant not documented in this excerpt."
- "source does not document multi-step sequences."
- "source contains no safety warnings, interlock procedures, or power-on sequencing requirements."
- "firmware version compatibility not stated in source."
- "volume value range/min/max not stated in source."
- "EU RED-DA variant command-availability matrix not in this excerpt."

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0