
Overview
The sound from this speaker is amazing and I wanted something more portable with great sound. So, a few years back I wired in a USB bluetooth receiver and added lithium ion batteries to this speaker to make it portable and bluetooth enabled.
I ended up powering it with a 2S2P battery pack for a voltage output of around 3.7v x2 ~= 7.4v and about 4Ah at 7.4V or 29.6Wh.
After using this for a couple of years, I noticed that sometimes the bluetooth would not connect. My current theory is that the voltage eventually gets too low to power the USB. I think this is because I opted to to power it with only a 7.4 volts battery.
I think it is time to update this speaker with a 3S2P battery pack for a voltage of about 11.1v which should give it the longevity it deserves. The upper voltage would be 12.6v while the low voltage would be 9v. The capacity of this new pack should be about 4Ah @11.1V or 44.4Wh
Speaker Power Consumption
Power consumption recording while idle and while listening to some tunes.
Off (Momentary Switch) - disabled now | 15 mA / 0.19w |
|---|
| Idle | 30 mA / 0.38w |
|---|
| Running | 280 mA / 3.5 w |
|---|
|
|
|---|
Off Time (33.8Wh / 0.19 W) | ~7.5 days |
|---|
Standby Time (33.8 Wh / 0.38 W) | ~3.5 days |
|---|
Run Time (33.8 Wh / 3.5 W) | ~9.5 hours |
|---|
Bluetooth Module


Specifications
- High Bluetooth V5.0 makes your non-Bluetooth devices Bluetooth-Enabled, easily transmit audio wirelessly. It's compatible with a variety of Bluetooth devices.
- With aptX lantency technology, this adapter provides fast, stable and smooth transmision without audio delay. You will get a rich and clear sound experience and enjoy comfortable audio-video synchronization.
- Transmitter Mode: Plug into your non-Bluetooth device like TV, PC, CD player, MP3/MP4 and pair to your Bluetooth speakers and headphones. Receiver Mode: Plug into your non-Bluetooth Home/Vehicle Sound Systems and pair to your smart phone.
- Mini Bluetooth adapter, no need any drivers, plug in the USB port to use. One-button switching mode, red light for transmitting mode, blue light for receiver mode.
- Charge it on the USB port, never worry about running out of power when you use it. Enjoy 1 year warranty.
I confirmed that the last mode is preserved after powering off/on.
Pictures of Initial Conversion V1






Revision V2
As part of this revision, we are going to add a bigger battery to the speaker.
This new battery build will use 6 - 18650 Lithium Ion batteries with a capacity of about 2Ah each.
Battery Build
We are building a 3S2P 11.1V (12.6v Max) Lithium Ion battery.



Testing shows a capacity of our battery pack around 3.20Ah or 33.77Wh.
BMS
Module name: 3S 12.6V Li-ion Lithium Battery 18650 Charger Protection PCB Board Suitable range: For nominal voltage 3.6V 3.7V lithium battery(Including 18650,26650, lithium polymer batteries)

| Specification | Value |
|---|
| Charging voltage | 12.6V - 13.0V |
| Maximum output current | 20A |
| Maximum output power / charging power | 252W |
| Low Voltage Disconnect | 9V or 3V/cell |
| Size | 59 x 20 x 3.4mm |
Buck Converter

Specifications
| Module property | Non-isolated buck module |
|---|
| Input voltage | 3.2-40V (try not to exceed 38V as input) |
|---|
| Output voltage | 1.25-35V continuously adjustable |
|---|
| Output current | 0-3A |
|---|
| Working temperature | -40~+85 degrees |
|---|
| Working frequency | 180KHz |
|---|
| Conversion efficiency | up to 92% (efficiency related to input, output voltage, current, voltage difference) |
|---|
| Switching frequency | 65KHz |
|---|
| Output ripple | <30mV |
|---|
| Short circuit protection | Limited current 8A |
|---|
| Over temperature protection | Automatically turn off the output after over temperature |
|---|
| Input reverse connection protection | None, (If necessary, please input a large current diode in the input string) |
|---|
Question: Can we safely charge this with our 14.6v 20A Charger?
Answer: No, charger toggles between charge and standby and battery shows 13+ volts. The BMS is disconnecting and reconnecting because the voltage is too high.
Perhaps we can add a voltage regulator with the output set to about 12.6v ?

When using the supplied AC/DC wall plug (output=12.2v), the buck converter outputs about 11.5v. This is above the nominal voltage which should still charge the battery.
When charging from a vehicle or RV, this should not be an issue since the voltage is typically higher than 12.6v. We might think about replacing the wall ACDC plug with one that outputs about 14v or higher at 3A.
We replaced the AC/DC wall plug with a 16.8V 1A 4s Lithium Battery Charger Adapter.

Installation
So, we added a buck converter to the input which drops the voltage to 12.9v to charge the battery and power the speaker. This buck module was simply hot glued to to the bottom of the board.


A toggle switch was added to disconnect the stereo from the power inputs. This decreases the "standby" load to 15mA as opposed to 30mA.
An added bonus is that it is easier to operate the toggle and toggling on always turns on the unit.

And voila, all done and running on battery and it sounds amazing!

Revision V3
Going to rework this so I don't need the buck converter or I replace the buck converter with a buck/boost converter.
At present it doesn't seem like it is charging to full capacity with the buck converter. Could also just be the battery level monitor. We shall see.
I opted to use a buck boost converter. Tested it out and it holds the voltage steady with varying input voltage. Seems like it is the best option.
Buck/Boost Converter
https://www.amazon.ca/gp/product/B0CCHPPKW4/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

XL6009 buck boost converter
- With automatic voltage boosting and bucking function.
- ⚡【Input Voltage】:3.8~32V.
- ⚡【Output Voltages】:1.25~35V.
- ⚡【Input Current】:3A (max), no load 18mA (5V input, 8V output, no load less than 18mA. The higher the voltage, the higher the no load current.)
- ⚡【Conversion efficiency】:<94% (the higher the differential pressure, the lower the efficiency)
Wiring
Using Buck/Boost Converter


We replaced the AC/DC wall plug with a 12V 2.5A Adapter. The previous one died from overheating.
Testing reveals that the speaker pulls upwards of 3A when charging.
The DC jack has the following specifications:
Additionnel Changes
I also cut the power toggle trace since I always seem to accidentally hit this. When powering on with the switch, the unit defaults to always power on.

I also ended up replacing the speaker connector since it broke apart.

The majority of this information is applicable to using the speaker with Airplay.
Does not work with the above hack.
IOS App
Philips SoundStudio

Port Scan
Not shown: 995 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
80/tcp open http?
443/tcp open https?
1025/tcp open rtsp Apple AirTunes rtspd 103.2
1900/tcp open tcpwrapped
8080/tcp open http Pioneer VSX-921, Denon DNP-720AE, or Marantz AV7005 AV receiver http config
Service Info: Device: media device
WIFI Endpoints
When we enable the access point on the speaker, we can access some endpoints.
| Endpoint | Description |
|---|
| http://192.168.1.1/pc_index.asp | Home page |
| http://192.168.1.1/1000/wireless_network_config.asp | Wifi Network Config
|
http://192.168.1.1/goform/formHandlerConfigureProfileSettings | Set Wifi Network Cofig Parameters | Parameter | Sample Value |
|---|
| SSID | mywifi%28WPA2+TKIP%2BCCMP%29 | | SSID1 |
| | Security1 | NONE | | Key0 |
| | Key1 |
| | Key2 |
| | Key3 |
| | KeyIndex | 1 | | Passphrase | password | | Passphrase1 | password | | Cipher1 | TKIP | | DHCPClient |
|
|
http://192.168.1.1:8080/description.xml
| eDMP3.9_CE2 BridgeCo (later acquired by SMSC, then Microchip) made turnkey DLNA/AirPlay platforms. Philips appears to have built their product on top of BridgeCo's reference software.
<?xml version="1.0"?>
<root
xmlns="urn:schemas-upnp-org:device-1-0"
xmlns:ms=" urn:microsoft-com:wmc-1-0"
xmlns:pnpx="http://schemas.microsoft.com/windows/pnpx/2005/11"
xmlns:df="http://schemas.microsoft.com/windows/2008/09/devicefoundation">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device
ms:X_MS_SupportsWMDRM="true">
<dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMR-1.50</dlna:X_DLNADOC>
<pnpx:X_compatibleId>MS_DigitalMediaDeviceClass_DMR_V001
</pnpx:X_compatibleId>
<pnpx:X_deviceCategory>MediaDevices
</pnpx:X_deviceCategory>
<pnpx:X_hardwareId>BridgecoCE2DM870_0xBD VEN_14E7&DEV_0001&REV_01
</pnpx:X_hardwareId>
<df:X_deviceCategory>Multimedia.DMR
</df:X_deviceCategory>
<deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
<friendlyName>unknown</friendlyName>
<manufacturer></manufacturer>
<manufacturerURL></manufacturerURL>
<modelDescription>eDMP3.9_CE2</modelDescription>
<modelName>eDMP3.9_CE2</modelName>
<modelNumber></modelNumber>
<modelURL></modelURL>
<serialNumber>0025D16935B5</serialNumber>
<UDN>uuid:5f9ec1b3-ed59-1900-4530-0025d16935b5</UDN>
<UPC>123810928305556upc</UPC>
<iconList>
<icon>
<mimetype>image/jpeg</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/BCO_device_sm_icon.jpg</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<width>120</width>
<height>120</height>
<depth>24</depth>
<url>/BCO_device_lrg_icon.jpg</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/BCO_device_sm_icon.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>120</width>
<height>120</height>
<depth>24</depth>
<url>/BCO_device_lrg_icon.png</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
<serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
<SCPDURL>/RenderingControl/desc.xml</SCPDURL>
<controlURL>/RenderingControl/ctrl</controlURL>
<eventSubURL>/RenderingControl/evt</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<SCPDURL>/ConnectionManager/desc.xml</SCPDURL>
<controlURL>/ConnectionManager/ctrl</controlURL>
<eventSubURL>/ConnectionManager/evt</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<SCPDURL>/AVTransport/desc.xml</SCPDURL>
<controlURL>/AVTransport/ctrl</controlURL>
<eventSubURL>/AVTransport/evt</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-dm-holdings-com:service:X_HtmlPageHandler:1</serviceType>
<serviceId>urn:schemas-dm-holdings-com:serviceId:X_HtmlPage</serviceId>
<SCPDURL>/HtmlPageHandler/desc.xml</SCPDURL>
<controlURL>/HtmlPageHandler/ctrl</controlURL>
<eventSubURL>/HtmlPageHandler/evt</eventSubURL>
</service>
</serviceList>
<deviceList>
<device>
<deviceType>urn:schemas-upnp-org:device:WholeHomeAudioDevice:1</deviceType>
<friendlyName>unknown</friendlyName>
<manufacturer></manufacturer>
<manufacturerURL></manufacturerURL>
<modelDescription>eDMP3.9_CE2</modelDescription>
<modelName>eDMP3.9_CE2</modelName>
<modelNumber></modelNumber>
<UDN>uuid:WholeHomeAudio-Embedded-Device</UDN>
<serviceList>
<service>
<serviceType>urn:schemas-dm-holdings-com:service:X_WholeHomeAudio:1</serviceType>
<serviceId>urn:schemas-dm-holdings-com:serviceId:X_WholeHomeAudio:1</serviceId>
<SCPDURL>/WholeHomeAudio/desc.xml</SCPDURL>
<controlURL>/WholeHomeAudio/ctrl</controlURL>
<eventSubURL>/WholeHomeAudio/evt</eventSubURL>
</service>
</serviceList>
</device>
</deviceList>
<presentationURL>http://192.168.1.1</presentationURL>
</device>
</root>
|
Soap APIs
| URL | Description |
|---|
| /RenderingControl/ctrl | ListPresets FactoryDefaults, InstallationDefaults SelectPreset
GetMute / SetMute GetVolume / SetVolume
But the only allowed preset listed is: FactoryDefaults
The capabilities are defined in: /RenderingControl/desc.xml
curl http://192.168.1.1:8080/RenderingControl/desc.xml
<?xml version="1.0"?>
<scpd
xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<actionList>
<action>
<name>ListPresets</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentPresetNameList</name>
<direction>out</direction>
<relatedStateVariable>PresetNameList</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SelectPreset</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>PresetName</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_PresetName</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetMute</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>CurrentMute</name>
<direction>out</direction>
<relatedStateVariable>Mute</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetMute</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>DesiredMute</name>
<direction>in</direction>
<relatedStateVariable>Mute</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetVolume</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>CurrentVolume</name>
<direction>out</direction>
<relatedStateVariable>Volume</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetVolume</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>DesiredVolume</name>
<direction>in</direction>
<relatedStateVariable>Volume</relatedStateVariable>
</argument>
</argumentList>
</action>
</actionList>
<serviceStateTable>
<stateVariable sendEvents="no">
<name>PresetNameList</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>LastChange</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>Mute</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>Volume</name>
<dataType>ui2</dataType>
<allowedValueRange>
<minimum>0</minimum>
<maximum>100</maximum>
<step>1</step>
</allowedValueRange>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Channel</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>Master</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_InstanceID</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_PresetName</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>FactoryDefaults</allowedValue>
</allowedValueList>
</stateVariable>
</serviceStateTable>
</scpd>
Get Presets
curl -s \
-H 'Content-Type: text/xml; charset="utf-8"' \
-H 'SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#ListPresets"' \
--data '<?xml version="1.0" encoding="utf-8"?>
<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:ListPresets
xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
<InstanceID>0</InstanceID>
</u:ListPresets>
</s:Body>
</s:Envelope>' \
http://192.168.1.1:8080/RenderingControl/ctrl
Set Preset
curl -s \
-H 'Content-Type: text/xml; charset="utf-8"' \
-H 'SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SelectPreset"' \
--data '<?xml version="1.0" encoding="utf-8"?>
<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:SelectPreset xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
<InstanceID>0</InstanceID>
<PresetName>Jazz</PresetName>
</u:SelectPreset>
</s:Body>
</s:Envelope>' \
http://192.168.1.1:8080/RenderingControl/ctrl
|
| /AVTransport/ctrl | Play, Pause, Stop, etc.
curl http://192.168.1.1:8080/AVTransport/desc.xml
<?xml version="1.0"?>
<scpd
xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<actionList>
<action>
<name>SetAVTransportURI</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentURI</name>
<direction>in</direction>
<relatedStateVariable>AVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>CurrentURIMetaData</name>
<direction>in</direction>
<relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetMediaInfo</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>NrTracks</name>
<direction>out</direction>
<relatedStateVariable>NumberOfTracks</relatedStateVariable>
</argument>
<argument>
<name>MediaDuration</name>
<direction>out</direction>
<relatedStateVariable>CurrentMediaDuration</relatedStateVariable>
</argument>
<argument>
<name>CurrentURI</name>
<direction>out</direction>
<relatedStateVariable>AVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>CurrentURIMetaData</name>
<direction>out</direction>
<relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
</argument>
<argument>
<name>NextURI</name>
<direction>out</direction>
<relatedStateVariable>NextAVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>NextURIMetaData</name>
<direction>out</direction>
<relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
</argument>
<argument>
<name>PlayMedium</name>
<direction>out</direction>
<relatedStateVariable>PlaybackStorageMedium</relatedStateVariable>
</argument>
<argument>
<name>RecordMedium</name>
<direction>out</direction>
<relatedStateVariable>RecordStorageMedium</relatedStateVariable>
</argument>
<argument>
<name>WriteStatus</name>
<direction>out</direction>
<relatedStateVariable>RecordMediumWriteStatus</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetTransportInfo</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentTransportState</name>
<direction>out</direction>
<relatedStateVariable>TransportState</relatedStateVariable>
</argument>
<argument>
<name>CurrentTransportStatus</name>
<direction>out</direction>
<relatedStateVariable>TransportStatus</relatedStateVariable>
</argument>
<argument>
<name>CurrentSpeed</name>
<direction>out</direction>
<relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetPositionInfo</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Track</name>
<direction>out</direction>
<relatedStateVariable>CurrentTrack</relatedStateVariable>
</argument>
<argument>
<name>TrackDuration</name>
<direction>out</direction>
<relatedStateVariable>CurrentTrackDuration</relatedStateVariable>
</argument>
<argument>
<name>TrackMetaData</name>
<direction>out</direction>
<relatedStateVariable>CurrentTrackMetaData</relatedStateVariable>
</argument>
<argument>
<name>TrackURI</name>
<direction>out</direction>
<relatedStateVariable>CurrentTrackURI</relatedStateVariable>
</argument>
<argument>
<name>RelTime</name>
<direction>out</direction>
<relatedStateVariable>RelativeTimePosition</relatedStateVariable>
</argument>
<argument>
<name>AbsTime</name>
<direction>out</direction>
<relatedStateVariable>AbsoluteTimePosition</relatedStateVariable>
</argument>
<argument>
<name>RelCount</name>
<direction>out</direction>
<relatedStateVariable>RelativeCounterPosition</relatedStateVariable>
</argument>
<argument>
<name>AbsCount</name>
<direction>out</direction>
<relatedStateVariable>AbsoluteCounterPosition</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetDeviceCapabilities</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>PlayMedia</name>
<direction>out</direction>
<relatedStateVariable>PossiblePlaybackStorageMedia</relatedStateVariable>
</argument>
<argument>
<name>RecMedia</name>
<direction>out</direction>
<relatedStateVariable>PossibleRecordStorageMedia</relatedStateVariable>
</argument>
<argument>
<name>RecQualityModes</name>
<direction>out</direction>
<relatedStateVariable>PossibleRecordQualityModes</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetTransportSettings</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>PlayMode</name>
<direction>out</direction>
<relatedStateVariable>CurrentPlayMode</relatedStateVariable>
</argument>
<argument>
<name>RecQualityMode</name>
<direction>out</direction>
<relatedStateVariable>CurrentRecordQualityMode</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Stop</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Play</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Speed</name>
<direction>in</direction>
<relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Pause</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Seek</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Unit</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_SeekMode</relatedStateVariable>
</argument>
<argument>
<name>Target</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_SeekTarget</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Next</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Previous</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetPlayMode</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>NewPlayMode</name>
<direction>in</direction>
<relatedStateVariable>CurrentPlayMode</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetCurrentTransportActions</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Actions</name>
<direction>out</direction>
<relatedStateVariable>CurrentTransportActions</relatedStateVariable>
</argument>
</argumentList>
</action>
</actionList>
<serviceStateTable>
<stateVariable sendEvents="no">
<name>TransportState</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>STOPPED</allowedValue>
<allowedValue>PLAYING</allowedValue>
<allowedValue>PAUSED_PLAYBACK</allowedValue>
<allowedValue>TRANSITIONING</allowedValue>
<allowedValue>NO_MEDIA_PRESENT</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>TransportStatus</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>OK</allowedValue>
<allowedValue>ERROR_OCCURRED</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>PlaybackStorageMedium</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>NETWORK</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>RecordStorageMedium</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>NOT_IMPLEMENTED</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>PossiblePlaybackStorageMedia</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>PossibleRecordStorageMedia</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentPlayMode</name>
<dataType>string</dataType>
<defaultValue>NORMAL</defaultValue>
<allowedValueList>
<allowedValue>NORMAL</allowedValue>
<allowedValue>SHUFFLE</allowedValue>
<allowedValue>REPEAT_ONE</allowedValue>
<allowedValue>REPEAT_ALL</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>TransportPlaySpeed</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>1</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>RecordMediumWriteStatus</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>NOT_IMPLEMENTED</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentRecordQualityMode</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>NOT_IMPLEMENTED</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>PossibleRecordQualityModes</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>NumberOfTracks</name>
<dataType>ui4</dataType>
<allowedValueRange>
<minimum>0</minimum>
<maximum>1</maximum>
</allowedValueRange>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTrack</name>
<dataType>ui4</dataType>
<allowedValueRange>
<minimum>0</minimum>
<maximum>1</maximum>
<step>1</step>
</allowedValueRange>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTrackDuration</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentMediaDuration</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTrackMetaData</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTrackURI</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AVTransportURI</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AVTransportURIMetaData</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>NextAVTransportURI</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>NextAVTransportURIMetaData</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>RelativeTimePosition</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AbsoluteTimePosition</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>RelativeCounterPosition</name>
<dataType>i4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AbsoluteCounterPosition</name>
<dataType>i4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTransportActions</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>LastChange</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_SeekMode</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>TRACK_NR</allowedValue>
<allowedValue>REL_TIME</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_SeekTarget</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_InstanceID</name>
<dataType>ui4</dataType>
</stateVariable>
</serviceStateTable>
</scpd>
|
| /HtmlPageHandler/ctrl | Device name, network settings, refresh, and IR-command injection. The capabilities are defined in: /HtmlPageHandler/desc.xml
curl http://192.168.1.1:8080/HtmlPageHandler/desc.xml
<scpd
xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<actionList>
<action>
<name>actHtmlDeviceName</name>
<argumentList>
<argument>
<name>argHtmlDeviceName</name>
<direction>in</direction>
<relatedStateVariable>varHtmlDeviceName</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>actHtmlRefresh</name>
<argumentList>
<argument>
<name>argHtmlRefresh</name>
<direction>in</direction>
<relatedStateVariable>varHtmlRefresh</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>actHtmlTcpip</name>
<argumentList>
<argument>
<name>argHtmlDHCPFlag</name>
<direction>in</direction>
<relatedStateVariable>varHtmlDHCPFlag</relatedStateVariable>
</argument>
<argument>
<name>argHtmlIPAddress</name>
<direction>in</direction>
<relatedStateVariable>varHtmlIPAddress</relatedStateVariable>
</argument>
<argument>
<name>argHtmlNetMask</name>
<direction>in</direction>
<relatedStateVariable>varHtmlNetMask</relatedStateVariable>
</argument>
<argument>
<name>argHtmlDNS1</name>
<direction>in</direction>
<relatedStateVariable>varHtmlDNS1</relatedStateVariable>
</argument>
<argument>
<name>argHtmlDNS2</name>
<direction>in</direction>
<relatedStateVariable>varHtmlDNS2</relatedStateVariable>
</argument>
<argument>
<name>argHtmlGateway</name>
<direction>in</direction>
<relatedStateVariable>varHtmlGateway</relatedStateVariable>
</argument>
<argument>
<name>argHtmlProxyFlag</name>
<direction>in</direction>
<relatedStateVariable>varHtmlProxyFlag</relatedStateVariable>
</argument>
<argument>
<name>argHtmlProxyName</name>
<direction>in</direction>
<relatedStateVariable>varHtmlProxyName</relatedStateVariable>
</argument>
<argument>
<name>argHtmlProxyPort</name>
<direction>in</direction>
<relatedStateVariable>varHtmlProxyPort</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>actHtmlIrControl</name>
<argumentList>
<argument>
<name>argIrControl</name>
<direction>in</direction>
<relatedStateVariable>varHtmlIrCommand</relatedStateVariable>
</argument>
</argumentList>
</action>
</actionList>
<serviceStateTable>
<stateVariable sendEvents="no">
<name>varHtmlDeviceName</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>varHtmlDHCPFlag</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>varHtmlIPAddress</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>varHtmlNetMask</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>varHtmlDNS1</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>varHtmlDNS2</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>varHtmlGateway</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>varHtmlProxyFlag</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>varHtmlProxyName</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>varHtmlProxyPort</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>varHtmlIrCommand</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>varHtmlRefresh</name>
<dataType>string</dataType>
</stateVariable>
</serviceStateTable>
</scpd>
|
| /WholeHomeAudio/desc.xml | Status, grouping, and generic playback commands The capabilities are defined in: /WholeHomeAudio/desc.xml
curl http://192.168.1.1:8080/WholeHomeAudio/desc.xml
<?xml version="1.0"?>
<scpd
xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<actionList>
<action>
<name>GetDeviceStatusInfo</name>
<argumentList>
<argument>
<name>FriendlyName</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_FriendlyName</relatedStateVariable>
</argument>
<argument>
<name>ModelName</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_ModelName</relatedStateVariable>
</argument>
<argument>
<name>Source</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Source</relatedStateVariable>
</argument>
<argument>
<name>Volume</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Volume</relatedStateVariable>
</argument>
<argument>
<name>PowerStatus</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_PowerStatus</relatedStateVariable>
</argument>
<argument>
<name>ZoneInfo</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_ZoneInfo</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Invitation</name>
<argumentList>
<argument>
<name>Uuid</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Uuid</relatedStateVariable>
</argument>
<argument>
<name>Timeout</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Timeout</relatedStateVariable>
</argument>
<argument>
<name>Status</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Status</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>JoinParty</name>
<argumentList>
<argument>
<name>Uuid</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Uuid</relatedStateVariable>
</argument>
<argument>
<name>Status</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Status</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>LeaveParty</name>
<argumentList>
<argument>
<name>Uuid</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Uuid</relatedStateVariable>
</argument>
<argument>
<name>Status</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Status</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>PlaybackCommand</name>
<argumentList>
<argument>
<name>Uuid</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Uuid</relatedStateVariable>
</argument>
<argument>
<name>CommandType</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_WhaCommandType</relatedStateVariable>
</argument>
<argument>
<name>CommandParam</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_WhaCommandParam</relatedStateVariable>
</argument>
<argument>
<name>CommandStatus</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_WhaCommandStatus</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>ExcludeFromParty</name>
<argumentList>
<argument>
<name>Uuid</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Uuid</relatedStateVariable>
</argument>
<argument>
<name>PowerOff</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_PowerOff</relatedStateVariable>
</argument>
<argument>
<name>ExcludeStatus</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_ExcludeStatus</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>IsAlive</name>
</action>
</actionList>
<serviceStateTable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_FriendlyName</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_ModelName</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Source</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Volume</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_PowerStatus</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_ZoneInfo</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Uuid</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Timeout</name>
<dataType>i4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Status</name>
<dataType>i4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_WhaCommandType</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_WhaCommandParam</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_WhaCommandStatus</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_PowerOff</name>
<dataType>i4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_ExcludeStatus</name>
<dataType>i4</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>DeviceState</name>
<dataType>i4</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>PartyInfo</name>
<dataType>string</dataType>
</stateVariable>
</serviceStateTable>
</scpd>
|
References
| Reference | URL |
|---|
| User Manual | |
| Service Manual | |
| Latest Firmware | |