well, good news is, that this should be easy
using upnp-inspector, there is a function "SetVolume" which does exactly what you would expect of it. i traced the connection in wireshark, simple http post to port 52235
Post
Code: Select all
POST /upnp/control/RenderingControl1 HTTP/1.0
Host: 192.168.8.7
User-Agent: Twisted PageGetter
Content-Length: 366
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetVolume"
content-type: text/xml ;charset="utf-8"
connection: close
<?xml version="1.0" encoding="utf-8"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><ns0:SetVolume xmlns:ns0="urn:schemas-upnp-org:service:RenderingControl:1"><InstanceID>0</InstanceID><Channel>Master</Channel><DesiredVolume>4</DesiredVolume></ns0:SetVolume></s:Body></s:Envelope
Reply
Code: Select all
HTTP/1.1 200 OK
CONTENT-LENGTH: 257
CONTENT-TYPE: text/xml; charset="utf-8"
DATE: Thu, 01 Jan 1970 00:14:40 GMT
EXT:
SERVER: Linux/9.0 UPnP/1.0 PROTOTYPE/1.0
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetVolumeResponse xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1"></u:SetVolumeResponse></s:Body></s:Envelope>
the volume is encoded at
in the post
so what to do with this? simple way would be some bash script with curl or in perl. but i would like to find a way to execute this on the television itself, this way we don't depend on any other devices. does anyone know where the upnp server is running? is it part of exeDSP? if not, we should be able to do the same call the upnp server does but directly. or maybe any way to open a connection localhost to the upnp server? netcat comes to mind, but that won't be availibe on the tv, or is it?