Releases: mikebrady/shairport-sync
Version 3.2d22 –– Development Version, Fix Airfoil latency bug
Continuing the experiments with D-Bus and related DACP support.
Bug Fix
- Fix timing error when using Airfoil as a source.
Version 3.1.7 – Stable Version. Bug fixes, better compatibility with iOS11/macOS 10.3.2
Bug Fixes
- In recent versions of iOS (11.2) and mac OS (10.13.2), when play is resumed after a pause, the volume level is not always restored, and, if software volume control is being used, Shairport Sync plays at full volume. This issue has been addressed by storing the last airplay volume setting when a play session ends and using it as a default when a new play session begins.
- Better AirPlay synchronisation. Older versions of Shairport Sync added an 11,025 frame (0.25 seconds) offset to all the latencies negotiated with the sender. This seems now only to be correct for iTunes and ForkedDaapd sources, but incorrect for AirPlay sources. Accordingly, the offset is only added for iTunes and ForkedDaapd. The result is better sync with videos, e.g, YouTube, while iTunes and ForkedDaapd synchronisation is unaffected.
- A bug in the hardware volume control affected output devices that have hardware mixers but that do not allow the volume to be set in dB. One example is the Softvol plugin in ALSA. Shairport Sync failed silently when presented with such a device when hardware volume control is enabled: the volume events have no effect. The bug has been fixed by adding two missing lines of code to the
init()
function inaudio_alsa.c
. Thanks to Jakub Nabaglo for finding and fixing the bug. - A number of bug fixes due to belboj. Many thanks for these!
- Enhancements to the handling of quit requests by threads, thanks(again) to belboj!
- (Fixed a silly bug in 3.1.5 prerelease.)
Other Stuff
- Typo fix! Thanks to corbinsantin.
- change version to 3.1.7 to synchronise the shairport-sync.spec file contents with the release.
Enhancement
- The metdata output stream can include a
dapo
message carrying the DACP port number to be used when communicating with the DACP remote control. This might be useful because the port number is actually pretty hard to find and requires the use of asynchronous mdns operations. You must be using the Avahi mdns back end.
Version 3.2d20 –– Development Version, Fix silly segfault bug
Bug Fix
- Fix silly seg-fault bug, activated when a DACP record was withdrawn.
Version 3.2d16 –– Development Version, Set correct Volume after Pause/Resume
Bug Fix
- In recent versions of iOS (11.2) and mac OS (10.13.2), when play is resumed after a pause, the volume level is not always restored, and, if software volume control is being used, Shairport Sync plays at full volume.
This issue has been addressed by storing the last software volume setting when a play session ends and using it as a default when a new play session begins.
Version 3.1.4 – Stable Version, Important Security Update
Security Update
- The version of
tinysvcmdns
bundled in Shairport Sync has a buffer overflow bug: "An exploitable heap overflow vulnerability exists in the tinysvcmdns library version 2016-07-18. A specially crafted packet can make the library overwrite an arbitrary amount of data on the heap with attacker controlled values. An attacker needs send a dns packet to trigger this vulnerability." The vulnerability is addressed by additional checking on packet sizes. See also CVE-2017-12087 and Vulnerability in tinysvcmdns.
Thanks and Chris Boot for fixing this bug.
Bug Fix
- Somewhere in version 3.x, the
softvol
plugin got broken as the volume change is not applied anymore. Turned out that, for thesoftvol
plugin, novolume()
andparameters()
are defined. Thanks to Jörg Krause for locating and fixing this bug.
Version 3.2d13 – Development Version, Important Security Update
Security Update
- The version of
tinysvcmdns
bundled in Shairport Sync has a buffer overflow bug: "An exploitable heap overflow vulnerability exists in the tinysvcmdns library version 2016-07-18. A specially crafted packet can make the library overwrite an arbitrary amount of data on the heap with attacker controlled values. An attacker needs send a dns packet to trigger this vulnerability." The vulnerability is addressed by additional checking on packet sizes. See also CVE-2017-12087 and Vulnerability in tinysvcmdns.
Thanks and Chris Boot for fixing this bug.
Continuing experiments with D-Bus and MPRIS
support. As before, please note that the implementation is likely to change greatly or be removed at any time.
Version 3.2d10 – Continuing D-Bus Experimentation
Continuing the experiments with D-Bus support, Shairport Sync can now be compiled to have a D-Bus presence on the D-Bus system bus. It presents a small number of properties and can execute a method call which sends a command string to the audio source's DACP port. As before, please note that the implementation is likely to change greatly or be removed at any time.
Enhancement
- The metdata output stream can include a
dapo
message carrying the DACP port number to be used when communicating with the DACP remote control. This port number is actually pretty hard to find and requires the use of asynchronous mdns operations. You must be using the Avahi mdns back end.
Bug Fix
- A bug in the hardware volume control affects output devices that have hardware mixers but that do not allow the volume to be set in dB. One example is the Softvol plugin in ALSA. Shairport Sync fails silently when presented with such a device when hardware volume control is enabled: the volume events have no effect. The bug has been fixed by adding two missing lines of code to the
init()
function inaudio_alsa.c
. Thanks to Jakub Nabaglo for finding and fixing the bug.
Other Stuff
- Changed the debug verbosity level of some debug messages.
Version 3.1.3 – Stable Version. A fix for automatic startup on older System V based systems.
Bug Fix
- Fixed a bug that prevented Shairport Sync from starting automatically on older systems using the System V startup system (e.g. Ubuntu 14.04). The problem was that the directory to be used –
/var/run/shairport-sync/
– was deleted on power down and needed to be recreated on startup. In it's absence, Shairport Sync would not start and would report a mysterious daemon error (2).
Recent systems are unaffected.
Version 3.2d8 – Development Version
New Feature
This introduces a very experimental D-Bus interface to Shairport Sync. At present, in a very ad-hoc trial arrangement, Shairport Sync provides a system bus D-Bus service enabling a program to get and set Volume, to enable and disable the Loundness Filter and to get and set the Loundness Filter threshold (remember, BTW, the Loudness filter only works with software-based volume control). Please note that the implementation is likely to change greatly or be removed at any time. Tested on Ubuntu 16.04 and on Raspbian Stretch.
Two extra configuration options are provided: --with-dbus
and --with-dbus-test-client
. (BTW, the test client is never installed, merely compiled.)
Bug Fix
- Fixed a bug that prevented Shairport Sync from starting automatically on systems using the System V startup system (e.g. Ubuntu 14.04). The problem was that the directory to be used –
/var/run/shairport-sync/
– was deleted on power down and needed to be recreated on startup. In it's absence, Shairport Sync would not start and would report a mysterious daemon error #2.
Version 3.1.2 – Improvements in YouTube / Mac OS / SoundCloud handling
This release is recommended for all users. The big news is that the handling and stability of playback from sources like YouTube and SoundCloud on the Mac is improved considerably. Another change is how Shairport Sync uses hardware mute on alsa
devices.
Pesky Changes You Should Not Ignore
- When you update from a previous version of Shairport Sync, your output device may have been left in a muted state. You should use a command line tool like
alsamixer
oramixer
to unmute the output device before further use.
Change of Default
- The default value for the
alsa
settingmute_using_playback_switch
has been changed to"no"
for compatability with other audio players on the same machine. The reason is that when this setting is set to"yes"
, the output device will be muted when Shairport Sync releases it. Unfortunately, other audio players using the output device expect it to be unmuted, causing problems. Thanks to Tim Curtis at Moode Audio and Peter Pablo for clarifying the issue.
Bug Fixes
- Fixed bugs that made Shairport Sync drop out or become unavailable when playing YouTube videos, SoundCloud streams etc. from the Mac. Background: there has been a persistent problem with Shairport Sync becoming unavailable after playing, say, a YouTube clip in a browser on the Mac. Shairport Sync 3.1.2 incorporates a change to how certain AirPlay messages are handled. Introduced in nascent form in 3.1.1, further follow-on changes have improved the handling of player lock and have simplified and improved the handling of unexpected loss of connection. Shairport Sync also now works properly with SoundCloud clips played in a browser on the Mac.
- Using infer, a number of silent issues have been detected, such as not checking some calls to
malloc
to ensure the response is not NULL. Most of these have been addressed by additional checks.