Summary

Sony Bravia professional display series supports Simple IP Control — a fixed 24-byte TCP protocol on TCP port 20060 for controlling power, audio, video input, picture mute, scene setting, and IR-equivalent remote commands over a local network. No authentication required. EU-area models ship with three RED-DA specification variants and differing command availability. Both wired and wireless LANs are supported.

Transport

protocols:
  - tcp
addressing:
  port: 20060  # stated: "control listening port is TCP 20060"
auth:
  type: none  # inferred: no auth procedure in source

Traits

traits:
  - powerable  # inferred from setPowerStatus / togglePowerStatus
  - queryable  # inferred from getPowerStatus / getAudioVolume / getAudioMute / getInput / getPictureMute / getSceneSetting / getBroadcastAddress / getMacAddress
  - levelable  # inferred from setAudioVolume / getAudioVolume
  - routable   # inferred from setInput / getInput
  - muteable   # inferred from setAudioMute / getAudioMute / setPictureMute / getPictureMute / togglePictureMute

Actions

# All commands are 24-byte fixed TCP messages on port 20060.
# Header = 0x2A 0x53 ('*S'), Message Type byte, 4-byte FourCC, 16-byte params, 0x0A footer.
# Control type = 0x43 ('C'), Enquiry = 0x45 ('E').

- id: setIrccCode
  label: Send IR Command
  kind: action
  command: "*SCIRCC{ircc_code_padded_16}#"  # IRCC FourCC; pad code with leading zeros to 16 chars in Byte[7]-Byte[22]
  params:
    - name: ircc_code
      type: integer
      enum:
        - 5   # Display
        - 6   # Home
        - 7   # Options
        - 8   # Return
        - 9   # Up
        - 10  # Down
        - 11  # Right
        - 12  # Left
        - 13  # Confirm
        - 14  # Red
        - 15  # Green
        - 16  # Yellow
        - 17  # Blue
        - 18  # Num1
        - 19  # Num2
        - 20  # Num3
        - 21  # Num4
        - 22  # Num5
        - 23  # Num6
        - 24  # Num7
        - 25  # Num8
        - 26  # Num9
        - 27  # Num0
        - 30  # Volume Up
        - 31  # Volume Down
        - 32  # Mute
        - 33  # Channel Up
        - 34  # Channel Down
        - 35  # Subtitle
        - 38  # DOT
        - 50  # Picture Off
        - 61  # Wide
        - 62  # Jump
        - 76  # Sync Menu
        - 77  # Forward
        - 78  # Play
        - 79  # Rewind
        - 80  # Prev
        - 81  # Stop
        - 82  # Next
        - 84  # Pause
        - 86  # Flash Plus
        - 87  # Flash Minus
        - 98  # TV Power
        - 99  # Audio
        - 101 # Input
        - 104 # Sleep
        - 105 # Sleep Timer
        - 108 # Video 2
        - 110 # Picture Mode
        - 121 # Demo Surround
        - 124 # HDMI 1
        - 125 # HDMI 2
        - 126 # HDMI 3
        - 127 # HDMI 4
        - 129 # Action Menu
        - 130 # Help
      description: IR command code from the IR Commands table. The source documents these specific values; codes are encoded as 16-digit decimal in Byte[7]-Byte[22] of the parameter field.

- id: setPowerStatus
  label: Set Power Status
  kind: action
  command: "*SCPOWR000000000000000{power}#"  # 'C' type, FourCC=POWR, power value in last byte of params
  params:
    - name: power
      type: integer
      enum:
        - 0  # Standby (Off)
        - 1  # Active (On)

- id: getPowerStatus
  label: Get Power Status
  kind: query
  command: "*SEPOWR################"  # 'E' type, FourCC=POWR, 16-byte '#' placeholder params
  params: []

- id: togglePowerStatus
  label: Toggle Power Status
  kind: action
  command: "*SCTPOW################"  # 'C' type, FourCC=TPOW, 16-byte '#' placeholder params
  params: []

- id: setAudioVolume
  label: Set Audio Volume
  kind: action
  command: "*SCVOLU{volume_padded_16}#"  # 'C' type, FourCC=VOLU, volume as 16-digit decimal (e.g. 0000000000000029 for 29)
  params:
    - name: volume
      type: integer
      description: Volume value, decimal digit pad on the left with "0" to 16 chars (e.g. 29 -> "0000000000000029").

- id: getAudioVolume
  label: Get Audio Volume
  kind: query
  command: "*SEVOLU################"  # 'E' type, FourCC=VOLU, '#' placeholder params
  params: []

- id: setAudioMute
  label: Set Audio Mute
  kind: action
  command: "*SCAMUT000000000000000{mute}#"  # 'C' type, FourCC=AMUT, mute value in last byte
  params:
    - name: mute
      type: integer
      enum:
        - 0  # Unmute
        - 1  # Mute

- id: getAudioMute
  label: Get Audio Mute Status
  kind: query
  command: "*SEAMUT################"  # 'E' type, FourCC=AMUT, '#' placeholder params
  params: []

- id: setInput
  label: Set Input
  kind: action
  command: "*SCINPT0000000000{type}000{port_padded_4}#"  # 'C' type, FourCC=INPT, type in byte 8 (counting from Byte[7] as 1), port in last 4 bytes
  params:
    - name: type
      type: integer
      enum:
        - 1  # HDMI
        - 3  # Composite
        - 4  # Component
        - 5  # Screen Mirroring
    - name: port
      type: integer
      description: Port number (1-9999), right-padded with '0' to 4 bytes in the parameter field.

- id: getInput
  label: Get Current Input
  kind: query
  command: "*SEINPT################"  # 'E' type, FourCC=INPT, '#' placeholder params
  params: []

- id: setPictureMute
  label: Set Picture Mute
  kind: action
  command: "*SCPMUT000000000000000{mute}#"  # 'C' type, FourCC=PMUT, mute value in last byte
  params:
    - name: mute
      type: integer
      enum:
        - 0  # Disables picture mute (normal display)
        - 1  # Turns screen black (picture mute on)

- id: getPictureMute
  label: Get Picture Mute Status
  kind: query
  command: "*SEPMUT################"  # 'E' type, FourCC=PMUT, '#' placeholder params
  params: []

- id: togglePictureMute
  label: Toggle Picture Mute
  kind: action
  command: "*SCTPMU################"  # 'C' type, FourCC=TPMU, '#' placeholder params
  params: []

- id: setSceneSetting
  label: Set Scene Setting
  kind: action
  command: "*SCSCEN{scene_padded_16_right_hash}#"  # 'C' type, FourCC=SCEN, scene string right-padded with "#" to 16 chars
  params:
    - name: scene
      type: string
      enum:
        - "auto"
        - "auto24pSync"
        - "general"
      description: Scene setting value (case-sensitive), right-padded with "#" to 16 chars. Examples: "auto24pSync#####".

- id: getSceneSetting
  label: Get Scene Setting
  kind: query
  command: "*SESCEN################"  # 'E' type, FourCC=SCEN, '#' placeholder params
  params: []

- id: getBroadcastAddress
  label: Get Broadcast Address
  kind: query
  command: "*SEBADR{interface_padded_right_hash}#"  # 'E' type, FourCC=BADR, interface string (e.g. "eth0") in first 4 bytes, right-padded with "#"
  params:
    - name: interface
      type: string
      description: Network interface name (e.g. "eth0"), 4-char ASCII, right-padded with "#" to fill 16-byte param field.

- id: getMacAddress
  label: Get MAC Address
  kind: query
  command: "*SEMADR{interface_padded_right_hash}#"  # 'E' type, FourCC=MADR, interface string in first 4 bytes, right-padded with "#"
  params:
    - name: interface
      type: string
      description: Network interface name (e.g. "eth0"), 4-char ASCII, right-padded with "#" to fill 16-byte param field.

Feedbacks

- id: powerStatusAnswer
  type: enum
  values:
    - "0"  # Standby (Off)
    - "1"  # Active (On)
    - "F"  # Error

- id: audioVolumeAnswer
  type: string
  description: Volume value as zero-padded decimal string in 16-byte field, or "F...F" (16 F's) for error.

- id: audioMuteAnswer
  type: enum
  values:
    - "0"  # Not Muted
    - "1"  # Muted
    - "F"  # Error

- id: inputAnswer
  type: enum
  values:
    - "0"  # Success
    - "N"  # Not Found (16 N's)
    - "F"  # Error

- id: pictureMuteAnswer
  type: enum
  values:
    - "0"  # Disabled (Picture mute off)
    - "1"  # Enabled (Picture mute on)
    - "F"  # Error

- id: sceneSettingAnswer
  type: string
  description: Scene setting value or "N...N" (16 N's, not available for current input) or "F...F" (error).

- id: broadcastAddressAnswer
  type: string
  description: IPv4 address padded on right with "#" to 16 bytes, or "F...F" for error.

- id: macAddressAnswer
  type: string
  description: MAC address padded on right with "#" to 16 bytes, or "F...F" for error.

- id: irccAnswer
  type: enum
  values:
    - "0"  # Success
    - "F"  # Error

Variables

# UNRESOLVED: no standalone settable parameter variables defined separate from action commands in source.
# All parameters handled via action commands.

Events

# Monitor-initiated Notify messages (N type, 0x4E in Byte[2]):

- id: firePowerChange
  type: notification
  description: Sent when display powers off or on.
  command: "*SNPOWR000000000000000{power}#"  # 'N' type, FourCC=POWR
  params:
    - name: power
      type: integer
      enum:
        - 0  # Powering off
        - 1  # Powering on

- id: fireInputChange
  type: notification
  description: Sent when input change occurs.
  command: "*SNINPT0000000000{type}000{port_padded_4}#"  # 'N' type, FourCC=INPT
  params:
    - name: type
      type: integer
      enum:
        - 0  # Generic input change
        - 1  # HDMI (1-9999)
        - 3  # Composite (1-9999)
        - 4  # Component (1-9999)
        - 5  # Screen Mirroring (1-9999)
    - name: port
      type: integer
      description: Port number (1-9999), right-padded with '0' to 4 bytes.

- id: fireVolumeChange
  type: notification
  description: Sent when volume changes. Parameter is current volume value.
  command: "*SNVOLU{volume_padded_16}#"  # 'N' type, FourCC=VOLU, 16-digit decimal volume
  params:
    - name: volume
      type: integer
      description: Current volume value as 16-digit decimal.

- id: fireMuteChange
  type: notification
  description: Sent when audio mute state changes.
  command: "*SNAMUT000000000000000{mute}#"  # 'N' type, FourCC=AMUT
  params:
    - name: mute
      type: integer
      enum:
        - 0  # Unmuting
        - 1  # Muting

- id: firePictureMuteChange
  type: notification
  description: Sent when picture mute state changes.
  command: "*SNPMUT000000000000000{mute}#"  # 'N' type, FourCC=PMUT
  params:
    - name: mute
      type: integer
      enum:
        - 0  # Picture mute disabled
        - 1  # Picture mute enabled

Macros

# UNRESOLVED: no explicit multi-step macro sequences defined in source.

Safety

confirmation_required_for: []
interlocks:
  - EU models: RED-DA compliance specification imposes 3 types of specifications with differing settings and available commands. Reference https://pro-bravia.sony.net/setup/device-settings/red-da/ for EU-specific constraints.
# UNRESOLVED: no explicit safety interlock procedures (e.g. power-on sequencing, confirmation dialogs) stated in source.

Notes

Protocol format: Fixed 24-byte TCP messages. Header *S (0x2A 0x53), Message Type byte (C/E/A/N), FourCC command (4 bytes), Parameters (16 bytes), Footer 0x0A (LF).

Example — Power OFF request: *SCPOWR0000000000000000*SAPOWR0000000000000000 *SNPOWR0000000000000000 (Accepts + current status Notify).

IR Commands (via setIrccCode): Full remote button code table documented — Display, Home, Options, Return, Up/Down/Left/Right, 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. Codes are zero-padded to 16 bytes in the parameter field.

EU RED-DA note: EU area models have 3 specification types with different command availability. Not all commands available on all EU variants.

Required monitor settings: Remote Device Control must be enabled at [Settings] → [Network & Internet] → [Remote device settings] → [Control remotely]. Simple IP Control must be enabled at [Settings] → [Network & Internet] → [Home network] → [IP control] → [Simple IP control].

Network: Both wired and wireless LANs are supported (stated in source).


Diff vs rev 2: Traits filled (was comments). Revision 2→3. Summary +1 sentence on wired/wireless LAN. Notes +1 line on network. 2 new UNRESOLVED markers (asterisk meaning). All action/event/feedback IDs + shapes untouched.

## Provenance

```yaml
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/remote-display-control/serial-control/
  - https://pro-bravia.sony.net
retrieved_at: 2026-05-28T06:39:22.180Z
last_checked_at: 2026-07-22T01:28:08.127Z
```

## Verification Summary

```yaml
verdict: verified
checked_at: 2026-07-22T01:28:08.127Z
matched_actions: 17
action_count: 17
confidence: medium
summary: "All 17 spec actions matched to source FourCC commands; transport parameters verified; the source event commands are represented in the spec Events section. (10 unresolved item(s) noted in Known Gaps.)"
```

## Known Gaps

```yaml
- "specific KDX8508 sub-model variants (KD-55X8508C, KD-65X8508C, etc.) not confirmed against source. EU models have RED-DA variant specs with differing command availability."
- "no standalone settable parameter variables defined separate from action commands in source."
- "no explicit multi-step macro sequences defined in source."
- "no explicit safety interlock procedures (e.g. power-on sequencing, confirmation dialogs) stated in source."
- "specific KDX8508 sub-model enumeration not confirmed against source."
- "firmware version compatibility not stated."
- "authentication token format not applicable (auth.type: none)."
- "power-on sequencing or confirmation requirements not stated."
- "fault behavior and error recovery sequences not documented in source."
- "source marks getBroadcastAddress and getMacAddress with a trailing \"*\" whose meaning is not explained in the source."
```

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