Pipewire no node is available when switching audio profiles

Hi,

I recently switched over to Pipewire and for the most part it was working without any issues. After an update, I started having an issue where every time I would change my audio profile my sound cuts out and whatever media programs I have open stop playing sound.

Looking at my journalctl I noticed that pipewire complains that it cannot find a node when switching:

Mar 24 00:58:22 PC pipewire-pulse[6315]: stream 0x555f563d3790: error no node available
Mar 24 00:58:22 PC pipewire-pulse[6315]: pulse-server 0x555f5639a730: [Firefox] ERROR command:-1 (invalid) tag:4294967295 error:25 (Input/output error)
Mar 24 00:58:22 PC pipewire-media-session[1940]: error id:0 seq:2026 res:-2 (No such file or directory): unknown resource 41 op:3

Sound portion of my inxi:

Audio:     Device-1: NVIDIA GP102 HDMI Audio vendor: Micro-Star MSI driver: N/A bus-ID: 01:00.1 
           Device-2: Logitech OrbiCam type: USB driver: snd-usb-audio,uvcvideo bus-ID: 1-5:3 
           Device-3: ASUSTek Xonar SoundCard type: USB driver: hid-generic,snd-usb-audio,usbhid bus-ID: 3-1:2 
           Sound Server-1: ALSA v: k5.10.23-1-MANJARO running: yes 
           Sound Server-2: JACK v: 0.125.0 running: no 
           Sound Server-3: PulseAudio v: 14.2 running: no 
           Sound Server-4: PipeWire v: 0.3.23 running: yes 

I’m not quite sure how to interpret the error and was wondering if anyone else can provide some insight. I’m on Pipewire 0.3.23 but have also tested the git version and had the same issue. I’m also using the latest Plasma (5.21.3) as my DE. Any suggestions are appreciated.

Thanks.

Do you have pipewire-pulse and pipewire-media-session installed? Also check

systemctl --user status pipewire-media-session.service

And enable and start if not active (running).

Also there are some files in
/home/user/.config/pipewire/media-session.d/

check if you have something with Off in those files.

I had some entries with Off and I deleted them.

Follow this:
https://wiki.archlinux.org/index.php/PipeWire

Or you can delete them all and see what happens. They are created automatically anyway.

And check what audio backend you have in applications.

Firefox → about:support → media
example:

In my case switching Audacious to pulseaudio while having pipewire produced sound, so also check internal applications settings.

Do you have pipewire-pulse and pipewire-media-session installed? Also check
systemctl --user status pipewire-media-session.service

Yes both were installed and pipewire-media-session.service is active.

Also there are some files in
/home/user/.config/pipewire/media-session.d/

I did have two lines with Off in my restore-stream file but removing them unfortunately did not fix the issue.

Or you can delete them all and see what happens. They are created automatically anyway.

I tried this but only 3 of the expected 4 files were regenerated. When I reported this bug on the Pipewire GitLab, I was told to expect 4 files to be recreated but default-nodes does not get created for some reason.

A really strange thing I discovered was that when I connected a Dual Shock 4 controller to my computer, that shows up as a microphone and speaker, I was able to switch without a problem between the profiles. It’s as if Pipewire is expecting a second audio device to be connected for it to switch profiles.

When you delete pipewire inside ~/.config, pipewire pipewire-pulse pipewire-media-session must be already stopped. And after delete folder then start again pipewire with systemctl start --user pipewire pipewire-pulse pipewire-media-session to see is default settings is working.
Also after latest update you must delete all /etc/pipewire files.

The default-nodes file recreated automatic when you change your settings via pavucontrol.

So it may be better to uninstall and reinstall pipewire with:

  1. sudo pacman -Rns manjaro-pipewire (or pipewire pipewire-pulse pipewire-alsa pipewire-media-session pulseeffects gst-plugin-pipewire),
  2. check that in /etc you don’t have any pipewire conf (sudo find /etc -name ‘*pipewir*’), if something still exist delete it.
  3. systemctl stop --user pipewire pipewire-pulse pipewire-media-session
  4. rm -rf ~/.config/pipewire
  5. and finally reinstall manjaro-pipewire pulseeffects etc

Special Note: (maybe you must try it first)
Sometimes pipewire can not automatically select correct microphone (for example shows 2 mic when you have 1 etc) and this has as result that all input nodes does not showing. To correct it try manual (or via pavucontrol) selecting the correct mic and then the input node you want.
Personally after each update of alsa-card-profiles I increase priority of my mic and headset in configs on path /usr/share/alsa-card-profile/mixer/paths/ to media-session work correct. -I didn’t find yet, how to do it via media-session.conf-