An UPnP Audio Media Renderer based on MPD

upmpdcli is a UPnP Media Renderer front-end for MPD, the Music Player Daemon. It supports UPnP gapless track transitions and the OpenHome ohMedia services.

upmpdcli

upmpdcli is open-source, free and licensed under the GPL. It is written in C++ and uses the libupnp (1.6) and libmpdclient libraries. As it has few and widely distributed dependancies, it is reasonably simple to install.

The latest released version is 0.9.0. See the release notes.

The typical setup is a home network with:

In this usage, MPD does not manage the audio files directly and its configured music directory may be empty. It fetches them from the Media Server through HTTP, using the standard curl input plugin, and does not need a local tags database (it may have one though, and remains available for normal interaction with standard MPD clients).

What's the point ? If you are running a UPnP network with multiple devices, you may prefer using a single control application (UPnP-based) for everything. MPD is a very capable and robust music-playing application, which runs well on small computers (e.g. Raspberry PI or other "plug" type computers). However it needs a specific control application. upmpdcli lets you control your MPD-based players with your UPnP control point.

There are several projects providing UPnP Renderer function on a Linux machine. Because it is written in C++, built on libupnp, and uses the well-proven MPD for the actual hard work, upmpdcli is reliable, lightweight, and effortlessy supports gapless playing. It also supports the OpenHome ohMedia interface, which is currently the nicest way to control network audio.

Known problems

  • Seeking to the last seconds of a track (esp. a FLAC one apparently) will sometimes crash MPD. This seems to be dependant on a diversity of factors, and you may not experience it at all. If it happens, restart MPD.
  • News

    2014-11-12
    Version 0.9.0. Release notes. This version mainly brings support for the Songcast protocol, with help from the sc2mpd auxiliary process. See the sc2mpd documentation for more information.
    2014-10-30
    Version 0.8.6. Very small improvements. This will be used to update those Debian packages which are still at 0.8.1 (Raspberry Pi). Due to the package structure change, you will need to use "apt-get dist-upgrade" to perform the upgrade.
    2014-10-13
    Version 0.8.5. There are no real changes in this, we only split the libupnpp library from the main upmpdcli code. Release notes.
    2014-10-07
    Version 0.8.3. Minor bug fixes and improvements over 0.8.2. Mostly needed if you use upplay (again).
    2014-10-07
    Version 0.8.2. Minor bug fixes and improvements over 0.8.1. Mostly needed if you use upplay.
    2014-09-18
    Version 0.8.1. This has very minor bug fixes and improvements over 0.8.0. It will replace 0.7.1 as the default binary release.
    2014-08-06
    Version 0.8.0. This improves the handling of the playlist, adding persistence across restarts. See the release notes..
    2014-06-09
    Version 0.7.1 is released. It includes very small improvements for 0.7.0 and replaces 0.6 in the local packages repository (apt users will get an automatic update next time they apt-get update).
    2014-05-25
    Version 0.7.0 includes support for the OpenHome Media services.
    2014-04-29
    Version 0.6.4 allows you to set a few more parameters from the configuration file: interface/ip and port to use for UPnP and MPD password.

    Control points

    After testing a number of UPnP control points, mostly on Android, some work better than others with upmpdcli. Here follow my notes.

    BubbleUPnP
    Android Control Point. Perfect. Both basic UPnP gapless transitions and OpenHome are supported. Supports moving the playlist from one renderer to another (nice when you move to another room!).
    PlugPlayer
    Tested on Android. This supposedly supports OpenHome, but it does not seem to detect upmpdcli as an OpenHome renderer, and reverts to using AVTransport. In AVTRansport mode it is not gapless, so this is not a good choice.
    Other Android players
    All the ones I tried (a dozen) are very bad in one way or another, and sometimes in many ways. Most sort of work. Seriously, if you are using Android, try Bubble, it has a free edition (limited to 16 tracks in the playlist), it's the only good one. I only wished they did not change the UI so often. (I have no affiliation whatsoever with Bubble, and get nothing in exchange of this recommandation).
    Kinsky
    Multi-platform OpenHome controller. I mostly tested it on Windows, where it is very nice. You should take care to select the "PlayList" service with upmpdcli, this is not always done automatically, and else Kinsky uses bare UPnP which does not work too well. The Linux version is not ready, and I did not try the Mac one.
    Kazoo
    Multi-platform OpenHome controller, the much improved replacement for Kinsky. upmpdcli versions older than 0.9.0 have a bug which send Kazoo in a loop when the Playlist is empty, you need to add at least one track with another CP, or better, switch to 0.9.0 or newer. Kazoo is still a bit quirky (recently lost the ability to play all tracks from a directory...), but it's already a nice control point.
    Upplay
    Upplay is a simple UPnP audio Control Point Qt/X11 application which supports both UPnP AVTransport and OpenHome gapless. Upplay is not beautiful, but it has many useful functions, and there are very few other Control Points for the Unix/Linux desktop.
    JRiver
    This is a Windows application, which works perfectly with upmpdcli too, but it only supports bare UPnP (no OpenHome support).

    Comments

    comments powered by Disqus