]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ALSA: usb-audio: Add dB map quirk for Razer Barracuda X 2.4
authorMarkus Lindner <lindner.markus@outlook.at>
Wed, 22 Jul 2026 01:09:18 +0000 (03:09 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 24 Jul 2026 11:31:52 +0000 (13:31 +0200)
The Razer Barracuda X 2.4 GHz USB headset dongle (0x1532:0x0552)
reports a minimum volume register value of cval->min = -16800.

In UAC 1/256 dB units, -16800 corresponds to -65.625 dB. However,
stock ALSA misinterprets this raw integer as 1/100 dB units
(-168.00 dB), causing user-space audio servers (PipeWire /
PulseAudio) to map their volume curves against an incorrectly wide
range.

Add an explicit usbmix_dB_map entry overriding Unit 2 to -6562
(-65.62 dB) to accurately report the physical hardware
attenuation bounds.

Signed-off-by: Markus Lindner <lindner.markus@outlook.at>
Link: https://patch.msgid.link/AS8P195MB2142F4EFF83980BD02BA6566E1C12@AS8P195MB2142.EURP195.PROD.OUTLOOK.COM
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/mixer_maps.c

index faac7df1fbcf02158d6fee0e9ed581ce972d7623..4d8dca04f87d0892e1cf8b63bcda2eace76143f8 100644 (file)
@@ -344,6 +344,16 @@ static const struct usbmix_name_map bose_soundlink_map[] = {
        { 0 }   /* terminator */
 };
 
+/*
+ * Razer Barracuda X 2.4: Firmware reports cval->min = -16800 in 1/256 dB units
+ * (-65.62 dB), which stock ALSA misinterprets as a -168 dB floor
+ */
+static const struct usbmix_dB_map razer_barracuda_x_2_4_dB = {-6562, 0};
+static const struct usbmix_name_map razer_barracuda_x_2_4_map[] = {
+       { 2, NULL, .dB = &razer_barracuda_x_2_4_dB },
+       { 0 }   /* terminator */
+};
+
 /* Sennheiser Communications Headset [PC 8], the dB value is reported as -6 negative maximum  */
 static const struct usbmix_dB_map sennheiser_pc8_dB = {-9500, 0};
 static const struct usbmix_name_map sennheiser_pc8_map[] = {
@@ -689,6 +699,11 @@ static const struct usbmix_ctl_map usbmix_ctl_maps[] = {
                .id = USB_ID(0x17aa, 0x1046),
                .map = lenovo_p620_rear_map,
        },
+       {
+               /* Razer Barracuda X 2.4 */
+               .id = USB_ID(0x1532, 0x0552),
+               .map = razer_barracuda_x_2_4_map,
+       },
        {
                /* Sennheiser Communications Headset [PC 8] */
                .id = USB_ID(0x1395, 0x0025),