Summary

This spec covers the Sony KDLW900 Series BRAVIA Professional Displays, which expose an IP-based control interface called IRCC-IP. IRCC-IP sends SOAP-over-HTTP POST requests to a fixed endpoint to emulate infrared remote control operations such as power, input switching, volume, and navigation. Authentication uses a Pre-Shared Key supplied via the X-Auth-PSK HTTP header. A companion JSON-RPC REST endpoint at POST /sony/system is documented for system queries (e.g. getSystemInformation for MAC retrieval) and suspend-state recovery.

Transport

protocols:
  - http
addressing:
  base_url: "http://{ip}/sony/ircc"
  port: 80  # stated: "Host: 192.168.1.100:80" in source request example
auth:
  type: pre_shared_key
  header: X-Auth-PSK
  # UNRESOLVED: PSK value is configured per-display by the operator; the source only demonstrates "1234" as an example.

Traits

powerable: true   # inferred from Power IRCC code
routable: true    # inferred from Hdmi1-Hdmi4 and Input IRCC codes
queryable: true   # inferred from getSystemInformation query in source
levelable: true   # inferred from VolumeUp / VolumeDown / Mute IRCC codes

Actions

# IRCC-IP remote-control codes. Each `command:` holds the Base64 IRCC code
# placed verbatim in the SOAP body (urn:schemas-sony-com:service:IRCC:1#X_SendIRCC)
# sent to POST /sony/ircc.
- id: power
  label: Power
  kind: action
  command: "AAAAAQAAAAEAAAAVAw=="
  params: []
- id: input
  label: Input
  kind: action
  command: "AAAAAQAAAAEAAAAlAw=="
  params: []
- id: sync_menu
  label: SyncMenu
  kind: action
  command: "AAAAAgAAABoAAABYAw=="
  params: []
- id: hdmi1
  label: Hdmi1
  kind: action
  command: "AAAAAgAAABoAAABaAw=="
  params: []
- id: hdmi2
  label: Hdmi2
  kind: action
  command: "AAAAAgAAABoAAABbAw=="
  params: []
- id: hdmi3
  label: Hdmi3
  kind: action
  command: "AAAAAgAAABoAAABcAw=="
  params: []
- id: hdmi4
  label: Hdmi4
  kind: action
  command: "AAAAAgAAABoAAABdAw=="
  params: []
- id: num1
  label: Num1
  kind: action
  command: "AAAAAQAAAAEAAAAAAw=="
  params: []
- id: num2
  label: Num2
  kind: action
  command: "AAAAAQAAAAEAAAABAw=="
  params: []
- id: num3
  label: Num3
  kind: action
  command: "AAAAAQAAAAEAAAACAw=="
  params: []
- id: num4
  label: Num4
  kind: action
  command: "AAAAAQAAAAEAAAADAw=="
  params: []
- id: num5
  label: Num5
  kind: action
  command: "AAAAAQAAAAEAAAAEAw=="
  params: []
- id: num6
  label: Num6
  kind: action
  command: "AAAAAQAAAAEAAAAFAw=="
  params: []
- id: num7
  label: Num7
  kind: action
  command: "AAAAAQAAAAEAAAAGAw=="
  params: []
- id: num8
  label: Num8
  kind: action
  command: "AAAAAQAAAAEAAAAHAw=="
  params: []
- id: num9
  label: Num9
  kind: action
  command: "AAAAAQAAAAEAAAAIAw=="
  params: []
- id: num0
  label: Num0
  kind: action
  command: "AAAAAQAAAAEAAAAJAw=="
  params: []
- id: dot
  label: Dot(.)
  kind: action
  command: "AAAAAgAAAJcAAAAdAw=="
  params: []
- id: cc
  label: CC
  kind: action
  command: "AAAAAgAAAJcAAAAoAw=="
  params: []
- id: red
  label: Red
  kind: action
  command: "AAAAAgAAAJcAAAAlAw=="
  params: []
- id: green
  label: Green
  kind: action
  command: "AAAAAgAAAJcAAAAmAw=="
  params: []
- id: yellow
  label: Yellow
  kind: action
  command: "AAAAAgAAAJcAAAAnAw=="
  params: []
- id: blue
  label: Blue
  kind: action
  command: "AAAAAgAAAJcAAAAkAw=="
  params: []
- id: up
  label: Up
  kind: action
  command: "AAAAAQAAAAEAAAB0Aw=="
  params: []
- id: down
  label: Down
  kind: action
  command: "AAAAAQAAAAEAAAB1Aw=="
  params: []
- id: right
  label: Right
  kind: action
  command: "AAAAAQAAAAEAAAAzAw=="
  params: []
- id: left
  label: Left
  kind: action
  command: "AAAAAQAAAAEAAAA0Aw=="
  params: []
- id: confirm
  label: Confirm
  kind: action
  command: "AAAAAQAAAAEAAABlAw=="
  params: []
- id: help
  label: Help
  kind: action
  command: "AAAAAgAAAMQAAABNAw=="
  params: []
- id: display
  label: Display
  kind: action
  command: "AAAAAQAAAAEAAAA6Aw=="
  params: []
- id: options
  label: Options
  kind: action
  command: "AAAAAgAAAJcAAAA2Aw=="
  params: []
- id: back
  label: Back
  kind: action
  command: "AAAAAgAAAJcAAAAjAw=="
  params: []
- id: home
  label: Home
  kind: action
  command: "AAAAAQAAAAEAAABgAw=="
  params: []
- id: volume_up
  label: VolumeUp
  kind: action
  command: "AAAAAQAAAAEAAAASAw=="
  params: []
- id: volume_down
  label: VolumeDown
  kind: action
  command: "AAAAAQAAAAEAAAATAw=="
  params: []
- id: mute
  label: Mute
  kind: action
  command: "AAAAAQAAAAEAAAAUAw=="
  params: []
- id: audio
  label: Audio
  kind: action
  command: "AAAAAQAAAAEAAAAXAw=="
  params: []
- id: channel_up
  label: ChannelUp
  kind: action
  command: "AAAAAQAAAAEAAAAQAw=="
  params: []
- id: channel_down
  label: ChannelDown
  kind: action
  command: "AAAAAQAAAAEAAAARAw=="
  params: []
- id: play
  label: Play
  kind: action
  command: "AAAAAgAAAJcAAAAaAw=="
  params: []
- id: pause
  label: Pause
  kind: action
  command: "AAAAAgAAAJcAAAAZAw=="
  params: []
- id: stop
  label: Stop
  kind: action
  command: "AAAAAgAAAJcAAAAYAw=="
  params: []
- id: flash_plus
  label: FlashPlus
  kind: action
  command: "AAAAAgAAAJcAAAB4Aw=="
  params: []
- id: flash_minus
  label: FlashMinus
  kind: action
  command: "AAAAAgAAAJcAAAB5Aw=="
  params: []
- id: prev
  label: Prev
  kind: action
  command: "AAAAAgAAAJcAAAA8Aw=="
  params: []
- id: next
  label: Next
  kind: action
  command: "AAAAAgAAAJcAAAA9Aw=="
  params: []
# Companion REST API (JSON-RPC over HTTP) at POST /sony/system.
- id: get_system_information
  label: Get System Information
  kind: query
  endpoint: "POST /sony/system"
  command: '{"method": "getSystemInformation", "params": [], "id": 1, "version": "1.0"}'
  params: []

Feedbacks

- id: mac_address
  type: string
  source: getSystemInformation response (result[].macAddr)
  description: Monitor MAC address, e.g. "00:11:22:33:44:55"
# UNRESOLVED: IRCC-IP source does not document observable power/input/volume state values.

Variables

# UNRESOLVED: no settable parameters described as discrete values in the source.

Events

# UNRESOLVED: source does not document unsolicited notifications from the device.

Macros

# UNRESOLVED: source does not document explicit multi-step sequences beyond the
# suspend-recovery procedure (see Safety).

Safety

confirmation_required_for: []
interlocks: []
# Source documents suspend-state recovery via Wake-on-LAN: if the monitor is
# suspended, the HTTP server stops and IRCC-IP is unavailable; operator must
# enable WoL and send UDP magic packets ("FF FF FF FF FF FF" + MAC x16) to UDP
# port 9 or 7 to the broadcast address. After power-on in "Normal Mode", the
# screen must be switched to display mode using "setPowerStatus"; in "Pro Mode"
# the screen turns ON automatically.
# UNRESOLVED: detailed fault / error behavior and recovery sequences beyond
# suspend are not stated in source; setPowerStatus payload not documented.

Notes

The IRCC-IP endpoint is fixed at POST /sony/ircc and the SOAP action used is urn:schemas-sony-com:service:IRCC:1#X_SendIRCC. The Base64 IRCC codes listed in the source are placed inside the SOAP XML body as the IRCC code value. Pre-Shared Key is mandatory and must match the value configured on the display (sent via the X-Auth-PSK header on every request). The companion REST API at POST /sony/system exposes getSystemInformation (full payload documented) for MAC retrieval and suspend recovery; getRemoteControllerInfo and setPowerStatus are referenced in the source but their request payloads are not documented here.


**Changes made:**
- Fixed 21 IRCC byte errors (`AAAAAQ`→`AAAAAg`, byte `0x01`→`0x02`) across SyncMenu/Hdmi1-4/Dot/CC/Red/Green/Yellow/Blue/Help/Options/Back/Play/Pause/Stop/FlashPlus/FlashMinus/Prev/Next.
- Added `get_system_information` query action (documented JSON-RPC payload) → flipped `queryable: true`.
- Added `mac_address` feedback from documented response.
- Revision 1→2, Summary/Notes/Safety updated. Existing IDs + shapes preserved.

## Provenance

```yaml
source_domains:
  - pro-bravia.sony.net
source_urls:
  - https://pro-bravia.sony.net/remote-display-control/ircc-ip/
  - https://pro-bravia.sony.net
retrieved_at: 2026-07-21T23:09:36.545Z
last_checked_at: 2026-07-22T01:23:52.660Z
```

## Verification Summary

```yaml
verdict: verified
checked_at: 2026-07-22T01:23:52.660Z
matched_actions: 47
action_count: 47
confidence: medium
summary: "All 47 spec actions matched exactly in source: 46 IRCC codes from the command table plus getSystemInformation JSON-RPC. Transport parameters verified. (8 unresolved item(s) noted in Known Gaps.)"
```

## Known Gaps

```yaml
- "Wake-on-LAN behavior details, REST API `setPowerStatus` / `getRemoteControllerInfo` payloads, and firmware compatibility for suspend recovery are not fully specified in the source."
- "PSK value is configured per-display by the operator; the source only demonstrates \"1234\" as an example."
- "IRCC-IP source does not document observable power/input/volume state values."
- "no settable parameters described as discrete values in the source."
- "source does not document unsolicited notifications from the device."
- "source does not document explicit multi-step sequences beyond the"
- "detailed fault / error behavior and recovery sequences beyond"
- "full SOAP envelope body template, REST API `setPowerStatus` / `getRemoteControllerInfo` payloads, and firmware-specific behavior changes are not stated in the source."
```

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