Question on the snd-usb-audio kernal module

Looking at the dmesg commands shows that the newer Logitech H390 headphones is using some newer USB 2 protocol, as compared older headphones USB 1.1, but the newer headphones don’t seem to be compatible with the snd-usb-audio kernal module at this point (Linux kernal 5.14.21-150400.24.69-default). Is there a formal maintainer or maintenance group for this kernal module? Logitech is asking me to furnish them with information in regard to my linux system. (openSuse Leap 15.4)

If it is a recent device with new chipset, it may be that a newer kernel will support it. It is possible to specify a vid and pid (vendor and product identification) with this particular kernel module.

This command will show you what parameters can be specified and the existing devices it supports for a given kernel…

modinfo snd-usb-audio

This guide will show you the steps…

However, ignore the reference to /etc/modules.conf and use a custom file located in the /etc/modprobe.d/ directory instead.

Here’s where you can get information and support for the ALSA driver…
https://www.alsa-project.org/wiki/Matrix:Module-usb-audio

H370 and H390 sure they are different?
I have no issues with the H370, just need to toggle it in the mixer settings you find at the tray icon.

Can you post the dmesg Output?

sudo dmesg (old headphones)
[72334.465879] usb 1-1.3: new full-speed USB device number 16 using ehci-pci
[72335.887506] usb 1-1.3: New USB device found, idVendor=046d, idProduct=0a8f, bcdDevice= 0.12
[72335.887512] usb 1-1.3: New USB device strings: Mfr=3, Product=1, SerialNumber=0
[72335.887513] usb 1-1.3: Product: Logitech USB Headset
[72335.887514] usb 1-1.3: Manufacturer: Logitech USB Headset
[72336.655509] input: Logitech USB Headset Logitech USB Headset as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3/1-1.3:1.3/0003:046D:0A8F.0015/input/input60
[72336.714020] hid-generic 0003:046D:0A8F.0015: input,hidraw1: USB HID v1.11 Device [Logitech USB Headset Logitech USB Headset] on usb-0000:00:1a.0-1.3/input3

sudo dmesg (new headphones)
[72432.988954] usb 1-1.3: new full-speed USB device number 17 using ehci-pci
[72433.103922] usb 1-1.3: New USB device found, idVendor=046d, idProduct=0a7a, bcdDevice= 0.15
[72433.103925] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[72433.103927] usb 1-1.3: Product: Logi USB Headset
[72433.103928] usb 1-1.3: Manufacturer: Logitech
[72433.146175] usb 1-1.3: Warning! Unlikely big volume range (=2304), cval->res is probably wrong.
[72433.146179] usb 1-1.3: [7] FU [Sidetone Playback Volume] ch = 1, val = -3840/-1536/1
[72433.180951] usb 1-1.3: Warning! Unlikely big volume range (=10496), cval->res is probably wrong.
[72433.180954] usb 1-1.3: [2] FU [USB Audio Playback Volume] ch = 2, val = -10496/0/1
[72433.212798] usb 1-1.3: Warning! Unlikely big volume range (=4352), cval->res is probably wrong.
[72433.212800] usb 1-1.3: [5] FU [USB Audio Capture Volume] ch = 1, val = -1536/2816/1
[72433.214496] input: Logitech Logi USB Headset Consumer Control as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3/1-1.3:1.3/0003:046D:0A7A.0016/input/input61
[72433.273108] hid-generic 0003:046D:0A7A.0016: input,hidraw1: USB HID v1.11 Device [Logitech Logi USB Headset] on usb-0000:00:1a.0-1.3/input3

going to the /proc/asound/Headset folder and catting the usbmixer file shows some wild values:

USB Mixer: usb_id=0x046d0a7a, ctrlif=0, ctlerr=0
Card: Logitech Logi USB Headset at usb-0000:00:1a.0-1.3, full speed
Unit: 2
Control: name=“USB Audio Playback Volume”, index=0
Info: id=2, control=2, cmask=0x3, channels=2, type=“S16”
Volume: min=-10496, max=0, dBmin=-4100, dBmax=0
Unit: 2
Control: name=“USB Audio Playback Switch”, index=0
Info: id=2, control=1, cmask=0x0, channels=1, type=“INV_BOOLEAN”
Volume: min=0, max=1, dBmin=0, dBmax=0
Unit: 5
Control: name=“USB Audio Capture Volume”, index=0
Info: id=5, control=2, cmask=0x0, channels=1, type=“S16”
Volume: min=-1536, max=2816, dBmin=-600, dBmax=1100
Unit: 5
Control: name=“USB Audio Capture Switch”, index=0
Info: id=5, control=1, cmask=0x0, channels=1, type=“INV_BOOLEAN”
Volume: min=0, max=1, dBmin=0, dBmax=0
Unit: 7
Control: name=“Sidetone Playback Volume”, index=0
Info: id=7, control=2, cmask=0x0, channels=1, type=“S16”
Volume: min=-3840, max=-1536, dBmin=-1500, dBmax=-600
Unit: 7
Control: name=“Sidetone Playback Switch”, index=0
Info: id=7, control=1, cmask=0x0, channels=1, type=“INV_BOOLEAN”
Volume: min=0, max=1, dBmin=0, dBmax=0

Going to the audio controls under the speaker icon in the system tray, I was able to drop to pure analog settings and using strictly the USB 1.1 port ( I have one on my HP420 workstation front panel) I was able to get the new H390 work along with the analog microphone, so I am comfortable going forward with this. But if a user has only USB 2 (or even USB 3) ports they might be in trouble.

1 Like

Thanks for the update. At least it is apparently supported by the USB sound module. Your opening post suggested that it might not be. I assume that it is matched against this generic alias using the audio class descriptor instead (rather than via a specific chipset alias):

alias:          usb:v*p*d*dc*dsc*dp*ic01isc01ip*in*

Anyway, there is a way to force USB1.1 (by unloading the echi_pci module for example), but not ideal). Here’s an old discussion, showing how to target one specific port…