cookieforu
cookieforu

Reputation: 21

Missing org.PulseAudio.Core1 D-Bus Interface when running PulseAudio under Systemd

I’m trying to access the org.PulseAudio.Core1 D-Bus interface, but it doesn’t seem to be exposed properly. I’m running PulseAudio as a systemd user service, and while PulseAudio itself is working fine, the org.PulseAudio.Core1 interface is missing from the D-Bus object tree. Instead, I only see the following:

└─ /org
  ├─ /org/freedesktop
  │ └─ /org/freedesktop/ReserveDevice1
  │   └─ /org/freedesktop/ReserveDevice1/Audio0
  └─ /org/pulseaudio
    └─ /org/pulseaudio/server_lookup1

The module-dbus-protocol is loaded, and PulseAudio is running without errors. However, the org.PulseAudio.Core1 interface is not accessible, even though the logs indicate that it exists:

Feb 26 19:13:16 home pulseaudio[582]: Interface org.PulseAudio.Core1.Client added for object /org/pulseaudio/core1/client20
This suggests that the interface is being created but not properly exposed or registered on the D-Bus.

Configuration Details

Systemd Service Files

[Unit]
Description=Sound Service
Requires=pulseaudio.socket
ConditionUser=!root

[Service]
ExecStart=/usr/bin/pulseaudio --daemonize=no --log-target=journal
LockPersonality=yes
MemoryDenyWriteExecute=yes
NoNewPrivileges=yes
Restart=on-failure
RestrictNamespaces=yes
SystemCallArchitectures=native
SystemCallFilter=@system-service
Type=notify
UMask=0077
Slice=session.slice

[Install]
Also=pulseaudio.socket
WantedBy=default.target
[Unit]
After=dbus.socket

[Service]
Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%U/bus
Environment=PULSE_DBUS_SERVER=unix:path=/run/user/%U/pulse/dbus-socket
ExecStart=
ExecStart=/usr/bin/pulseaudio --daemonize=no --log-level=4 --log-target=journal
D-Bus Configuration
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
  <policy context="default">
    <allow own="org.PulseAudio1"/>
    <allow send_destination="org.PulseAudio1"/>
    <allow receive_sender="org.PulseAudio1"/>
  </policy>
</busconfig>
[D-BUS Service]
Name=org.PulseAudio1
Exec=/usr/bin/pulseaudio --daemonize=no
SystemdService=pulseaudio.service

What I’ve Tried

  1. Verified module-dbus-protocol is loaded:

    • The module is listed when running pactl list modules.
    • I’ve also tried unloading and loading it manually with pactl load-module module-dbus-protocol.
  2. Checked D-Bus object paths:

    • Used busctl --user tree org.PulseAudio1 to list objects, but /org/pulseaudio/core1 is missing.
  3. Ran PulseAudio manually:

    • Stopped the systemd service and ran PulseAudio manually with pulseaudio --daemonize=no --log-level=4 --log-target=journal. The issue persists.
  4. Checked D-Bus environment variables:

    • Confirmed that DBUS_SESSION_BUS_ADDRESS is set correctly, as well as PULSE_DBUS_SERVER and PULSE_RUNTIME_PATH

Questions

  1. Why is the org.PulseAudio.Core1 interface not being exposed, even though the logs indicate it exists?
  2. Are there additional steps or configurations required to expose the org.PulseAudio.Core1 interface when running PulseAudio as a systemd user service?
  3. Could this be a bug or limitation in PulseAudio’s D-Bus module when used with systemd?

Additional Context


What I’m Looking For

Edit:

Did some further jorunalctl digging and found this

Feb 27 14:43:20 home pulseaudio[2322]: Interface org.PulseAudio.Core1 added for object /org/pulseaudio/core1

it 100% adds it but somehow i am unable to find it in busctl or access any information from it

Upvotes: 1

Views: 34

Answers (0)

Related Questions