[Updated V2.5] Generic Media Renderer (DLNA Speakers). Party Group (multi room)

This post continue the discussion of RELEASE Generic Media Renderer (DLNA Speakers). Cheap Sonos Alternative (Update V2)

To version 2.5 I have added a WatchDog inside the MediaRenderer Connect app, in this way, the timers will be repaired if broken. You need to select some devices to trigger the monitor, temp sensor will be triggered in an hour, if you need more precision you can use a power energy monitor.

A new feature its a Party Mode for Sony speakers, sorry, only for some Sony speakers with Party capability

Some Sony speakers are: CMT-MX700Ni,SA-NS300, …

The Party Mode allows to make a Parent source to be replicated for Linked Speakers synchronized.

I use this feature to play ambient music when I arrive to home, its better with long music sources or radio streaming, the Party takes some seconds to start, a short message could be chopped, but once the Party is started to send a message to parent speaker will be played in all linked speakers.

I have added a Party State Tile to see the modes

Idle : Ready to Party
Signing : Parent Speaker
Listening : Linked Speaker
Not Supported : Speaker does not support Party mode

If you want to use this capability , you must to uninstall the speaker and added again, this because some additional data must to be pulled during installation, sorry, if you don’t have a Sony Party Speaker, you no need to uninstall.

Sony it´s a Member of DLNA alliance, then other speaker could support Party, share if you speaker support Party Mode.

The command : command “party”, [“string”] allows to send a list of udn ids to join to Party, if you send an empty list , the Party will be removed, if you send a different udn list, the new devices will be added and the missed devices will be removed.

A way to send the command is

Get the udn value from speakers to join the party

	 partyList += (partyList?",":"")+ it.currentUdn

Send the list to parent speaker


The app mediarenderer events has been updated to select party speakers, check it.

Old Post

This Smart App and device type allows you to use any DLNA Media Renderer to receive Sonos-like sound and voice notifications from SmartThings.

You must to install the MediaRenderer_Connect to find any Generic Media Renderer (Network Speaker)

The MediaRender Player is the device type needed to control each Media Renderer.

If you dont have a Media Renderer like Smart TV or Network Speaker with DLNA you can test it with Foobar2000 program installing de upnp commponent. The commponent allows you to convert the player in a Media Renderer (Verify your firewall do not block the foobar2000 port )

I have tried some Media Renderers, but is better if you give me a feedback of the models that works for you.

The device can be selected like any sonos player from smarthings apps, I will improved the device to get more capabilities

Not all DLNA Players are Media Renderer, If you have an Iphone, download and use the app “Browse UPnP for ios” to verify the type of the device, the “device type” must to be urn:schemas-upnp-org:device:MediaRenderer:1

Important ! : Verify your router settings to allow UPnP, if not enabled you cant find any Media Renderer or UPnP device, example: http://www.belkin.com/us/support-article?articleNum=8260345


Delay Before Messages : Some media renderers take more time to load http files , you can increase this time if your messages cuts off or not play.

Delay Between Actions : Some media renderers crash if many actions are launched (play and resume) you can increase time between actions to avoid crashes


Control Point : Is the manager who send information to MediaRenderer to play songs, there are 2 ways to manage music list,

  1. Containers: The control point send the container information , the container is created by media server commonly a Folder, Genre, Artist , Album , the media render can play all the list even the control point is closed or turned off, SmartThings Generic media renderer works fine with this kind of control points, you can use all the actions, next, back , play, volume, and so on, Its possible to play messages and continue the list, (Not all M.Renderers support containers.)

  2. Control point list: The control point creates a list and send 1 song a time, the M.Render can play just the current song, the MRenderer will not play the next song if the control point is closed or turned off, SmartThings Generic MRenderer do not works fine with this kind of control points, this kind of control points detects any external action like it is next song action, then when SmartThings try to play a message the control point send immediately the next song in list, the message cuts off or even never plays because the next song start to play, you can not use smartThings controls app, like stop , next back, play because all this actions will trigger the next song in the control point list, Some control point list do not listen the external commands and do not send the next song until the end song is reached, this kind of Control Point List works fine with SmartThings Its possible to play messages and restore the song, the Control point will continue with the list until finish, but you can not use next song or previous song actions because the list is manage by control point and not in MRenderer, you can try Denon Remote App for ios who do not detect external actions and works fine in ST Media Renderer.

The SmartThings MediaRenderer do not try to replace an advance Control Point, you must use a external control point to manage and load songs to your speakers, The SmartThings MediaRenderer Goal is to play massages, tracks or containers when some events occur and continue with the original list or song managed by the control point or media server,

How do I known what kind of control point do I use ?
Control Point List = The Media Renderer not play the next song if you close the control point
Control point Containers = The Media Renderer play the next song even if you close the control point

Working Control Point
If your speakers or device support containers, you can use
Network Audio Remote IOS325
Network Audio Remote Android427
Buttons: Next, Previous , Stop, Play, Mute, Volume in ST device controls
Source: Media Server
Resume: Resume song from Media Server and continue List
Select song to event: It can be selected to play song or container in event

Control Point List
Denon Remote App IOS96
Denon Remote App Android123
Buttons: Stop, Play, Mute, Volume in ST device controls, Do not work Next and Prevoius track in ST device controls
Source: Media Server
Resume: Resume from Media Server and continue List
Select song to event: It can be selected to play song in event
Technics Music App IOS39
Technics Music App Android57
Buttons: Stop, Play, Mute, Volume in ST device controls, Do not work Next and Prevoius track in ST device controls
Source: Media Server
Source: Device Songs
Resume: Resume from Device Songs and continue List
Resume: Resume from Media Server but does not continue List
Select song to event: When source from Device Songs can not be selected to play song in event because the song is destroyed each time the song finish or the control point closes.
Select song to event: When source from Media Server It can be selected to play song in event

Help us to make a working Control point list
I have tried several free control points and found this listed above, they works with all dlna speakers and devices.

There are other control points but is need to pay for them, I cant buy them to try, I need your help to try others Control Points.

Please share your experience with exclusive control points to some speaker brand or some payed control points.

Latest Version 2.5

If you like this app, please consider supporting its development by making a
donation via PayPal.


Source files

Help us to make a working MR list
Send the exact model device is working to update the list.

Old Post



Thanks for the updates!

Has been mentioned before but please, please, please can you add GitHub integration? There are so many threads on these apps now with links all over the place and it is getting a bit difficult to follow. Adding GitHub integration will make it so much easier for everyone to keep up with the latest versions and changes. Also, is there any reason why you have different namespaces on the apps, with Media Renderer Events still being tagged as ‘smartthings’, you have done so much work on it, it should have you name against it, not a huge deal just a little confusing :slight_smile:

If for whatever reason you do not want to add GH integration then please could you change the dates and version in the actual files. Some apps have a date and no version, the others have a version and no date at all, I have not seen these values updated and only go by the date in GH, I have no idea what if any changes have been made, well not without comparing the code… or having to search through the threads here, I do this anyway once in a while anyway of course.

Not having a moan at all and greatly appreciate all the effort, I am just trying to suggest things to make it all a little easier for everyone so we can all keep up with the updates.

Thanks again for all the work!


Hi, some updates are not transparent to automatic update. I will try to update the dates.

Hi Ule,

Just wondering if you have any advice for me? I posted in the old thread about not being able to get my speaker to react to any events I’ve created, despite it being able to connect correctly.

I was really looking forward to this, but doesn’t seem to work for me :frowning: Any advice would be appreciated.

I’ve tried the updated version to the same effect :frowning:

I haven’t found any good doc for Sony Party Mode. Is this anything like AllPlay?

Hi, yes it´s something like AllPlay do to multiroom, but PartyMode it´s just to sony speakers, blueRay , modular audio, and other sony network devices, maybe to other brands since sony it´s a member of DLNA, if you see the last video from the first post , you can get an idea.

Thanks! While putting together the code for that PartyMode functionality, did you happen to come across anything for AllPlay that would indicate if it could also be implemented in a similar fashion? I have several AllPlay speakers but sadly no PartyMode Sony’s.

Sorry, I have not any allPlay speaker, I don´t know how it works or if it have an exposed method to control by ST. Commonly I share what I use in home.

I’m struggling a bit with the Media Renderer (Connect) SmartApp and discovering devices on my network.

After a complete removal of all devices that support DLNA on my network, including physically unplugging/removing them, I’m in the process of replacing all of my DLNA supporting endpoints with Raspberry Pi computers and DAC audio cards attached to them. I’m running DietPi OS with GMediaRenderer.

BubbleUPNP on my Android phone can see all four of my Raspberry Pi devices, plus my home theater receiver as DLNA renderers with the GMediaRenderer software. Each device is uniquely named on my network, with one being named the default of “DietPi”, one being “LivingRoom”, “MasterBedroom”, etc.

The discovery process is only able to find the DietPi device and my home theater receiver.


Smartthings use a network id to get data in local devices, the network id its ip-port, its not possible to use other id, if you use a server dlna generator , they use a single ip-port with an additional id, it´s no possible to create an individual dlna with the same ip and port, I have had a lot of work and I have not finished the new connect to this kind of case. I hope to find some time to finish the mod.

I found the issue this evening and have resolved it.
All of my devices were sharing the same UUID and hostname (in the gmrender script), so the discovery process would find the first one and list it, but since the others shared the same hostname it wouldn’t list them. It didn’t matter which one it found, it would only list one entry.

DietPi installs the gmrender package to the device and runs it with a service script that specifies the hostname of the device as Dietpi. I was able to change this hostname in the service script by changing the -f Dietpi flag to be -f DeviceName and then saving the file, reloading the services and restarting it.

This still did not resolve the problem, so I then ran apt-get install uuid-runtime followed by uuidgen and copied the generated UUID from the screen back into the service script under a new flag, –uuid=generatedUUID.

Once I did that, again reloaded the services and restarted the gmrender service, all of my devices came up in one shot.

I can now see and add all of the devices without issue.

1 Like

I have this set up and working with four Fabriq Riff speakers. I use a WebCoRE piston to send announcements to the speakers upon certain events.

I am seeing the following error in the SmartThings Event log for all four speakers:
error org.xml.sax.SAXParseException; lineNumber: 26; columnNumber: 3; The element type "CurrentTrackMetaData" must be terminated by the matching end-tag "</CurrentTrackMetaData>".

The error repeats for each of the four speakers when the Media Renderer (Connect) event log shows this:

I have searched through the DTH (DNLA Player) and the SmartApp (Media renderer (Connect)) and do not see any reference to “CurrentTrackMetaData”?

Everything seems to work, I am just curious about the error and what I should do to correct that?


The speaker send the Metadata who contains the audio properties like url, type mp3, display name, …

The speaker are sending a bad formatted metadata or the metadata is too big and ST cut the xml,

The code can handle this error and no crash is released, the program continues , but makes a trace to know the metadata its corrupted.

This metadata its used to save a track history, and you can use this in some apps to select a previous track played.

If no metadata, the display in the Media renderer player can not be visible.

I think I understand that. Thank you for the explanation.

I am also seeing these log entries from Media Renderer in the Hub Events (NOT Live logging). Are these normal? Everything is working, they just look excessive. I did uninstall the devices and then reinstalled them and the Hub events continue.

Date	Source	Type	Name	Value	User	Displayed Text

2018-02-13 3:20:01.192 PM MST
moments ago HUB index:03, mac:00226C94E182, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUw index:03, mac:00226C94E182, h… index:03, mac:00226C94E182, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUwMA0KQ09OVEVOVC1UWVBFOiB0ZX…
2018-02-13 3:20:01.045 PM MST
moments ago HUB index:06, mac:00226C73BBEA, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUw index:06, mac:00226C73BBEA, h… index:06, mac:00226C73BBEA, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUwMA0KQ09OVEVOVC1UWVBFOiB0ZX…
2018-02-13 3:20:01.001 PM MST
moments ago HUB index:02, mac:00226C6433FA, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUw index:02, mac:00226C6433FA, h… index:02, mac:00226C6433FA, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUwMA0KQ09OVEVOVC1UWVBFOiB0ZX…
2018-02-13 3:20:00.973 PM MST
moments ago HUB index:05, mac:00226C63CCA2, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUw index:05, mac:00226C63CCA2, h… index:05, mac:00226C63CCA2, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUwMA0KQ09OVEVOVC1UWVBFOiB0ZX…
2018-02-13 3:19:19.998 PM MST
moments ago HUB ping ping ping
2018-02-13 3:16:02.827 PM MST
moments ago HUB index:06, mac:00226C94E182, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUw index:06, mac:00226C94E182, h… index:06, mac:00226C94E182, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUwMA0KQ09OVEVOVC1UWVBFOiB0ZX…
2018-02-13 3:16:02.725 PM MST
moments ago HUB index:04, mac:00226C6433FA, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUw index:04, mac:00226C6433FA, h… index:04, mac:00226C6433FA, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUwMA0KQ09OVEVOVC1UWVBFOiB0ZX…
2018-02-13 3:16:02.613 PM MST
moments ago HUB index:03, mac:00226C73BBEA, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUw index:03, mac:00226C73BBEA, h… index:03, mac:00226C73BBEA, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUwMA0KQ09OVEVOVC1UWVBFOiB0ZX…
2018-02-13 3:16:02.552 PM MST
moments ago HUB index:02, mac:00226C63CCA2, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUw index:02, mac:00226C63CCA2, h… index:02, mac:00226C63CCA2, headers:Tk9USUZZIC9ub3RpZnkgSFRUUC8xLjENCkhPU1Q6IDE5Mi4xNjguMC42MDozOTUwMA0KQ09OVEVOVC1UWVBFOiB0ZX…
2018-02-13 3:15:47.861 PM MST
5 minutes ago HUB ping ping ping
2018-02-13 3:15:03.401 PM MST
6 minutes ago HUB ssdpTerm urn:schemas-upnp-org:device:M… devicetype:04, mac:00A0DE95F8EC, networkAddress:C0A80089, deviceAddress:1F90, stringCount:04, ssdpPath:/MediaRenderer/desc.xml…
2018-02-13 3:15:01.698 PM MST
6 minutes ago HUB ssdpTerm urn:schemas-upnp-org:device:M… devicetype:04, mac:00A0DED02F17, networkAddress:C0A80098, deviceAddress:C002, stringCount:04, ssdpPath:/MediaRenderer/desc.xml…
2018-02-13 3:15:01.698 PM MST
6 minutes ago HUB ssdpTerm urn:schemas-upnp-org:device:M… devicetype:04, mac:00226C63CCA2, networkAddress:C0A8002A, deviceAddress:C000, stringCount:04, ssdpPath:/description.xml, ssdpU…
2018-02-13 3:15:01.696 PM MST
6 minutes ago HUB ssdpTerm urn:schemas-upnp-org:device:M… devicetype:04, mac:00226C6433FA, networkAddress:C0A8002B, deviceAddress:C000, stringCount:04, ssdpPath:/description.xml, ssdpU…
2018-02-13 3:15:01.691 PM MST
6 minutes ago HUB ssdpTerm urn:schemas-upnp-org:device:M… devicetype:04, mac:00226C73BBEA, networkAddress:C0A80028, deviceAddress:C000, stringCount:04, ssdpPath:/description.xml, ssdpU…
2018-02-13 3:15:01.686 PM MST
6 minutes ago HUB ssdpTerm urn:schemas-upnp-org:device:M… devicetype:04, mac:40163B7B36A7, networkAddress:C0A80094, deviceAddress:1DFC, stringCount:04, ssdpPath:/smp_11_, ssdpUSN:uuid:…
2018-02-13 3:15:01.684 PM MST
6 minutes ago HUB ssdpTerm urn:schemas-upnp-org:device:M… devicetype:04, mac:00226C615ADE, networkAddress:C0A80029, deviceAddress:C000, stringCount:04, ssdpPath:/description.xml, ssdpU…
2018-02-13 3:15:01.594 PM MST
6 minutes ago HUB ssdpTerm urn:schemas-upnp-org:device:M… devicetype:04, mac:00226C94E182, networkAddress:C0A

Hi, the speaker must to have an event each 3 min or the refresh time you have set.

Each refresh time the speaker update the subscribe, to get the info event from the speaker.

May be you have an old connect app, try check the version and update if necessarily.

The title if this thread is Updated 2.5, but the version I have is 2.1.0? Can you provide a link to the most recent version? Thanks.

The link its in the first post

That link takes me to here?

The Connect app is v2.1.0 and this is what I have.
The Player app is v2.5.0

Am I doling something stupid?

Can anyone tell me if it’s possible to provide the iP address of a speaker instead of using UPnP searching for it?
I’ve got two fabriq speakers, that work fine on their own, but the app cannot find them… so I can’t set them up.


1 Like