Stretch:
Buster:
As you can see, there is a difference in the volume range (Stretch: 0-9472 vs. Buster: 0-255) so that on Buster the volume can be decreased only by 1dB. On Buster now there is also some obscure message saying "set volume quirk for CM102-A+/1025+". Searching for it quickly reveals the cause of the volume difference here:
https://github.com/torvalds/linux/commi ... 4639c4caff
It seems someone wanted to fix a volume problem, but introduced another one which is now in the linux kernel driver for the CM102-A+/102S+ USB audio controller:
https://github.com/torvalds/linux/blob/ ... er.c#L1139
Long story short, I could fix the volume problem on Buster locally by reverting that change in the kernel and recompiling it directly on the Raspberry. I simply followed the guide here:
https://www.raspberrypi.com/documentati ... tml#kernel
I tried to create a DKMS module to replace the snd-usb-audio module of the kernel with my patched one, but am struggling here. Maybe someone with more DKMS experience can help? The reverse kernel patch is the following:
Update: I was now able to create a DKMS module following the example of @Anthology, so now everyone can fix their loud sounds themselves following the README here:
https://github.com/weese/Circuit-Sword/ ... und-module
Code: Select all
diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
index bb5ab7a7dfa5..344d7b069d59 100644
--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -967,6 +967,14 @@ static void volume_control_quirks(struct usb_mixer_elem_info *cval,
}
break;
-
):
- if (!strcmp(kctl->id.name, "PCM Playback Volume")) {
- usb_audio_info(chip,
- "set volume quirk for CM102-A+/102S+\n");
- cval->min = -256;
- }
- break;
-
case USB_ID(0x0471, 0x0101):
case USB_ID(0x0471, 0x0104):
case USB_ID(0x0471, 0x0105):