Early upgrade of Fedora 34 to 35 (Mate-Compiz Spin) - audio devices no longer detected

Continuing the discussion from Fedora 35 beta - audio devices no longer detected:

I made an upgrade about 2 weeks ago, F34 > F35

I got the error about dependencies from wireplumber and pipewire-media-session. I tried to install wireplumber independent as described in the wiki :

dnf swap pipewire-media-session wireplumber
This deactivates me the devices as described on the topic i do the followup.

systemctl --user restart wireplumber
Seams to work …

Error i get while checking pipewire status

pipewire.service - Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; disabled; vendor preset: disabled)
     Active: active (running) since Wed 2021-09-29 18:34:31 -03; 19s ago
TriggeredBy: ● pipewire.socket
   Main PID: 1474 (pipewire)
      Tasks: 3 (limit: 18439)
     Memory: 2.3M
        CPU: 13ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
             └─1474 /usr/bin/pipewire

Sep 29 18:34:31 fedy systemd[1218]: Started Multimedia Service.
Sep 29 18:34:31 fedy pipewire[1493]: execvp error '/usr/bin/pipewire-media-session': No such file or directory
Sep 29 18:34:31 fedy pipewire[1493]: failed to create context: No such file or directory

Question is now how do i get pipe-wire to use wireplumber ?

.
.
.
.

Edit: (my problem was a bug while installing F34-MATE-Compiz Prerelease)
Solution bugfix F34 - Fedora WIKI

Common F34 bugs - Fedora Project Wiki
:link: Audio may not work after upgrade to Fedora 34 if pipewire was previously installed
link to this item - Bugzilla: #1931384

Some users have reported that pipewire (the default audio framework in Fedora 34) may not work properly on update from older versions due to a configuration file format incompatibility. If you had pipewire installed in Fedora 32 or 33, it may stop working on upgrade to Fedora 34. If this happens to you, we recommend moving all *.conf files out of /etc/pipewire and reinstalling pipewire with sudo dnf reinstall pipewire pipewire-pulseaudio. You will then need to re-apply any customizations you had made to the configuration files.

1 Like

hrm, let’s see what packages we both have. On an upgraded F35, I have these:

$ rpm -qa \*pipewire\* \*wireplumber\*
pipewire0.2-libs-0.2.7-6.fc35.x86_64
wireplumber-0.4.2-1.fc35.x86_64
wireplumber-libs-0.4.2-1.fc35.x86_64
pipewire-0.3.37-1.fc35.x86_64
pipewire-libs-0.3.37-1.fc35.x86_64
pipewire-jack-audio-connection-kit-0.3.37-1.fc35.x86_64
pipewire-alsa-0.3.37-1.fc35.x86_64
pipewire-gstreamer-0.3.37-1.fc35.x86_64
pipewire-pulseaudio-0.3.37-1.fc35.x86_64
pipewire-utils-0.3.37-1.fc35.x86_64

Does your system match?

1 Like

Yes it looks like:

$ rpm -qa \*pipewire\* \*wireplumber\*
pipewire0.2-libs-0.2.7-6.fc35.x86_64
pipewire-libs-0.3.37-1.fc35.x86_64
pipewire-0.3.37-1.fc35.x86_64
pipewire-alsa-0.3.37-1.fc35.x86_64
pipewire-gstreamer-0.3.37-1.fc35.x86_64
pipewire-jack-audio-connection-kit-0.3.37-1.fc35.x86_64
pipewire-pulseaudio-0.3.37-1.fc35.x86_64
pipewire-utils-0.3.37-1.fc35.x86_64
wireplumber-libs-0.4.2-1.fc35.x86_64
wireplumber-0.4.2-1.fc35.x86_64

Before starting wireplumber:

$ systemctl --user status wireplumber
○ wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; vendor preset: enabled)
     Active: inactive (dead)
``

After starting wireplumber:

```$ systemctl --user status wireplumber
● wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-09-30 08:10:40 -03; 4s ago
   Main PID: 3017 (wireplumber)
      Tasks: 5 (limit: 18439)
     Memory: 5.7M
        CPU: 378ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
             └─3017 /usr/bin/wireplumber
$ systemctl --user status pipewire
● pipewire.service - Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; disabled; vendor preset: disabled)
     Active: active (running) since Thu 2021-09-30 07:47:12 -03; 30min ago
TriggeredBy: ● pipewire.socket
   Main PID: 1479 (pipewire)
      Tasks: 4 (limit: 18439)
     Memory: 13.7M
        CPU: 390ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
             ├─1479 /usr/bin/pipewire
             └─1497 /usr/bin/pipewire-media-session

Sep 30 07:47:12 fedy systemd[1222]: Started Multimedia Service.
Sep 30 07:47:13 fedy pipewire[1479]: 'front:1': capture open failed: Device or resource busy
Sep 30 07:47:13 fedy pipewire[1479]: adapter 0x5595fbe71de0: can't get format: Device or resource busy
Sep 30 07:47:13 fedy pipewire[1479]: can't create node: Device or resource busy

Now i will restart the computer and the speaker and mic are muted.

1 Like

Have you rebooted after all this? For some reason, it’s still trying to run pipewire-media-session, so maybe even though the new service files are installed, they’re not loaded into systemd (one has to sometimes run systemctl reload after system files are changed).

Also take a look at your service file maybe to make sure they’re correct:

$ cat /usr/lib/systemd/user/pipewire.service
[Unit]
Description=Multimedia Service

# We require pipewire.socket to be active before starting the daemon, because
# while it is possible to use the service without the socket, it is not clear
# why it would be desirable.
#
# A user installing pipewire and doing `systemctl --user start pipewire`
# will not get the socket started, which might be confusing and problematic if
# the server is to be restarted later on, as the client autospawn feature
# might kick in. Also, a start of the socket unit will fail, adding to the
# confusion.
#
# After=pipewire.socket is not needed, as it is already implicit in the
# socket-service relationship, see systemd.socket(5).
Requires=pipewire.socket

[Service]
LockPersonality=yes
MemoryDenyWriteExecute=yes
NoNewPrivileges=yes
RestrictNamespaces=yes
SystemCallArchitectures=native
SystemCallFilter=@system-service
Type=simple
ExecStart=/usr/bin/pipewire
Restart=on-failure
Slice=session.slice

[Install]
Also=pipewire.socket
WantedBy=default.target


$ cat /usr/lib/systemd/user/wireplumber.service
[Unit]
Description=Multimedia Service Session Manager
After=pipewire.service
BindsTo=pipewire.service
Conflicts=pipewire-media-session.service

[Service]
LockPersonality=yes
MemoryDenyWriteExecute=yes
NoNewPrivileges=yes
RestrictNamespaces=yes
SystemCallArchitectures=native
SystemCallFilter=@system-service
Type=simple
ExecStart=/usr/bin/wireplumber
Restart=on-failure
Slice=session.slice

[Install]
WantedBy=pipewire.service

(Oh, also see what a new user shows, in case there are some config files that we need to delete after upgrades etc.?)

Edit:

just noticed that wireplumber.service conflicts with pipewire-media-session.service. So the two should not exist together etc.

1 Like

Yes … this is before rebooting … now i do have a status of pipewire after rebooting:

$ systemctl --user status wireplumber
○ wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Thu 2021-09-30 08:27:42 -03; 6min ago
    Process: 1474 ExecStart=/usr/bin/wireplumber (code=exited, status=0/SUCCESS)
   Main PID: 1474 (code=exited, status=0/SUCCESS)
        CPU: 29ms

Sep 30 08:26:46 fedy systemd[1216]: Started Multimedia Service Session Manager.
Sep 30 08:27:42 fedy wireplumber[1474]: stopped by signal
Sep 30 08:27:42 fedy wireplumber[1474]: disconnected from pipewire
● pipewire.service - Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; disabled; vendor preset: disabled)
     Active: active (running) since Thu 2021-09-30 08:26:46 -03; 6min ago
TriggeredBy: ● pipewire.socket
   Main PID: 1472 (pipewire)
      Tasks: 3 (limit: 18439)
     Memory: 2.3M
        CPU: 14ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
             └─1472 /usr/bin/pipewire

Sep 30 08:26:46 fedy systemd[1216]: Started Multimedia Service.
Sep 30 08:26:46 fedy pipewire[1490]: execvp error '/usr/bin/pipewire-media-session': No such file or directory
Sep 30 08:26:46 fedy pipewire[1490]: failed to create context: No such file or directory

After restarting wireplumber:

● wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-09-30 08:36:19 -03; 3s ago
   Main PID: 4437 (wireplumber)
      Tasks: 4 (limit: 18439)
     Memory: 2.0M
        CPU: 19ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
             └─4437 /usr/bin/wireplumber

Sep 30 08:36:19 fedy systemd[1216]: Started Multimedia Service Session Manager.

it looks like the pipewire.conf is different … could you post it or send it private?

Can you double check in /etc/pipewire/pipewire.conf , ~/.config/pipewire/pipewire.conf /usr/share/pipewire/pipewire.conf to see if:

"/usr/bin/pipewire-media-session" = { args = "" }

is commented out.

It’s in the context.exec section, line 238 (in mine)
pipewire.conf

2 Likes

this was not commented out … I did now and will restart.

Thx so far …

Now it looks like ok … thanks for helping @ankursinha & @grumpey !

Have you got a custom configuration for pipewire, because the config files moved to /usr/share/pipewire? (Pipewire config files just disappeared? - #2 by ersen)

2 Likes

Not really … must been old from when i was installing the prerelease of F34. I removed it now … so next update it should not happen again.

1 Like