Upplay: a Qt-based UPnP audio Control Point

upplay is a desktop UPnP audio Control Point for Linux/Unix, MS Windows, and Mac OS. It began its existence as a companion to the Upmpdcli renderer, but it has become an ugly but nice, lightweight but capable, control point in its own right.

As an UPnP Control Point upplay does not play music, and never touches the audio stream. It controls an UPnP Media Renderer which may be running on the same host or anywhere else. If you need it, the upmpdcli manual has a a bit more information about UPnP audio.

upplay was started with code from the Sayonara local player, which saved me a lot of time. There is not much in common between them any more, except for quite many lines of user interface code.


upplay is open-source, mostly free (I ask for a small contribution for the Windows installer), and licensed under the GPL. It is written in C++ and uses the libupnpp library.

Of course, Upplay lets you browse any UPnP Content Directory on the local network and add music from there (click titles, or use the right-click menu for directory adds). In addition, it has the following specific features:

What's the point ? upplay might be found to be esthetically challenged. However, if you are using a Unix desktop, it is better than nothing, and even under Windows, you may come to like it...

Installation: see the downloads page.

Problem reports and known issues: see the issue tracker on framagit.org.


Version 1.7.1.
Version 1.6.6. Oops in 1.6.5 created infinite loop when retrieving search results.
Version 1.6.4. Small fixes and adjustments.
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
Upplay had stopped working with some devices (esp. some Linn ones). The problem was found to be a bug in the base libnpupnp library, which was updated to release 5.0.0, with a companion libupnpp 0.22.2, to fix the problem. Update if needed.
Version 1.6.2. Fix playlist drag and drop.
Version 1.6.1. New compact tabbed mode for running on small screens (See the picture on a 480x320 Raspberry Pi touchscreen).

Tabbed Upplay running on a small Rpi touchscreen

Version 1.4.10.
New MacOS port for version 1.4.5
Version 1.4.4. Direct buttons for switching between radio and playlist.
libupnpp, upmpdcli, sc2mpd, upplay and related projects have moved to framagit.org. I am grateful to opensourceprojects.eu 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.
Version 1.4.2. Small fixes esp. for running with webengine on macosx.

new album covers display mode

Version 1.4.1. New display modes in the directory section, with more use of the album covers, either inside the lists or as main presentation element.
Version 1.3.9. Fixes the Webengine version for recent QT releases (tested with Qt 5.13). The Webkit version is still the default and behaves better.
Version 1.3.6. Properly process multiple albumArtURI attributes.
Version 1.3.5. Fixes the problem where the content directory browser header area would overlay the first content lines when the location line was folded.
Version 1.3.3. Minuscule source changes mostly dealing with building and documentation.
Version 1.3.1. Restoring the browsing state, other small improvements.
Version 1.2.13. Small improvements.
Version 1.2.0. Source switching for OpenHome renderers, control of their Radio service, and a new tool for managing Songcast connections.
MS Windows port. This is still a bit experimental, see the details.
Version 0.10.0: support pure OpenHome renderers with no UPnP AV services at all, like BubbleUPnP Server. This needs at least libupnpp1 (libupnpp 0.10.0).


Please use the Disqus comments for praise, insults, or for tips which may help others. Use the issue issue 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