Fails if ran without XDG_RUNTIME_DIR
UPDATE: This has nothing to do with mpd
:
$ XDG_RUNTIME_DIR= pw-play foo.mp3
error: pw_context_connect() failed: Host is down
See below for original report.
Version, Distribution, Desktop Environment:
0.3.20
, Arch Linux, headless
Description of Problem:
I have a mpd
setup that used to work with pulseaudio
. After installing pipewire-pulse
, a system mpd
can no longer connect to the pulse
socket.
$ machinectl shell mpd@.host /bin/bash
Connected to the local host. Press ^] three times within 1s to exit session.
[mpd@ubik ~]$ XDG_RUNTIME_DIR= mpd --no-daemon --stderr
exception: bind to '0.0.0.0:6600' failed (continuing anyway, because binding to '[::]:6600' succeeded): Failed to bind socket: Address already in use
exception: Decoder plugin 'wildmidi' is unavailable: configuration file does not exist: /etc/timidity/timidity.cfg
Failed to initialize io_uring: io_uring_queue_init() failed: Cannot allocate memory
## v---
Failed to create secure directory (/pulse): Permission denied
exception: Failed to enable output "MPD PulseAudio Output" (pulse); pa_context_connect() has failed: Connection refused
## ^--
avahi: Service 'Music Player @ ubik.home' successfully established.
[mpd@ubik ~]$ mpd --no-daemon --stderr
exception: bind to '0.0.0.0:6600' failed (continuing anyway, because binding to '[::]:6600' succeeded): Failed to bind socket: Address already in use
exception: Decoder plugin 'wildmidi' is unavailable: configuration file does not exist: /etc/timidity/timidity.cfg
Failed to initialize io_uring: io_uring_queue_init() failed: Cannot allocate memory
avahi: Service 'Music Player @ ubik.home' successfully established.
Notice how it's trying to create /pulse
:
[mpd@ubik ~]$ XDG_RUNTIME_DIR= strace -e %file -f mpd --no-daemon --stderr 2>&1 | grep EACCES
[pid 963861] mkdir("/pulse", 0700) = -1 EACCES (Permission denied)
I think pulseaudio
and pipewire-pulse
differ in their handling of an unset XDG_RUNTIME_DIR
, in spite of #259 (closed).