Summary

Simple IP Control is Sony's proprietary protocol for controlling BRAVIA Professional Displays (KDX81 Series) over a local network. Communication uses TCP on port 20060 with fixed 24-byte messages, providing commands for power, input, volume, mute, picture mute, scene setting, IR passthrough, and network interface queries.

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, getAudioVolume, getAudioMute, getInput, getPictureMute, getSceneSetting, getBroadcastAddress, getMacAddress
- levelable       # inferred from setAudioVolume, getAudioVolume

Actions

- id: set_ircc_code
  label: setIrccCode (Send IR Remote Code)
  kind: action
  command: "*SCIRCC{ircc_code_padded_to_16_bytes}"  # Header 0x2A 0x53, MsgType 'C' (0x43), FourCC 'IRCC', 16-byte param (right-padded with '0' per IR command table; last two bytes hold the code), Footer 0x0A
  params:
    - name: ircc_code
      type: string
      description: Two-digit decimal IR code from the IR Commands table (e.g. "05" for Display, "30" for Volume Up)

- id: set_power_status
  label: setPowerStatus
  kind: action
  command: "*SCPOWR000000000000000{state}"  # state: '0' = Standby (Off), '1' = Active (On); remaining 15 bytes zero
  params:
    - name: state
      type: integer
      enum: [0, 1]
      description: 0 = Standby (Off), 1 = Active (On)

- id: get_power_status
  label: getPowerStatus
  kind: query
  command: "*SEPOWR################"  # 16 '#' placeholders for enquiry; last byte holds response
  params: []

- id: toggle_power_status
  label: togglePowerStatus
  kind: action
  command: "*SCTPOW################"  # 16 '#' placeholders; no parameters
  params: []

- id: set_audio_volume
  label: setAudioVolume
  kind: action
  command: "*SCVOLU{volume_padded_left_0_to_16}"  # e.g. '0000000000000029' = 41; last two bytes hold the value, leading zeros
  params:
    - name: volume
      type: integer
      description: Volume value, decimal, left-padded with '0' to fill the 16-byte parameter field

- id: get_audio_volume
  label: getAudioVolume
  kind: query
  command: "*SEVOLU################"
  params: []

- id: set_audio_mute
  label: setAudioMute
  kind: action
  command: "*SCAMUT000000000000000{state}"  # state: '0' = Unmute, '1' = Mute; remaining 15 bytes zero
  params:
    - name: state
      type: integer
      enum: [0, 1]
      description: 0 = Unmute, 1 = Mute

- id: get_audio_mute
  label: getAudioMute
  kind: query
  command: "*SEAMUT################"
  params: []

- id: set_input
  label: setInput
  kind: action
  command: "*SCINPT0000000000{type}000{port_4digit}"  # type: '1' HDMI, '3' Composite, '4' Component, '5' Screen Mirroring; port: 1-9999
  params:
    - name: input_type
      type: integer
      enum: [1, 3, 4, 5]
      description: 1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring
    - name: port
      type: integer
      description: Input port number (1-9999)

- id: get_input
  label: getInput
  kind: query
  command: "*SEINPT################"
  params: []

- id: set_picture_mute
  label: setPictureMute
  kind: action
  command: "*SCPMUT000000000000000{state}"  # state: '0' = Disable (picture on), '1' = Enable (screen black)
  params:
    - name: state
      type: integer
      enum: [0, 1]
      description: 0 = Disables picture mute, 1 = Enables picture mute (screen black)

- id: get_picture_mute
  label: getPictureMute
  kind: query
  command: "*SEPMUT################"
  params: []

- id: toggle_picture_mute
  label: togglePictureMute
  kind: action
  command: "*SCTPMU################"
  params: []

- id: set_scene_setting
  label: setSceneSetting
  kind: action
  command: "*SCSCEN{scene_string_padded_right_with_#_to_16}"  # e.g. 'auto24pSync#####'; case-sensitive
  params:
    - name: scene
      type: string
      enum: [auto, auto24pSync, general]
      description: Scene name; case-sensitive; right-padded with '#' to fill 16-byte param field

- id: get_scene_setting
  label: getSceneSetting
  kind: query
  command: "*SESCEN################"
  params: []

- id: get_broadcast_address
  label: getBroadcastAddress
  kind: query
  command: "*SEBADREth0############"  # 'eth0' interface; other interface names UNRESOLVED
  params:
    - name: interface
      type: string
      description: Network interface name (e.g. 'eth0')

- id: get_mac_address
  label: getMacAddress
  kind: query
  command: "*SEMADREth0############"  # 'eth0' interface; other interface names UNRESOLVED
  params:
    - name: interface
      type: string
      description: Network interface name (e.g. 'eth0')

Feedbacks

- id: power_state
  type: enum
  values: [standby, active]
  description: Reply to getPowerStatus / firePowerChange. Parameter byte 22 = 0 (Standby/Off) or 1 (Active/On).

- id: audio_volume
  type: integer
  description: Reply to getAudioVolume / fireVolumeChange. Volume value in last two bytes, decimal digits.

- id: audio_mute_state
  type: enum
  values: [unmuted, muted]
  description: Reply to getAudioMute / fireMuteChange. Parameter byte 22 = 0 (Not Muted) or 1 (Muted).

- id: current_input
  type: object
  description: Reply to getInput / fireInputChange. Byte 11 input type (1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring); bytes 14-17 port (1-9999).

- id: picture_mute_state
  type: enum
  values: [disabled, enabled]
  description: Reply to getPictureMute / firePictureMuteChange. Parameter byte 22 = 0 (Disabled) or 1 (Enabled).

- id: scene_setting
  type: string
  description: Reply to getSceneSetting. Scene name string, right-padded with '#'.

- id: broadcast_address
  type: string
  description: Reply to getBroadcastAddress. IPv4 address as ASCII, right-padded with '#'.

- id: mac_address
  type: string
  description: Reply to getMacAddress. MAC address as ASCII, right-padded with '#'.

Variables

# UNRESOLVED: no settable parameters documented beyond the discrete actions above.

Events

- id: fire_power_change
  command: "*SNPOWR000000000000000{state}"
  description: Sent by monitor when power changes. state: 0=powering off, 1=powering on.

- id: fire_input_change
  command: "*SNINPT00000000000{type}000{port_4digit}"
  description: Sent by monitor when input changes. type: 1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring; port: 1-9999.

- id: fire_volume_change
  command: "*SNVOLU{volume_padded}"
  description: Sent by monitor when volume changes.

- id: fire_mute_change
  command: "*SNAMUT000000000000000{state}"
  description: Sent by monitor when mute changes. state: 0=unmuting, 1=muting.

- id: fire_picture_mute_change
  command: "*SNPMUT000000000000000{state}"
  description: Sent by monitor when picture mute changes. state: 0=enabled, 1=disabled.

Macros

# UNRESOLVED: no multi-step sequences described in source.

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings, interlocks, or power-on sequencing requirements stated in source.

Notes

Message frame: every Simple IP Control message is exactly 24 bytes — 0x2A 0x53 header + 1-byte message type (C=Control 0x43, E=Enquiry 0x45, A=Answer 0x41, N=Notify 0x4E) + 4-byte FourCC command + 16-byte parameter field + 0x0A footer. Answers use parameter bytes filled with 0 (success) or F (error); N indicates input not available / not found.

Connection requires two monitor settings: Settings → Network & Internet → Remote device settings → Control remotely and Settings → Network & Internet → Home network → IP control → Simple IP control. EU-area models have 3 RED-DA compliance variants; command availability differs per variant (see https://pro-bravia.sony.net/setup/device-settings/red-da/).

Port-mapped inputs (HDMI/Composite/Component/Screen Mirroring) use input number 1-9999 in the last four bytes of the parameter field; getInput reply uses the same encoding.

Provenance

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/reference
  - https://pro-bravia.sony.net/remote-display-control/ircc-ip
  - https://pro-bravia.sony.net
retrieved_at: 2026-06-09T04:43:54.012Z
last_checked_at: 2026-06-09T07:19:24.401Z

Verification Summary

verdict: verified
checked_at: 2026-06-09T07:19:24.401Z
matched_actions: 17
action_count: 17
confidence: medium
summary: "All 17 spec actions match FourCC tokens and parameter patterns in source; transport verified. (5 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "EU area models have 3 RED-DA compliance variants; commands and settings differ per variant. Source links to https://pro-bravia.sony.net/setup/device-settings/red-da/ for details."
- "no settable parameters documented beyond the discrete actions above."
- "no multi-step sequences described in source."
- "no safety warnings, interlocks, or power-on sequencing requirements stated in source."
- "firmware version compatibility, EU RED-DA variant command differences, network interface names beyond \"eth0\", and any IR codes not listed in the source table."

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