Sunday, 23 December 2012

UPnP clients for Linux

Networked media in the home using protocols such as UPnP is sure to grow hugely in popularity. An Android app such as Skifta allows access to all available UPnP-compliant AV servers both locally and remotely and the media can be streamed to any UPnP-compliant device. In practical terms this allows media to be streamed around the house using a smartphone  as a "remote".

There are three principal elements to a UPnP system:
  • the AV media servers, in my case these are MythTV and the smartphone itself
  • a control point (such as Skifta on a Smartphone), enabling you to browse the media and stream it to a UPnP-compliant device
  • the media renderer which resides on a device such as a PC or a piece of dedicated UPnP hardware and which plays the media 
When I installed Skifta on an Android smartphone, the MythTV AV server was immediately discovered by Skifta. I installed XBMC on a reasonably high specification Linux client and it worked fine as a media renderer (Skifta support recommended XBMC under Linux).

I also needed a media renderer for a much lower specification PC. On this PC, XBMC made the machine unusable because it consumed so much memory.

It proved difficult to find other media renderers under Linux. A UPnP Linux client like Rhythmbox can access media using the UPnP protocol (e.g. it can "see" the media on a mythtv server) but I found a "client" in this sense was not discoverable by Skifta. One solution I identified was a useful project called gmrender-resurrect, a fork of an earlier, incomplete project (GMediaRender). This software is designed primarily for devices like the Raspberry pi but is equally usefully for older conventional hardware running Linux.    



  1. thank you for this article, i was looking for this exact information.
    I installed gmrender and it does its job when it comes to music, but i wasn't able to stream any video, do you have any info on this?

  2. I can play some video formats with gmediarender as the renderer on an ordinary PC (I haven't tried it on the pi). You may need to install the gstreamer plugin for the video format you are trying to play. I mainly use Gentoo which provides the following plugins (on other distributions the plugins may have different names):

    * gst-plugins-a52dec
    * gst-plugins-alsa
    * gst-plugins-amr
    * gst-plugins-annodex
    * gst-plugins-assrender
    * gst-plugins-cdio
    * gst-plugins-cdparanoia
    * gst-plugins-dts
    * gst-plugins-dv
    * gst-plugins-dvb
    * gst-plugins-dvdread
    * gst-plugins-faac
    * gst-plugins-faad
    * gst-plugins-ffmpeg
    * gst-plugins-flac
    * gst-plugins-gconf
    * gst-plugins-gdkpixbuf
    * gst-plugins-gio
    * gst-plugins-gl
    * gst-plugins-gnomevfs
    * gst-plugins-gsm
    * gst-plugins-ivorbis
    * gst-plugins-jack
    * gst-plugins-jpeg
    * gst-plugins-ladspa
    * gst-plugins-lame
    * gst-plugins-libav
    * gst-plugins-libmms
    * gst-plugins-libnice
    * gst-plugins-libpng
    * gst-plugins-libvisual
    * gst-plugins-mad
    * gst-plugins-meta
    * gst-plugins-mimic
    * gst-plugins-modplug
    * gst-plugins-mpeg2dec
    * gst-plugins-mpeg2enc
    * gst-plugins-mplex
    * gst-plugins-musepack
    * gst-plugins-mythtv
    * gst-plugins-neon
    * gst-plugins-ofa
    * gst-plugins-ogg
    * gst-plugins-opus
    * gst-plugins-oss
    * gst-plugins-pango
    * gst-plugins-pulse
    * gst-plugins-raw1394
    * gst-plugins-resindvd
    * gst-plugins-rtmp
    * gst-plugins-schroedinger
    * gst-plugins-shout2
    * gst-plugins-sidplay
    * gst-plugins-soundtouch
    * gst-plugins-soup
    * gst-plugins-speex
    * gst-plugins-taglib
    * gst-plugins-theora
    * gst-plugins-twolame
    * gst-plugins-v4l2
    * gst-plugins-voaacenc
    * gst-plugins-voamrwbenc
    * gst-plugins-vorbis
    * gst-plugins-vp8
    * gst-plugins-vpx
    * gst-plugins-wavpack
    * gst-plugins-x
    * gst-plugins-x264
    * gst-plugins-ximagesrc
    * gst-plugins-xvid
    * gst-plugins-xvideo

  3. Please also see later blog post on using BubbleUPnP and MediaHouse as Android control points which can be used to stream mp4's to Linux UPnP media renderers