Skip to content. | Skip to navigation

Personal tools
Log in
Sections
You are here: Home Archive 2009 December 26 List of open source DLNA/UPnP AV software devices

List of open source DLNA/UPnP AV software devices

published Dec 25, 2009 03:05   by admin ( last modified Nov 01, 2012 05:02 )

Updated January 2 2012, December 21, 2010; May 31, 2011

DLNA.gifupnp.jpeg

DLNA is a set of standards for home entertainment equipment to interoperate. The equipment can be hardware devices, but also software applications running on an ordinary computer. There are four types of DLNA devices according to the standard says Wikipedia (my explanations):

  • Digital media servers (DMS)
    A database of multimedia content, that other devices can play media from
  • Digital media renderers (DMR)
    Plays stuff, that is it makes sound and in required cases shows moving images.
  • Digital media controllers (DMC)
    A device that works as a remote control, can play stop, skip, pause, change loudness, brightness etcetera.
  • Digital media players (DMP)
    Not sure what this is. Maybe it is a combination of a DMR and DMC, or all of the above.


I will try to compile a list of open source software devices when I find them, with an emphasis on components, i.e. no listing of all-in-one solutions and a preference for software that runs on Linux and that is maintained. Although they most likely aren't certified, they interoperate via the DLNA protocol.

gupnp_logo.png gUPnP control point

Works as a

  • Digital media controller

Gupnp is a project that provides components for upnp applications. One part of it is the gupnp control point. It gives "remote control" for upnp and dlna applications. It can be intstalled on e.g. Ubuntu 10.4 by using synaptic or apt-get, installing "gupnp-tools".

gupnp1.png

"Play" worked fine, "Next" and "Previous" did not work on my setup. Note Rygel logo in renderer selection field

 

The control point is invoked with "gupnp-av-cp". It needs a renderer to be present on the network. I tested by installing rygel-gst-renderer, then starting "rygel" from the command line. After that I started "gupnp-av-cp". It picked up the renderer, and a media tomb server on the network.

gupnp2.png

 

Selecting a file and clicking "Play", or just double clicking a file made it play

 

rhythmbox.png Rhythmbox Music Player with DLNA/UPnP plugin

Site

Works as a

  • Digital media server
  • Digital media renderer (tested with upnp-inspector)

I have successfully remote controlled Rhythmbox Music Player, making it play, pause and skip, from a DMC. Tested on Ubuntu 9.10.

 

mediatomb50p.png Media Tomb

Media Tomb works as a

  • Digital media server

I have successfully played a video from Media Tomb through Totem. Media Tomb has a web userinterface where you can add all files that the user account has the right to, the media tomb database. This means that if you are running it under your own user, all your files may get exposed.  From the Media Tomb documentation:

The server has an integrated filesystem browser, that means that anyone who has access to the UI can browse your filesystem (with user permissions under which the server is running) and also download your data! If you want maximum security - disable the UI completely! Account authentication offers simple protection that might hold back your kids, but it is not secure enough for use in an untrusted environment!

Tested as a static binary, version 0.11.0, on Ubuntu 9.10.

 

totem.png Totem with Coherence DLNA/UPnP Client Plugin

Totem with the appropriate plugin

  • Works as a client

which means it can access and play media from media servers, but it does not advertise itself on the network, i.e. other dlna components cannot use Totem. It picks up Rhythmbox, Coherence:FSStore, Coherence:BBCStore and Media Tomb as mediaservers but not ushare, in my tests. upnp-inspector picks up all five. Tested on Ubuntu 9.10.

 

ushare

ushare works as a

  • Digital media server

ushare can be configured to only serve content from one folder. ushare 1.0 tested on CentOS 5. According to the web site ushare is currently not actively developed.

 

djmount

djmount is a gateway between the UPnP world and the Linux file system. It allows programs who do not handle UPnP but can handle local files, to access files from devices as if they were on the file system. djmount mounts itself on a mountpoint and presents each media server it finds in a subdirectory. It can even do searches. (djmount is currently untested by me).

 

linn.png Linn Kinsky Desktop

Linn Kinsky Desktop seems to be an ambitious project with a unique interface for making a DLNA/UPnP control point, among other things. On my Ubuntu (tested December 2009) the text items of the UI do not show up and then the application crashes X. Maybe it works better on other platforms or will work better in upcoming releases.

I tried it again in a nightly build 2010-11-03, and now there is text and I can add a music library, but cannot make it play.

 

inspector-logo.png UPnP Inspector

 

upnp.png

 

 

UPnP Inspector is a great tool for seeing what devices are on your subnet and what capabilities they have. If you are running Linux, check the repositories of your distribution for it, or if you are a pythonista, use easy_install or pip to install it. The Inspector is a part of Coherence (see text further down about Coherence).

Update: I just realised you can right click the devices in the tree, and you get a remote control for that device!

 

upnp2.png

Not only that, but you can drag songs from a media server to a media renderer and it plays the song. Amazing. It may nullify the need for the remote play-next-pause devide that I've made.

 

coherence.png The Coherence framework

Coherence is a server that runs a number of UPnP/DLNA devices for you. These devices, that come with Coherence,  are called "plugins". You can enable or disable plugins in a ".coherence" file in your home directory. The coherence framework can be installed on Ubuntu 9.10 in the normal way with apt-get or synaptic, and I suppose similar is true for other Linux distributions. Otherwise if you cannot find a ready made package for your OS, Coherence is a python project so if you are a python developer familiar with how to install python things, you can use easy_install, pip or even buildout.

You can try out Coherence by just typing "coherence" at the command line. I will list some of the plugins in Coherence below.

 

Coherence: Gmediastreamer

  • A digital media renderer

GMediastreamer is a pure media renderer. It has no concept of playlists and has no media database of its own. You need UPnP Inspector to give it files to play (by dragging them onto the UI of GStreamer in the inspector, hint: Right-click on the devices). It can then be controlled with the inspector or I guess any other digital media controller. Maybe there are or will emerge ways of providing it with a steady stream of files.

To enable GMediastreamer, put this in your .coherence file:

[[GStreamerPlayer]]
name= Myplayer

Change "MyPlayer" to whatever you want. Or keep the name :-)

 

Coherence: FSStore

  • A digital media server

FSStore is a media server that serves up a directory and its sub directories. It is useful outside of Coherence, you do not specifically need the UPnP inspector. Totem can play music and videos directly from it.

To enable FSStore, put this in your .coherence file:

[[FSStore]]
name = Jorgen's video store  # default: my media
content = /home/jorgen/Videos/videos            # default: None
enable_destroy = no                  # default: no


Well, maybe you need to change "jorgen" to something else...

 

Coherence: BBCStore and TEDStore

  • Digital media servers

BBCStore and TEDStore are media servers just like FSStore, put pull their content from external sources, in this case BBC Radio and TED Talks respectively. I have tried BBCStore and it works fine. It is useful outside of Coherence, you do not specifically need the UPnP inspector. Totem can play programs directly from it.

To enable BBCStore, put this in your .coherence file:

[[BBCStore]]
name = Coherence - BBC  # default: BBC
refresh = 2             # default: 1 (hours)

 

rygel.pngRygel

Rygel is... I'm not sure what Rygel is from its web page or when installing it, but a friend installed it and he claims it is a working DLNA server.

Update 2011-November-04: The same friend now reports that rygel stopped working for him when upgrading to Ubuntu 11.10, and that he is now using minidlna instead to good effect.

 

Pulseaudio DLNA Streaming

Pulseaudio is an ambitious sound architecture which is installed by default on Ubuntu as of currently. Pulseaudo has many possibilities but is also widely disliked because of complexity and reliability issuues. In Pulseaudio I can now choose to output the music from one computer on the sound card of another, over TCP/IP. This means you can have one computer close to your amplifier, as a glorified wireless soundcard. I have only done preliminary tests, but is seems like the bandwidth of wireless 802.11g is not enough. while wired 1Gb/s Ethernet is. Would be interesting to check 802.11n and 100Mb/s wired Ethernet.

 

leia.png Leia Upnp Audio Control Point

Leia Upnp Audio Control Point is a control point, that according to the web site can do a lot of interesting things. It runs on a variety of platforms. Unfortunately on my current platform (Ubuntu 10.10) Leia 0.5.8 (tested 2010-12-21) crashes when it encounters a DLNA device. If no devices are available on the subnet, it does not crash though, but is of course in that case of no utility. I hope they get it working on Ubuntu because it looks cool.

 

 

play-next-pause

sc_ubuntu.png

play-next-pause is my own try to make a simple remote control. It relies completely on the Coherence framework and was written largely from looking at the code of the UPnP Inspector. I have made two big binaries, one for Linux and one for Windows. These should have all dependencies included so you do not need to install Coherence, Twisted or GTK or anything else hopefully. The binaries weigh in at about 12MB which means they sport about 200KB per line of code (play-next-pause is about 55 lines of code) or about 2MB per button! This can surely be trimmed but hey, it works for me.