Summary

Sony professional display supporting Simple IP Control over TCP (port 20060). Fixed 24-byte message format with FourCC commands. Controls include power, volume, mute, input selection, picture mute, scene setting, IR code transmission, and network info queries. EU models have 3 RED-DA compliance variants with different command availability.

Transport

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

Message Format

# Fixed 24-byte message structure (per source):
# Byte[0-1]   Header   2 bytes  0x2A 0x53 ('*S')  fixed
# Byte[2]     MsgType  1 byte   0x43 [C]=Control, 0x45 [E]=Enquiry, 0x41 [A]=Answer, 0x4E [N]=Notify
# Byte[3-6]   Command  4 bytes  ASCII FourCC (e.g. POWR, VOLU, INPT, SCEN, IRCC, MADR, BADR)
# Byte[7-22]  Params   16 bytes ASCII digits, left-padded with '0', right-padded with '#'
# Byte[23]    Footer   1 byte   0x0A (LF)  fixed

Traits

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

Actions

# Control commands (Message Type C = 0x43)
- id: setIrccCode
  label: Send IR Command
  kind: action
  command: "*SCIRCC{code}#"   # IR code right-padded with '0' to fill 16 bytes
  params:
    - name: code
      type: integer
      description: IR code number (see IR Commands table; 2-digit decimal zero-padded at end of 16-byte param field)

- id: setPowerStatus
  label: Set Power Status
  kind: action
  command: "*SCPOWR{state}#"  # 0000000000000000=Standby, 0000000000000001=Active
  params:
    - name: state
      type: integer
      description: "0 = Standby (Off), 1 = Active (On)"

- id: togglePowerStatus
  label: Toggle Power
  kind: action
  command: "*SCTPOW################"   # 16 '#' fill, no parameter
  params: []

- id: setAudioVolume
  label: Set Audio Volume
  kind: action
  command: "*SCVOLU{volume}#"
  params:
    - name: volume
      type: integer
      description: Volume value as zero-padded decimal in 16-byte field (e.g. 0000000000000029)

- id: setAudioMute
  label: Set Audio Mute
  kind: action
  command: "*SCAMUT{state}#"
  params:
    - name: state
      type: integer
      description: "0 = Unmute, 1 = Mute"

- id: setInput
  label: Set Input
  kind: action
  command: "*SCINPT{type}0000{index}#"
  params:
    - name: type
      type: integer
      description: "Input type: 1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring"
    - name: index
      type: integer
      description: Input index (1-9999)

- id: setPictureMute
  label: Set Picture Mute
  kind: action
  command: "*SCPMUT{state}#"
  params:
    - name: state
      type: integer
      description: "0 = Disabled, 1 = Enabled (black screen)"

- id: togglePictureMute
  label: Toggle Picture Mute
  kind: action
  command: "*SCTPMU################"
  params: []

- id: setSceneSetting
  label: Set Scene Setting
  kind: action
  command: "*SCSCEN{scene}#"
  params:
    - name: scene
      type: string
      description: "Scene name: auto, auto24pSync, general - case-sensitive, pad right with '#' (e.g. auto24pSync#####)"

# Enquiry commands (Message Type E = 0x45)
- id: getPowerStatus
  label: Get Power Status
  kind: query
  command: "*SEPOWR################"
  params: []

- id: getAudioVolume
  label: Get Audio Volume
  kind: query
  command: "*SEVOLU################"
  params: []

- id: getAudioMute
  label: Get Audio Mute
  kind: query
  command: "*SEAMUT################"
  params: []

- id: getInput
  label: Get Current Input
  kind: query
  command: "*SEINPT################"
  params: []

- id: getPictureMute
  label: Get Picture Mute State
  kind: query
  command: "*SEPMUT################"
  params: []

- id: getSceneSetting
  label: Get Scene Setting
  kind: query
  command: "*SESCEN################"
  params: []

# EU asterisk-marked commands
- id: getBroadcastAddress
  label: Get Broadcast IPv4 Address
  kind: query
  command: "*SEBADReth0##########"
  params: []

- id: getMacAddress
  label: Get MAC Address
  kind: query
  command: "*SEMADReth0##########"
  params: []

Feedbacks

- id: powerStatusResponse
  type: enum
  values:
    - "0000000000000000 = Standby (Off)"
    - "0000000000000001 = Active (On)"
    - "FFFFFFFFFFFFFFFF = Error"

- id: audioVolumeResponse
  type: string
  description: Zero-padded decimal volume value (e.g. 0000000000000029)

- id: audioMuteResponse
  type: enum
  values:
    - "0000000000000000 = Not Muted"
    - "0000000000000001 = Muted"
    - "FFFFFFFFFFFFFFFF = Error"

- id: inputResponse
  type: enum
  values:
    - "0000000000000001000{1-9999} = HDMI"
    - "0000000000000003000{1-9999} = Composite"
    - "0000000000000004000{1-9999} = Component"
    - "0000000000000005000{1-9999} = Screen Mirroring"
    - "NNNNNNNNNNNNNNNN = Not Found"
    - "FFFFFFFFFFFFFFFF = Error"

- id: pictureMuteResponse
  type: enum
  values:
    - "0000000000000000 = Disabled"
    - "0000000000000001 = Enabled"
    - "FFFFFFFFFFFFFFFF = Error"

- id: sceneSettingResponse
  type: string
  description: Current scene setting value (auto, auto24pSync, general) padded with '#'

- id: sceneSettingNotAvailable
  type: enum
  values:
    - "NNNNNNNNNNNNNNNN = Not available for the current input"

- id: irccResponse
  type: enum
  values:
    - "0000000000000000 = Success"
    - "FFFFFFFFFFFFFFFF = Error"

- id: broadcastAddressResponse
  type: string
  description: IPv4 broadcast address right-padded with '#' (e.g. 192.168.0.14####)

- id: macAddressResponse
  type: string
  description: MAC address right-padded with '#'

Variables

# UNRESOLVED: no standalone settable parameters outside action commands

Events

# Notify messages (Message Type N = 0x4E) - unsolicited from monitor
- id: firePowerChange
  type: notification
  command: "*SNPOWR{state}#"
  params:
    - name: state
      type: integer
      description: "0 = Powering off, 1 = Powering on"

- id: fireInputChange
  type: notification
  command: "*SNINPT{type}0000{index}#"
  params:
    - name: type
      type: integer
      description: "1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring"
    - name: index
      type: integer
      description: Input index (1-9999)

- id: fireVolumeChange
  type: notification
  command: "*SNVOLU{volume}#"
  params:
    - name: volume
      type: string
      description: New volume value as zero-padded decimal

- id: fireMuteChange
  type: notification
  command: "*SNAMUT{state}#"
  params:
    - name: state
      type: integer
      description: "0 = Unmuting, 1 = Muting"

- id: firePictureMuteChange
  type: notification
  command: "*SNPMUT{state}#"
  params:
    - name: state
      type: integer
      description: "0 = Picture mute enabled, 1 = Picture mute disabled"

Macros

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

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures in source

Notes

Simple IP Control uses 24-byte fixed message format: header (2 bytes 0x2A 0x53 = *S), message type (1 byte: 0x43 Control, 0x45 Enquiry, 0x41 Answer, 0x4E Notify), FourCC command (4 bytes ASCII), parameters (16 bytes, left-padded with 0 or right-padded with #), footer (1 byte 0x0A = LF). Netcat example: netcat [IP] 20060.

Power OFF example from source: request *SCPOWR0000000000000000 → response *SAPOWR0000000000000000 *SNPOWR0000000000000000 (Accept + Notify).

EU models have 3 RED-DA compliance variants; getBroadcastAddress (BADR) and getMacAddress (MADR) are marked EU-only in source. IR codes sent via setIrccCode — see IR Commands table (Display=05, Home=06, Num0=27, Num9=26, VolumeUp=30, VolumeDown=31, Mute=32, TV Power=98, etc.).

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/reference/
  - https://pro-bravia.sony.net/remote-display-control/ircc-ip/
  - "https://aca.im/driver_docs/Sony/sony%20bravia%20simple%20ip%20control.pdf"
  - https://pro-bravia.sony.net/remote-display-control/
retrieved_at: 2026-05-26T10:24:24.928Z
last_checked_at: 2026-06-12T19:52:53.307Z

Verification Summary

verdict: verified
checked_at: 2026-06-12T19:52:53.307Z
matched_actions: 17
action_count: 17
confidence: medium
summary: "All 17 spec actions found with exact wire tokens; transport parameters verified; full bidirectional coverage of source command catalogue. (6 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "EU RED-DA spec variants not detailed in source"
- "no standalone settable parameters outside action commands"
- "no explicit multi-step sequences described in source"
- "no safety warnings or interlock procedures in source"
- "firmware compatibility range not stated"
- "RED-DA EU spec variant details not in source"

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