Something broke my pipewire/wireplumber

I am using Fedora KDE 41. I have never had this issue. I could easily share my entire screen or a specific window. Now, when I try to share my screen, on Google meet, for example, it keeps telling me “Failed to connect PipeWire context”. I attempted purging user files and reinstalling it. It is hell-bent on giving me this error. Any idea what I am doing wrong?

UPDATE: I tested with my backup user, which I created just in case, but pretty much left uncustomized. It works there. How can I reset it?

If you think an update caused the problem, you should be able to undo the update. dnf history list should show you when you last ran updates and you can query it further to find out exactly which packages were updated.

My bad, I edited my answer. Since it works on my other user, I don’t think it is because of an update. I just don’t know how I can reset it its settings back to default.

1 Like

If you create a new user account does the new account have the problem? If not, you might just use a new account and try to migrate things from the broken account if you can.

The question is how? I wanted to reset settings, it didn’t work. So, I am not sure how I would even migrate them.

Most (but not all) local user application settings are stored under ~/.config. Older applications sometimes have a .<something> file or directory directly under ~. You will probably want to make a backup of ~/.config before you start messing with it.

If the backup user works then it seems something in the configs located in the users home directory. You might try removing the pipewire configs found under your home directory. With the new user you could find out what is there using find .local -name pipewire* then compare that to what is found with your regular user.

If you remove the pipewire config files then reboot the next time you use pipewire it will create the default config files that probably would match those for your back up user.

The problem is that I purged pipewire/wireplumber config files multiple times and reinstalled it. In my .config folder, searching pipewire yields a folder called “pipewire.service.wants” and several files pipewire.something in .config/systemd/user

Can I delete these all?

This is what I did:

rm -rf ~/.config/pipewire ~/.local/state/pipewire ~/.config/wireplumber

sudo dnf reinstall pipewire wireplumber

systemctl --user restart pipewire pipewire-pulse wireplumber

Rebooted my laptop and then:

systemctl --user status pipewire wireplumber:

● pipewire.service - PipeWire Multimedia Service
Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: disabled)
Drop-In: /usr/lib/systemd/user/pipewire.service.d
└─00-uresourced.conf
/usr/lib/systemd/user/service.d
└─10-timeout-abort.conf
Active: active (running) since Thu 2024-12-19 16:44:58 +04; 2min 23s ago
Invocation: a5a5159e9a4540aca39fb1fb05a1d442
TriggeredBy: ● pipewire.socket
Main PID: 1938 (pipewire)
Tasks: 3 (limit: 38086)
Memory: 6M (peak: 7.5M)
CPU: 792ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
└─1938 /usr/bin/pipewire

Dez 19 16:44:58 fedora systemd[1907]: Started pipewire.service - PipeWire Multimedia Service.

● wireplumber.service - Multimedia Service Session Manager
Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
Drop-In: /usr/lib/systemd/user/service.d
└─10-timeout-abort.conf
Active: active (running) since Thu 2024-12-19 16:44:58 +04; 2min 23s ago
Invocation: 94900d40d02843db8c4c73454ffd0c0d
Main PID: 1941 (wireplumber)
Tasks: 9 (limit: 38086)
Memory: 6.7M (peak: 7.8M)
CPU: 236ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
└─1941 /usr/bin/wireplumber

Dez 19 16:44:58 fedora systemd[1907]: Started wireplumber.service - Multimedia Service Session Manager.
Dez 19 16:44:58 fedora wireplumber[1941]: [0:00:19.907694436] [1941] INFO Camera camera_manager.cpp:325 libcamera v0.3.2

I am still getting the same error…

On my system I see this

$ systemctl --user  status pipewire wireplumber
● 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
             └─00-uresourced.conf
             /usr/lib/systemd/user/service.d
             └─10-timeout-abort.conf
     Active: active (running) since Tue 2024-12-17 13:47:24 CST; 1 day 17h ago
 Invocation: d3887583c0d94d5984ba436a55824975
TriggeredBy: ● pipewire.socket
   Main PID: 3494 (pipewire)
      Tasks: 3 (limit: 38221)
     Memory: 5M (peak: 7M)
        CPU: 235ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
             └─3494 /usr/bin/pipewire

● wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
    Drop-In: /usr/lib/systemd/user/service.d
             └─10-timeout-abort.conf
     Active: active (running) since Tue 2024-12-17 13:47:24 CST; 1 day 17h ago
 Invocation: c78ab29ebea3438ea55ae618a39897b6
   Main PID: 3495 (wireplumber)
      Tasks: 9 (limit: 38221)
     Memory: 6.6M (peak: 7.9M)
        CPU: 632ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
             └─3495 /usr/bin/wireplumber

The pipewire service should not be enabled since it is started by the pipewire.socket. Note the presets on both those services.

I am fairly certain that the default settings are configured correctly. Howevere, it won’t help if there is no way to actually reset them… Can’t I just copy the configuration from the other user? If yes, which folders?

It appears yours is not default.

Yours

● pipewire.service - PipeWire Multimedia Service
Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: disabled)

Mine (which has never been altered from default)

● pipewire.service - PipeWire Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; disabled; preset: disabled)

Then I must have put the wrong command into the terminal. How do I completely purge pipewire/wireplumber settings then?

You do not want to purge the settings there. What you should do there is disable the service so it operates as default.
sudo systemctl --user disable pipewire.service would reset it to the default.
When you reboot it then should operate normally.

Somehow I knew that commands like this would send me on a wild goose chase:

Disabling 'pipewire.service', but its triggering units are still active:
pipewire.socket

I would much rather copy the settings from the other user. Is that not possible?

That is an informative message and shows how pipewire.service is started. That is to be expected in this case…

If you read the output of systemctl --user status pipewire.service you see the trigger shown. TriggeredBy: ● pipewire.socket

This is the default setting for pipewire.socket

$ systemctl --user status pipewire.socket
● pipewire.socket - PipeWire Multimedia System Sockets
     Loaded: loaded (/usr/lib/systemd/user/pipewire.socket; enabled; preset: enabled)
     Active: active (running) since Tue 2024-12-17 13:47:21 CST; 1 day 18h ago
 Invocation: 85655c83640b48ec85ab6e493b0878a5
   Triggers: ● pipewire.service
     Listen: /run/user/1000/pipewire-0 (Stream)
             /run/user/1000/pipewire-0-manager (Stream)
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/pipewire.socket

It is (and should be) enabled by default.
Note that the socket is intended to trigger the service and it must be done that way so the service properly connects to the socket. Things will not work if done in an incorrect order.

What I meant to say was that the same annoying error is still there. That is why I would rather copy the other user’s settings.

User settings for each individual user are under their home directories.
System settings for all users are managed by systemctl as noted above (and in most cases should not be modified).

If you want to copy the user settings that may be the wrong approach. Each user gets the personal settings the first time they activate the pipewire/wireplumber service and those are written by the services into the users home directory structure.

On my system I find nothing about pipewire as personal config files except under ~/.local/share/flatpak/

So, is there no way to fix this then? If resetting it back to default doesn’t exist as an option and I cannot copy over user files from another user, what are my options then?

Long story short, how can I make it return to a fresh state, like I made a new account? Looks like terminal is useless here, so far.

You did not say whether you rebooted after running the systemctl command to disable pipewire.service. That was mandatory to restart everything in default mode.

You also have not updated us on any changes you may have made since doing that nor any specific symptoms that are now showing.

The reset of enabled to disabled for that service is resetting it back to default. What makes you believe it was not reset?

I rebooted after running the command.

The reset of enabled to disabled for that service is resetting it back to default. What makes you believe it was not reset?

Because I still cannot share my screen, which was working until a few days ago.