Summary

Sony BRAVIA Professional Displays support Simple IP Control (SSIP), a proprietary TCP-based protocol for monitor control over a local network. The protocol uses fixed-length 24-byte messages with a binary header/footer and ASCII FourCC command identifiers. It covers power, volume, mute, input selection, picture mute, scene settings, and IR remote command emulation.

Transport

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

Traits

traits:
  - powerable    # setPowerStatus, togglePowerStatus commands
  - queryable    # getPowerStatus, getAudioVolume, getAudioMute, getInput, etc.
  - routable     # setInput, getInput for input switching
  - levelable    # setAudioVolume for volume control

Actions

actions:
  - id: set_power_status
    label: Set Power Status
    kind: action
    command: "*SCPOWR{param}"
    description: "Sets power state. Parameter 0000000000000000 = Standby (Off), 0000000000000001 = Active (On)."
    params:
      - name: state
        type: enum
        values: [off, on]
        description: "Power state to set"
    response:
      success: "*SAPOWR0000000000000000"
      error: "*SAPOWRFFFFFFFFFFFFFFFF"

  - id: toggle_power_status
    label: Toggle Power Status
    kind: action
    command: "*SCTPOW################"
    description: "Toggles the current power status."
    response:
      success: "*SATPOW0000000000000000"
      error: "*SATPOWFFFFFFFFFFFFFFFF"

  - id: set_audio_volume
    label: Set Audio Volume
    kind: action
    command: "*SCVOLU{param}"
    description: "Sets the volume. Value is left-padded with zeros in 16-char field, e.g. 0000000000000029."
    params:
      - name: volume
        type: integer
        description: "Volume level (0-based, left-padded to 16 digits)"
    response:
      success: "*SAVOLU0000000000000000"
      error: "*SAVOLUFFFFFFFFFFFFFFFF"

  - id: set_audio_mute
    label: Set Audio Mute
    kind: action
    command: "*SCAMUT{param}"
    description: "Sets audio mute state. 0000000000000000 = Unmute, 0000000000000001 = Mute."
    params:
      - name: state
        type: enum
        values: [unmute, mute]
        description: "Mute state to set"
    response:
      success: "*SAAMUT0000000000000000"
      error: "*SAAMUTFFFFFFFFFFFFFFFF"

  - id: set_input
    label: Set Input
    kind: action
    command: "*SCINPT{param}"
    description: "Changes the input source. Format: connector type code followed by port index."
    params:
      - name: connector
        type: enum
        values: [hdmi, composite, component, screen_mirroring]
        description: "Input connector type"
      - name: port
        type: integer
        description: "Port number (1-9999)"
    response:
      success: "*SAINPT0000000000000000"
      not_found: "*SAINPTNNNNNNNNNNNNNNNN"
      error: "*SAINPTFFFFFFFFFFFFFFFF"

  - id: set_picture_mute
    label: Set Picture Mute
    kind: action
    command: "*SCPMUT{param}"
    description: "Controls picture mute. 0000000000000000 = Off (show picture), 0000000000000001 = On (black screen)."
    params:
      - name: state
        type: enum
        values: [off, on]
        description: "Picture mute state"
    response:
      success: "*SAPMUT0000000000000000"
      error: "*SAPMUTFFFFFFFFFFFFFFFF"

  - id: toggle_picture_mute
    label: Toggle Picture Mute
    kind: action
    command: "*SCTPMU################"
    description: "Toggles the picture mute state."
    response:
      success: "*SATPMU0000000000000000"
      error: "*SATPMUFFFFFFFFFFFFFFFF"

  - id: set_scene_setting
    label: Set Scene Setting
    kind: action
    command: "*SCSCEN{param}"
    description: "Changes scene setting. Parameter is a case-sensitive string right-padded with '#'. Values: auto, auto24pSync, general."
    params:
      - name: scene
        type: enum
        values: [auto, auto24pSync, general]
        description: "Scene setting value (case-sensitive)"
    response:
      success: "*SASCEN0000000000000000"
      not_available: "*SASCENNNNNNNNNNNNNNNNN"
      error: "*SASCENFFFFFFFFFFFFFFFF"

  - id: set_ircc_code
    label: Send IR Command
    kind: action
    command: "*SCIRCC{param}"
    description: "Sends an IR remote control command. Parameter is the 16-digit IR code."
    params:
      - name: code
        type: string
        description: "IR command code, e.g. 0000000000000005 for Display"
    response:
      success: "*SAIRCC0000000000000000"
      error: "*SAIRCCFFFFFFFFFFFFFFFF"

Feedbacks

feedbacks:
  - id: power_status
    label: Power Status
    type: enum
    values: [off, on]
    command: "*SEPOWR################"
    response:
      off: "*SAPOWR0000000000000000"
      on: "*SAPOWR0000000000000001"
      error: "*SAPOWRFFFFFFFFFFFFFFFF"

  - id: audio_volume
    label: Audio Volume
    type: integer
    command: "*SEVOLU################"
    description: "Returns current volume level as a left-zero-padded integer."
    response:
      success: "*SAVOLU{16-digit volume}"
      error: "*SAVOLUFFFFFFFFFFFFFFFF"

  - id: audio_mute
    label: Audio Mute Status
    type: enum
    values: [unmuted, muted]
    command: "*SEAMUT################"
    response:
      unmuted: "*SAAMUT0000000000000000"
      muted: "*SAAMUT0000000000000001"
      error: "*SAAMUTFFFFFFFFFFFFFFFF"

  - id: input
    label: Current Input
    type: string
    command: "*SEINPT################"
    description: "Returns current input. Connector codes: 0001=HDMI, 0003=Composite, 0004=Component, 0005=Screen Mirroring, followed by port index."
    response:
      hdmi: "*SAINPT00000001{port}"
      composite: "*SAINPT00000003{port}"
      component: "*SAINPT00000004{port}"
      screen_mirroring: "*SAINPT00000005{port}"
      error: "*SAINPTFFFFFFFFFFFFFFFF"

  - id: picture_mute
    label: Picture Mute Status
    type: enum
    values: [disabled, enabled]
    command: "*SEPMUT################"
    response:
      disabled: "*SAPMUT0000000000000000"
      enabled: "*SAPMUT0000000000000001"
      error: "*SAPMUTFFFFFFFFFFFFFFFF"

  - id: scene_setting
    label: Scene Setting
    type: string
    command: "*SESCEN################"
    description: "Returns current scene setting string."
    response:
      success: "*SASCEN{16-char scene value}"
      not_available: "*SASCENNNNNNNNNNNNNNNNN"
      error: "*SASCENFFFFFFFFFFFFFFFF"

  - id: broadcast_address
    label: Broadcast Address
    type: string
    command: "*SEBADReth0############"
    description: "Returns broadcast IPv4 address for the specified interface."
    response:
      success: "*SABADR{address padded with #}"
      error: "*SABADRFFFFFFFFFFFFFFFF"

  - id: mac_address
    label: MAC Address
    type: string
    command: "*SEMADReth0############"
    description: "Returns MAC address for the specified interface."
    response:
      success: "*SAMADR{mac padded with #}"
      error: "*SAMADRFFFFFFFFFFFFFFFF"

Variables

variables:
  - id: volume
    label: Volume Level
    type: integer
    min: 0
    max: null  # UNRESOLVED: max volume not stated in source
    command_set: setAudioVolume
    command_get: getAudioVolume

  - id: audio_mute
    label: Audio Mute
    type: enum
    values: [unmute, mute]
    command_set: setAudioMute
    command_get: getAudioMute

  - id: picture_mute
    label: Picture Mute
    type: enum
    values: [off, on]
    command_set: setPictureMute
    command_get: getPictureMute

Events

events:
  - id: power_change
    label: Power State Change
    notify_command: "*SNPOWR{param}"
    description: "Sent when power state changes."
    values:
      off: "*SNPOWR0000000000000000"
      on: "*SNPOWR0000000000000001"

  - id: input_change
    label: Input Change
    notify_command: "*SNINPT{param}"
    description: "Sent when input changes. Same connector format as setInput responses."
    values:
      change_event: "*SNINPT0000000000000000"
      hdmi: "*SNINPT00000001{port}"
      composite: "*SNINPT00000003{port}"
      component: "*SNINPT00000004{port}"
      screen_mirroring: "*SNINPT00000005{port}"

  - id: volume_change
    label: Volume Change
    notify_command: "*SNVOLU{16-digit volume}"
    description: "Sent when volume changes."

  - id: mute_change
    label: Mute Change
    notify_command: "*SNAMUT{param}"
    description: "Sent when mute state changes."
    values:
      unmuted: "*SNAMUT0000000000000000"
      muted: "*SNAMUT0000000000000001"

  - id: picture_mute_change
    label: Picture Mute Change
    notify_command: "*SNPMUT{param}"
    description: "Sent when picture mute state changes."
    values:
      enabled: "*SNPMUT0000000000000000"
      disabled: "*SNPMUT0000000000000001"

Macros

# UNRESOLVED: no multi-step sequences described in source

Safety

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

Notes

  • All messages are exactly 24 bytes: 2-byte header (0x2A 0x53), 1-byte message type, 4-byte FourCC command, 16-byte parameter, 1-byte footer (0x0A).
  • Message types: C (Control/client-to-monitor), E (Enquiry/client-to-monitor), A (Answer/monitor-to-client), N (Notify/monitor-to-client).
  • Answer 0000000000000000 = success, FFFFFFFFFFFFFFFF = error.
  • String parameters for setSceneSetting are case-sensitive and right-padded with #.
  • Input connector codes: 0001 = HDMI, 0003 = Composite, 0004 = Component, 0005 = Screen Mirroring.
  • EU area models have 3 specification types based on RED-DA compliance; settings and available commands may differ.
  • IR remote commands are sent via setIrccCode with numeric parameters (see IR Commands table in source).
  • Both wired and wireless LAN connections are supported. Monitor must have Remote Device Control and Simple IP Control enabled in settings.

Provenance

source_domains:
  - pro-bravia.sony.net
source_urls:
  - https://pro-bravia.sony.net/remote-display-control/simple-ip-control/
retrieved_at: 2026-04-30T04:30:58.917Z
last_checked_at: 2026-06-02T22:15:04.621Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T22:15:04.621Z
matched_actions: 9
action_count: 9
confidence: medium
summary: "All 9 spec actions traced to source (dip-safe re-verify). (7 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "max volume not stated in source"
- "no multi-step sequences described in source"
- "no safety warnings or interlock procedures found in source"
- "maximum volume level not stated in source"
- "maximum number of concurrent TCP connections not stated"
- "connection timeout / keepalive behavior not stated"
- "firmware version compatibility not stated in source"

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