Friday, February 13, 2009

UPnP support in KDE and Amarok

During FOSDEM [ade] and I met with Frank Scholz, the lead developer of Coherence. We discussed DLNA/UPnP and how Coherence can be used in KDE and Amarok. The conclusion of this meeting was that we should use Coherence as our base for supporting UPnP services in KDE. The first implementation will be a KIO slave for browsing media stored on remote devices.

UPnP is a network technology using a combination of SSDP, XML and SOAP, with some GENA thrown in for eventing. A group of UPnP services called the UPnP A/V Architecture has been picked up by an industry organization called the Digital Living Network Alliance. DLNA specifies device classes which have to implement specific services and support a minimal set of filetypes and codecs.

Coherence is a framework, written in Python but it exposes a DBUS API, that allows an application to participate in the "Digital Home Network". For the moment this means mainly UPnP, but support for Ampache is available and Apple's DAAP is also considered. It's published under the MIT license and is multiplatform.

In Amarok we have been planning to integrate UPnP for a long while. But except for a failed Google Summer of Code project last year not a lot of effort has been spend. Thanks to Coherence this will quickly change: in relative short term (read 2.2) we will introduce a UPnP Collection that will list and enable playback of music stored on a DLNA Digital Media Server.

We could even consider publishing the content in the local Collection, basically making Amarok a DMS. Amarok can then track plays on remote devices and use it in the scoring algorithm.
Even more advanced functionality would be to control one or more Digital Media Renderes, such as
the Philips Streamium, from Amarok.

A few mails have been going back and forth between interested developers about discovery of network services in general. In order to simplify using technologies as UPnP, zeroconf, Samba, etc I'm wondering if we can integrate this in Solid. Only the discovery part obviously, using the services would be the task of separate frameworks, such as Coherence. With this functionality in Solid it should be trivial to show a kind of "Network Map" to the user with all the services per device.

As you can tell, plenty of cool things to keep a few people busy for a year or 3.



Henry S. said...

I hope we can get Playstation 3 support. My current UPnP application is a pain in the rear.

Anonymous said...


there was a discussion about UPnP support in KDE here:

And integration with coherence here:


Anonymous said...

Hehe, same time blogging about the same topic.

And not just the discovery could be covered by Solid, why not also the functionality? The backends would then translate the API to the specific connection. The programmer might not need to care about the stack below if possible.

Dread Knight said...

Very interesting blog post :)

netzflocken said...

@ Henry S.:

The PS3 is one of the best supported devices by Coherence, and usually the first one we test new features against.