2024-04-03 Switching the build tools from GNU autotools to Meson.

libnpupnp, libupnpp and upmpdcli now use Meson/Ninja for configuring and building, the GNU autotools files are gone (or going). This exists only in the git code for now, but will be in the next release.

2024-03-04 libnpupnp 6.1.1, libupnpp 0.26.3

  • Misc internal cleanups, for npupnp mostly based on tools diagnostics (cppcheck,fanalyser, clang-tidy…​)

2024-02-12 upmpdcli 1.8.8

  • Tidal: avoid SQL error with older Sqlite versions.

  • Misc subsonic and Tidal improvements

2024-01-10 libupnpp 0.26.2

  • Very minor bug fix.

2024-01-08 libupnpp 0.26.0

  • Add interface for receiving events about disappearing devices.

  • UPnP/AV rendering control: only report events relating to the Master channel as "Volume" or "Mute". For other channels, append the channel name to the variable name, e.g. "Volume-Front". This does not change the interface for existing code (except that it won’t receive bogus event for aux. channels as if they were Master any more).

2024-01-08 libnpupnp 6.1.0

  • Use the same configured port for the UDP receiving sockets as well as was used for the TCP ones. Eases setting up a firewall.

  • More thorough cleanup when stopping the library (netif and MHD).

  • Misc code cleanups (portability, internal).

2023-12-22 libnpupnp 6.0.1 and libupnpp 0.25.0

  • Implement some UPnP 1.1 features: unicast search and some additional packet fields.

  • libnpupnp: avoid putting the client thread to a (short) sleep when starting a search.

  • Both libs: add interface to perform a unicast search and to set a BOOTID.UPNP.ORG value.

  • Fix a bug where the search wait would end before the end of the actual search window, possibly leading to missing some renderers.

2023-11-24 libupnpp 0.24.1

  • Control: add option to set timeouts for the subscription/unsubscription operations.

  • Control: add timeout parameter to a few action calls, to be used for testing the device health.

  • Device: ohproduct: export a parseSourceXML static method.

  • Device: added the LibUPnP::setWebServerDocumentRoot method, to activate the local file service of the libnpupnp HTTP server. Also LibUPnP::port().

  • Make additional escaping of URLs from Content Directories optional and non-default and add interface to activate it and choose the set of characters to be escaped.

2023-11-24 libnpupnp 5.1.2

  • Control: fixed misc issue with event subscription callback address computations, esp. a network mask computation bug. We could end up in selecting the wrong callback address.

  • Control: add programming interfaces to set custom timeouts for action and subscription calls.

2023-11-22 upmpdcli 1.8.6

  • Fixed Media Server proxy mode. Incorrect range handling prevented it to work with kodi

  • Misc updates in Media Server plugins.

  • 1.8.5 was skipped (not published).

2023-09-17 upmpdcli 1.8.4

  • Misc. improvements to the Tidal, Subsonic, Media Server plugins.

  • New Mother Earth Radio and and Radio Paradise Media Server plugins.

2023-09-17 upmpdcli 1.8.3

  • New Tidal plugin by Giovanni Fulco. Tidal access is working again !

  • Media Server: change the internal URL format to avoid characters needing quoting in XML: work around misc. device bugs.

  • Qobuz: add option to obtain actual item resource info when listing a container.

2023-06-26 upmpdcli 1.8.1

  • Allow enabling the internal WEB server to serve local files, by setting the webserverdocumentroot parameter. This can be used by, e.g., Media Server plugins for serving icons.

  • Subsonic/Navidrome plugin: misc. updates and improvements.

  • Uprcl: fix using the albumartist in priority when it is set.

2023-04-19 upmpdcli 1.7.9

Media server: a new Media Server plugin for browsing a Subsonic/Navidrome server and stream music from there. Brought to you by by Fulco Giovanni.

See the documentation

2023-04-19 libupnpp 0.22.5

  • Small internal changes: eliminate explicit memory allocations, improve url sanitizing, reconcile Windows and Linux versions.

2023-03-21 upmpdcli 1.7.7

  • Uprcl local media server:

    • Fix issues in upnp-to-recoll search translation, and improve search behaviour with some control points (bubble and kazoo) (not perfect yet…​).

    • Fix potential issues with parallel requests.

    • Index artist documents so that they can be searched for.

    • When a search request is relative to objid "0", use the plugin root instead of last browsed container.

    • Avoid phantom entries by adjusting the result count for entries filtered out by class.

  • Qobuz: restore function, lost since last week.

2023-02-22 libnpupnp 5.0.1

  • Fixes bug which would prevent some renderers from seeking, (vlc as a prominent example, but also explains some more obscure issues in the past).

2023-02-13 upmpdcli 1.7.2

  • Fix URL comparison issue which could cause false diags in checkContentFormat()

  • Change the default value for checkcontentformat from true to false.

  • Qobuz: always use https.

  • New radio-browser Media Server plugin for https://www.radio-browser.info/

  • Ensure that we exit when getting a terminating signal while waiting for mpd during init

2023-01-15 upmpdcli 1.7.1

  • Uprcl: report composers as <upnp:artist role="composer>

  • Uprcl: fix possible loop in search string parser

2022-12-20 upmpdcli 1.7.0

  • Media Server: implement rootalias parameter to point to arbitrary container inside the tree. This is to avoid useless navigation from the actual root for people who, e.g., only use the uprcl '[folders]' tree.

  • Uprcl: support multiple values for tags (e.g. multiple genres).

  • Uprcl: fix miscellaneous small issues.

  • Removed Spotify support as libspotify does not work any more.

2022-12-20 upmpdcli 1.6.3

  • Uprcl: small change to support dsf file id3 metadata

2022-12-09 upmpdcli 1.6.2

  • Cleaned up or updated some stale entries in the default radio list.

  • Media Server: implemented "browse meta" in most plugins for use with Kodi.

  • Uprcl: sort container entries by file name if there are no actual tags.

  • Uprcl: add uprclnotagview variable to suppress the "Tag View" entries in the folder view.

  • Also perform host name substitution (%h) in the UPnP/AV renderer friendly name.

2022-11-13 libupnpp 0.22.4

  • Control Point: sanitize unsufficiently quoted URLs from content directory.

2022-10-22 upmpdcli 1.6.1

  • Main: change order of media server and renderer initialisations so that the media server does not have to wait for mpd.

  • Allow substituting the host name (%h,%H) and version info (%v) in the configured friendlyname. The default friendlyname is now UpMpd-%h

  • Allow all configuration variables to also be set through environment variables named UPMPD_xxx where xxx is the upper-cased version of the variable name. This should facilitate running upmpdcli in a container.

  • Change the names of the low level UPnP library log variables from UPMPDCLI_xxx to UPMPD_xxx and manage them in the same way as the rest (with config entries too).

  • Uprcl: process custom tags (not predefined anywhere) as regular ones.

  • Uprcl: use same host as upmpdcli by default. Add uprclport configuration variable to only set the port

2022-08-31 upmpdcli 1.5.20

Fixes in the uprcl local Media Server Module:

  • Preserve stored playlist order

  • Choose folder image file rather than track-embedded art for a folder or an album.

  • Misc other small fixes.

2022-08-12 libnpupnp 5.0.0

  • Fix bug which would prevent the control point side to work with some UPnP devices. The change should be mostly source-compatible, but code using the library must be rebuilt (ABI change). Details:

    change the Upnp_SID type from a fixed size char array to an std::string
    This avoids the truncation of some long subscription IDs (e.g. Linn). The change should be
    source-compatible for programs which used the UpnpEvent_get_SID_cstr() macro for accessing the
    value, but the API and ABI change.

2022-08-12 libupnpp 0.22.2

  • Follow up the libnpupnp 5.0.0 release. Mostly for clarification, 0.21.1 should work too (but would need a rebuild anyway).

2022-08-01 libupnpp 0.22.1

  • Fix incompatibility with the Logitech Media Server UPnP Renderer plugin (absolute eventSubURL).

  • Improved logging of error conditions.

  • Medium version bump necessitated by change in Songcast API ABI (source-compatible).

2022-01-06 libnpupnp 4.2.3

  • Fix bug which could close stderr when changing the log level.

  • Miscellaneous mostly stylistic small changes.

2022-06-28 upmpdcli 1.5.18

  • Uprcl: fix music access denied by incorrect runtime group in some cases.

  • Uprcl: improve init error diagnostics.

  • Radios: speed up radio list initialisation by using multiple threads.

  • Radios: support apple live streaming streams by letting mpd deal with them.

2022-01-06 libnpupnp 4.2.2

  • Partial sanitizing of the static library object name space.

2022-04-14 sc2mpd 1.1.11

  • Move openhome build to python3.

2022-04-13 upmpdcli 1.5.15

  • Fixes deadlock in Songcast startup.

2022-03-31 upmpdcli 1.5.14

  • New BBC plugin for listening to BBC station programmes and podcasts.

2022-01-06 libnpupnp 4.2.1

  • Add UpnpSetHostValidateCallback alias to UpnpSetWebRequestHostValidateCallback for compatibility with libupnp 1.14.x

  • A 4.2.0 briefly existed. The shared lib .so version was wrong.

2021-10-13 upmpdcli 1.5.13

  • Enable L16 by default as it is handled correctly by current mpd versions.

  • Add the mpd version to the description version string.

  • Change Qobuz default format to 6.

  • Misc small bug fixes.

2021-04-19 libnpupnp 4.1.5

  • Small fix for working in a BSD jail with single interface having a 0xffffffff netmask.

2021-04-22 upmpdcli 1.5.12

  • Media server: add trivial plugin just serving the upmpdcli radio list. Also do this through the uprcl playlists.

  • Fix consistency issue with Songcast Receiver naming.

  • Deezer and Qobuz: add pictures for artists and playlists.

  • Uprcl: implement the ">> Hide Entries" Minimserver feature to fix Control Points recursive walks.

2021-04-19 libnpupnp 4.1.4-1

  • Fix vulnerability to DNS-rebind attacks.

2021-04-09 libnpupnp 4.1.3

  • Fix working with multiple ipv6 link-local interfaces by adding RFC 6874 zone identifiers to the URLs passed to the client code.

  • Add UpnpGetUrlHostPortForClient() interface to help users of the web server compute their URLs.

  • Small build and compat fixes: fix mingw64 build, add empty UpnpGetServerUlaGuaPort6() call, adjust how UPNP_ENABLE_IPV6 affects module existence to make it compatible with pupnp.

  • Improve source-level compatibility by defining UPNP_USING_CHUNKED.

2021-03-13 libnpupnp 4.1.1

  • Fix HEAD requests. Samsung TVs now work with Gerbera + libnpupnp

2021-03-13 upmpdcli 1.5.11

  • Fix rare possible issue with Kazoo volume control

2021-03-13 libupnpp 0.21.0

  • Allow configuring the subscription timeout (init option)

  • Add interface for the lib to report a subscription autorenewal failure, and to renew all subscriptions.

  • Add API to set the product/version values in User-Agent and Server headers.

2021-03-13 libnpupnp 4.1.0

  • Send SERVER and USER-AGENT headers in misc places where mandated or useful.

  • Add API for the client code to set the user-agent and server string values

  • Fix building and running with --disable-ipv6

  • Misc portability fixes.

2021-03-01 upmpdcli 1.5.10

  • Passthrough for CDDA urls. An URL of the form:


    will be translated to:


    This hack allows tunneling CDDA URLs, which mpd understands but some control points don’t like, for example, to construct a playlist which will play the tracks from a CD device.

  • Reconnect the event loop when mpd restarts. Before the fix, events stopped being generated after mpd restarted.

2021-02-24 upmpdcli 1.5.9

  • Radio metadata issues fixed.

  • Media Server: Deezer streaming service plugin.

  • Fix events not working when mpd had password set.

2021-01-10 upmpdcli 1.5.8

  • Fix a number of memory leak and locking issues detected by valgrind/helgrind.

  • Improve performance of big playlist insert by rate-limiting events.

  • Fix possible crash when started while mpd is not running.

2020-12-30 upmpdcli 1.5.7

  • Fix timeout issue while in long pause (>60S, play transition started from other client was not detected)

  • Fix ohinfo issue resulting in no cover art display in Kazoo "currently playing" screen.

  • Fix a number of issues in radio metadata.

  • The minimum effective volume adjustment was 5. Reset it to 1.

  • Cache update issues in OH playlist resulted in incomplete metadata.

2020-11-26 libupnpp 0.20.2

  • Content Directory interface: accept responses with 0 TotalMatches.

2020-12-08 upmpdcli 1.5.5

  • Fix issue with removing tracks from the playlist (sometimes slow or freezed).

  • Fix bad locking causing multiple execs of radio scripts.

  • Setting lumincompat = 1 is not useful any more and crashes some Kazoo versions. So you should keep the default value which is off.

  • Improve metadata processing when playing radios with Bubble DS.

2020-11-26 libupnpp 0.20.1

  • Adjust excessively noisy messages.

2020-11-24 upmpdcli 1.5.2

  • Modified a few things which should not have mattered but which prevented Lumin to work with upmpdcli.

  • The Qobuz plugin works again (for now), by identifying itself as the WEB client (thanks to qobuz-dl on github). More precisely, Qobuz access through the upmpdcli Media Server works again. Qobuz access by login from Kazoo or Lumin (Open Home Credentials service) does not work.

  • Tidal does not work.

  • Fixed crash.

  • Will now generate events for bitrate changes when playing.

2020-11-22 upmpdcli 1.5.1

  • Fix small issue resulting in missing metadata in ohinfo

2020-11-15 upmpdcli 1.5.0

  • Separate the OpenHome and UPnP/AV UPnP devices. The latter will now show up as <friendlyname>-UPnP/AV. Set upnpav=0 in the configuration if it bothers you. This makes upmpdcli more standard, having separate devices for the different sets of services instead of hosting them all under the same device.

  • Use the new libupnpp event management method by using the MPD idle interface for generating events. Will both provide more timely generation of events and no process activity whatsoever when not playing.

  • Add configuration options for L16 support and IPV6 operation. These are now off by default as they less useful than they are sources of trouble. Especially, the UPnP/AV upmpdcli device now works well with Windows "Cast to device" feature.

  • Removed the gmusic plugin from the documentation and distribution. The Tidal and Qobuz modules are still around, but untested.

2020-11-15 libupnpp 0.20.0

  • Allow alternate method of event generation by letting the device code run its event loop instead of polling the services for changes.

  • Add new initialization method allowing easier extensibility of options.

2020-11-15 libnpupnp 4.0.14

  • Fix parsing of UPnP description with multiple embedded devices.

  • Small changes to improve performance and memory usage. Avoid std::regex use.

  • Do not force the network to be above the application default of 49152. There was no reason to do this, the bug was inherited from libupnp.

2020-11-02 libnpupnp 4.0.13

  • Fix major performance degradation in XML quoting, which could for example make reading big playlists very slow.

2020-10-04 libnpupnp 4.0.12

  • By default, run with IPV4 only if IPV6 is unavailable (the previous default was to fail if IPV4-only operation was not specified by setting an ip address in the configuration.

2020-09-03 libnpupnp 4.0.11, libupnpp 0.19.4

  • Install the include files in /usr/include/npupnp instead of /usr/include/npupnp/upnp

2020-09-02 upmpdcli 1.4.14

  • Fix the microhttpd version fix: the change came with 0.9.71, not 0.9.70.

2020-08-31 upmpdcli 1.4.13

  • Fix building with newer microhttpd version (MHD_Result issue).

  • Misc small fixes for marginal cases.

2020-07-20 libnpupnp 4.0.10

  • Source cleanup

  • Be more tolerant of incorrect UTF-8 data

2020-07-04 libupnpp 0.19.3

  • Improved reporting of UPnP errors

  • Improved message log initialisation: now static so can be done before actually accessing the library object.

  • Use the NetIF interface from libnpupnp instead of duplicating the module.

2020-07-04 libnpupnp 4.0.8

  • Improved processing of device errors, better error data returned.

  • Optional (configure time) code to fix bad utf-8 in data returned from some Media Servers (e.g. Minidlna).

  • Fix/improve the network interface selection code.

  • Export the NetIF API to avoid duplication in libupnpp.

  • API Documentation.

2020-06-22 libnpupnp 4.0.7, libupnpp 0.19.2

  • libnpupnp: fix vulnerability to CVE-2020-12695 (CallStranger).

  • libnpupnp: using the same version of netif.cpp as libnpupnp should allow static builds.

2020-06-12 upmpdcli 1.4.12

  • Initial implementation of a HighResAudio media server module.

  • Improve cover art management in places.

  • Fix bug where media server plugin failure could terminate parent.

  • Short-lived 1.4.11 had a bug in the Tidal plugin

2020-06-10 libnpupnp 4.0.6

Fixes IPV6 operation on Linux. IPV6 still only works on one interface only.

2020-05-21 libnpupnp 4.0.5

Hopefully fixes the upmpdcli boot startup issues from previous versions.

2020-05-17 upmpdcli 1.4.10

Released with a new Tidal API token, the old one did not work any more.

2020-05-13 libnpupnp 4.0.4

  • Fix bug which sometimes crashed upplay (Control Point side) when staring up.

  • Fix initialization not working when an interface had several IP addresses (device side).

2020-05-08 libnpupnp 4.0.2, libupnpp 0.19.1

  • Support running on multiple network interfaces.

  • Fix issue where libnpupnp would stop responding to searches from control points, becoming invisible until restarted.

  • There were 4.01/0.19.0 versions briefly released and replaced because of issues

2020-04-26 upmpdcli 1.4.9

Small fix for Bubble UPnP compatibility

2020-04-16 upmpdcli 1.4.8

Small improvements to the mediaserver modules.

  • Support the oauth connection method in upmpdcli-gmusic.

  • Small bug fix in the upmpdcli-tidal module

2020-04-02 sc2mpd 1.1.7

  • Allow adjusting the receiver audio delay in the configuration (see the manual). Allows better synchronisation, especially with non-sc2mpd receivers.

2020-04-01 sc2mpd 1.1.6

  • Allow adjusting the stream volume according to the mpd current setting (allows adjusting from control point connected to upmpdcli). Set 'scusempdvolume' to true in the config to activate.

2020-03-06 libnpupnp 2.2.1

  • Improve interface to ease experimental port of Gerbera.

  • Make reuseaddr and ipv6 support configure defaults.

2020-03-06 libnpupnp 2.1.2

  • Fix GENA-related crash

2020-02-26 upmpdcli 1.4.7

  • Fix 1.4.6 issues with Kazoo.

2020-02-25 libnpupnp 2.1.1

  • Fix different issues in network configuration code, including an outright crash.

2020-02-07 upmpdcli 1.4.6

  • Multiple small fixes, some in the radio scripts, most regarding the build system.

  • Avoid mpd remaining in 'single' mode after switching back from the Radio Source.

  • Remove the libupnp dependancy from the packages. We only depend on libupnpp (which in turns depends on libnpupnp).

2020-02-07 libupnpp 0.18.0

  • Switch to using libnpupnp. The slightly different API means that we are not compatible any more with libupnp, but we get rid of the libixml dependance and the libupnp history of bugs so this is a big win.

2020-02-07 libnpupnp 2.0.1

  • Initial release.

  • The 2.0.0 API is not compatible with the pupnp/libupnp API, this was necessary to get rid of libixml and the weirdness of passing DOM trees across the API.

  • There is a 1.0.0 version in the git history which marks the last point where libnpupnp preserves the libupnp API. Most of the other changes (switching to C++ internally, relying on expat, libcurl and libmicrohttpd) had already be done at this point.

2019-10-15 upmpdcli 1.4.5

  • Plug some of the memory leaks in the Spotify interface.

  • Extracted the Qobuz app_key/secret from the code. Get it from the configuration instead. This should make it easy for an integrator to store it securely.

2019-09-27 libupnpp 0.17.2

  • API cleanup: remove upnp.h and config.h from public interfaces.

  • Fix crash with newer libstdc++ (buster).

2019-09-16 upmpdcli 1.4.4

  • Add plgmicrohttphost variable to allow setting the host used in proxy urls. This allows using localhost, which will only work with the local renderer, but allows for portable playlists.

  • Fix a number of small issues in the gmusic plugin.

  • Better updates for radio stream metadata, esp. when not using OHRadio.

2019-03-28 libupnpp 0.17.1

  • Pupnp 1.8 compatibility

2019-03-28 upmpdcli 1.4.2

  • Restore capability to run without UPnP-AV support at all.

  • Fix removing tracks from the OpenHome Playlist. This was not working right when removing more than a few tracks.

2019-02-13 upmpdcli 1.4.1

  • Fix bug in Spotify plugin

2019-01-15 upmpdcli 1.4.0

  • Save the current radio settings across restarts.

  • Add the avtautoplay config variable to accommodate a non-conformant Control Point which does not issue a Play command after SetAVTransportURI.

  • Add mpdtimeoutms variable to configure MPD connections timeouts.

  • Use Python 3 for all scripts

  • gmusic: cache some data locally to improve performance.

  • OHCredentials: use stored authentication data if available to avoid login on CP.

  • Uprcl: use Waitress as WSGI server, instead of Paste.

  • Fix issue in Spotify access when started by root (at boot time).

  • Qobuz: allow longer playlists

  • Use the libupnpp 0.17.0 features. This makes us incompatible with 0.16.

  • Add the capability to run the Media Server in-process (as a separate root device). Needs a very recent libupnp.

2019-01-15 libupnpp 0.17.0

  • Better support for embedded devices.

  • Support for multiple root devices.

  • Move the description document creation to the library: it is built incrementally as services are added, instead of being passed as a whole by the device. This changes the API.

  • Don’t delay searches after the initial one.

  • Work around port allocation bug in some libupnp 1.8 versions.

2018-12-13 upmpdcli 1.3.8

  • Add parameter to set the name of the openssl command to use. Helps with OHCredentials on jessie where the system command is too old.

  • Small compatibility change for helping Kazoo use our radio list. Better Kazoo compatibility (when switching between radio and playlist) still to come (not merged).

2018-12-14 libupnpp 0.16.2

  • Compatibility with libupnp branch 1.8

2018-12-12 upmpdcli 1.3.7

  • Allow setting the name of the openssl command used to encrypt the credentials.

2018-10-08 upmpdcli 1.3.6

  • Fix issues in the Credentials service which prevented Tidal and Qobuz logins to work with BubbleUPnP.

2018-10-06 upmpdcli 1.3.5

  • Fix bug in the spotify plugin: would not work if upmpdcli was initially started by root (before switching to the upmpdcli user), which is the default for the packages.

2018-10-01 upmpdcli 1.3.4

  • Fix bug in the spotify plugin: would not work if plgproxymethod was set to redirect (which is the default). The plugin should ignore the value of this variable which can only be useful for the other streaming services.

2018-09-20 upmpdcli 1.3.3

  • Fix the radio source on systems with Python3 version older than 3.5 (e.g. Debian Jessie)

2018-09-15 upmpdcli 1.3.2

Using this release with Lumin needs explicitely setting lumincompat=1 in the configuration file, which disables the OpenHome Credentials service (this is not the default).
  • Support Spotify, through a new Media Server module. This needs a premium Spotify account. The setup is slightly more complicated than for the other services, see the upmpdcli manual

  • Support the OpenHome Credentials service. This allows accessing Qobuz and Tidal from Kazoo, using their internal service directory browser (instead of going through the upmpdcli media server). This allows managing favourites and other specific service functions. In theory, this should work with Lumin too, but it does not, and the presence of this feature prevents the renderer from being detected by Lumin at all, so that a 'lumincompat' was added to the configuration to allow using upmpdcli with Lumin (with the Credentials support disabled).

  • Support Radio Paradise FLAC channel. This is special for a radio because it uses a sequence of audio URLs instead of a single stream. Have a look at the distributed 'upmpdcli.conf' file for the radio definition to use (add it to your '/etc/upmpdcli.conf' which is not automatically updated during an upgrade). The appropriate script is now installed to '/usr/share/upmpdcli/radio_scripts' (along with a small number of art and metadata scripts for other stations).

  • Port all Python code to Python3 (while retaining Python2 compatibility). All Media Server plugins are run by Python3 by default.

  • Improve function with Google Play Music. Esp. fix bugs in playlist handling.

  • Add proxy mode to the Media Server. This may improve function in case the service is a bit flaky by providing retries. The default is still to redirect mpd to the actual music stream, except for Spotify (which needs local decoding).

See the Upmpdcli manual for more detail about these functions.

2018-04-06 sc2mpd 1.1.5

  • Improved handling of halt state.

  • Narrower range of sample rate adjustments to avoid extreme strangeness.

  • Openhome updates. Switch to Joerg Krause repository on GitHub because Linn OhSongcast does not appear to be maintained any more.

2018-04-06 upmpdcli 1.2.16

  • Multiple small fixes for crashes in rare circumstances.

  • New GUI editor for the configuration file (not built by default, use configure --enable-confgui, which in turns needs qt5 dev modules).

  • Add wavpack, APE to supported formats (used checkcontentformat is set).

  • Reset MPD single, random, and repeat modes when needed (SetAVTransportURI).

  • Radios: add preferScript parameter to override Icy metadata with the one fetched by the script.

  • Radios: support HTTPS.

  • Fix Tidal search and other issues in the Tidal and Qobuz modules (crashes).

  • Fix handling of Qobuz and Tidal playlists (recently broken).

  • Media Server: allow configuring the names for the plugin entries in the server root (e.g. uprcl → "Local Music")

  • New GUI editor for the configuration file (not built by default, use configure --enable-confgui, which in turns needs qt5 dev modules).

  • OpenHome Receivers: add possibility to use a state file, allowing the Receiver to reconnect to the previous Sender when starting up

  • uprcl plugin (Media Server for local files): multiple improvements, still alpha quality.

2017-09-19 sc2mpd 1.1.4

  • Better handling of transition to stop state and process exit, properly close ALSA when needed.

  • Update the openhome code version.

libupnpp 0.16.1

  • Small additions to the Songcast control interface.

  • Worked around possible crash when calling UpnpCloseLog()

  • Mac OS X build tweaks

libupnpp 0.16.0

  • Interfaces used by the Python binding merged into the main branch.

  • New interface for dumping a device description files (used from upplay).

upmpdcli 1.2.15

  • Faster Qobuz searches (less requests to the service)

  • Songcast: stop the inactive sender so that it does not show up in lists.

  • Radio dynamic metadata scripts for radio which provide metadata from the web site, instead of icy metadata.

  • Properly handle radios which redirect straight from http to mms.

  • AVTransport: accept metadata-less streams.

libupnpp 0.15.3

  • Volume control fix (events carried wrong value if device range was not 0-100).

  • Fix crash on service object delete (callback table not cleared).

  • Improved reliability of discovery.

upmpdcli 1.2.14

  • Make Receiver OpenHome source visible to allow control by Linn Kazoo

libupnpp 0.15.2

  • Handle "Waiting" state to allow control of Linn Songcast Receivers

sc2mpd 1.1.3

  • Updates to the build system. Small code reorganization and fixes. No external changes.

Upmpdcli 1.2.13

  • Improved handling of Qobuz favorites.

  • Improved dynamic radio artwork processing.

  • Allow media-server only mode (no talking to mpd, incomplete), and other small changes for supporting the experimental local media server module.

Upmpdcli 1.2.12

  • Fixes the 1.2.11 Content Directory bug.

Upmpdcli 1.2.11

  • Allow dynamic retrieving of radio stream artwork.

  • Improved Qobuz interface.

Known Bug: when accessing the streaming services plugins from Linn Kazoo (and maybe some others), only the very beginning of each directory is displayed (1-2 entries). This is a bug in upmpdcli, and a new version will be released shortly to correct it. Meanwhile, you can use Upplay or Bubble UPNP which do things in a different way and are not affected by the issue.

Upmpdcli 1.2.10

  • Improves streaming services search

  • Fix bug in UPnP/AV mode (seeking after gapless transition would not work).

Upmpdcli 1.2.6/7/8/9

  • Small fixes (qobuz,tidal), added protocolinfo entries, etc.

  • 1.2.9 fixes a bug in the format of the protocolinfo data sent to the control points.

Upmpdcli 1.2.5

  • Tidal repaired (you only need the tidal Python code, the rest of upmpdcli is unchanged).

Upmpdcli 1.2.4

  • Misc bug fixes.

  • Split the Debian / Ubuntu packages to separate the main package from the different streaming services ones.

Upmpdcli 1.2.0

  • Implement gateway to Google Play Music, Qobuz and Tidal by exporting a Media Server UPnP device.

  • The code now uses c11 features, and the default build uses -std=c11, meaning that the minimum usable gcc version is 4.7.

  • Implement support for embedded devices in libupnpp

Upmpdcli 1.1.4

  • Support audio/L16 format (only works with patched mpd 0.19.16jfd1 until mpd gets to 0.20).

  • Make Volume/Mute events conform to standard (JRiver did not like our non-standard events).

  • Allow defining radio station in an out-of-install file.

  • Add content format compatibility checking. Can be disabled by setting checkcontentformat to 0.

  • Other small fixes.

Upmpdcli 1.1.3

  • Fix cover art display, which sometimes vanished.

  • Allow changing the xml data directory in the run time config.

  • Fix execution of onvolumechange (command could not have args).

Upmpdcli 1.1.2

  • Fixed the mpd play method for the Songcast Receiver, it was broken in 1.1.1. Even if the direct alsa is preferred, it can be useful in case of alsa trouble.

Upmpdcli 1.1.1

  • Compatibility with Linn Kazoo (also needs libupnp-1.6.19.jfd3).

  • Improve management of play and volume state when switching between sources

  • Allow volume control to be performed by an external script

Upmpdcli 1.1

  • Implement an OpenHome Radio source for playing Internet radio streams (needs Python).

  • Add capability to forward ALSA input channel (or other audio source) to Songcast (needs sc2mpd 0.14).

  • Fix Receiver detection from Windows Songcast

  • Lose the 0.x as we are reaching maturity…​

  • Needs libupnpp 0.14.1

Upmpdcli 0.13

  • Support the new sc2mpd/mpd2sc Sender/Receiver mode, allowing broadcasting the audio from the Linux host to multiple Songcast receivers (typically other upmpdcli/sc2mpd instances but should also work with other types). Previous versions needed a Windows or Mac Sender for multiroom audio.

  • Fix bug where we did not clear mpd "single" mode, resulting in needing to hit play after each track (in openhome playlist mode).

  • Fix random initial value for ohproduct standby state variable (0.13.1)

  • Fix eventing for ohproduct (0.13.1)

Upmpdcli 0.12

This has a small change to use a new feature in libupnpp 0.12 to suppress error messages produced when when UPnP AV services were turned off. The version number was changed mostly to signal the dependancy on libupnpp 0.12.

Upmpdcli 0.11

upmpdcli 0.11 mainly improves the Songcast support, in complement with the changes in sc2mpd. Especially, it now includes an utility (scctl) and WEB interface to set up multi-room Songcast.

Minor releases:


Add an upnpav configuration variable, to enable turning off UPnP AV support (on by default). Turning off UPnP AV allows the Linn Kinsky control point to work smoothly with upmpdcli (it gets confused when both OpenHome and UPnP AV services are enabled).

Upmpdcli 0.9

upmpdcli 0.9 implements support for Linn Songcast. This is mostly an addition to the unchanged 0.8.6 code, so, when not using Songcast, it should be as stable as 0.8.6.

Bugs fixed:

  • Fix the Kazoo Control Point going loopy when the upmpdcli playlist became empty.

Upmpdcli 0.8


Small improvements:

  • Improved speed for loading big playqueues.

  • Fixed quoting for tracks added from an MPD client.


No code changes, it only exists because of changes in the package structure. The libupnpp library has been separated in its own package.




This release mostly has modifications to the control side of the library.

  • upmpdcli now retries some song delete operations, it seems that mpd sometimes needs a little time to recover (?)

  • The control side now uses short timeouts and concurrency to download the description documents, which should solve the problem of devices disappearing when a very slow-responding one was present on the network.

  • Misc improvements to the control side of the lib to support upplay.

  • Add capability to set an icon to be displayed when selecting a renderer from a control point (see iconpath parameter in configuration file).

  • Control side: fix volume control which was not working on many renderers.

  • Misc changes to ease compilation on non-glibc platforms.


Many changes in the library code, but almost none of them affect the device side, they concern support for writing a control-point, which is mostly disjoint. The following changes are relevant to upmpdcli, and consistant with a minor release:

  • When used with an non-OpenHome Control Point, multiple calls to SetNextTransportURI no longer result in a lengthening of the MPD queue, and a wrong playlist.

  • The OpenHome Playlist metadata is now writen to a temporary file which is then renamed, to avoid partial saves of big lists.

  • The AVTransport service uses the OpenHome PlayList metadata cache for describing the current track data to a pure AVTransport Control Point. This is a very marginal improvement, and only makes sense in case the AVTransport CP is used for displaying the current track.

  • The OpenHome service was not completly switched off when the option was off sometimes resulting in spurious error messages (and nothing more).

  • Bad lock management inside the device code could result in a semi-deadlock in rare situations. Upmpdcli would then mostly be gone from the network, while still doing temporary appearances. This is linked to design issues in libupnp, which handles quite badly a situation where a subscribed Control Point responds very slowly or not at all to event connections.


The main changes in release 0.8 deal with better handling of the OpenHome playlist, in addition to a number of small bug fixes, and efficiency improvements.

  • OpenHome playlist: metadata from tracks directly added to the MPD queue through an MPD client (such as, e.g. MPDroid, gmpc…​) is now remembered by upmpdcli and will be displayed in the UPnP Control Point.

  • OpenHome playlist: the metadata for the playlist is now saved to disk so that it survives restarts (like the MPD playlist does). The previous situation was that the current playing queue was still active after a player restart, but no metadata (titles, artists, etc.) was displayed.

  • Actually advertise on the network when starting up and dying. An oversight in previous versions resulted in the fact that upmpdcli could only be discovered by a search (when the Control Point started), but, when upmpdcli was started, it would not appear in a running Control Point device list.

  • Do not advertise support for raw PCM strings (audio/Lxx), as we can’t actually play them. It is better to give accurate information to the Control Point, so that it can choose an alternate format such as Wav if it is available.