Summary
Sony XR Series display monitors expose a 24-byte fixed-size ASCII TCP control protocol ("Simple IP control") on TCP port 20060 for network control of power, input selection, volume, mute, picture mute, and scene setting. The protocol uses Four-CC commands and supports control, enquiry, answer, and notify message types.
Transport
protocols:
- tcp
addressing:
port: 20060
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable
- routable
- queryable
- levelable
Actions
- id: set_power_status
label: Set Power Status
kind: action
command: "*SCPOWR{state}\n" # state: 16 ASCII zeros + 0 (standby/off) or 1 (active/on); e.g. "*SCPOWR0000000000000000\n"
params:
- name: state
type: integer
enum: [0, 1]
description: "0 = Standby (Off), 1 = Active (On)"
- id: get_power_status
label: Get Power Status
kind: query
command: "*SEPOWR################\n"
params: []
- id: toggle_power_status
label: Toggle Power Status
kind: action
command: "*SCTPOW################\n"
params: []
- id: set_audio_volume
label: Set Audio Volume
kind: action
command: "*SCVOLU{volume_padded}\n" # volume as 16 ASCII digit chars, zero-padded on left, e.g. 41 = "0000000000000029"
params:
- name: volume
type: integer
description: "Volume value (decimal), right-aligned in 16-char field with '0' padding"
- id: get_audio_volume
label: Get Audio Volume
kind: query
command: "*SEVOLU################\n"
params: []
- id: set_audio_mute
label: Set Audio Mute
kind: action
command: "*SCAMUT{state}\n" # state: 15 ASCII zeros + 0 (unmute) or 1 (mute)
params:
- name: state
type: integer
enum: [0, 1]
description: "0 = Unmute, 1 = Mute"
- id: get_audio_mute
label: Get Audio Mute
kind: query
command: "*SEAMUT################\n"
params: []
- id: set_input
label: Set Input
kind: action
command: "*SCINPT0000000{kind}0000{input}\n" # kind: 1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring; input: 4-digit zero-padded 1-9999
params:
- name: kind
type: integer
enum: [1, 3, 4, 5]
description: "1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring"
- name: input
type: integer
description: "Input number 1-9999, zero-padded to 4 digits"
- id: get_input
label: Get Input
kind: query
command: "*SEINPT################\n"
params: []
- id: set_picture_mute
label: Set Picture Mute
kind: action
command: "*SCPMUT{state}\n" # state: 15 ASCII zeros + 0 (disable) or 1 (enable)
params:
- name: state
type: integer
enum: [0, 1]
description: "0 = Disabled (picture on), 1 = Enabled (screen black)"
- id: get_picture_mute
label: Get Picture Mute
kind: query
command: "*SEPMUT################\n"
params: []
- id: toggle_picture_mute
label: Toggle Picture Mute
kind: action
command: "*SCTPMU################\n"
params: []
- id: set_scene_setting
label: Set Scene Setting
kind: action
command: "*SCSCEN{value_padded_hash}\n" # value: 16 chars, "auto", "auto24pSync", "general" right-padded with "#", case-sensitive
params:
- name: value
type: string
enum: [auto, auto24pSync, general]
description: "Scene name right-padded to 16 chars with '#'; e.g. 'auto24pSync#####'"
- id: get_scene_setting
label: Get Scene Setting
kind: query
command: "*SESCEN################\n"
params: []
- id: get_broadcast_address
label: Get Broadcast Address
kind: query
command: "*SEBADREth0############\n" # interface name "eth0" right-padded with "#" to 16 chars; EU models only
params:
- name: interface
type: string
description: "Interface name (e.g. 'eth0'), right-padded with '#' to 16 chars"
- id: get_mac_address
label: Get MAC Address
kind: query
command: "*SEMADREth0############\n" # EU models only
params:
- name: interface
type: string
description: "Interface name (e.g. 'eth0'), right-padded with '#' to 16 chars"
- id: set_ircc_code
label: Send IR Remote Code
kind: action
command: "*SCIRCC{ir_code_padded}\n" # 16 ASCII digit chars (or value from IR Commands table), right-padded with 0s
params:
- name: code
type: integer
description: "IR code value (e.g. 5=Display, 6=Home, 30=Volume Up, 98=TV Power); see IR Commands table"
Feedbacks
- id: power_state
type: enum
values: [standby, active]
description: "Returned in getPowerStatus answer; 0=Standby, 1=Active"
- id: audio_volume
type: integer
description: "Volume value returned in getAudioVolume answer (16 ASCII digit chars, decimal)"
- id: audio_mute_state
type: enum
values: [unmuted, muted]
description: "0=Not Muted, 1=Muted"
- id: current_input
type: object
description: "Current input returned by getInput; kind (1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring) and 4-digit input number 1-9999"
- id: picture_mute_state
type: enum
values: [disabled, enabled]
description: "0=Disabled, 1=Enabled"
- id: scene_setting
type: string
description: "Current scene name returned by getSceneSetting (e.g. 'auto', 'auto24pSync', 'general')"
- id: broadcast_address
type: string
description: "IPv4 broadcast address of named interface, returned by getBroadcastAddress; e.g. '192.168.0.14'"
- id: mac_address
type: string
description: "MAC address of named interface, returned by getMacAddress; right-padded with '#'"
Variables
# UNRESOLVED: no settable parameter pool documented beyond the discrete Actions above; remove this section if not applicable
Events
- id: fire_power_change
source: monitor
message_type: N
command: "*SNPOWR{state}\n"
description: "Sent on power change; state 0=powering off, 1=powering on"
- id: fire_input_change
source: monitor
message_type: N
command: "*SNINPT{kind_padded}{input}\n"
description: "Sent on input change; 16-byte param = 7 zeros + kind (1/3/4/5) + 4 zeros + 4-digit input number"
- id: fire_volume_change
source: monitor
message_type: N
command: "*SNVOLU{volume_padded}\n"
description: "Sent on volume change; 16 ASCII digit chars (decimal)"
- id: fire_mute_change
source: monitor
message_type: N
command: "*SNAMUT{state}\n"
description: "Sent on mute change; state 0=unmuting, 1=muting"
- id: fire_picture_mute_change
source: monitor
message_type: N
command: "*SNPMUT{state}\n"
description: "Sent on picture mute change; state 0=enabled, 1=disabled (note: source labels appear inverted from the control direction - confirm on hardware)"
Macros
# UNRESOLVED: source documents no multi-step sequences; remove section if not applicable
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or power-on sequencing requirements
Notes
Source documents an explicit 24-byte message frame: header *S (0x2A 0x53), type byte (C=Control, E=Enquiry, A=Answer, N=Notify), Four-CC command, 16-byte ASCII parameter field, footer \n (0x0A). The header/footer are fixed and the parameter field is always 16 bytes (digit 0, #, or . for IP addresses) regardless of whether the field is fully used. Answer messages for success fill the 16-byte param with ASCII 0; error answers fill it with ASCII F. Not-Found answer uses ASCII N padding.
Source example for power off: client sends *SCPOWR0000000000000000 (then \n), monitor replies *SAPOWR0000000000000000\n (accept) and *SNPOWR0000000000000000\n (notify of current OFF state). The "\n" in the example is the 24th byte (footer) and is not visible in the literal text but is part of every frame.
EU area models have 3 RED-DA specification variants; settings and available commands differ per variant. getBroadcastAddress and getMacAddress are flagged with an asterisk indicating EU-only availability.
Required monitor settings: Settings → Network & Internet → Remote device settings → Control remotely (enable); Settings → Network & Internet → Home network → IP control → Simple IP control (enable). Both wired and wireless LANs supported; computer and monitor must be on the same network.
Source includes an extensive IR command table (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) — each maps to a numeric code in the setIrccCode parameter field.
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:31:02.425Z
last_checked_at: 2026-06-02T22:15:06.173Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T22:15:06.173Z
matched_actions: 17
action_count: 17
confidence: medium
summary: "All 17 spec actions traced to source (dip-safe re-verify). (5 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware version compatibility not stated; EU models have 3 RED-DA specifications with differing settings and command availability, source does not enumerate which commands are restricted"
- "no settable parameter pool documented beyond the discrete Actions above; remove this section if not applicable"
- "source documents no multi-step sequences; remove section if not applicable"
- "source contains no safety warnings, interlock procedures, or power-on sequencing requirements"
- "source provides no timing/latency guidance, no keepalive/heartbeat info, and no defined behavior on connection drop. Protocol is documented as plaintext TCP with no encryption, no auth, and no firmware version dependency table."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0