github mikebrady/shairport-sync 5.6
Version 5.6 -- Security Updates, Remote Control for AirPlay 2, macOS support, multiple instance support

3 hours ago

Version 5.6

This update contains important security updates, enhancements and bug fixes and is recommended for all users. A corresponding update has been made to NQPTP.

Things You Can’t Ignore

  • Shairport Sync and NQPTP have both been updated to Shared Memory Interface 11 (smi11). You should update and install NQPTP first, then update and install Shairport Sync. Then, restart NQPTP and Shairport Sync, in that order.

Security Updates

  • The default ALAC decoder is now from the FFmpeg library. The Hammerton decoder is no longer the default ALAC decoder for Classic AirPlay builds; it remains an option but is strongly deprecated for security reasons.
  • A number of memory allocation and out-of-bounds issues have been identified and dealt with. Thanks to Akhil Koul, Yegor Yefremov, Dirk Mueller, Haavar Valeur, Tristan, Filipe and memoriaru.

Principal Enhancements

  • Remote Control for AirPlay 2.
  • Enhanced Metadata for Airplay 2
  • Improved D-Bus and MPRIS interfaces.
  • Full support for macOS.
  • Support for multiple instances of Shairport Sync.
  • PipeWire volume control.

Some Details...

Remote Control for AirPlay 2.

We are thrilled to announce that remote control of AirPlay 2 players is now available. Shairport Sync has had remote control facilities for Classic AirPlay players for some time -- for example, you could control play, pause, skip and change volume via Shairport Sync's MPRIS, D-Bus or MQTT interfaces, but this only worked only on Classic AirPlay (aka AirPlay 1) players, and "Advanced" controls were only available for iTunes or the macOS Music app.

Most of these remote control facilities are now available on AirPlay 2 players using the same Shairport Sync commands and properties. (This is still a work in progress: the RemoteControl.Available and AdvancedRemoteControl.Available properties remain false in AirPlay 2 operation even though the facilities are available.)

Enhanced Metadata for Airplay 2

AirPlay 2 provides much more metadata than classic AirPlay. This is now provided in the metadata pipe under the copl (for COmmand PList) type, and on the D-Bus interface alongside existing metadata. (The sample metadata pipe reader shairport-sysc-metadata-reader has also been updated and a few bugs fixed.)

Improved D-Bus and MPRIS interfaces

  • The MPRIS interface has been brought closer to the true MPRIS standard: Volume, Loop Status and Shuffle are now settable properties as specified in the standard, whereas up to now they were read-only properties.
  • The D-Bus interface has likewise been enhanced: Volume, Loop Status and Shuffle are now settable properties. Most of the RemoteControl and AdvancedRemoteControl suite of commands and properties are available on AirPlay 2 connections.
  • The D-Bus interface has two new properties: NowPlayingInformation and CommandInformation. Both of these are essentially raw feeds of metadata coming from AirPlay 2. The only exception is that raw picture data is removed from the NowPlayingInformation and is replaced by a local file reference to the same data.
  • The MPRIS Position property has been fully implemented, for Classic and AirPlay 2 operation.
  • MPRIS and D-Bus interfaces now check parameters and report errors before accepting a command or setting a property.

Full Support for macOS

  • A new native CoreAudio backend is now available for use with macOS. This provides full audio synchronisation on Mac. NQPTP has also been updated for macOS, enabling AirPlay 2 as well as Classic AirPlay service on Mac. Thanks to Filipe for their work on this.

Support for Multiple Instances of Shairport Sync

This refers to the possibility of running multiple copies of Shairport Sync on the same hardware, which was not thought possible. However, thanks to the work of Haavar Valeur and Jay Love, it now seems feasible. Please refer to the Running Multiple Instances guide for further details.

PipeWire Volume Control

  • Shairport Sync can optionally control its own ("stream") PipeWire volume or the overall ("sink") PipeWire volume of the entire system. Use the new mixer_type setting in the pipewire section of the configuration file. If no mixer_type is specified, Shairport Sync's own mixer is used and no PipeWire volume settings are affected. Thanks to gearhead.
    pipewire = {
      ...
      mixer_type = "sink"; // pipewire mixer_type either "sink" or "stream"
    }
    

Other Enhancements

  • Improved handling of clock mastership changes that occur when a player containing a new grandmaster is added to or removed from the set of output devices.
  • Support for Mbed TLS 4, thanks to Yegor Yefremov.
  • Support for uncompressed Linear 16-bit signed PCM (CD-quality) streams, thanks to Filipe.
  • Very specialised configuration file settings have been added to force AirPlay 2 reception to 44,100 frames per second only and to enable or disable 48K ALAC Lossless reception.
  • Richer plist-encoded metadata is now used by default for AirPlay 2.
  • TIFF album artwork is recognised and file-tagged correctly.

Bug fixes

  • Fixed a bug causing AirPlay 2 sessions to stop unexpectedly due to periodic connections from other players. Thanks to mjardemalm for the detective work!
  • Fixed a memory allocation bug in the pairing code. Thanks to Akhil Koul.
  • Stopped a crash when metadata support is built in but metadata is turned off in the configuration file.
  • Fixed a bug whereby setting a specific RTSP port for AirPlay 2 was ignored. Thanks to Haavar Valeur.
  • Fixed a bug in the construction of Bonjour strings.
  • Fixed an invalid memory free and a leak of the interface list in tinysvcmdns. Thanks to Yegor Yefremov. Note that tinysvcmdns remains deprecated for security reasons.
  • Fixed a potential read overflow, thanks to Dirk Mueller.
  • Fixed latency offset calculations by deferring them until the input rate is known. Thanks to prhodey.

Docker Enhancements

  • Preserve user-supplied PULSE_SERVER and PULSE_COOKIE, thanks to Joel Town Road.
  • Add ENABLE_NQPTP to opt out of starting NQPTP in Docker, thanks to Haavar Valeur.

Other

  • The list of licenses in LICENSES has been updated.
  • Software tests have been updated.
  • The file structure of the repository is changing.
  • Various Dependabot updates to the CI system have been made.

Don't miss a new shairport-sync release

NewReleases is sending notifications on new releases.