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 (including a Radio service to listen to Internet streams).


upmpdcli is written in C++, open-source, free and licensed under the GPL. It now relies on its own UPnP libraries ( libnpupnp and libupnpp), and a number of other common and reliable libraries (libcurl, libmicrohttpd, expat).

The current version is 1.8.11. See the release notes.

The typical setup is a home network with:

As managed by upmpdcli, MPD does not need to index the audio files metadata and its configured music directory may be empty. If you want to use a native MPD client, upmpdcli is not the right solution: have a look at the alternative approaches for MPD/UPnP integration.

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, and also brings new functions such as synchronized multiroom (Songcast), and access to streaming services.


Upmpdcli 1.8.8: small fixes. See the release notes.
Upmpdcli 1.8.4: misc improvements to the Media Server services plugins. New Radio Mother Earth plugin by Giovanni Fulco.
Upmpdcli 1.8.3: new Tidal module by Giovanni Fulco. Tidal is back !
Upmpdcli 1.8.1: minor fixes mostly. See the release notes.
Upmpdcli 1.7.9 comes with a new media server plugin which will let you use an UPnP control point to browse a Subsonic or Navidrome server and stream music to an UPnP renderer.
Upmpdcli 1.7.7 has a new media server plugin for accessing, a fix for a marginal case of failure while checking format compatibility, and uprcl search improvements.
Debian repositories on this site: the repository key has expired on the 6th of December. It has been extended and the repositories re-signed, but you will need to download and install the key again
upmpdcli 1.5.20 has fixes for the uprcl local Media Server module.
libnpupnp release 5.0.0, and libupnpp 0.22.2 fix a problem on the Control Point side. The device side (upmpdcli) should not be affected.
upmpdcli 1.5.19 fixes small issues.
1.5.17 fixes a small issue preventing the Qobuz plugin from working.
Many things happened since last year... See the release notes.
libnpupnp 4.1.1 lets Samsung TVs work with Gerbera built with libnpupnp.
The upmpdcli Media Server now have a Deezer plugin (1.5.9). Only 128 kb/s streams unfortunately.
Version 1.5.5. Fix initial issues in 1.5.2. See the release notes. Note: Tidal access does not work any more at all. Qobuz access works through the media server, not through the Kazoo or Lumin login (OpenHome Credentials).
Version 1.5.2. Create separate UPnP/AV and OpenHome devices. See the release notes.
Version 1.4.12 brings initial support for the Highresaudio streaming service.
The Tidal API token is not working any more. There are still some floating on the net which are working. You can plug the value in the tidalapitoken configuration parameter if you find one.
libupnpp, upmpdcli, sc2mpd, upplay and related projects have moved to I am grateful to for providing a haven after leaving github, but they have fallen behind the times, and the Gitlab instance which Framagit runs will be much nicer to use.
upmpdcli 1.4.6. The new libnpupnp library replaces pupnp/libupnp as the foundation library to provide base UPnP protocol support under libupnpp (0.18+). Upmpdcli should still build and work with libupnpp 0.17 and pupnp. See the release notes.
Qobuz access was revoked: If you were using Qobuz and it's not working any more, don't pull your hair, the Qobuz plugin stopped working (either through the Media Server or with OHCredentials). Qobuz revoked the app_id, and also deleted the API documentation on Github. If you are a hardware integrator/manufacturer using upmpdcli to support Qobuz access (I know there are some), I made a modification to the Qobuz plugin so that the app_id/secret can be stored externally instead of being embedded in the source. This means that, if you can convince Qobuz to supply you with the appropriate pair, you can easily restore function, without having to support a modified module. Of course, this supposes that the API itself does not change.
Upabx, an UPnP ABX testing tool, based on the libupnpp Python interface. I had fun with it (some soldering too), but it's not very useful to me. I hope that someone can find a use for it, and I'll help with the rough edges if needed.
As a new year present to Last.FM users, a small program to monitor any UPnP renderer and do the scrobble thing. Nothing to do with upmpdcli really, but it uses libupnpp...


Please use the Disqus comments for praise, insults, or for tips which may help others. Use the tickets tracker for problem reports and enhancement suggestions. Use E-mail if you run into trouble, I'll be glad to help: jf at dockes dot org.

comments powered by Disqus