Volume control not working on USB audio device
from monovergent@lemmy.ml to linux@lemmy.ml on 17 Jul 22:13
https://lemmy.ml/post/33304539

The device in question is the USB dongle for my 2.4 GHz wireless headset. Everything works fine except for volume control, so it is stuck at max volume, regardless of where the volume slider in pavucontrol is. Volume controls within individual websites and programs work, but it seems that the system volume control is delegated to the USB device, which itself has no concept of volume control. This is the case with both pulseaudio and pipewire. Is there a way to limit the system-wide volume before it reaches the dongle?

#linux

threaded - newest

just_another_person@lemmy.world on 17 Jul 22:33 collapse

If it’s stuck at max, then Pipewire isn’t controlling it. Try alsamixer as a different test, or maybe qasmixer. You’ll need to select the hardware id for the device to try and change it.

You might want to dig around keyword searches for your specific model and “Pipewire” to see if others have a config to sort it if the above works.

monovergent@lemmy.ml on 18 Jul 02:41 collapse

Looking up the hardware id, it seems that someone else had the same issue: github.com/alsa-project/alsa-lib/issues/401

If I’m understanding correctly, there’s no proper driver for it in the kernel yet. My workaround for now is to use the limiter in pulseeffects.

Edit: If anyone wants to know, it does work flawlessly on Android, but I have no idea if the way Android handles USB audio is relevant to desktop Linux at all.

just_another_person@lemmy.world on 18 Jul 04:06 collapse

Good find, but it’s not a kernel issue in this case. The device is recognized as “something”, and outputs audio correctly, you just need to find out where it’s getting it’s audio from, and assign a control channel through Pipewire to control the sink volume. Should be pretty easy, but will require some digging and a quick bit of learning.