PipeWire Issues

I managed to generate more audio issues trying to fix the ones I had. I have migrated from pulseaudio to pipewire a few months ago. I have been having issues with vmware and runelite since. I was trying to fix those 2 issues and decided to reinitialize alsa. Those issues are still a thing, but now every time I boot, I need to set the default to my sound card in the volume control since it keeps grabbing my VR Headset.

I have the following packages installed:

lib32-pipewire
lib32-pipewire-jack
pipewire
pipewire-alsa
pipewire-jack
pipewire-pulse
pipewire-media-session

VMware gives the following error message if I have an application already playing sound:

`Failed to set Alsa sound device parameter (snd_pcm_hw_params_set_buffer_size_near): Invalid argument.
The sound connection control operation failed.

If I have no application playing sound, I do not get the error message and can hear the sound, but can’t start playing sound from any application on my desktop.

As for runelite it simply does not play sound.

When runelite is running

sudo fuser -f /dev/snd/pcm* 

outputs:

Cannot stat file /proc/6737/fd/4: Permission denied
Cannot stat file /proc/6737/fd/5: Permission denied
Cannot stat file /proc/6737/fd/1023: Permission denied

What are you using to set default audio device? A quick fix is perhaps to install Easyeffects to manage pipewire and set default audio device there (open Easyeffects > Pipewire > General > uncheck ‘use default’ and select the appropriate device. Make sure to enable ‘Start Service at Login’ in hamburger menu (top right) > General > Service.

2 Likes

I am using pavucontrol. Is there a pipewire equivalent that I am not aware of? Would there be a way for me to set in cli through config files instead of easyeffects?

As far as I’m aware the closest to an equivalent of Pavucontrol for Pipewire is Easyeffects.

I do think tools like pactl/pacmd/pamixer will still work with Pipewire (assuming you have pipewire-pulse set up) if you want a command line tool. This Archwiki section could be worth reading.

There may be a method to set default device in the Pipewire config files; I am not sure. If the options above do not work, you could look around in the Pipewire config files under /usr/share/pipewire. Note that you should not edit these directly, as a Pipewire update will restore their defaults, but instead copy them to ~/.config/pipewire and edit them there.

Edit: If none of the methods above work/persists on reboot, you could consider adding a small script running pactl on startup (or include the command in your wm config if you’re not running a de).

So I solved the default device issue by going to configuration in pavucontrol and setting the other cards to disable since I do not use them. I also set it to default using pactl just in case. When I rebooted the other cards were still disabled.

I am still puzzled by the other issues. Here is when I list sinks, not sure if that helps:

pactl list sinks           
Sink #192
	State: SUSPENDED
	Name: alsa_output.pci-0000_10_00.4.analog-stereo
	Description: Starship/Matisse HD Audio Controller Analog Stereo
	Driver: PipeWire
	Sample Specification: s32le 2ch 48000Hz
	Channel Map: front-left,front-right
	Owner Module: 4294967295
	Mute: no
	Volume: front-left: 33788 /  52% / -17.26 dB,   front-right: 33788 /  52% / -17.26 dB
	        balance 0.00
	Base Volume: 65536 / 100% / 0.00 dB
	Monitor Source: alsa_output.pci-0000_10_00.4.analog-stereo.monitor
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
	Properties:
		alsa.card = "1"
		alsa.card_name = "HD-Audio Generic"
		alsa.class = "generic"
		alsa.device = "0"
		alsa.driver_name = "snd_hda_intel"
		alsa.id = "ALC1220 Analog"
		alsa.long_card_name = "HD-Audio Generic at 0xfcb00000 irq 155"
		alsa.name = "ALC1220 Analog"
		alsa.resolution_bits = "16"
		alsa.subclass = "generic-mix"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		api.alsa.card.longname = "HD-Audio Generic at 0xfcb00000 irq 155"
		api.alsa.card.name = "HD-Audio Generic"
		api.alsa.path = "front:1"
		api.alsa.pcm.card = "1"
		api.alsa.pcm.stream = "playback"
		audio.channels = "2"
		audio.position = "FL,FR"
		card.profile.device = "5"
		device.api = "alsa"
		device.class = "sound"
		device.id = "49"
		device.profile.description = "Analog Stereo"
		device.profile.name = "analog-stereo"
		device.routes = "2"
		factory.name = "api.alsa.pcm.sink"
		media.class = "Audio/Sink"
		device.description = "Starship/Matisse HD Audio Controller Analog Stereo"
		node.name = "alsa_output.pci-0000_10_00.4.analog-stereo"
		node.nick = "HD-Audio Generic"
		node.pause-on-idle = "false"
		object.path = "alsa:pcm:1:front:1:playback"
		priority.driver = "1009"
		priority.session = "1009"
		factory.id = "18"
		client.id = "33"
		clock.quantum-limit = "8192"
		node.driver = "true"
		factory.mode = "merge"
		audio.adapt.follower = ""
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "47"
		object.serial = "192"
		node.max-latency = "16384/48000"
	Ports:
		analog-output-lineout: Line Out (type: Line, priority: 9000, availability group: Legacy 4, not available)
		analog-output-headphones: Headphones (type: Headphones, priority: 9900, availability group: Legacy 5, available)
	Active Port: analog-output-headphones
	Formats:
		pcm

Sink #199
	State: SUSPENDED
	Name: alsa_output.pci-0000_0e_00.1.hdmi-stereo-extra4
	Description: Navi 21 HDMI Audio [Radeon RX 6800/6800 XT / 6900 XT] Digital Stereo (HDMI 5)
	Driver: PipeWire
	Sample Specification: s16le 2ch 48000Hz
	Channel Map: front-left,front-right
	Owner Module: 4294967295
	Mute: no
	Volume: front-left: 48287 /  74% / -7.96 dB,   front-right: 48287 /  74% / -7.96 dB
	        balance 0.00
	Base Volume: 65536 / 100% / 0.00 dB
	Monitor Source: alsa_output.pci-0000_0e_00.1.hdmi-stereo-extra4.monitor
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS 
	Properties:
		alsa.card = "0"
		alsa.card_name = "HDA ATI HDMI"
		alsa.class = "generic"
		alsa.device = "10"
		alsa.driver_name = "snd_hda_intel"
		alsa.id = "HDMI 4"
		alsa.long_card_name = "HDA ATI HDMI at 0xfcd20000 irq 153"
		alsa.name = "HDMI 4"
		alsa.resolution_bits = "16"
		alsa.subclass = "generic-mix"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		api.alsa.card.longname = "HDA ATI HDMI at 0xfcd20000 irq 153"
		api.alsa.card.name = "HDA ATI HDMI"
		api.alsa.path = "hdmi:0,4"
		api.alsa.pcm.card = "0"
		api.alsa.pcm.stream = "playback"
		audio.channels = "2"
		audio.position = "FL,FR"
		card.profile.device = "18"
		device.api = "alsa"
		device.class = "sound"
		device.id = "58"
		device.profile.description = "Digital Stereo (HDMI 5)"
		device.profile.name = "hdmi-stereo-extra4"
		device.routes = "1"
		factory.name = "api.alsa.pcm.sink"
		media.class = "Audio/Sink"
		device.description = "Navi 21 HDMI Audio [Radeon RX 6800/6800 XT / 6900 XT] Digital Stereo (HDMI 5)"
		node.name = "alsa_output.pci-0000_0e_00.1.hdmi-stereo-extra4"
		node.nick = "HDA ATI HDMI"
		node.pause-on-idle = "false"
		object.path = "alsa:pcm:0:hdmi:0,4:playback"
		priority.driver = "584"
		priority.session = "584"
		factory.id = "18"
		client.id = "33"
		clock.quantum-limit = "8192"
		node.driver = "true"
		factory.mode = "merge"
		audio.adapt.follower = ""
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "73"
		object.serial = "199"
	Ports:
		hdmi-output-4: HDMI / DisplayPort 5 (type: HDMI, priority: 5500, availability group: Legacy 5, available)
	Active Port: hdmi-output-4
	Formats:
		pcm

take a look over at https://gitlab.freedesktop.org/pipewire/pipewire

Just one question: Why is pavucontrol still installed by default with the ISO, although PipeWire is now standard? By the way, for me the external DAC is recognized as default without any problems (set in pavucontrol).

You would have to ask the developers, but as the switch to Pipewire was a recent one I think it’s in a bit of a transitional period from Pulse. For example, I don’t think Wireplumber is being shipped as default yet either.

1 Like

Does this mean that there is no point in setting anything with pavucontrol, since its effects do not exist?

pavucontrol works OK with pipewire (via pipewire-pulse).

1 Like

So if I do aplay -L I do see pipewire, but how do I get runelite(alsa) application to output to it.