Summary
Simple IP control for Sony BRAVIA Professional FW-XE9001 Series displays. Protocol: SSIP over TCP port 20060, fixed 24-byte messages, four-CC commands. Source: Sony pro-bravia developer portal (Simple IP control page). EU models have RED-DA compliance variants with differing command sets.
Transport
protocols:
- tcp
addressing:
port: 20060
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable # inferred: setPowerStatus, togglePowerStatus, getPowerStatus
- routable # inferred: setInput, getInput (HDMI/Composite/Component/Screen Mirroring)
- queryable # inferred: getPowerStatus, getAudioVolume, getAudioMute, getInput, getPictureMute, getSceneSetting
- levelable # inferred: setAudioVolume, getAudioVolume
Actions
# All commands share a 24-byte fixed frame:
# Byte[0-1] = header 0x2A 0x53 ("*S")
# Byte[2] = message type (C/E/A/N)
# Byte[3-6] = four-CC command
# Byte[7-22] = parameters (16 bytes, right-padded with "0" or "#")
# Byte[23] = footer 0x0A (LF)
# Concatenated as ASCII string per source example: *SCPOWR0000000000000000
# --- IR / remote codes (setIrccCode, 4CC=IRCC) ---
- id: set_ircc_code
label: Send IR Remote Code
kind: action
command: "*SCIRCC{code}"
params:
- name: code
type: string
description: IR code suffix; see IR Commands table (16 hex digits, right-padded with "0")
- id: set_ircc_display
label: IR Display
kind: action
command: "*SCIRCC0000000000000005"
params: []
- id: set_ircc_home
label: IR Home
kind: action
command: "*SCIRCC0000000000000006"
params: []
- id: set_ircc_options
label: IR Options
kind: action
command: "*SCIRCC0000000000000007"
params: []
- id: set_ircc_return
label: IR Return
kind: action
command: "*SCIRCC0000000000000008"
params: []
- id: set_ircc_up
label: IR Up
kind: action
command: "*SCIRCC0000000000000009"
params: []
- id: set_ircc_down
label: IR Down
kind: action
command: "*SCIRCC0000000000000010"
params: []
- id: set_ircc_right
label: IR Right
kind: action
command: "*SCIRCC0000000000000011"
params: []
- id: set_ircc_left
label: IR Left
kind: action
command: "*SCIRCC0000000000000012"
params: []
- id: set_ircc_confirm
label: IR Confirm
kind: action
command: "*SCIRCC0000000000000013"
params: []
- id: set_ircc_red
label: IR Red
kind: action
command: "*SCIRCC0000000000000014"
params: []
- id: set_ircc_green
label: IR Green
kind: action
command: "*SCIRCC0000000000000015"
params: []
- id: set_ircc_yellow
label: IR Yellow
kind: action
command: "*SCIRCC0000000000000016"
params: []
- id: set_ircc_blue
label: IR Blue
kind: action
command: "*SCIRCC0000000000000017"
params: []
- id: set_ircc_num1
label: IR Num1
kind: action
command: "*SCIRCC0000000000000018"
params: []
- id: set_ircc_num2
label: IR Num2
kind: action
command: "*SCIRCC0000000000000019"
params: []
- id: set_ircc_num3
label: IR Num3
kind: action
command: "*SCIRCC0000000000000020"
params: []
- id: set_ircc_num4
label: IR Num4
kind: action
command: "*SCIRCC0000000000000021"
params: []
- id: set_ircc_num5
label: IR Num5
kind: action
command: "*SCIRCC0000000000000022"
params: []
- id: set_ircc_num6
label: IR Num6
kind: action
command: "*SCIRCC0000000000000023"
params: []
- id: set_ircc_num7
label: IR Num7
kind: action
command: "*SCIRCC0000000000000024"
params: []
- id: set_ircc_num8
label: IR Num8
kind: action
command: "*SCIRCC0000000000000025"
params: []
- id: set_ircc_num9
label: IR Num9
kind: action
command: "*SCIRCC0000000000000026"
params: []
- id: set_ircc_num0
label: IR Num0
kind: action
command: "*SCIRCC0000000000000027"
params: []
- id: set_ircc_volume_up
label: IR Volume Up
kind: action
command: "*SCIRCC0000000000000030"
params: []
- id: set_ircc_volume_down
label: IR Volume Down
kind: action
command: "*SCIRCC0000000000000031"
params: []
- id: set_ircc_mute
label: IR Mute
kind: action
command: "*SCIRCC0000000000000032"
params: []
- id: set_ircc_channel_up
label: IR Channel Up
kind: action
command: "*SCIRCC0000000000000033"
params: []
- id: set_ircc_channel_down
label: IR Channel Down
kind: action
command: "*SCIRCC0000000000000034"
params: []
- id: set_ircc_subtitle
label: IR Subtitle
kind: action
command: "*SCIRCC0000000000000035"
params: []
- id: set_ircc_dot
label: IR DOT
kind: action
command: "*SCIRCC0000000000000038"
params: []
- id: set_ircc_picture_off
label: IR Picture Off
kind: action
command: "*SCIRCC0000000000000050"
params: []
- id: set_ircc_wide
label: IR Wide
kind: action
command: "*SCIRCC0000000000000061"
params: []
- id: set_ircc_jump
label: IR Jump
kind: action
command: "*SCIRCC0000000000000062"
params: []
- id: set_ircc_sync_menu
label: IR Sync Menu
kind: action
command: "*SCIRCC0000000000000076"
params: []
- id: set_ircc_forward
label: IR Forward
kind: action
command: "*SCIRCC0000000000000077"
params: []
- id: set_ircc_play
label: IR Play
kind: action
command: "*SCIRCC0000000000000078"
params: []
- id: set_ircc_rewind
label: IR Rewind
kind: action
command: "*SCIRCC0000000000000079"
params: []
- id: set_ircc_prev
label: IR Prev
kind: action
command: "*SCIRCC0000000000000080"
params: []
- id: set_ircc_stop
label: IR Stop
kind: action
command: "*SCIRCC0000000000000081"
params: []
- id: set_ircc_next
label: IR Next
kind: action
command: "*SCIRCC0000000000000082"
params: []
- id: set_ircc_pause
label: IR Pause
kind: action
command: "*SCIRCC0000000000000084"
params: []
- id: set_ircc_flash_plus
label: IR Flash Plus
kind: action
command: "*SCIRCC0000000000000086"
params: []
- id: set_ircc_flash_minus
label: IR Flash Minus
kind: action
command: "*SCIRCC0000000000000087"
params: []
- id: set_ircc_tv_power
label: IR TV Power
kind: action
command: "*SCIRCC0000000000000098"
params: []
- id: set_ircc_audio
label: IR Audio
kind: action
command: "*SCIRCC0000000000000099"
params: []
- id: set_ircc_input
label: IR Input
kind: action
command: "*SCIRCC0000000000000101"
params: []
- id: set_ircc_sleep
label: IR Sleep
kind: action
command: "*SCIRCC0000000000000104"
params: []
- id: set_ircc_sleep_timer
label: IR Sleep Timer
kind: action
command: "*SCIRCC0000000000000105"
params: []
- id: set_ircc_video_2
label: IR Video 2
kind: action
command: "*SCIRCC0000000000000108"
params: []
- id: set_ircc_picture_mode
label: IR Picture Mode
kind: action
command: "*SCIRCC0000000000000110"
params: []
- id: set_ircc_demo_surround
label: IR Demo Surround
kind: action
command: "*SCIRCC0000000000000121"
params: []
- id: set_ircc_hdmi1
label: IR HDMI 1
kind: action
command: "*SCIRCC0000000000000124"
params: []
- id: set_ircc_hdmi2
label: IR HDMI 2
kind: action
command: "*SCIRCC0000000000000125"
params: []
- id: set_ircc_hdmi3
label: IR HDMI 3
kind: action
command: "*SCIRCC0000000000000126"
params: []
- id: set_ircc_hdmi4
label: IR HDMI 4
kind: action
command: "*SCIRCC0000000000000127"
params: []
- id: set_ircc_action_menu
label: IR Action Menu
kind: action
command: "*SCIRCC0000000000000129"
params: []
- id: set_ircc_help
label: IR Help
kind: action
command: "*SCIRCC0000000000000130"
params: []
# --- Power (4CC=POWR) ---
- id: set_power_status_off
label: Set Power Status Off (Standby)
kind: action
command: "*SCPOWR0000000000000000"
params: []
- id: set_power_status_on
label: Set Power Status On (Active)
kind: action
command: "*SCPOWR0000000000000001"
params: []
- id: get_power_status
label: Get Power Status
kind: query
command: "*SEPOWR################"
params: []
- id: toggle_power_status
label: Toggle Power Status
kind: action
command: "*SCTPOW################"
params: []
# --- Volume (4CC=VOLU) ---
- id: set_audio_volume
label: Set Audio Volume
kind: action
command: "*SCVOLU{volume}"
params:
- name: volume
type: string
description: Volume value as decimal digit pad left-padded with "0" (e.g. 0000000000000029). Range not stated in source.
- id: get_audio_volume
label: Get Audio Volume
kind: query
command: "*SEVOLU################"
params: []
# --- Audio Mute (4CC=AMUT) ---
- 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: []
# --- Input (4CC=INPT) ---
- id: set_input_hdmi
label: Set Input HDMI
kind: action
command: "*SCINPT0000000001000{n}"
params:
- name: n
type: integer
description: HDMI port number (1-9999, right-padded with "0"; example source shows 0000 in last 4 bytes)
- id: set_input_composite
label: Set Input Composite
kind: action
command: "*SCINPT0000000003000{n}"
params:
- name: n
type: integer
description: Composite number (1-9999, right-padded with "0")
- id: set_input_component
label: Set Input Component
kind: action
command: "*SCINPT0000000004000{n}"
params:
- name: n
type: integer
description: Component number (1-9999, right-padded with "0")
- id: set_input_screen_mirroring
label: Set Input Screen Mirroring
kind: action
command: "*SCINPT0000000005000{n}"
params:
- name: n
type: integer
description: Screen Mirroring number (1-9999, right-padded with "0")
- id: get_input
label: Get Current Input
kind: query
command: "*SEINPT################"
params: []
# --- Picture Mute (4CC=PMUT) ---
- 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
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: []
# --- Scene Setting (4CC=SCEN) ---
- id: set_scene_setting
label: Set Scene Setting
kind: action
command: "*SCSCEN{value}"
params:
- name: value
type: string
description: One of: "auto", "auto24pSync", "general". Case-sensitive, right-padded with "#" to 16 bytes. e.g. "auto24pSync#####"
- id: get_scene_setting
label: Get Scene Setting
kind: query
command: "*SESCEN################"
params: []
# --- Network / Address queries (4CC=BADR, MADR) ---
- id: get_broadcast_address
label: Get Broadcast IPv4 Address
kind: query
command: "*SEBADReth0############"
params: []
- id: get_mac_address
label: Get MAC Address
kind: query
command: "*SEMADReth0############"
params: []
Feedbacks
- id: power_state
type: enum
values: [standby, active]
description: Reply to getPowerStatus; "0" = standby, "1" = active (last parameter byte)
- id: audio_mute_state
type: enum
values: [unmuted, muted]
description: Reply to getAudioMute; "0" = not muted, "1" = muted (last parameter byte)
- id: picture_mute_state
type: enum
values: [disabled, enabled]
description: Reply to getPictureMute; "0" = disabled, "1" = enabled (last parameter byte)
- id: current_input
type: enum
values: [hdmi, composite, component, screen_mirroring]
description: Reply to getInput/fireInputChange; byte 11 of params: 1=HDMI, 3=Composite, 4=Component, 5=Screen Mirroring
- id: audio_volume
type: integer
description: Reply to getAudioVolume; volume value in last 16 param bytes (right-padded "0")
- id: scene_setting
type: string
description: Reply to getSceneSetting; one of "auto", "auto24pSync", "general", right-padded with "#"
- id: broadcast_address
type: string
description: Reply to getBroadcastAddress; IPv4 dotted-quad, right-padded with "#"
- id: mac_address
type: string
description: Reply to getMacAddress; MAC address, right-padded with "#"
- id: command_result
type: enum
values: [success, error, not_available, not_found]
description: "Generic Answer (A) reply: 16x'0' = success, 16x'F' = error, 16x'N' = not available / not found"
Variables
# UNRESOLVED: no settable continuous parameters beyond volume are documented as separate variables
# Volume range not stated in source
Events
- id: fire_power_change
type: enum
values: [standby, active]
description: Unsolicited notify (N) from monitor. 4CC=POWR, last param byte 0=standby, 1=active. Sent when powering on/off.
- id: fire_input_change
type: enum
values: [hdmi, composite, component, screen_mirroring]
description: Unsolicited notify (N) from monitor. 4CC=INPT. All-zero params = generic input change; byte 11 = source kind, last 4 = port number.
- id: fire_volume_change
type: integer
description: Unsolicited notify (N) from monitor. 4CC=VOLU, last 16 param bytes = new volume value.
- id: fire_mute_change
type: enum
values: [unmuted, muted]
description: Unsolicited notify (N) from monitor. 4CC=AMUT, last param byte 0=unmuted, 1=muted.
- id: fire_picture_mute_change
type: enum
values: [enabled, disabled]
description: Unsolicited notify (N) from monitor. 4CC=PMUT, last param byte 0=enabled, 1=disabled. (Note: source lists "0" = enabled in firePicture MuteChange description but "Disabled" for getPictureMute reply; convention is preserved as written.)
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: Sony pro-bravia Simple IP control page (https://pro-bravia.sony.net/remote-display-control/). Generic to BRAVIA Professional displays; applies to FW-XE9001 series per scraper family assignment.
- Frame is 24 bytes total. Source example for power off is the literal ASCII string
*SCPOWR0000000000000000(header "*S", C, "POWR", 16 zero-pad, LF omitted from the printed example). - All four-CC commands use uppercase ASCII letters. Parameter padding is "0" for numeric values and "#" for string/address values.
- Answer (A) messages: 16x'0' = success, 16x'F' = error, 16x'N' = not available / not found.
- EU area FW-XE9001 models have 3 RED-DA compliance variants with differing command availability. See https://pro-bravia.sony.net/setup/device-settings/red-da/ for spec details.
- All SSIP commands are fire-and-forget at the TCP layer; the monitor returns an Answer (A) and may send Notify (N) events for state changes.
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/remote-display-control
- https://pro-bravia.sony.net/remote-display-control/serial-control/command
retrieved_at: 2026-06-14T22:16:04.104Z
last_checked_at: 2026-06-16T07:17:48.548Z
Verification Summary
verdict: verified
checked_at: 2026-06-16T07:17:48.548Z
matched_actions: 80
action_count: 80
confidence: medium
summary: "All 80 spec action commands have literal matches in the Sony FW-XE9001 source protocol table; transport (TCP port 20060, no auth) verified. (5 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware version compatibility not stated; RED-DA EU spec variant command coverage not fully documented in source"
- "no settable continuous parameters beyond volume are documented as separate variables"
- "source documents no multi-step sequences; remove section if not applicable"
- "source contains no safety warnings, interlock procedures, or power-on sequencing requirements"
- "firmware version compatibility not stated; volume numeric range not stated; HDMI/Composite/Component port number limits stated as 1–9999 but actual physical port count not given; specific RED-DA EU variant command set differences not in source"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0