- Bugfixes
- Fix an out-of-stack-space error that can occur in certain cases (thanks to https://github.com/joerg-krause).
- Fix a couple of compiler warnings (thanks to https://github.com/joerg-krause).
- NOTE: all the metadata stuff has been moved to the "development" branch. This will become the stable branch henceforward, with just bug fixes or minor enhancements. Apologies for the inconvenience.
- Bugfixes
- Fix a bug when compiling for Arch Linux on Raspberry Pi 2 (thanks to https://github.com/joaodriessen).
- Fix a compiler warning (thanks to https://github.com/sdigit).
- Modify the init script to start after all services are ready. Add in a commented-out sleep command if users find it necessary (thanks to https://github.com/BNoiZe).
- Two memory leaks fixed (thanks to https://github.com/pdgendt).
- An error handling time specifications for flushes was causing an audible glitch when pausing and resuming some tracks. This has been fixed (thanks to https://github.com/Hamster128).
- Enhancement
- An extra latency setting for forked-daapd sources -- 99,400 frames, settable via a new option
--forkedDaapdLatency
.
- Bugfixes:
- If certain kinds of malformed RTSP packets were received, Shairport Sync would stop streaming. Now, it generally ignores faulty RTSP packets.
- The
with-pulseaudio
compile option wasn't including a required library. This is fixed. Note that the PulseAudio back end doesn't work properly and is just included in the application because it was there in the original shairport. Play with it for experimentation only. - Fix typo in init.d script: "Headphones" -> "Headphone".
- Extra documentation
- A brief note on how to compile
libsoxr
from source is included for the Raspberry Pi.
- Enhancements:
- New password option:
--password=SECRET
- New tolerance option:
--tolerance=FRAMES
. Use this option to specify the largest synchronisation error to allow before making corrections. The default is 88 frames, i.e. 2 milliseconds. The default tolerance is fine for streaming over wired ethernet; however, if some of the stream's path is via WiFi, or if the source is a third-party product, it may lead to much overcorrection -- i.e. the difference between "corrections" and "net correction" in the--statistics
option. Increasing the tolerence may reduce the amount of overcorrection.
- Changes to latency calculations:
- The default latency is now 88,200 frames, exactly 2 seconds. It was 99,400 frames. As before, the
-L
option allows you to set the default latency. - The
-L
option is no longer deprecated. - The
-L
option no longer overrides the-A
or-i
options. - The default latency for iTunes is now 99,400 frames for iTunes 10 or later and 88,200 for earlier versions.
- The
-i
or--iTunesLatency
option only applies to iTunes 10 or later sources.
- Documentation update: add information about the
-m
audio backend option. The-m
audio backend option allows you to specify the hardware mixer you are using. Not previously documented. Functionality of shairport-sync is unchanged.
- Compilation change: Begin to use PKG_CHECK_MODULES (in configure.ac) to statically link some of the libraries used by shairport-sync. It is intended to make it easier to build in the buildroot system. While sufficient for that purpose, note that PKG_CHECK_MODULES is not used for checking all the libraries yet. Functionality of shairport-sync is unchanged.
- Enhancement:
--statistics
Statistics are periodically written to the console (or the logfile) if this command-line option is included. They are no longer produced in verbose (-v
) mode. - Bugfixes for
tinysvcmdns
- A bug that prevented the device's IP number(s) and port numbers being advertised when using
tinysvcmdns
has been fixed. (Cause: name needed to have a.local
suffix.) - Bugs causing the shairport service to semi-randomly disappear and reappear seem to be fixed. (Possible cause: incorrect timing settings when using
tinysvcmdns
.)
- A bug that prevented the device's IP number(s) and port numbers being advertised when using
- Enhancement
- A man page is now installed -- do
man shairport-sync
or see it here: http://htmlpreview.github.io/?https://github.com/mikebrady/shairport-sync/blob/2.1/man/shairport-sync.html.
- A man page is now installed -- do
- Bugfix
- A bug that caused the
-t
timeout value to be incorrectly assigned has been fixed. (Cause:config.timeout
defined asint64_t
instead onint
.)
- A bug that caused the
- Bugfixes
- A bug that sometimes caused the initial volume setting to be ignored has been fixed. (Cause: setting volume before opening device.)
- a bug that caused shairport-sync to become unresponsive or unavailable has been fixed. (Cause: draining rather than flushing the alsa device before stopping.)
-
Enhancements
- (This feature is intended to be useful to integrators.) Shairport Sync now the ability to immediately disconnect and reconnect to the sound output device while continuing to stream audio data from its client.
Send a
SIGUSR2
to the shairport-sync process to disconnect or send it aSIGHUP
to reconnect. If shairport-sync has been started as a daemon usingshairport-sync -d
, then executingshairport-sync -D
or--disconnectFromOutput
will request the daemon to disconnect, and executingshairport-sync -R
or--reconnectToOutput
will request it to reconnect. With this feature, you can allow Shairport Sync always to advertise and provide the streaming service, but still be able to disconnect it locally to enable other audio services to access the output device.
- (This feature is intended to be useful to integrators.) Shairport Sync now the ability to immediately disconnect and reconnect to the sound output device while continuing to stream audio data from its client.
Send a
-
Annoying things you should know about if you're updating from a previous version:
- Options
--with-openssl
,--with-polarssl
have been replaced with a new option--with-ssl=<option>
where<option>
is eitheropenssl
orpolarssl
. - Option
--with-localstatedir
has been replaced with--with-piddir
. This compilation option allows you to specify the directory in which the PID file will be written. The directory must exist and be writable. Supercedes the--with-localstatedir
and describes the intended functionality a little more accurately.
- Options
-
Bugfixes
- A small (?) bug in the flush logic has been corrected. Not causing any known problem.
- Enhancements
- Adds a
--with-localstatedir
configuration option. When Shairport Sync is running as a daemon, it writes its Process ID (PID) to a file. The file must be stored in part of the file system that is writable. Most build systems choose an appropriate 'local state directory' for this automatically, but some -- notablybuildroot
-- don't always get it right for an embedded system. This compilation option allows you to specify the local state directory. Supersedes 2.1.4, which tried to do the same thing.
- Adds a
- Faulty -- withdrawn. 2.1.5 does it properly.
- Stability Improvements
- Fixed a bug which prevented Shairport Sync starting on an IPv4-only system.
- Stability Improvements
- Improved buffering and flushing control, especially important on poor networks.
-
Enhancements
- Add new -t or --timeout option. Normally, when playing audio from a source, the Shairport Sync device is unavailable to other devices requesting to play through it -- it returns a "busy" signal to those devices. If the audio source disappears without warning, the play session automatically terminates after a timeout period (default 120 seconds) and the device goes from being "busy" to being available for new play requests again. This option allows you to set that timeout period in seconds. In addition, setting the timeout period to 0 means that play requests -- say from other devices on the network -- can interrupt and terminate the current session at any time. In other words, the "busy" feature of the device -- refusing connections from other players while playing from an existing source -- is turned off.
- Allow -B and -E commands to have arguments, e.g. -B '/usr/bin/logger "Starting to play"' is now legitimate.
-
Annoying things you should know about if you're updating from 2.1:
- Build now depends on the library libpopt -- see "Building and Installing" below.
-
Stability Improvements
- Fixed a bug which would silence output after a few hours.
- Tightened up management of packet buffers.
- Improved estimate of lead-in silence to achieve initial synchronisation.
-
New features:
- Support for libsoxr, the SoX Resampler library -- see http://sourceforge.net/projects/soxr/. Briefly, Shairport Sync keeps in step with the audio source by deleting or inserting frames of audio into the stream as needed. This "interpolation" is normally inaudible, but it can be heard in some circumstances. Libsoxr allows this interpolation to be done much more smoothly and subtly. You can optionally include libsoxr support when building Shairport Sync. The big problem with libsoxr is that it is very compute intensive -- specifically floating point compute intensive -- and many embedded devices aren't powerful enough. Another issue is libsoxr is not yet in all linux distributions, so you might have to build it yourself. Available via the -S option.
- Support for running (and optionally waiting for the completion of) programs before and after playing. See the -B, -E and -w options.
- A new option to vary or turn off the resync threshold. See the -r option.
- Version and build options. See the -V option.
- Renamed program and init script. This is not exactly a big deal, but the name of the application itself and the default init script file have been renamed from "shairport" to "shairport-sync" to avoid confusion with other versions of shairport.
- PolarSSL can be used in place of OpenSSL and friends.
-
Other stuff
- Tinysvcmdns works as an alternative to, say, Avahi, but is now [really] dropped if you don't select it. Saves about 100k.
- Lots of bug fixes.
-
Annoying things you should know about if you're updating from 2.0:
- Compile options have changed -- see the Building and Installing section below.
- The name of the program itself has changed from shairport to shairport-sync. You should remove the old version -- you can use
$which shairport
to locate it. - The name of the init script file has changed from shairport to shairport-sync. You should remove the old one.
- New features:
- Audio synchronisation that works. The audio played by a Shairport Sync-powered device will stay in sync with the source. This allows you to synchronise Shairport Sync devices reliably with other devices playing the same source. For example, synchronised multi-room audio is possible without difficulty.
- True mute and instant response to mute and volume control changes -- this requires hardware mixer support, available on most audio devices. Without hardware mixer support, response is also faster than before -- around 0.15 seconds.
- Smoother volume control at the top and bottom of the range.
- Another source can not interrupt an existing source playing via Shairport Sync. it will be given a 'busy' signal.