raspberrypi/bookworm-feedback

PulseAudio applications failing with connection refused in Bookworm 64-bit

Opened this issue · 4 comments

To reproduce, do a fresh install of Raspberry Pi OS Bookworm 64-bit with desktop, configured with ssh enabled. Then log in using SSH, and try and run any of the standard PulseAudio applications.

The following transcript shows a typical example:

pi@piradio:~ $ ps -A | grep wire
    830 ?        00:00:00 pipewire
    831 ?        00:00:01 wireplumber
    832 ?        00:00:00 pipewire-pulse
pi@piradio:~ $ PULSE_LOG=4 pactl list short
Parsing configuration file '/etc/pulse/client.conf'
Failed to open configuration file '/etc/pulse/client.conf.d/01-enable-autospawn.conf': No such file or directory
Using shared memfd memory pool with 1024 slots of size 64.0 KiB each, total size is 64.0 MiB, maximum usable slot size is 65472
Trying to connect to {29873391b2e14803ba74b1c7a6046353}unix:/run/user/1000/pulse/native...
parsing address failed: {29873391b2e14803ba74b1c7a6046353}unix:/run/user/1000/pulse/native
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
pi@piradio:~ $ ls -l /run/user/1000/pulse/native
srw-rw-rw- 1 pi pi 0 Dec  5 05:06 /run/user/1000/pulse/native
pi@piradio:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             71M     0   71M   0% /dev
tmpfs            42M  1.1M   41M   3% /run
/dev/mmcblk0p2   15G  4.3G  9.1G  33% /
tmpfs           210M  8.0K  210M   1% /dev/shm
tmpfs           5.0M  8.0K  5.0M   1% /run/lock
/dev/mmcblk0p1  510M   73M  438M  15% /boot/firmware
tmpfs            42M   40K   42M   1% /run/user/1000
pi@piradio:~ $ uname -a
Linux piradio 6.1.0-rpi7-rpi-v8 #1 SMP PREEMPT Debian 1:6.1.63-1+rpt1 (2023-11-24) aarch64 GNU/Linux
pi@piradio:~ $ 

From this it can be seen that:

  • The pipewire, wireplumber and pipewire-pulse servers are all running.
  • The pactl utility is failing to connect.
  • Diagnostics have been enabled, from which it can be seen that it is failing to connect to /run/user/1000/pulse/native.
  • /run/user/1000/pulse/native exists, with owner and group pi.
  • `/run/user/1000' is a tmpfs
  • OS details are given.
  • This was run on a Raspberry Pi Zero 2W

I have now come across an oblique reference which suggests that by design it is not possible to connect to PulseAudio from an SSH session. I have yet to find any official / definitive reference for this.

In general it seems very difficult to find reliable documentation for Linux sound. Perhaps the Foundation could consider funding a documentation project?

I have now come across an oblique reference which suggests that by design it is not possible to connect to PulseAudio from an SSH session. I have yet to find any official / definitive reference for this.

I don't think that's true. FWIW, the command you've used works fine for me on a Pi4 with Pipewire/Wireplumber/Pipewire-pulse started.

PULSE_LOG=4 pactl list short
Parsing configuration file '/etc/pulse/client.conf'
Failed to open configuration file '/etc/pulse/client.conf.d/01-enable-autospawn.conf': No such file or directory
Using shared memfd memory pool with 1024 slots of size 64.0 KiB each, total size is 64.0 MiB, maximum usable slot size is 65472
Trying to connect to /run/user/1000/pulse/native...
SHM possible: yes
Protocol version: remote 35, local 35
Negotiated SHM: no
Memfd possible: yes
Negotiated SHM type: private
1	libpipewire-module-rt	{
            nice.level    = -11
            #rt.prio      = 88
            #rt.time.soft = -1
            #rt.time.hard = -1
        }
2	libpipewire-module-protocol-native
3	libpipewire-module-profiler
5	libpipewire-module-metadata
7	libpipewire-module-spa-device-factory
9	libpipewire-module-spa-node-factory
11	libpipewire-module-client-node
13	libpipewire-module-client-device
15	libpipewire-module-portal
16	libpipewire-module-access	{
            # access.allowed to list an array of paths of allowed
            # apps.
            #access.allowed = [
            #    /usr/bin/pipewire-media-session
            #]

            # An array of rejected paths.
            #access.rejected = [ ]

            # An array of paths with restricted access.
            #access.restricted = [ ]

            # Anything not in the above lists gets assigned the
            # access.force permission.
            #access.force = flatpak
        }
17	libpipewire-module-adapter
19	libpipewire-module-link-factory
21	libpipewire-module-session-manager
536870912	module-always-sink
70	alsa_output.platform-bcm2835_audio.stereo-fallback	PipeWire	s16le 2ch 48000Hz	SUSPENDED
70	alsa_output.platform-bcm2835_audio.stereo-fallback.monitor	PipeWire	s16le 2ch 48000Hz	SUSPENDED
31	PipeWire	pipewire
33	PipeWire	wireplumber
34	PipeWire	wireplumber
124	PipeWire	pactl
55	alsa_card.platform-bcm2835_audio	alsa
56	alsa_card.platform-fef00700.hdmi	alsa
57	alsa_card.platform-fef05700.hdmi	alsa

Was this with a fresh install of Raspberry Pi OS Bookworm?

How was the pipewire-pulse daemon started? Running as root or as the pi user? By default it is started as the current user.

````pi@piradio:~ $ systemctl --user status pipewire-pulse
● pipewire-pulse.service - PipeWire PulseAudio
     Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled; preset: enabled)
     Active: active (running) since Thu 2024-03-14 08:52:46 GMT; 19s ago
TriggeredBy: ● pipewire-pulse.socket
   Main PID: 878 (pipewire-pulse)
      Tasks: 3 (limit: 3912)
        CPU: 85ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
             └─878 /usr/bin/pipewire-pulse

Mar 14 08:52:46 piradio systemd[860]: Started pipewire-pulse.service - PipeWire PulseAudio.
Mar 14 08:52:46 piradio pipewire-pulse[878]: mod.rt: Can't find org.freedesktop.portal.Desktop. Is xdg-desktop-portal running?
pi@piradio:~ $ PULSE_LOG=4 pactl list short
Parsing configuration file '/etc/pulse/client.conf'
Failed to open configuration file '/etc/pulse/client.conf.d/01-enable-autospawn.conf': No such file or directory
Using shared memfd memory pool with 1024 slots of size 64.0 KiB each, total size is 64.0 MiB, maximum usable slot size is 65472
Trying to connect to {29873391b2e14803ba74b1c7a6046353}unix:/run/user/1000/pulse/native...
parsing address failed: {29873391b2e14803ba74b1c7a6046353}unix:/run/user/1000/pulse/native
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
pi@piradio:~ $ systemctl --user status pipewire-pulse
● pipewire-pulse.service - PipeWire PulseAudio
     Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled; preset: enabled)
     Active: active (running) since Thu 2024-03-14 08:52:46 GMT; 1min 12s ago
TriggeredBy: ● pipewire-pulse.socket
   Main PID: 878 (pipewire-pulse)
      Tasks: 3 (limit: 3912)
        CPU: 85ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
             └─878 /usr/bin/pipewire-pulse

Mar 14 08:52:46 piradio systemd[860]: Started pipewire-pulse.service - PipeWire PulseAudio.
Mar 14 08:52:46 piradio pipewire-pulse[878]: mod.rt: Can't find org.freedesktop.portal.Desktop. Is xdg-desktop-portal running?

Was this with a fresh install of Raspberry Pi OS Bookworm?

No, it's not a fresh install, but otherwise a pretty stock installation.

How was the pipewire-pulse daemon started? Running as root or as the pi user? By default it is started as the current user.

It's started as the intall user (pi)

 systemctl --user status pipewire-pulse
● pipewire-pulse.service - PipeWire PulseAudio
     Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled; preset: enabled)
     Active: active (running) since Tue 2024-03-12 18:03:18 GMT; 1 day 22h ago
TriggeredBy: ● pipewire-pulse.socket
   Main PID: 981 (pipewire-pulse)
      Tasks: 3 (limit: 3910)
        CPU: 5min 14.927s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
             └─981 /usr/bin/pipewire-pulse

Mar 12 18:03:18 bookworm-pi systemd[961]: Started pipewire-pulse.service - PipeWire PulseAudio.