= Upmpdcli release notes
== 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
NOTE: 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
link:https://www.lesbonscomptes.com/upmpdcli/upmpdcli-manual.html#upmpdcli.spotifynotes[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
link:https://www.lesbonscomptes.com/upmpdcli/upmpdcli-manual.html[Upmpdcli
manual] for more detail about these functions.
== 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.
== 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.
== upplay 1.2.9
- Do not list Receiver sources in source list, nothing useful can be done
by selecting them.
== 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.
NOTE: 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 c++11 features, and the default build uses -std=c++11,
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:
0.11.2::
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 link:sc2mpd.html[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
0.8.6::
Small improvements:
* Improved speed for loading big playqueues.
* Fixed quoting for tracks added from an MPD client.
0.8.5::
No code changes, it only exists because of changes in the
package structure. The libupnpp library has been separated in its own
package.
0.8.4::
Skipped.
0.8.3::
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.
0.8.2::
* 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.
0.8.1::
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.
0.8.0::
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.