Summary

Sony BRAVIA Professional Display (KJX8300 Series) Simple IP control protocol. 24-byte fixed TCP messages on port 20060. Four-CC ASCII commands for power, input, volume, mute, picture mute, scene, IR passthrough. EU models have RED-DA spec variants with restricted command set.

Transport

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

Traits

- powerable       # inferred from setPowerStatus / togglePowerStatus
- routable        # inferred from setInput
- queryable       # inferred from getPowerStatus, getInput, etc.
- levelable       # inferred from setAudioVolume

Actions

- id: set_ircc_code
  label: Set IRCC Code
  kind: action
  command: "*SCIRCC000000000000{ircc_code}"  # 24-byte frame; pad ircc_code per IR Commands table
  params:
    - name: ircc_code
      type: string
      description: Two-digit IRCC code (see IR Commands table, e.g. 09=Up, 30=Volume Up)
  notes: Frame = header 0x2A 0x53 'C' 'I' 'R' 'C' 'C' + 16-byte param + footer 0x0A

- id: set_power_status_standby
  label: Set Power Standby (Off)
  kind: action
  command: "*SCPOWR0000000000000000"  # 24-byte Control frame
  params: []

- id: set_power_status_active
  label: Set Power Active (On)
  kind: action
  command: "*SCPOWR0000000000000001"
  params: []

- id: get_power_status
  label: Get Power Status
  kind: query
  command: "*SEPOWR################"  # Enquiry; 16 '#' = parameter filler
  params: []

- id: toggle_power_status
  label: Toggle Power Status
  kind: action
  command: "*SCTPOW################"
  params: []

- id: set_audio_volume
  label: Set Audio Volume
  kind: action
  command: "*SCVOLU00000000000{volume_padded}"  # 16-char param, right-padded with '0', e.g. 0000000000000029 = 29
  params:
    - name: volume
      type: integer
      description: Volume value (0-100 typical, exact range UNRESOLVED)

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

- id: set_audio_mute_off
  label: Set Audio Mute Off
  kind: action
  command: "*SCAMUT0000000000000000"
  params: []

- id: set_audio_mute_on
  label: Set Audio Mute On
  kind: action
  command: "*SCAMUT0000000000000001"
  params: []

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

- id: set_input
  label: Set Input
  kind: action
  command: "*SCINPT0000000000{kind}{port_padded}"  # kind: 1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring; port 1-9999
  params:
    - name: kind
      type: integer
      description: Input type: 1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring
    - name: port
      type: integer
      description: Input port number (1-9999)

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

- id: set_picture_mute_off
  label: Set Picture Mute Off
  kind: action
  command: "*SCPMUT0000000000000000"
  params: []

- id: set_picture_mute_on
  label: Set Picture Mute On (Screen Black)
  kind: action
  command: "*SCPMUT0000000000000001"
  params: []

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

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

- id: set_scene_setting
  label: Set Scene Setting
  kind: action
  command: "*SCSCEN{scene_padded}"  # 16-byte param, right-padded with '#', e.g. "auto24pSync#####"
  params:
    - name: scene
      type: string
      description: Scene name (case-sensitive): "auto", "auto24pSync", "general"; right-pad with '#' to 16 chars

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

- id: get_broadcast_address
  label: Get Broadcast Address (Eth0)
  kind: query
  command: "*SEBADREth0###########"  # 16-byte param: "eth0" + 12 '#'
  params: []
  notes: EU models only (per source)

- id: get_mac_address
  label: Get MAC Address (Eth0)
  kind: query
  command: "*SEMADREth0###########"  # 16-byte param: "eth0" + 12 '#'
  params: []
  notes: EU models only (per source)

Feedbacks

- id: power_state
  type: enum
  values: [standby, active]
  notes: "From getPowerStatus Answer: byte[22] = 0=Standby, 1=Active, F=Error"

- id: audio_volume
  type: integer
  notes: "From getAudioVolume Answer: 16-byte value, e.g. 0000000000000029 = 29"

- id: audio_mute
  type: enum
  values: [unmuted, muted]

- id: current_input
  type: object
  notes: "From getInput Answer: byte[11] = 1=HDMI/3=Composite/4=Component/5=Screen Mirroring; bytes[16-19] = port 1-9999"

- id: picture_mute
  type: enum
  values: [disabled, enabled]

- id: scene_setting
  type: string
  notes: "From getSceneSetting Answer: case-sensitive string padded with '#'"

- id: broadcast_address
  type: string
  notes: "From getBroadcastAddress Answer: e.g. 192.168.0.14## padded with '#'"

- id: mac_address
  type: string
  notes: "From getMacAddress Answer: MAC padded with '#'"

Variables

- id: ircc_code_table
  type: map
  notes: "IRCC code mapping (setIrccCode parameter): Display=5, Home=6, Options=7, Return=8, Up=9, Down=10, Right=11, Left=12, Confirm=13, Red=14, Green=15, Yellow=16, Blue=17, Num1=18, Num2=19, Num3=20, Num4=21, Num5=22, Num6=23, Num7=24, Num8=25, Num9=26, Num0=27, VolumeUp=30, VolumeDown=31, Mute=32, ChannelUp=33, ChannelDown=34, Subtitle=35, DOT=38, PictureOff=50, Wide=61, Jump=62, SyncMenu=76, Forward=77, Play=78, Rewind=79, Prev=80, Stop=81, Next=82, Pause=84, FlashPlus=86, FlashMinus=87, TVPower=98, Audio=99, Input=101, Sleep=104, SleepTimer=105, Video2=108, PictureMode=110, DemoSurround=121, HDMI1=124, HDMI2=125, HDMI3=126, HDMI4=127, ActionMenu=129, Help=130"

Events

- id: fire_power_change
  message_type: N
  fourcc: POWR
  notes: "Sent when power state changes. byte[22]: 0=powering off, 1=powering on"

- id: fire_input_change
  message_type: N
  fourcc: INPT
  notes: "Sent when input changes. byte[11]: 1=HDMI/3=Composite/4=Component/5=Screen Mirroring; bytes[16-19]: port 1-9999"

- id: fire_volume_change
  message_type: N
  fourcc: VOLU
  notes: "Sent when volume changes. 16-byte value"

- id: fire_mute_change
  message_type: N
  fourcc: AMUT
  notes: "Sent when mute state changes. byte[22]: 0=unmuting, 1=muting"

- id: fire_picture_mute_change
  message_type: N
  fourcc: PMUT
  notes: "Sent when picture mute state changes. byte[22]: 0=enabled, 1=disabled (per source table)"

Macros

# UNRESOLVED: no multi-step sequences described in source

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source notes EU RED-DA compliance variants restrict available commands, but no specific safety interlocks documented

Notes

Frame format: Every message is exactly 24 bytes: header 0x2A 0x53 ("*S"), 1-byte message type, 4-byte Four-CC command, 16-byte parameter field, footer 0x0A. Message types: C (Control), E (Enquiry), A (Answer), N (Notify).

Parameter padding: Numeric/enum params use ASCII '0' for left-pad and '#' for right-pad. String params right-pad with '#' to 16 chars (e.g. auto24pSync#####).

Error responses: Answer frames with all-F (or all-N) parameter bytes indicate error/not-found.

EU models: Three RED-DA specification variants with differing settings/commands. Reference https://pro-bravia.sony.net/setup/device-settings/red-da/ for per-variant details (not enumerated in source).

Volume range: Source does not state min/max volume value; integer range UNRESOLVED.

Required monitor settings: Remote device control and Simple IP control must be enabled in on-screen settings (Network & Internet → Home network → IP control).

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/ircc-ip
  - https://pro-bravia.sony.net/remote-display-control/rest-api
  - https://pro-bravia.sony.net/setup/device-settings/red-da
  - https://pro-bravia.sony.net/
retrieved_at: 2026-06-09T01:48:44.944Z
last_checked_at: 2026-06-09T07:22:55.736Z

Verification Summary

verdict: verified
checked_at: 2026-06-09T07:22:55.736Z
matched_actions: 20
action_count: 20
confidence: medium
summary: "All 20 spec actions matched verbatim in source command table. Transport port 20060 confirmed. Full bidirectional protocol coverage. (4 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "list of RED-DA specification variants not enumerated in source; firmware range not stated"
- "no multi-step sequences described in source"
- "source notes EU RED-DA compliance variants restrict available commands, but no specific safety interlocks documented"
- "firmware version compatibility; full IRCC code parameterization; broadcast/MAC commands marked EU-only in source — applicability to other regions unconfirmed"

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