Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Problem]: No audio with 4.3.5-1 #1946

Open
jslay88 opened this issue Dec 16, 2024 · 11 comments
Open

[Problem]: No audio with 4.3.5-1 #1946

jslay88 opened this issue Dec 16, 2024 · 11 comments

Comments

@jslay88
Copy link

jslay88 commented Dec 16, 2024

What happened?

Updated to 4.3.5-1 via pacman and now I can no longer get audio output. I have PipeWire.

Relevant log output

[27ms][~]$ systemctl status shairport-sync
● shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: active (running) since Mon 2024-12-16 00:58:36 MST; 7h ago
 Invocation: a4c7d9e8f60245b8a1bff07a0c2b4d21
   Main PID: 8839 (shairport-sync)
      Tasks: 9 (limit: 76616)
     Memory: 7.1M (peak: 9.4M)
        CPU: 1.822s
     CGroup: /system.slice/shairport-sync.service
             └─8839 /usr/bin/shairport-sync --log-to-syslog

Dec 16 00:58:36 jslay-arch.home.jslay.net systemd[1]: Started Shairport Sync - AirPlay Audio Receiver.

System Information.

               -`                    jslay@jslay
              .o+`                   -------------------------------
             `ooo/                   OS: Arch Linux x86_64
            `+oooo:                  Host: Z790 AORUS MASTER -CF
           `+oooooo:                 Kernel: 6.12.4-arch1-1
           -+oooooo+:                Uptime: 7 hours, 56 mins
         `/:-:++oooo+:               Packages: 2298 (pacman), 20 (brew), 25 (flatpak)
        `/++++/+++++++:              Shell: zsh 5.9
       `/++++++++++++++:             Resolution: 3840x2160
      `/+++ooooooooooooo/`           Terminal: /dev/pts/2
     ./ooosssso++osssssso+`          CPU: 13th Gen Intel i9-13900K (32) @ 5.500GHz
    .oossssso-````/ossssss+`         GPU: Intel Raptor Lake-S GT1 [UHD Graphics 770]
   -osssssso.      :ssssssso.        GPU: NVIDIA GeForce RTX 4090
  :osssssss/        osssso+++.       Memory: 5440MiB / 64060MiB
 /ossssssss/        +ssssooo/-

/ossssso+/:- -:/+osssso+- +sso+:- .-/+oso:
++:. -/+/
. /

Configuration Information.

I was originally running with default config before the update (never modified /etc/shairport-sync). Only since I have had issues have I modified the config in attempt to resolve them. 


>> Display Config Start.

From "uname -a":
 Linux jslay-arch.home.jslay.net 6.12.4-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 09 Dec 2024 14:31:57 +0000 x86_64 GNU/Linux

From /etc/os-release:
 Arch Linux

Shairport Sync Version String:
 4.3.5-OpenSSL-Avahi-dns_sd-ALSA-jack-pa-stdout-pipe-soxr-metadata-mqtt-sysconfdir:/etc

Command Line:
 shairport-sync --displayConfig

Configuration File:
 /etc/shairport-sync.conf

Configuration File Settings:
 general :
 {
   interpolation = "soxr";
   output_backend = "pipe";
   default_airplay_volume = -4.0;
 };
 pw :
 {
 };

>> Display Config End.
>> Goodbye!


### PulseAudio or PipeWire installed?

- [X] Check if your system uses a Sound Server.

### How did you install Shairport Sync?

A package manager (apt, apt install, yum, pkg, etc.)

### Check previous issues

- [X] Confirm
@mikebrady
Copy link
Owner

Thanks for the post. The pipewire backend is the one called pw. The pipe backend is for outputting to a UNIX pipe.

@jslay88
Copy link
Author

jslay88 commented Dec 16, 2024

Do i need to build it for pw? Says this backend is invalid. Does the arch package not have pw support?

Also, it was working with default (no edits on /etc/shairport-sync.conf) before this update, I assume under alsa.

@mikebrady
Copy link
Owner

You’d need to check the package makers about support for pw.

Yeah, the default is probably alsa.

@jslay88
Copy link
Author

jslay88 commented Dec 16, 2024

so i manually built 4.3.5-1 from trunk branch --with-pw (removed pacman pkg, disabled service, made sure bin and service file were gone, removed /etc/shairport-sync.conf), ran sudo make install, enabled service, but it crashes when i try to start playing audio when it has a default config.

./configure --sysconfdir=/etc --with-alsa --with-pipe --with-soxr --with-avahi --with-ssl=openssl --with-systemd --with-airplay-2 --with-pw
systemctl status shairport-sync.service
× shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: failed (Result: exit-code) since Mon 2024-12-16 14:50:45 MST; 53s ago
   Duration: 6.838s
 Invocation: e8f3e7b9daa147d7a1636656ac838de3
    Process: 2285174 ExecStart=/usr/local/bin/shairport-sync --log-to-syslog (code=exited, status=1/FAILURE)
   Main PID: 2285174 (code=exited, status=1/FAILURE)
   Mem peak: 8.1M
        CPU: 1.533s

Dec 16 14:50:38 jslay systemd[1]: Started Shairport Sync - AirPlay Audio Receiver.
Dec 16 14:50:45 jslay shairport-sync[2285174]: fatal error: An unrecoverable error, "output_device_error_2", has been detected. Doing an emergency exit, as no run_this_if_an_unfixable_error_is_detected program.
Dec 16 14:50:45 jslay systemd[1]: shairport-sync.service: Main process exited, code=exited, status=1/FAILURE
Dec 16 14:50:45 jslay systemd[1]: shairport-sync.service: Failed with result 'exit-code'.
Dec 16 14:50:45 jslay systemd[1]: shairport-sync.service: Consumed 1.533s CPU time, 8.1M memory peak.

Changing to pw, i get a bunch of errors

warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?

but pipewire is running in user service

● pipewire.service - PipeWire Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; disabled; preset: enabled)
     Active: active (running) since Mon 2024-12-16 00:56:31 MST; 13h ago
 Invocation: 646034eeb96c4a33886b5392a80307af
TriggeredBy: ● pipewire.socket
   Main PID: 1416 (pipewire)
      Tasks: 3 (limit: 76616)
     Memory: 20.2M (peak: 29.3M)
        CPU: 3min 3.400s
     CGroup: /user.slice/user-1000.slice/[email protected]/session.slice/pipewire.service
             └─1416 /usr/bin/pipewire

@jslay88
Copy link
Author

jslay88 commented Dec 16, 2024

I guess I am also curious as to why upgrading from 4.3.4-1 broke if the only thing that changed on PKGBUILD was the commit sha and version.

https://gitlab.archlinux.org/archlinux/packaging/packages/shairport-sync/-/commit/01807014dcb17ab4c5589a525d7b68004a818822

@jslay88
Copy link
Author

jslay88 commented Dec 16, 2024

I also see no error output or crashing in systemd with pacman package under alsa with 4.3.5-1, but also get no audio.

@rp86
Copy link

rp86 commented Dec 17, 2024

Have you tried reverting to 4.3.4-1 and default config to see if that works again?

I'm wondering if there was another package updated on your system at the same time that is actually the cause of the problem. I had some packages update on my Fedora system recently - I'm still not sure which package it was (presumably either an alsa or pipewire one), but my configuration using an alsa loopback device broke. I had to use a different name for the same alsa audio device for it to start working again.

@jslay88
Copy link
Author

jslay88 commented Dec 17, 2024

As I have cleared pacman caches since the last release, I have to manually build that version. I am getting the same result.

There were no other packages updated at the time shairport-sync was.

@mikebrady
Copy link
Owner

Thanks for the comments. There are a few moving parts here, so it's difficult to figure out what's happening.

It might be useful to get the settings and configuration strings for both built versions using $ shairport-sync --displayConfig.

Another thing to consider is the interaction between PipeWire and a GUI -- please see PulseAudioAndPipeWire.

Finally, for the moment, it's also worth checking that the output device's volume controls are set and that it's not muted -- it's caught a few people out before 😏.

@jslay88
Copy link
Author

jslay88 commented Dec 17, 2024

Deep dive time. Hopefully I can document this well enough (expands comment box).

In every following scenario, the bin was deleted, /etc/shairport-sync.conf was deleted, service was disabled, and the service file was removed manually, before installing.

sudo pacman -R shairport-sync
sudo rm "$(which shairport-sync)"
sudo rm /etc/shairport-sync.conf
sudo rm /usr/share/man/man1/shairport-sync.1
sudo systemctl disable shairport-sync.service
sudo rm /usr/lib/systemd/system/shairport-sync.service
sudo killall shairport-sync

4.3.5-1

Arch Pacman Package

Arch Package - Extra Repo
PKGBUILD diff

[87ms][1][master][~/Downloads/shairport-sync]$ sudo pacman -S shairport-sync
resolving dependencies...
looking for conflicting packages...

Packages (1) shairport-sync-4.3.5-1

Total Installed Size:  0.32 MiB

:: Proceed with installation? [Y/n]
(1/1) checking keys in keyring                                                                                                                                                                   [########################################################################################################################] 100%
(1/1) checking package integrity                                                                                                                                                                 [########################################################################################################################] 100%
(1/1) loading package files                                                                                                                                                                      [########################################################################################################################] 100%
(1/1) checking for file conflicts                                                                                                                                                                [########################################################################################################################] 100%
(1/1) checking available disk space                                                                                                                                                              [########################################################################################################################] 100%
:: Processing package changes...
(1/1) installing shairport-sync                                                                                                                                                                  [########################################################################################################################] 100%
:: Running post-transaction hooks...
(1/4) Creating system user accounts...
(2/4) Reloading system manager configuration...
(3/4) Arming ConditionNeedsUpdate...
(4/4) Refreshing PackageKit...
[2.562s][master][~/Downloads/shairport-sync]$ sudo systemctl enable --now shairport-sync.service
Created symlink '/etc/systemd/system/multi-user.target.wants/shairport-sync.service' → '/usr/lib/systemd/system/shairport-sync.service'.
[172ms][master][~/Downloads/shairport-sync]$ sudo systemctl status shairport-sync.service
● shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: active (running) since Tue 2024-12-17 01:59:46 MST; 2s ago
 Invocation: 29f86df1fc6e4e83a168c9307f3d8c9e
   Main PID: 4138406 (shairport-sync)
      Tasks: 10 (limit: 76616)
     Memory: 2.7M (peak: 4.7M)
        CPU: 1.505s
     CGroup: /system.slice/shairport-sync.service
             └─4138406 /usr/bin/shairport-sync --log-to-syslog

Dec 17 01:59:46 jslay-arch systemd[1]: Started Shairport Sync - AirPlay Audio Receiver.
[33ms][master][~/Downloads/shairport-sync]$ sudo systemctl status shairport-sync.service
× shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: failed (Result: exit-code) since Tue 2024-12-17 02:00:14 MST; 9s ago
   Duration: 27.445s
 Invocation: 29f86df1fc6e4e83a168c9307f3d8c9e
    Process: 4138406 ExecStart=/usr/bin/shairport-sync --log-to-syslog (code=exited, status=1/FAILURE)
   Main PID: 4138406 (code=exited, status=1/FAILURE)
   Mem peak: 4.7M
        CPU: 1.522s

Dec 17 01:59:46 jslay-arch systemd[1]: Started Shairport Sync - AirPlay Audio Receiver.
Dec 17 02:00:14 jslay-arch shairport-sync[4138406]: fatal error: An unrecoverable error, "output_device_error_2", has been detected. Doing an emergency exit, as no run_this_if_an_unfixable_error_is_detected program.
Dec 17 02:00:14 jslay-arch systemd[1]: shairport-sync.service: Main process exited, code=exited, status=1/FAILURE
Dec 17 02:00:14 jslay-arch systemd[1]: shairport-sync.service: Failed with result 'exit-code'.
Dec 17 02:00:14 jslay-arch systemd[1]: shairport-sync.service: Consumed 1.522s CPU time, 4.7M memory peak.
[15ms][master][~/Downloads/shairport-sync]$ shairport-sync --displayConfig
>> Display Config Start.

From "uname -a":
 Linux jslay-arch 6.12.4-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 09 Dec 2024 14:31:57 +0000 x86_64 GNU/Linux

From /etc/os-release:
 Arch Linux

Shairport Sync Version String:
 4.3.5-OpenSSL-Avahi-dns_sd-ALSA-jack-pa-stdout-pipe-soxr-metadata-mqtt-sysconfdir:/etc

Command Line:
 shairport-sync --displayConfig

Configuration File:
 /etc/shairport-sync.conf

Configuration File Settings:
 pw :
 {
 };

>> Display Config End.
>> Goodbye!
[master][~/Downloads/shairport-sync]$ sudo nvim /etc/shairport-sync.conf
[18ms][master][~/Downloads/shairport-sync]$ shairport-sync --displayConfig
>> Display Config Start.

From "uname -a":
 Linux jslay-arch 6.12.4-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 09 Dec 2024 14:31:57 +0000 x86_64 GNU/Linux

From /etc/os-release:
 Arch Linux

Shairport Sync Version String:
 4.3.5-OpenSSL-Avahi-dns_sd-ALSA-jack-pa-stdout-pipe-soxr-metadata-mqtt-sysconfdir:/etc

Command Line:
 shairport-sync --displayConfig

Configuration File:
 /etc/shairport-sync.conf

Configuration File Settings:
 general :
 {
   output_backend = "pw";
 };
 pw :
 {
 };

>> Display Config End.
>> Goodbye!
[17ms][master][~/Downloads/shairport-sync]$ sudo systemctl status shairport-sync.service
× shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: failed (Result: exit-code) since Tue 2024-12-17 02:06:04 MST; 35s ago
   Duration: 49ms
 Invocation: 3acaf1d0b3474b26a40d561e43c042b9
    Process: 4157539 ExecStart=/usr/bin/shairport-sync --log-to-syslog (code=exited, status=1/FAILURE)
   Main PID: 4157539 (code=exited, status=1/FAILURE)
   Mem peak: 1.9M
        CPU: 7ms

Dec 17 02:06:04 jslay-arch systemd[1]: Started Shairport Sync - AirPlay Audio Receiver.
Dec 17 02:06:04 jslay-arch shairport-sync[4157539]: fatal error: Invalid audio backend "pw" selected!
Dec 17 02:06:04 jslay-arch systemd[1]: shairport-sync.service: Main process exited, code=exited, status=1/FAILURE
Dec 17 02:06:04 jslay-arch systemd[1]: shairport-sync.service: Failed with result 'exit-code'.

Compiled and Installed

[3.565s][master][~/Downloads/shairport-sync]$ git rev-parse --short HEAD
a92df98f
[5ms][master][~/Downloads/shairport-sync]$ ./configure \
  --prefix=/usr \
  --sysconfdir=/etc \
  --with-alsa \
  --with-pa \
  --with-avahi \
  --with-jack \
  --with-stdout \
  --with-pipe \
  --with-ssl=openssl \
  --with-soxr \
  --with-dns_sd \
  --with-pkg-config \
  --with-systemd \
  --with-configfiles \
  --with-metadata \
  --with-mqtt-client \
  --with-pw
checking for a BSD-compatible install... /home/linuxbrew/.linuxbrew/bin/ginstall -c
checking whether sleep supports fractional seconds... yes
checking filesystem timestamp resolution... 0.01
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /home/linuxbrew/.linuxbrew/bin/gmkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking xargs -n works... yes
checking for ranlib... ranlib
checking for git... git
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... none needed
checking dependency style of g++... gcc3
checking for ar... ar
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for clock_gettime in -lrt... yes
checking for pthread_create in -lpthread... yes
checking for exp in -lm... yes
checking for popt... yes
checking for libconfig... yes
checking for libssl,libcrypto... yes
checking for soxr... yes
checking for avahi_client_new in -lavahi-client... yes
checking for avahi_strerror in -lavahi-common... yes
checking for alsa... yes
checking for jack... yes
checking for libpulse >= 0.9.2... yes
checking for libpipewire-0.3 >= 0.3.24... yes
checking for library containing DNSServiceRefDeallocate... -ldns_sd
checking for mosquitto_lib_init in -lmosquitto... yes
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for vfork.h... no
checking for getopt_long.h... no
checking for arpa/inet.h... yes
checking for fcntl.h... yes
checking for limits.h... yes
checking for mach/mach.h... no
checking for memory.h... yes
checking for netdb.h... yes
checking for netinet/in.h... yes
checking for stdint.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for sys/ioctl.h... yes
checking for sys/socket.h... yes
checking for sys/time.h... yes
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking for inline... inline
checking for int16_t... yes
checking for int32_t... yes
checking for int64_t... yes
checking for pid_t... yes
checking for size_t... yes
checking for ssize_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint64_t... yes
checking for uint8_t... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for error_at_line... yes
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for atexit... yes
checking for clock_gettime... yes
checking for gethostname... yes
checking for inet_ntoa... yes
checking for memchr... yes
checking for memmove... yes
checking for memset... yes
checking for mkfifo... yes
checking for pow... yes
checking for select... yes
checking for socket... yes
checking for stpcpy... yes
checking for strcasecmp... yes
checking for strchr... yes
checking for strdup... yes
checking for strerror... yes
checking for strstr... yes
checking for strtol... yes
checking for strtoul... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating scripts/shairport-sync.service-avahi
config.status: creating Makefile
config.status: creating scripts/shairport-sync
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
[3.057s][master][~/Downloads/shairport-sync]$ make
make  all-am
make[1]: Entering directory '/home/jslay/Downloads/shairport-sync'
g++ -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -g -O2   -o shairport-sync shairport.o rtsp.o mdns.o common.o rtp.o player.o alac.o audio.o loudness.o activity_monitor.o  gitversion.o  mdns_avahi.o   audio_alsa.o audio_jack.o  audio_stdout.o audio_pipe.o    audio_pa.o audio_pw.o  mdns_dns_sd.o metadata_hub.o mqtt.o dacp.o    lib_tinyhttp.a    -lmosquitto -ldns_sd -lpipewire-0.3 -lpulse -pthread -ljack -lasound -lavahi-common -lavahi-client -lsoxr -lssl -lcrypto -lconfig -lpopt -lm -lpthread -lrt
make[1]: Leaving directory '/home/jslay/Downloads/shairport-sync'
[89ms][master][~/Downloads/shairport-sync]$ sudo make install
[sudo] password for jslay:
make  install-am
make[1]: Entering directory '/home/jslay/Downloads/shairport-sync'
make[2]: Entering directory '/home/jslay/Downloads/shairport-sync'
 /home/linuxbrew/.linuxbrew/bin/gmkdir -p '/usr/bin'
  /home/linuxbrew/.linuxbrew/bin/ginstall -c shairport-sync '/usr/bin'
make  install-exec-hook
make[3]: Entering directory '/home/jslay/Downloads/shairport-sync'
install -d /etc
install -m 0644 ./scripts/shairport-sync.conf /etc/shairport-sync.conf.sample
[ -f /etc/shairport-sync.conf ] || cp ./scripts/shairport-sync.conf /etc/shairport-sync.conf
getent group shairport-sync &>/dev/null || groupadd -r shairport-sync &>/dev/null
getent passwd shairport-sync &>/dev/null || useradd -r -M -g shairport-sync -s /usr/sbin/nologin -G audio shairport-sync &>/dev/null
install -d /usr/lib/systemd/system
[ -e /usr/lib/systemd/system/shairport-sync.service ] || install -m 0644 scripts/shairport-sync.service-avahi /usr/lib/systemd/system/shairport-sync.service
make[3]: Leaving directory '/home/jslay/Downloads/shairport-sync'
 /home/linuxbrew/.linuxbrew/bin/gmkdir -p '/usr/share/man/man1'
 /home/linuxbrew/.linuxbrew/bin/ginstall -c -m 644 ./man/shairport-sync.1 '/usr/share/man/man1'
make[2]: Leaving directory '/home/jslay/Downloads/shairport-sync'
make[1]: Leaving directory '/home/jslay/Downloads/shairport-sync'
[2.663s][master][~/Downloads/shairport-sync]$ sudo systemctl enable --now shairport-sync.service
Created symlink '/etc/systemd/system/multi-user.target.wants/shairport-sync.service' → '/usr/lib/systemd/system/shairport-sync.service'.
[182ms][master][~/Downloads/shairport-sync]$ sudo systemctl status shairport-sync.service
● shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: active (running) since Tue 2024-12-17 02:19:49 MST; 3s ago
 Invocation: 1281a79d02a54bb2835dbb4358c58d61
   Main PID: 5576 (shairport-sync)
      Tasks: 10 (limit: 76616)
     Memory: 2.4M (peak: 4.9M)
        CPU: 1.511s
     CGroup: /system.slice/shairport-sync.service
             └─5576 /usr/bin/shairport-sync --log-to-syslog

Dec 17 02:19:49 jslay-arch systemd[1]: Started Shairport Sync - AirPlay Audio Receiver.
[19ms][master][~/Downloads/shairport-sync]$ sudo systemctl status shairport-sync.service
× shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: failed (Result: exit-code) since Tue 2024-12-17 02:20:08 MST; 7s ago
   Duration: 18.727s
 Invocation: 1281a79d02a54bb2835dbb4358c58d61
    Process: 5576 ExecStart=/usr/bin/shairport-sync --log-to-syslog (code=exited, status=1/FAILURE)
   Main PID: 5576 (code=exited, status=1/FAILURE)
   Mem peak: 4.9M
        CPU: 1.531s

Dec 17 02:19:49 jslay-arch systemd[1]: Started Shairport Sync - AirPlay Audio Receiver.
Dec 17 02:20:08 jslay-arch shairport-sync[5576]: fatal error: An unrecoverable error, "output_device_error_2", has been detected. Doing an emergency exit, as no run_this_if_an_unfixable_error_is_detected program.
Dec 17 02:20:08 jslay-arch systemd[1]: shairport-sync.service: Main process exited, code=exited, status=1/FAILURE
Dec 17 02:20:08 jslay-arch systemd[1]: shairport-sync.service: Failed with result 'exit-code'.
Dec 17 02:20:08 jslay-arch systemd[1]: shairport-sync.service: Consumed 1.531s CPU time, 4.9M memory peak.
[17ms][3][master][~/Downloads/shairport-sync]$ shairport-sync --displayConfig
>> Display Config Start.

From "uname -a":
 Linux jslay-arch 6.12.4-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 09 Dec 2024 14:31:57 +0000 x86_64 GNU/Linux

From /etc/os-release:
 Arch Linux

Shairport Sync Version String:
 4.3.5-OpenSSL-Avahi-dns_sd-ALSA-jack-pa-pw-stdout-pipe-soxr-metadata-mqtt-sysconfdir:/etc

Command Line:
 shairport-sync --displayConfig

Configuration File:
 /etc/shairport-sync.conf

Configuration File Settings:
 pw :
 {
 };

>> Display Config End.
>> Goodbye!
[16ms][master][~/Downloads/shairport-sync]$ sudo nvim /etc/shairport-sync.conf
[8.342s][master][~/Downloads/shairport-sync]$ sudo systemctl restart shairport-sync.service
[20ms][master][~/Downloads/shairport-sync]$ sudo systemctl status shairport-sync.service
● shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: active (running) since Tue 2024-12-17 02:20:35 MST; 3s ago
 Invocation: ded545dd24be4f04b71cdf10d54fa382
   Main PID: 7927 (shairport-sync)
      Tasks: 10 (limit: 76616)
     Memory: 2.8M (peak: 5M)
        CPU: 1.497s
     CGroup: /system.slice/shairport-sync.service
             └─7927 /usr/bin/shairport-sync --log-to-syslog

Dec 17 02:20:35 jslay-arch systemd[1]: Started Shairport Sync - AirPlay Audio Receiver.
[16ms][master][~/Downloads/shairport-sync]$ sudo systemctl status shairport-sync.service
● shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: active (running) since Tue 2024-12-17 02:20:35 MST; 29s ago
 Invocation: ded545dd24be4f04b71cdf10d54fa382
   Main PID: 7927 (shairport-sync)
      Tasks: 16 (limit: 76616)
     Memory: 6.8M (peak: 8.6M)
        CPU: 1.553s
     CGroup: /system.slice/shairport-sync.service
             └─7927 /usr/bin/shairport-sync --log-to-syslog

Dec 17 02:21:04 jslay-arch shairport-sync[7927]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:21:04 jslay-arch shairport-sync[7927]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:21:04 jslay-arch shairport-sync[7927]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:21:04 jslay-arch shairport-sync[7927]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:21:04 jslay-arch shairport-sync[7927]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:21:04 jslay-arch shairport-sync[7927]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:21:05 jslay-arch shairport-sync[7927]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:21:05 jslay-arch shairport-sync[7927]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:21:05 jslay-arch shairport-sync[7927]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:21:05 jslay-arch shairport-sync[7927]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
[19ms][master][~/Downloads/shairport-sync]$ shairport-sync --displayConfig
>> Display Config Start.

From "uname -a":
 Linux jslay-arch 6.12.4-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 09 Dec 2024 14:31:57 +0000 x86_64 GNU/Linux

From /etc/os-release:
 Arch Linux

Shairport Sync Version String:
 4.3.5-OpenSSL-Avahi-dns_sd-ALSA-jack-pa-pw-stdout-pipe-soxr-metadata-mqtt-sysconfdir:/etc

Command Line:
 shairport-sync --displayConfig

Configuration File:
 /etc/shairport-sync.conf

Configuration File Settings:
 general :
 {
   output_backend = "pw";
 };
 pw :
 {
 };

>> Display Config End.
>> Goodbye!

4.3.4-1

Compiled and Installed

[227ms][1][4d20657b][~/Downloads/shairport-sync]$ git checkout 4.3.4
HEAD is now at 4d20657b add note about minor release notes
[8ms][4d20657b][~/Downloads/shairport-sync]$ ./configure \
  --prefix=/usr \
  --sysconfdir=/etc \
  --with-alsa \
  --with-pa \
  --with-avahi \
  --with-jack \
  --with-stdout \
  --with-pipe \
  --with-ssl=openssl \
  --with-soxr \
  --with-dns_sd \
  --with-pkg-config \
  --with-systemd \
  --with-configfiles \
  --with-metadata \
  --with-mqtt-client \
  --with-pw
checking for a BSD-compatible install... /home/linuxbrew/.linuxbrew/bin/ginstall -c
checking whether sleep supports fractional seconds... yes
checking filesystem timestamp resolution... 0.01
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /home/linuxbrew/.linuxbrew/bin/gmkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking xargs -n works... yes
checking for ranlib... ranlib
checking for git... git
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... none needed
checking dependency style of g++... gcc3
checking for ar... ar
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for clock_gettime in -lrt... yes
checking for pthread_create in -lpthread... yes
checking for exp in -lm... yes
checking for popt... yes
checking for libconfig... yes
checking for libssl,libcrypto... yes
checking for soxr... yes
checking for avahi_client_new in -lavahi-client... yes
checking for avahi_strerror in -lavahi-common... yes
checking for alsa... yes
checking for jack... yes
checking for libpulse >= 0.9.2... yes
checking for libpipewire-0.3 >= 0.3.24... yes
checking for library containing DNSServiceRefDeallocate... -ldns_sd
checking for mosquitto_lib_init in -lmosquitto... yes
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for vfork.h... no
checking for getopt_long.h... no
checking for arpa/inet.h... yes
checking for fcntl.h... yes
checking for limits.h... yes
checking for mach/mach.h... no
checking for memory.h... yes
checking for netdb.h... yes
checking for netinet/in.h... yes
checking for stdint.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for sys/ioctl.h... yes
checking for sys/socket.h... yes
checking for sys/time.h... yes
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking for inline... inline
checking for int16_t... yes
checking for int32_t... yes
checking for int64_t... yes
checking for pid_t... yes
checking for size_t... yes
checking for ssize_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint64_t... yes
checking for uint8_t... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for error_at_line... yes
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for atexit... yes
checking for clock_gettime... yes
checking for gethostname... yes
checking for inet_ntoa... yes
checking for memchr... yes
checking for memmove... yes
checking for memset... yes
checking for mkfifo... yes
checking for pow... yes
checking for select... yes
checking for socket... yes
checking for stpcpy... yes
checking for strcasecmp... yes
checking for strchr... yes
checking for strdup... yes
checking for strerror... yes
checking for strstr... yes
checking for strtol... yes
checking for strtoul... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating scripts/shairport-sync.service-avahi
config.status: creating Makefile
config.status: creating scripts/shairport-sync
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
[3.064s][4d20657b][~/Downloads/shairport-sync]$ make
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh '/home/jslay/Downloads/shairport-sync/missing' aclocal-1.17
 cd . && /bin/sh /home/jslay/Downloads/shairport-sync/missing automake-1.17 --gnu
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh '/home/jslay/Downloads/shairport-sync/missing' autoconf
/bin/sh ./config.status --recheck
running CONFIG_SHELL=/bin/sh /bin/sh ./configure --prefix=/usr --sysconfdir=/etc --with-alsa --with-pa --with-avahi --with-jack --with-stdout --with-pipe --with-ssl=openssl --with-soxr --with-dns_sd --with-pkg-config --with-systemd --with-configfiles --with-metadata --with-mqtt-client --with-pw --no-create --no-recursion
checking for a BSD-compatible install... /home/linuxbrew/.linuxbrew/bin/ginstall -c
checking whether sleep supports fractional seconds... yes
checking filesystem timestamp resolution... 0.01
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /home/linuxbrew/.linuxbrew/bin/gmkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking xargs -n works... yes
checking for ranlib... ranlib
checking for git... git
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... none needed
checking dependency style of g++... gcc3
checking for ar... ar
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for clock_gettime in -lrt... yes
checking for pthread_create in -lpthread... yes
checking for exp in -lm... yes
checking for popt... yes
checking for libconfig... yes
checking for libssl,libcrypto... yes
checking for soxr... yes
checking for avahi_client_new in -lavahi-client... yes
checking for avahi_strerror in -lavahi-common... yes
checking for alsa... yes
checking for jack... yes
checking for libpulse >= 0.9.2... yes
checking for libpipewire-0.3 >= 0.3.24... yes
checking for library containing DNSServiceRefDeallocate... -ldns_sd
checking for mosquitto_lib_init in -lmosquitto... yes
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for vfork.h... no
checking for getopt_long.h... no
checking for arpa/inet.h... yes
checking for fcntl.h... yes
checking for limits.h... yes
checking for mach/mach.h... no
checking for memory.h... yes
checking for netdb.h... yes
checking for netinet/in.h... yes
checking for stdint.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for sys/ioctl.h... yes
checking for sys/socket.h... yes
checking for sys/time.h... yes
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking for inline... inline
checking for int16_t... yes
checking for int32_t... yes
checking for int64_t... yes
checking for pid_t... yes
checking for size_t... yes
checking for ssize_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint64_t... yes
checking for uint8_t... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for error_at_line... yes
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for atexit... yes
checking for clock_gettime... yes
checking for gethostname... yes
checking for inet_ntoa... yes
checking for memchr... yes
checking for memmove... yes
checking for memset... yes
checking for mkfifo... yes
checking for pow... yes
checking for select... yes
checking for socket... yes
checking for stpcpy... yes
checking for strcasecmp... yes
checking for strchr... yes
checking for strdup... yes
checking for strerror... yes
checking for strstr... yes
checking for strtol... yes
checking for strtoul... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
 /bin/sh ./config.status
config.status: creating scripts/shairport-sync.service-avahi
config.status: creating Makefile
config.status: creating scripts/shairport-sync
config.status: creating config.h
config.status: executing depfiles commands
printf "// Do not edit!\n" > gitversion.h
printf "// This file is automatically generated by 'git describe --tags --dirty --broken', if available.\n" >> gitversion.h
printf "  char git_version_string[] = \"" >> gitversion.h
git describe --tags --dirty --broken | tr -d '[[:space:]]' >> gitversion.h
printf "\";\n" >> gitversion.h
touch gitversion.c
(CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh '/home/jslay/Downloads/shairport-sync/missing' autoheader)
rm -f stamp-h1
touch config.h.in
rm -f stamp-h1
cd . && /bin/sh ./config.status config.h
config.status: creating config.h
make  all-am
make[1]: Entering directory '/home/jslay/Downloads/shairport-sync'
depbase=`echo shairport.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT shairport.o -MD -MP -MF $depbase.Tpo -c -o shairport.o shairport.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo rtsp.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT rtsp.o -MD -MP -MF $depbase.Tpo -c -o rtsp.o rtsp.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo mdns.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT mdns.o -MD -MP -MF $depbase.Tpo -c -o mdns.o mdns.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo common.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT common.o -MD -MP -MF $depbase.Tpo -c -o common.o common.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo rtp.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT rtp.o -MD -MP -MF $depbase.Tpo -c -o rtp.o rtp.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo player.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT player.o -MD -MP -MF $depbase.Tpo -c -o player.o player.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo audio.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT audio.o -MD -MP -MF $depbase.Tpo -c -o audio.o audio.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo loudness.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT loudness.o -MD -MP -MF $depbase.Tpo -c -o loudness.o loudness.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo activity_monitor.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT activity_monitor.o -MD -MP -MF $depbase.Tpo -c -o activity_monitor.o activity_monitor.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo gitversion.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT gitversion.o -MD -MP -MF $depbase.Tpo -c -o gitversion.o gitversion.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo mdns_avahi.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT mdns_avahi.o -MD -MP -MF $depbase.Tpo -c -o mdns_avahi.o mdns_avahi.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo audio_alsa.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT audio_alsa.o -MD -MP -MF $depbase.Tpo -c -o audio_alsa.o audio_alsa.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo audio_jack.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT audio_jack.o -MD -MP -MF $depbase.Tpo -c -o audio_jack.o audio_jack.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo audio_stdout.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT audio_stdout.o -MD -MP -MF $depbase.Tpo -c -o audio_stdout.o audio_stdout.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo audio_pipe.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT audio_pipe.o -MD -MP -MF $depbase.Tpo -c -o audio_pipe.o audio_pipe.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo audio_pa.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT audio_pa.o -MD -MP -MF $depbase.Tpo -c -o audio_pa.o audio_pa.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo audio_pw.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT audio_pw.o -MD -MP -MF $depbase.Tpo -c -o audio_pw.o audio_pw.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo mdns_dns_sd.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT mdns_dns_sd.o -MD -MP -MF $depbase.Tpo -c -o mdns_dns_sd.o mdns_dns_sd.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo metadata_hub.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT metadata_hub.o -MD -MP -MF $depbase.Tpo -c -o metadata_hub.o metadata_hub.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo mqtt.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT mqtt.o -MD -MP -MF $depbase.Tpo -c -o mqtt.o mqtt.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo dacp.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -D_REENTRANT    -g -O2 -Wno-missing-field-initializers -MT dacp.o -MD -MP -MF $depbase.Tpo -c -o dacp.o dacp.c &&\
mv -f $depbase.Tpo $depbase.Po
g++ -fno-common -Wno-multichar -Wall -Wextra -Wno-clobbered -Wno-psabi -pthread -DSYSCONFDIR=\"/etc\"  -g -O2   -o shairport-sync shairport.o rtsp.o mdns.o common.o rtp.o player.o alac.o audio.o loudness.o activity_monitor.o  gitversion.o  mdns_avahi.o   audio_alsa.o audio_jack.o  audio_stdout.o audio_pipe.o    audio_pa.o audio_pw.o  mdns_dns_sd.o metadata_hub.o mqtt.o dacp.o    lib_tinyhttp.a    -lmosquitto -ldns_sd -lpipewire-0.3 -lpulse -pthread -ljack -lasound -lavahi-common -lavahi-client -lsoxr -lssl -lcrypto -lconfig -lpopt -lm -lpthread -lrt
make[1]: Leaving directory '/home/jslay/Downloads/shairport-sync'
[6.885s][4d20657b][~/Downloads/shairport-sync]$ sudo make install
make  install-am
make[1]: Entering directory '/home/jslay/Downloads/shairport-sync'
make[2]: Entering directory '/home/jslay/Downloads/shairport-sync'
 /home/linuxbrew/.linuxbrew/bin/gmkdir -p '/usr/bin'
  /home/linuxbrew/.linuxbrew/bin/ginstall -c shairport-sync '/usr/bin'
make  install-exec-hook
make[3]: Entering directory '/home/jslay/Downloads/shairport-sync'
install -d /etc
install -m 0644 ./scripts/shairport-sync.conf /etc/shairport-sync.conf.sample
[ -f /etc/shairport-sync.conf ] || cp ./scripts/shairport-sync.conf /etc/shairport-sync.conf
getent group shairport-sync &>/dev/null || groupadd -r shairport-sync &>/dev/null
getent passwd shairport-sync &>/dev/null || useradd -r -M -g shairport-sync -s /usr/sbin/nologin -G audio shairport-sync &>/dev/null
install -d /usr/lib/systemd/system
[ -e /usr/lib/systemd/system/shairport-sync.service ] || install -m 0644 scripts/shairport-sync.service-avahi /usr/lib/systemd/system/shairport-sync.service
make[3]: Leaving directory '/home/jslay/Downloads/shairport-sync'
 /home/linuxbrew/.linuxbrew/bin/gmkdir -p '/usr/share/man/man1'
 /home/linuxbrew/.linuxbrew/bin/ginstall -c -m 644 ./man/shairport-sync.1 '/usr/share/man/man1'
make[2]: Leaving directory '/home/jslay/Downloads/shairport-sync'
make[1]: Leaving directory '/home/jslay/Downloads/shairport-sync'
[68ms][4d20657b][~/Downloads/shairport-sync]$ sudo systemctl enable --now shairport-sync.service
Created symlink '/etc/systemd/system/multi-user.target.wants/shairport-sync.service' → '/usr/lib/systemd/system/shairport-sync.service'.
[228ms][4d20657b][~/Downloads/shairport-sync]$ sudo systemctl status shairport-sync.service
● shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: active (running) since Tue 2024-12-17 02:25:27 MST; 5s ago
 Invocation: 9615fb077e0a4f84afccaf53cf4f6961
   Main PID: 26910 (shairport-sync)
      Tasks: 10 (limit: 76616)
     Memory: 2.4M (peak: 4.6M)
        CPU: 1.508s
     CGroup: /system.slice/shairport-sync.service
             └─26910 /usr/bin/shairport-sync --log-to-syslog

Dec 17 02:25:27 jslay-arch systemd[1]: Started Shairport Sync - AirPlay Audio Receiver.
[18ms][4d20657b][~/Downloads/shairport-sync]$ sudo systemctl status shairport-sync.service
× shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: failed (Result: exit-code) since Tue 2024-12-17 02:25:41 MST; 4s ago
   Duration: 13.638s
 Invocation: 9615fb077e0a4f84afccaf53cf4f6961
    Process: 26910 ExecStart=/usr/bin/shairport-sync --log-to-syslog (code=exited, status=1/FAILURE)
   Main PID: 26910 (code=exited, status=1/FAILURE)
   Mem peak: 5M
        CPU: 1.523s

Dec 17 02:25:27 jslay-arch systemd[1]: Started Shairport Sync - AirPlay Audio Receiver.
Dec 17 02:25:41 jslay-arch shairport-sync[26910]: fatal error: An unrecoverable error, "output_device_error_2", has been detected. Doing an emergency exit, as no run_this_if_an_unfixable_error_is_detected program.
Dec 17 02:25:41 jslay-arch systemd[1]: shairport-sync.service: Main process exited, code=exited, status=1/FAILURE
Dec 17 02:25:41 jslay-arch systemd[1]: shairport-sync.service: Failed with result 'exit-code'.
Dec 17 02:25:41 jslay-arch systemd[1]: shairport-sync.service: Consumed 1.523s CPU time, 5M memory peak.
[33ms][3][4d20657b][~/Downloads/shairport-sync]$ shairport-sync --displayConfig
>> Display Config Start.

From "uname -a":
 Linux jslay-arch 6.12.4-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 09 Dec 2024 14:31:57 +0000 x86_64 GNU/Linux

From /etc/os-release:
 Arch Linux

Shairport Sync Version String:
 4.3.4-OpenSSL-Avahi-dns_sd-ALSA-jack-pa-pw-stdout-pipe-soxr-metadata-mqtt-sysconfdir:/etc

Command Line:
 shairport-sync --displayConfig

Configuration File:
 /etc/shairport-sync.conf

Configuration File Settings:
 pw :
 {
 };

>> Display Config End.
>> Goodbye!
[14ms][4d20657b][~/Downloads/shairport-sync]$ sudo nvim /etc/shairport-sync.conf
[8.909s][4d20657b][~/Downloads/shairport-sync]$ sudo systemctl restart shairport-sync.service
[17ms][4d20657b][~/Downloads/shairport-sync]$ sudo systemctl status shairport-sync.service
● shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: active (running) since Tue 2024-12-17 02:26:06 MST; 4s ago
 Invocation: 24aeb934beab46af807820c929280c26
   Main PID: 28933 (shairport-sync)
      Tasks: 10 (limit: 76616)
     Memory: 2.7M (peak: 5.3M)
        CPU: 1.510s
     CGroup: /system.slice/shairport-sync.service
             └─28933 /usr/bin/shairport-sync --log-to-syslog

Dec 17 02:26:06 jslay-arch systemd[1]: Started Shairport Sync - AirPlay Audio Receiver.
[20ms][4d20657b][~/Downloads/shairport-sync]$ sudo systemctl status shairport-sync.service
● shairport-sync.service - Shairport Sync - AirPlay Audio Receiver
     Loaded: loaded (/usr/lib/systemd/system/shairport-sync.service; enabled; preset: disabled)
     Active: active (running) since Tue 2024-12-17 02:26:06 MST; 26s ago
 Invocation: 24aeb934beab46af807820c929280c26
   Main PID: 28933 (shairport-sync)
      Tasks: 16 (limit: 76616)
     Memory: 7M (peak: 8.9M)
        CPU: 1.527s
     CGroup: /system.slice/shairport-sync.service
             └─28933 /usr/bin/shairport-sync --log-to-syslog

Dec 17 02:26:32 jslay-arch shairport-sync[28933]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:26:32 jslay-arch shairport-sync[28933]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:26:32 jslay-arch shairport-sync[28933]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:26:32 jslay-arch shairport-sync[28933]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:26:32 jslay-arch shairport-sync[28933]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:26:32 jslay-arch shairport-sync[28933]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:26:32 jslay-arch shairport-sync[28933]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:26:32 jslay-arch shairport-sync[28933]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:26:32 jslay-arch shairport-sync[28933]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
Dec 17 02:26:32 jslay-arch shairport-sync[28933]: warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?
[21ms][4d20657b][~/Downloads/shairport-sync]$ sudo systemctl status shairport-sync.service
[4d20657b][~/Downloads/shairport-sync]$ shairport-sync --displayConfig
>> Display Config Start.

From "uname -a":
 Linux jslay-arch 6.12.4-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 09 Dec 2024 14:31:57 +0000 x86_64 GNU/Linux

From /etc/os-release:
 Arch Linux

Shairport Sync Version String:
 4.3.4-OpenSSL-Avahi-dns_sd-ALSA-jack-pa-pw-stdout-pipe-soxr-metadata-mqtt-sysconfdir:/etc

Command Line:
 shairport-sync --displayConfig

Configuration File:
 /etc/shairport-sync.conf

Configuration File Settings:
 general :
 {
   output_backend = "pw";
 };
 pw :
 {
 };

>> Display Config End.
>> Goodbye!

I never see a shairport-sync PipeWire sink show up

image

The sink that used to work is turned up, and still plays audio from the system just fine.

image

@mikebrady
Copy link
Owner

mikebrady commented Dec 17, 2024

Okay, thanks for that comprehensive report!

4.3.5-1

The package does not have pipewire support built in -- when you look at the version string:

4.3.5-OpenSSL-Avahi-dns_sd-ALSA-jack-pa-stdout-pipe-soxr-metadata-mqtt-sysconfdir:/etc

...it does not include pw.

Compiled and Installed

This does include pipewire support but the configuration file does not ask to use the pipewire backend, so it defaults to the alsa backend. This results in "output_device_error_2". This needs explanation (call it Explanation 1) -- see the discussion below.

Then you launch Shairport Sync with the output_backend = "pw"; set and you get this:

warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?

Likewise, this needs explanation (call it Explanation 2) -- see discussion below.

4.3.4-1

This acts the same way as 4.3.5 under the same conditions.

Discussion

Unfortunately, these problems are all caused by the way PipeWire (and PulseAudio) works. Please see PulseAudioAndPipeWire.md.

(BTW, this is not to denigrate either of these -- they address a different set of use cases very well!)

PipeWire only offers services to users that have logged in though the GUI.
When Shairport Sync is started up as a system service, it starts without the user — the restricted user shairport-sync — logging in thorough the GUI. Since this user has not logged in through the GUI, it has no PipeWire service at all.

Explanation 2

Thus, when you ask to use the pw backend on Shairport Sync installed as a system service, PipeWire will not be available to it. That explains the warning:

warning: Shairport Sync's PipeWire backend can not get timing information from the PipeWire system. Is PipeWire running?

Explanation 1

If you don't ask to use the pw backend, then the alsa backend will be used by default. Normally, in a PipeWire based system, the default alsa device is a fake -- in fact, audio sent to it is routed into the PipeWire system. Unfortunately, in a PipeWire system, the fake default alsa device is not set up for a user that does not log in through the GUI. Thus, when Shairport Sync starts up as a system service and goes to look for the alsa output device, it can't find one, and returns the error 2.

Summary

  1. You can't use the PipeWire system (or the fake default alsa device that goes with it) for a system service.
  2. You can launch Shairport Sync from the command line if you log in first through the GUI. In fact, you could set up a systemd user service that would launch it automatically on login.

Workarounds

If you have a second alsa device that PipeWire is not using, you could set Shairport Sync as a system service to use it.

Also, sometimes, when PipeWire isn't actively using the main alsa output device, it is free for Shairport Sync to use. In order to access it, though, you can not use the default setting -- you 'd have to give it its full alsa name, e.g. "hw:0". You could try using sps-alsa-explore to see what's out there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants