Skip to content

Samsung Wireless Audio Multiroom Control API Documentation

Notifications You must be signed in to change notification settings

bacl/WAM_API_DOC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 

Repository files navigation

Samsung Wireless Audio Multiroom API

Samsung Wireless Audio Multiroom Control API Documentation

Page contents

  • Motivation
  • Basic structure
  • API Methods

Useful links:


Motivation

I recently bought a R1 speaker (WAM1500) I liked it so much I bought a second. They are great for my use case but:

  • it "refuses" to play with other devides
  • the companion software is terrible ( Android app ) ( and now I can guess that it will be always terrible, and it is not the Androids team fault).

I want to be able to:

  • control it without a phone (done)
  • start to play a playlist only with one push of a button or event (done)
  • send a URL with an audio stream to listen on the speaker (in future)

At first glace the firmware has implemented the standards in this area, yet refuses to play width other devices. After much diging in the wrong dirtections, I "accidentaly" found how the speacker is controlled. Every control comand is done with only a HTTP GET request (excluding Spotify ). This is for getting and setting data. Apparently, without any security check.

Basic structure

(based on R1 WAM1500 fw: 31112.5)

The speaker is controlled by HTTP GET request at

http://ip_speaker:55001

This is either for getting information or to set configurations.

The url path can be:

  • /CPM
  • /UCI

(I don't know the difference)

Both of them accept a query string, with a field name "cmd" and its value is a xml string with the method you want to call (which it is url encoded).

XML method can have the following elements :

<name>_API_method_name_</name>
<p type="dec" name="_var_name_" val="_integer_" />
<p type="str" name="_var_name_" val="_string_" />
<p type="cdata" name="_var_name_" val="empty">
    <![CDATA[ _string_  ]]>
</p>

Example:

Useful links:

Xml string URL Decoded:

<name>
    GetMusicInfo
</name>

Xml string URL Encoded:

%3Cname%3EGetMusicInfo%3C/name%3E

Now we can do a http get request test:

curl 'http://ip_speaker:55001/UIC?cmd=%3Cname%3EGetMusicInfo%3C/name%3E'

and we get:

<?xml version="1.0" encoding="UTF-8"?>
<UIC><method>MusicInfo</method>
<version>1.0</version>
<speakerip>ip_speaker</speakerip>
<user_identifier>public</user_identifier>
<response result="ok">
   <device_udn>uuid:xxxxxxxx-xxxxx-xxxxe-xxxxx-xxxxxxxxx</device_udn>
   <playertype>myphone</playertype>
   <playbacktype>playlist</playbacktype>
   <sourcename><![CDATA[phone]]></sourcename>
   <parentid>1$4</parentid>
   <parentid2></parentid2>
   <playindex>0</playindex>
   <objectid><![CDATA[1$4$0]]></objectid>
   <title><![CDATA[music_name]]></title>
   <artist><![CDATA[]]></artist>
   <album><![CDATA[]]></album>
   <thumbnail><![CDATA[music_cover.png]]></thumbnail>
   <timelength>0:52:29.688</timelength>
   <playtime>2170944</playtime>
   <seek>enable</seek>
   <pause>enable</pause>
</response>
</UIC>

API Methods

This list is incomplete and missing some details and methods. link

baclpt 2017/04/09

About

Samsung Wireless Audio Multiroom Control API Documentation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •