Skip to main content

Sony TV (Simple IP Control)

Sony BRAVIA professional / prosumer displays that expose Sony's older text-based Simple IP Control protocol are driven over a plain TCP socket on the TV's own LAN IP, default port 20060. There is no gateway or serial adapter — one TV becomes one GEM device, and commands target that device directly. This driver creates no zones.

Simple IP Control is a fixed-width ASCII protocol: each frame is *S, a type letter, a four-letter function, and a sixteen-character parameter (for example *SCPOWR0000000000000001). GEM adds the carriage-return / line-feed terminator for you, so the strings you enter never include it.

important
This driver ships its command strings blank

Unlike the HTTP BRAVIA driver, this driver does not bake the Simple IP command strings into the firmware layer. When you add the device it creates the four status-query commands and a set_channel command as empty rows, and it ships no power / volume / mute / input control commands at all. To get live feedback and to control the set you fill in the command strings once on the device's Commands tab — they are the standard, published Sony Simple IP Control frames, listed in full below. Values you type are kept across restarts. Budget a few minutes for this step during commissioning; it is the difference between a device that does nothing and a fully working TV.

Which Sony driver?

GEM ships several Sony display drivers — pick by how the set is reachable:

  • Sony BRAVIA TV (HTTP) — modern BRAVIA Android / Google TVs over the REST/IRCC HTTP API with a Pre-Shared Key. Reach for this first for any current networked BRAVIA. See Sony BRAVIA TV (HTTP).
  • Sony TV (Simple IP Control)this driver. The older text-based Simple IP Control protocol on TCP 20060, for BRAVIA Pro / B2B-grade models that expose that port instead of (or as well as) the REST API.
  • Sony TV (Serial over IP) — the TV's RS-232 service port carried over a serial-to-IP gateway, for sets with no working network control.

Reach for this driver when the set is a BRAVIA Pro / professional model and you can turn on Simple IP Control on TCP 20060 in its network menu. If the set has the modern HTTP API with a Pre-Shared Key, prefer the HTTP driver — it ships its commands ready to use.

What's controlled

  • Live status feedback — once the four status-query strings are filled in, GEM polls the TV and reports power, volume, mute, and the current input so a touchpanel button or a trigger stays in sync even when someone uses the Sony remote.
  • Power, volume, mute, and input — sent through control commands you add on the Commands tab (power on/off, mute on/off, absolute volume, volume step, HDMI select, on-screen navigation). The exact frames are given below.
  • Channelsset_channel tunes a digital channel by its on-screen number. This is the one parameterised command the driver formats for you: you pass a number such as 5.1 and the driver zero-pads it to Simple IP's MMMM.mmmm form (0005.1000) before sending.

Prerequisites

  • The TV is a BRAVIA Pro / professional model. Simple IP Control is not present on every consumer BRAVIA — check the TV's network settings menu for it before choosing this driver. If the set only offers the modern HTTP IP-control with a Pre-Shared Key, use the HTTP driver instead.
  • The TV on the same network as GEM, reachable at a fixed IP (assign a static IP or a DHCP reservation so the address never moves).
  • Simple IP Control turned on in the TV menu: Network → IP Control → Simple IP Control → On, with Authentication set to None. This driver does not implement BRAVIA pre-shared-key authentication, so the Simple IP port must be open without a key.
  • Network Standby (Remote Start) enabled if you want power_on to wake the set from full standby — otherwise the TV's LAN port powers all the way down and ignores a power-on frame (see Power and standby).

Setup

  1. Open Devices, add a device, and choose the Sony TV (Simple IP Control) driver.
  2. Pick the AV subsystem for the device. The tv device type is suggested automatically — leave it as tv.
  3. Fill in the connection fields:
    • TV IP Address (required) — the TV's own LAN IP, e.g. 192.168.1.60.
    • TCP Port (optional) — leave at the default 20060 unless the set uses a non-standard Simple IP port.
    • Status Poll Interval (ms) (optional) — how often GEM re-reads the TV; default 25000 (25 s), minimum 5000.
  4. Save and enable the device. GEM opens the socket and begins polling immediately.
  5. Open the device's Commands tab and enter the command strings from The command frames below — first the four status queries (so feedback works), then the control commands you need (power, HDMI, volume, mute).
  6. Run get_power, then power_on / power_off and an hdmi_1 from the Commands tab to confirm control end-to-end before wiring the TV into macros or a UI.

The command frames

Simple IP Control frames are fixed-width. A frame is *S + a type letter + a four-letter function + a sixteen-character parameter. The type is E for an enquiry (read a value — the parameter is sixteen #) or C for a control (set a value — the parameter is the value, zero-padded to sixteen characters). GEM appends the CR/LF terminator, so never include it in the string you type.

Status queries — fill the four rows the driver created

These four command rows already exist on the Commands tab with empty templates. Paste the template into each. Once they are in place, GEM's background poll can read the set and keep the status attributes live; leave any of them blank and that reading stays empty.

Command (already present)Template to enterReads
get_power*SEPOWR################power on/off → power_state
get_volume*SEVOLU################volume level → volume
get_mute*SEAMUT################mute on/off → mute_state
get_input*SEINPT################current input → input

Channel — already present, formatted for you

Command (already present)Template to enterArgument
set_channel*SCCHNN0000[channel]000channel — pass e.g. 5.1; the driver zero-pads it to 0005.1000 before sending.

Control commands — add these rows

The driver ships no control commands, so add each of these as a new command on the Commands tab (name on the left, template on the right). Power and mute have discrete on/off frames; HDMI select, navigation, and volume/channel stepping use Sony's remote-key (IRCC) frames.

Command to addTemplateDoes
power_on*SCPOWR0000000000000001Turn the TV on (needs Network Standby — see below).
power_off*SCPOWR0000000000000000Turn the TV off (to standby).
mute_on*SCAMUT0000000000000001Mute.
mute_off*SCAMUT0000000000000000Unmute.
volume_up*SCIRCC0000000000000030Step volume up one.
volume_down*SCIRCC0000000000000031Step volume down one.
hdmi_1*SCIRCC0000000000000124Select HDMI 1.
hdmi_2*SCIRCC0000000000000125Select HDMI 2.
hdmi_3*SCIRCC0000000000000126Select HDMI 3.
hdmi_4*SCIRCC0000000000000127Select HDMI 4.
channel_up*SCIRCC0000000000000033Channel up.
channel_down*SCIRCC0000000000000034Channel down.
home*SCIRCC0000000000000006Home menu.
return*SCIRCC0000000000000008Back / return.
display*SCIRCC0000000000000005Display / info.
options*SCIRCC0000000000000007Options menu.
mute_toggle*SCIRCC0000000000000032Toggle mute (remote-key form).
Absolute volume

An absolute-volume frame exists — *SCVOLU00000000000000[volume], where [volume] is an argument you pass. The driver substitutes the value literally (it only auto-pads set_channel, not volume), so the frame is clean only for a two-digit level (10–99). For reliable, model-agnostic volume control use volume_up / volume_down above, or set the TV as the AV zone's Volume Device and drive it with the zone slider (see Volume in a zone).

Direct input selection

The protocol also has a direct input-select frame (*SCINPT…), but its sixteen-character parameter layout varies by model and input family, so it is easy to get wrong. For everyday input switching use the hdmi_1hdmi_4 remote-key commands above; GEM reads the resulting input back through get_input on the next poll.

Power and standby

power_on / power_off send the Simple IP power frame — they do not send a Wake-on-LAN magic packet. For power_on to wake a fully-off set, the TV must keep its network interface alive in standby:

  • Enable Network Standby (labelled Remote Start on some firmware) in the TV menu. With it on, the set answers the power frame and powers up. With it off, a fully-powered-down TV won't respond, and only a physical remote can wake it.
  • Simple IP Control can auto-disable when the TV power-cycles after a firmware update. If the TV suddenly stops responding to all commands, re-enable Simple IP Control in the network menu and consider turning off automatic firmware updates.

Live status feedback

Feedback depends on the four status-query strings being present (see The command frames). With them in place:

  • On connect, GEM reads power → volume → mute → input, about a second apart, so the full status is current within a few seconds of the device coming online.
  • After that, GEM re-reads on the Status Poll Interval (default 25 s). When the TV is on it re-reads volume, mute, and input; when the TV is off it only re-checks power (so an off set isn't polled needlessly). The moment the set reports it has turned on, GEM re-reads volume, mute, and input a second later.
  • Each reading is written to a device attribute — power_state, volume, mute_state, input — so a touchpanel button, a dashboard, or a trigger reflects the set's real state even when someone changes it with the Sony remote.

Raise the interval for lighter network traffic; lower it (down to 5 s) for snappier feedback.

Volume in a zone

If the room's audio comes out of the TV's own speakers, make this TV the AV zone's volume device: open AV Zones, edit the zone, and set its Volume Device to this TV so the zone's volume slider and mute button drive the set (via the volume/mute commands you added). If the room audio instead runs through a receiver, amp, or soundbar, leave that device as the zone's Volume Device and route the TV's own audio away from its speakers, so you aren't fighting two volume controls at once.

Attributes

status_interval is specific to this driver; the live status attributes (power_state, volume, mute_state, input) are set automatically by GEM as it polls — you don't create them by hand, but type them exactly when you reference them in a trigger or macro.

Device — required

AttributeTypeDescription
ipstringThe TV's own LAN IP address (e.g. 192.168.1.60).

Device — optional

AttributeTypeDefaultDescription
portint20060Simple IP Control TCP port.
status_intervalint25000How often (ms) GEM polls the TV for power, volume, mute, and input. Minimum 5000.

Device — status (set automatically)

AttributeTypeDescription
power_statestringon / off.
volumeintCurrent volume level.
mute_statestringon / off.
inputstringCurrent input as <type>_<port>type is one of hdmi, tunr (tuner), comp (component), or screen (screen mirroring), e.g. hdmi_1.

Commands summary

Out of the box the driver creates only these rows; everything else in the tables above is a control command you add yourself.

CommandShipsNotes
get_powercreated (template blank)Enter *SEPOWR################.
get_volumecreated (template blank)Enter *SEVOLU################.
get_mutecreated (template blank)Enter *SEAMUT################.
get_inputcreated (template blank)Enter *SEINPT################.
set_channel (arg channel)created (template blank)Enter *SCCHNN0000[channel]000; driver pads the channel.
power / volume / mute / HDMI / navnot shippedAdd per Control commands.

Known limitations and quirks

  • Command strings ship blank. The driver formats the channel and polls the set, but you must enter the Simple IP frames on the Commands tab before it reads or controls anything. This is by design for this protocol variant — the frames are listed above.
  • Authentication is not supported. Simple IP Control must be set to Authentication: None on the TV; this driver does not send a pre-shared key. If your set requires a key, use the HTTP driver.
  • No Wake-on-LAN. power_on is a Simple IP frame, so the TV must keep Network Standby enabled; a fully-powered-down set won't wake from this driver.
  • Simple IP can auto-disable after a firmware update. Re-enable it in the network menu if commands stop working after the set updates.
  • Absolute volume is two-digit only. The *SCVOLU…[volume] frame isn't auto-padded — prefer volume_up / volume_down or the AV-zone Volume Device.
  • Single device, no zones. A BRAVIA is one GEM device; it creates no zones. Group rooms and multi-room behaviour at the AV-zone / macro layer.

Troubleshooting

SymptomCheck
Connection refused / nothing connectsSimple IP Control is disabled or on a different port. Enable it under Network → IP Control → Simple IP Control and confirm the port (default 20060). Confirm the TV's IP is reachable from GEM and hasn't changed (use a static IP / DHCP reservation).
Connects, but power/volume/mute status never populatesThe status-query strings are still blank. Enter *SEPOWR################, *SEVOLU################, *SEAMUT################, and *SEINPT################ on get_power / get_volume / get_mute / get_input.
No power/volume/input commands to runThose control commands aren't shipped — add them per Control commands.
power_on does nothing when the TV is fully offEnable Network Standby (Remote Start) on the TV. This driver does not send a Wake-on-LAN packet.
Worked, then went dead after a TV updateSimple IP Control auto-disabled on the power-cycle. Re-enable it in the network menu and turn off automatic firmware updates.
Absolute volume sets the wrong levelThe volume frame isn't auto-padded — it's reliable only for two-digit levels. Use volume_up / volume_down or the AV-zone Volume Device instead.
Status readout never reflects the Sony remoteConfirm the four status-query strings are filled in and the poll is running (Status Poll Interval isn't set absurdly high); the background poll is what catches changes made from the remote.

See also

  • Sony BRAVIA TV (HTTP) — the modern REST/IRCC BRAVIA driver, with commands ready to use.
  • AV Zones — set the TV as a zone's Volume Device for volume and mute.
  • Devices — adding and configuring devices.
  • Commands — adding, editing, and running device commands.
  • Command Sets — where a device's command rows live.
  • Attributes — editing device attributes such as status_interval.
  • Triggers — fire automations on the TV's power, volume, mute, or input.