Commit Graph
65 Commits
Author SHA1 Message Date
Mike Brady f30dd7aee6 Enhancements
Enable the AirPlay 2 build to operate an optional classic-AirPlay-only service or to gracefully degrade to classic AirPlay, as follows:
  1. Add a new command-line option '-—service-type=<type>' and an equivalent configuration entry 'service_type = "<type>"' in the 'general' section of the configuration file,
     where <type> can be "auto", "classic" or "airplay2":
      1. "auto" (default) means that the service will be AirPlay 2 if NQPTP is running. If NQPTP is not running, classic AirPlay service will be provided instead, and in that case,
      "(Classic)" will be appended to the default AirPlay service name visible to AirPlay clients like Apple Music, for example "RaspberryPi3B (Classic)".
      2. "classic" means the service will be classic AirPlay (aka AirPlay 1).
      3. "airplay2" means the service will be the modern AirPlay 2. In this case, as distinct from "auto", if NQPTP is not running, Shairport Sync will log an error and terminate.
  2. In the systemd service file, NQPTP is now a "Want" rather than a "Require". If it's present, then it will be launched before Shairport Sync. If it's absent, Shairport Sync will launch anyway.
  3. Improve the delivery of input format changes and emit 'sdsc' metadata when changes occur.
  4. Emit new format information in the log if statistics is enabled.

Docker Changes
  1. Support for linux/arm/v6 has been dropped, as Docker is no longer supported.
  2. NQPTP is not started in the AirPlay 2 Docker image if '--service-type=classic' or '--service-type=airplay1' is in the command line options at the end of the docker run command.
     The purpose is to ensure that ports 319 and 320 are left alone when the AirPlay 2 image is set to provide Classic service only.
     Note that setting the configuration file 'service_type' to 'classic' will not prevent NQPTP from starting up -- you must use the command line option.
  3. A new "dev" target has been added. It is a large image containing the custom-built FFmpeg library, NQPTP, Avahi and D-Bus along with the Shairport Sync source and
     all necessary development tools. When started, Avahi, D-Bus and NQPTP are all installed and running. The bash shell has also been added and is entered.

Stability Improvements
  Reorganise session preemption to fully terminate the existing session before starting a new one.
  Don't delay closing the event port to wait for it to be closed at the client end.
  Add a safe_socket_close() function to ensure sockets are fully closed. Use -1 to designate closed rather than 0, to prevent attempts to reclose sockets, causing mayhem.
  Re-order FFmpeg decommissioning during teardown.
2026-05-18 09:57:12 +01:00
Mike Brady 3a1bfd718a Update Docker images to use Alpine 3.23.4 and FFmpeg 8.1 2026-05-06 15:39:55 +01:00
Charles a8e6148139 New docker pipeline. 2025-09-22 22:37:57 +01:00
Adam Oleksy d33617131f Add ENABLE_AVAHI env var to control dbus/avahi usage in container
ENABLE_AVAHI decides whether dbus and avahi daemons run inside the
container or if the host's instances are reused. When set to 0,
/var/run/dbus and /var/run/avahi-daemon/socket must be bind-mounted
by the user from the host into the container.
2025-09-22 17:49:22 +02:00
Mike Brady 60143518c2 This squashed commit comprises a long series of improvements, bug fixes, optimizations, and new feature additions:
- 48,000 frames per second operation,
 - 48k lossless stereo, 5.1 and 7.1 surround sound
 - Multichannel and multi rate operation on ALSA, PipeWire, PulseAudio, FreeBSD, stdout and unix pipe output backends.

Automatic, flexible and controllable output format (rate, sample format and channel count) selection.

Full FFmpeg integration to support transcoding, resampling, and new audio formats.

Better operation on lower powered devices down to e.g. Raspberry Pi B.

Reduced Docker image sizes with a slimmed-down FFmpeg library.

Enhanced timestamp handling for better synchronization.

Improved the sync error calculation.

A new "vernier" resampling and interpolation method for low-power CPUs.

Bug fixes and minor enhancements.

Note -- there are many breaking changes from previous versions of Shairport Sync!
2025-02-23 13:31:17 +00:00
Mike Brady 06cb58ca20 Remove dhclient from the image. 2025-01-31 14:56:39 +00:00
Charles e0e3c45367 Docker updates. Github action updates. Fix for github actions. 2025-01-28 18:55:35 +00:00
Mike Brady 0137515670 Add "curl" to the Docker images for potential use in automations. 2025-01-28 06:37:28 +00:00
Mike Brady 00e595ce55 the /run/dbus directory needs to be defined. 2024-12-23 16:14:16 +00:00
duhow 77e1d28472 shrink instructions to reduce layers build 2024-12-16 15:33:19 +01:00
duhow 30e6f2e1c8 build in separated stages 2024-12-16 15:20:08 +01:00
Mike Brady fe743fdf70 Remove Avahi static service file definitions for SSH and SFTP 2024-10-16 15:42:28 +01:00
Maxim 8215514923 Compile docker image with pipewire and add example in docker-compose 2024-07-22 21:03:54 +03:00
Mike Brady 111e247b65 Limit maximum open file handles in Docker images. Increase the level of optimisation while building the Shairport Sync image. 2024-06-08 14:05:26 +01:00
Klemens NanniandKlemens Nanni 8ae635e78e Move shairport-sync manual from section 7 to 1
From mandoc man(1) [-s] section:
                   1         General commands (tools and utilities).
                   [...]
                   7         Miscellaneous information.

From GNU man(1) DESCRIPTION:
     1   Executable programs or shell commands
     [...]
     7   Miscellaneous (including macro packages and conventions), e.g.
         man(7), groff(7)

shairport-sync is an executable, shairport-sync(1) ought to be its
documentation, not merely miscellaneous information.

OpenBSD adjusts this in its audio/shairport-sync port/package ever since.
2024-01-27 19:40:04 +01:00
Mike Brady 73af29c823 in the docker build process, skip the make install for nqptp and take the binary of nqptp from where it is built 2023-09-11 17:46:00 +01:00
Christian König da58bc0163 Fix s6-timeout issues on slower devices
Signed-off-by: Christian König <ckoenig@posteo.de>
2023-05-13 19:33:58 +02:00
nipsufn 585ba4f743 chore: cleanup p3 2023-04-01 14:05:20 +02:00
nipsufn 0e9b202805 chore: cleanup 2023-04-01 13:53:41 +02:00
nipsufn 4f54775645 test: nqtp fork 2023-04-01 11:31:24 +02:00
nipsufn 23c8646149 fix: typo 2023-03-28 19:51:13 +02:00
nipsufn 0d9baf525d feat: add PulseAudio support to images 2023-03-28 19:36:54 +02:00
Christian König b6e691263e Do not start SPS as s6 service to avoid passing arguments via -e
Signed-off-by: Christian König <ckoenig@posteo.de>
2023-03-07 22:08:11 +01:00
Christian König f79c3e1579 Allow passing arguments via environment variable
Signed-off-by: Christian König <ckoenig@posteo.de>
2023-02-05 20:29:49 +01:00
Christian König bea0faf488 Update Dockerfiles
Signed-off-by: Christian König <ckoenig@posteo.de>
2023-02-01 14:10:06 +01:00
Mike Brady 8bc4f87a59 Include the man page and man utilities in the Docker image. 2022-12-05 11:28:58 +00:00
Mike Brady 803eddbdfb Docker: launch Shairport Sync as root user rather than as the user shairport-sync. 2022-11-26 11:35:12 +00:00
Mike Brady 27754a6240 Add the configuration file and the sample configuratioon file to the image. 2022-11-12 12:04:14 +00:00
Mike Brady a4da36b404 Extra command-line arguments passed when the Docker image is launched are passed to the shairport-sync instance.
The shairport-sync instance runs as user and group shairport-sync which has reduced privileges.

The "classic" docker image now uses the s6-overlay to manage processes.
2022-10-23 16:00:41 +01:00
Charles b56d2d39cf Add avahi-tools 2022-08-23 21:49:00 +01:00
Charles e887ccd8de s6 improvements and docker build changes 2022-08-20 00:02:54 +01:00
Charles 8127b1c470 Fix for v3 of s6 overlay and other improvements. 2022-01-31 17:57:54 +00:00
Charles 5149854a2b s6 overlay improvements. 2022-01-29 15:51:46 +00:00
Charles 5077ff8227 Try updating images again. 2022-01-04 14:37:29 +00:00
Charles f83ddf3e75 Roll back 2021-12-28 00:18:06 +00:00
Charles 9e99e9acca Alpine 3.15 test 2021-12-27 23:27:36 +00:00
Charles cdbb0484f4 Fix for dbus restart. 2021-12-27 00:14:55 +00:00
Charles d6d8eb4971 Automated docker tagging & s6-overlay implementation. 2021-12-20 23:57:12 +00:00
Charles 3265f08840 Updates from public SPS repo. 2021-07-15 12:39:56 +01:00
Charles 8e231c7ed3 Remove submodule docker lines. 2021-07-07 16:50:13 +01:00
Charles 5ab2b67a61 First attempt at additional airplay 1 build and releases process. 2021-06-30 21:00:09 +01:00
Charles db580c26dc Added libgcrypt to runtime image too. 2021-06-29 21:07:26 +01:00
Charles 123dc2e451 Please work. 2021-06-29 16:54:47 +01:00
Charles 9152c4a6a6 Now try this. 2021-06-29 13:14:52 +01:00
Charles d4b453538e Try this just in case. 2021-06-29 13:13:58 +01:00
Charles 432e0876c5 Revert. 2021-06-29 12:55:29 +01:00
Charles dda067298d Test. 2021-06-29 12:51:45 +01:00
Charles fb3fb4e7d3 Test. 2021-06-29 11:10:40 +01:00
Charles a86955c0ce Added libgcrypt 2021-06-29 10:41:59 +01:00
Charles 65e66c4845 Updates to docker build process. 2021-06-03 17:38:33 +01:00