Pipewire disabled, pipewire.service not found

This is what I tried and the results (F39):

sudo systemctl --user enable pipewire
Failed to connect to bus: No medium found
systemctl --user status pipewire
● pipewire.service - PipeWire Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; disabled; preset: disabled)
    Drop-In: /usr/lib/systemd/user/pipewire.service.d
     Active: active (running) since Mon 2024-03-18 11:51:42 CET; 17min ago
TriggeredBy: ● pipewire.socket
   Main PID: 2446 (pipewire)
      Tasks: 3 (limit: 18308)
     Memory: 9.0M
        CPU: 221ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
             └─2446 /usr/bin/pipewir
systemctl enable pipewire-pulse && systemctl start pipewire pulse
Failed to enable unit: Unit file pipewire-pulse.service does not exist.

Since I tried stuff with pactl yesterday videos keep stuttering and not loading. I suspect pipewire was replaced by pulseaudio somewhere so I’m trying to enable pipewire again but as you can see it’s not working.

Hello @hokome ,
Could you check what you get with systemctl status pipewire? You should not show any service.
Also, in my experience, I do not run sudo ahead of any systemctl command, as it will prompt for password entry if required.
As a note, I have no pipewire.service file on my system either, so I don’t think that is your issue. Pipewire can be controlled and configured using a set of commandline tools that all begin with pw-. So to find any of them using the default Bash in a terminal just type in pw- then use <ctrl><tab> to move through available commands for pipewire.

Sorry for all the edit’s I was checking things after I wrote about them, always a recipe for confusion …


systemctl status pipewire

Unit pipewire.service could not be found.

systemctl show pipewire


I’m not sure what to configure with pw- though, I’m new to Linux

You should use

sudo systemctl enable --global pipewire-pulse

or for the current logged in user only

systemctl enable --user pipewire-pulse

By default, the corresponding .socket are enabled so the .service files will be activated when some process needs them.

1 Like

systemctl enable --global pipewire-pulse

Failed to enable unit, unit /etc/systemd/user/default.target.wants/pipewire-pulse.service does not exist.

First time it actually gives me a path

With pw-cli --help you will get a list of available commands/options for that tool. In particular you can list the objects with the ls option. This will be verbose output and likely scroll by listing all the Pipewire objects with their ID (this will include the terminal you’re running in, the pw-cli command, basically everything pipewire is connected to/connecting). You can get a more fulsome doc about commands on Linux in general, by using the manpages. So in the case of pipewire tools man pw-cli gives this type of document.

pw-cli list-remotes
	0 = @remote:0x55fd663af850 'pipewire-0'
pw-cli con 0
Error: "failed to connect: Host is down"

I don’t remember where but I have seen this “Host is down before”. I don’t know if it’s normal. I don’t see what else to try.

Don’t you have to specify pipewire-0 ?

This time I got no output but my problem isn’t resolved. Is there a way to install pipewire.service? Maybe it will help.

There is no service as far as I can see. I have no pipewire.service file for instance and I have no issues with my audio. The service probably goes through wireplumber.
It may be called pipewire-media-session.service

If you have neither you can enable the session manager (WirePlumber) and start that service, but I don’t have it enable either.

Do you have the package pipewire-pulseaudio installed?

The OP’s problem is he ran systemctl --user enable pipewire as sudo, which incorrectly set up a user pipewire service for root user. This is the correct way (remove sudo so it makes a user service for your personal user):

systemctl --user --now enable pipewire pipewire-pulse wireplumber

I think it should be a socket in this case, at least for pipewire shouldn’t it?

systemctl --user --now enable pipewire.socket pipewire-pulse.socket wireplumber.service

I tried systemctl --user --now enable pipewire pipewire-pulse wireplumber which created a bunch of symlink (I lost the exact output). Then I tried systemctl --user --now enable pipewire.socket pipewire-pulse.socket wireplumber.service which didn’t output anything. Either way, my video problem still persists even after restart.

I think it should be a socket in this case, at least for pipewire shouldn’t it?

Yes that works, you can just enable the pipewire.socket/wireplumber.socket and call it done but I enable the services themselves which works too

When you create a socket it creates the service too I think.

can you check
systemctl --user pipewire-* wireplumber
to see if they are all running now?

To see what’s installed.
sudo dnf list installed pipewire\* wireplumber pulse\*

I think something is missing from the first command

systemctl --user pipewire-* wireplumber
Unknown command verb pipewire-*.

Second command does show there are some things installed

dnf list installed pipewire\* wireplumber pulse\
Installed Packages
pipewire.i686                                  1.0.4-2.fc39  @updates           
pipewire.x86_64                                1.0.4-2.fc39  @updates           
pipewire-alsa.i686                             1.0.4-2.fc39  @updates           
pipewire-alsa.x86_64                           1.0.4-2.fc39  @updates           
pipewire-codec-aptx.x86_64                     1.0.3-1.fc39  @rpmfusion-free-updates
pipewire-gstreamer.x86_64                      1.0.4-2.fc39  @updates           
pipewire-jack-audio-connection-kit.x86_64      1.0.4-2.fc39  @updates           
pipewire-jack-audio-connection-kit-libs.x86_64 1.0.4-2.fc39  @updates           
pipewire-libs.i686                             1.0.4-2.fc39  @updates           
pipewire-libs.x86_64                           1.0.4-2.fc39  @updates           
pipewire-pulseaudio.x86_64                     1.0.4-2.fc39  @updates           
pipewire-utils.x86_64                          1.0.4-2.fc39  @updates           
wireplumber.x86_64                             0.4.17-1.fc39 @updates

that should have been

systemctl status --user pipewire-* wireplumber

sorry about that