Shairport Sync 5.1
This update contains a security fix, new features and bug fixes and is recommended for all users.
Stuff You Should Not Ignore
Security Fix
- Fixed Out-Of-Bounds reads and a potential infinite loop in TLV and DMAP parsers. Thanks to TristanInSec for two reports and the PR to fix it.
- New
./configureflags. The metadata pipe and multicast interfaces are no longer included automatically when metadata support is included in the build configuration. To include them, use the respective new configuration flags listed below:—with-metadata-pipe—with-metadata-multicast.
Remote Control is Back for Classic AirPlay!
An error that broke DACP signalling has been fixed. Messages (e.g. “play”, “pause”, “next”, etc.) sent to Shairport Sync via the D-Bus, MPRIS or MQTT interfaces are now correctly forwarded to the client. This works for classic AirPlay only.
New Features
- AirPlay 2 Password: You can now set a password for AirPlay 2 as well as classic AirPlay.
Until now, you could only set a password on a classic AirPlay service. Now it works on AirPlay 2 connections too. - Up to 31 channels now allowed on the output device.
The previous limit was eight channels; if you connected to a device with more than eight channels, Shairport Sync was unable to use it. - The AirPlay 2 build can now provide a pure classic AirPlay mode either by request or by default under the control of a new optional setting:
- You can ask the AirPlay 2 build of Shairport Sync to provide a purely classic AirPlay service with a setting:
--service-type=<type>on the command line, orservice_type = "<type>"in thegeneralsection of the configuration file. The<type>can be"auto"(default),"classic"or"airplay2". - If the service type setting is omitted or set to
"auto", AirPlay 2 service will be provided ifNQPTPis running, and classic AirPlay service will be provided if not.
- You can ask the AirPlay 2 build of Shairport Sync to provide a purely classic AirPlay service with a setting:
More…
- Improved stability when switching players.
- When an existing session is interrupted, it is completely terminated before starting the new session.
- Updated Docker base Linux image and FFmpeg libraries
- Alpine 3.23.4 and FFmpeg 8.1.
- Docker image generation for ARM V6 CPUs has been discontinued.
- Docker itself is no longer supported on ARM V6 CPUs.
- Updated sample
docker-compose.ymlto ask forSYS_NICEcapabilities. - Miscellaneous Bug Fixes
- Fixed incorrect signalling of the
DACPport to theDACPmonitor. Thedapometadata, giving theDACPport number, is now sent as text, with a token of”0”when the port becomes inaccessible. - When an immediate flush is requested, PTP clock information is reset immediately to disable the use an out-of-date clock until play is resumed.
- If a
TEARDOWNhas a plist with a streams item, the player is stopped. If the plist exists but is empty, the connection is closed immediately rather than waiting for the connection to be closed by the client. - Set Locales in Test Clients
- This allows the
shairport-sync-dbus-test-clientandshairport-sync-mpris-test-clientapps to display non-ASCII characters correctly.
- This allows the
- Fix a stack overflow bug on Alpine Linux with log verbosity set to
-vvv. Thanks to Arthur Loureiro for the report. - Display
n/ais a statistics readout instead of the value ofUINT64_MAX— 18446744073709551615 — if the minimum DAC length is not available.
- Fixed incorrect signalling of the
- User Service Installer Script Update
- Checks are now included for non-
rootuse and for PipeWire or PulseAudio services.
- Checks are now included for non-
- Dependabot updates.