Sony Simple IP Control
Simple IP Control is a simple communication protocol for controlling the monitor over a local network. It is designed for developers who are familiar with CIS (Custom Installation Services) and AV equipment control systems. The control listening port is TCP 20060 on the monitor. It uses fixed-size 24-byte data and supports many commands.
Preparation
Enable Remote Device Control
Procedure: [Settings] → [Network & Internet]→[Remote device settings]→[Control remotely]
Enable Simple IP Control
Procedure: [Settings] → [Network & Internet]→[Home network]→[IP control]→[Simple IP control]
Supported Models
Popular Supported Model Families
2014–2015 Models: KDL-##W###B/C series
2014–2018 Models: XBR-##X###B-F series
2015–Present: Nearly all Android TV and Google TV models across all series (including X80K, A80J, XR, etc.).
Professional Displays: All BRAVIA B2B/Pro displays. (FW, BZ Series)
Notes
Displays will send un-requested status updates when their state changes, such as power on/off, input change, volume change, etc. These updates are sent to all connected clients. If you want to receive these updates, you need to keep the connection open and listen for incoming data.
Polling is not necessary to get the current status of the display. You can simply connect and wait for the display to send its status updates.
Quick Start
Use the driver SonySimpleIpDriver(IDgiCommunication communicationDriver) constructor by injecting a
DotNetTcpClient dependency, with the relevant address and port of the display:
var tcpConfiguration = new DgiRemoteDeviceConfiguration.NetworkConfiguration
{
IpAddress = "192.168.1.228",
Port = 20060,
};
var tcpClient = new DotNetTcpClient(tcpConfiguration);
var driver = new SonySimpleIpDriver(tcpClient);
Registration
Connect to the display by registering the driver. This will send the registration command to the display and receive the initial status updates.
driver.Register();
Async and non async methods
Non async commands will send the message to the display without waiting for a response. These are normally used for SIMPL+ integration.
Async commands will send the message to the display and wait for a response. These are normally used for C# integration, where you want to know if the command was successful or not. Note that these methods will throw and error if the display does not respond within 10 seconds or if the display responds with an error message. Catching these errors is important to ensure that your application can handle communication issues gracefully.
Refer to the API documentation for the list of available commands and their usage.
Un-Registration
Unregistering will close the connection to the display and stop receiving status updates.
driver.Unregister();
Session Example
| Notes | Sent to display | Received from display |
| --------------|---------------------------|---------------------------|
| On Connection | | *SNPOWR0000000000000000\n |
| | | *SNINPT0000000100000001\n |
| | | *SNAMUT0000000000000000\n |
| | | *SNVOLU0000000000000020\n |
| | | *SNPMUT0000000000000000\n |
| --------------|---------------------------|---------------------------|
| Power On | *SCPOWR0000000000000001\n | |
| | *SCPOWR0000000000000001 | *SAPOWR0000000000000000\n |
| | | *SNPOWR0000000000000001\n |
| --------------|---------------------------|---------------------------|
| A Mute On | *SCAMUT0000000000000001\n | |
| | | *SAAMUT0000000000000000\n |
| | | *SNAMUT0000000000000001\n |
| --------------|---------------------------|---------------------------|
| Vol 29 | *SCVOLU0000000000000029\n | |
| | | *SAVOLU0000000000000000\n |
| | | *SNVOLU0000000000000029\n |
| | | *SNAMUT0000000000000000\n |
| --------------|---------------------------|---------------------------|
| V Mute On | *SCPMUT0000000000000001\n | |
| | | *SAPMUT0000000000000000\n |
| | | *SNPMUT0000000000000001\n |
| --------------|---------------------------|---------------------------|
| V Mute Off | *SAPMUT0000000000000000\n | |
| | | *SNPMUT0000000000000000\n |
| --------------|---------------------------|---------------------------|
| HDMI 2 | *SCINPT0000000100000002\n | |
| | | *SAINPT0000000000000000\n |
| | | *SNINPT0000000100000002\n |
| --------------|---------------------------|---------------------------|
| Power Off | *SCPOWR0000000000000000\n | |
| | | *SAPOWR0000000000000000\n |
| | | *SNPOWR0000000000000000\n |
| --------------|---------------------------|---------------------------|
| Async P On | | *SNPOWR0000000000000001\n |