[alsa-devel] snd-usb-audio probe problem (Teac UD-H01)
Hi all,
the new USB DAC from Teac seems detected as 'Human Interface Device' instead of 'Audio'. Despite the fact it is based on a standard USB Audio class v2 controller (Tenor 8802).
Below is dmesg and lsusb outputs.
Does it need to apply a patch in /sound/usb/quirks-table.h ? If yes, someone could help me to write this patch, please?
Your help would be very much appreciated, Thanks in advance.
bEN
(from Ubuntu 11.04 with Linux 2.6.38-13-generic + Alsa driver 1.0.23)
$ cat /proc/asound/version Advanced Linux Sound Architecture Driver Version 1.0.23.
$ dmesg (...) [34035.000078] usb 2-4: new high speed USB device using ehci_hcd and address 3 [34035.151753] usb 2-4: config 1 has an invalid interface number: 3 but max is 2 [34035.151763] usb 2-4: config 1 has an invalid interface number: 3 but max is 2 [34035.151770] usb 2-4: config 1 has an invalid interface number: 3 but max is 2 [34035.151777] usb 2-4: config 1 has no interface number 1 [34035.155108] input: TEAC TEAC USB AUDIO DEVICE as /devices/pci0000:00/0000:00:1d.7/usb2/2-4/2-4:1.0/input/input13 [34035.155328] generic-usb 0003:0644:8038.0002: input,hidraw1: USB HID v1.00 Device [TEAC TEAC USB AUDIO DEVICE] on usb-0000:00:1d.7-4/input0 [34035.202368] Audio class v2 interfaces need an interface association [34035.202387] snd-usb-audio: probe of 2-4:1.2 failed with error -5 [34035.202426] usbcore: registered new interface driver snd-usb-audio
$ lsusb -v --> see attachment.
Dne 31.3.2012 20:19, bEN napsal(a):
Hi all,
the new USB DAC from Teac seems detected as 'Human Interface Device' instead of 'Audio'. Despite the fact it is based on a standard USB Audio class v2 controller (Tenor 8802).
Below is dmesg and lsusb outputs.
Hi, the lsusb shows both HID interface (button?) and audio interface beneath.
Pavel.
bEN wrote:
the new USB DAC from Teac seems detected as 'Human Interface Device' instead of 'Audio'.
It has both HID and audio interfaces.
Despite the fact it is based on a standard USB Audio class v2 controller (Tenor 8802).
Which doesn't prevent Teac from writing buggy firmware.
$ dmesg usb 2-4: new high speed USB device using ehci_hcd and address 3 usb 2-4: config 1 has an invalid interface number: 3 but max is 2 usb 2-4: config 1 has no interface number 1
This violates the USB spec. But I guess it shouldn't prevent the driver from attaching to the device.
Audio class v2 interfaces need an interface association
This looks like a bug in the driver; there certainly is such an descriptor. Daniel?
Regards, Clemens
On 02.04.2012 10:12, Clemens Ladisch wrote:
bEN wrote:
the new USB DAC from Teac seems detected as 'Human Interface Device' instead of 'Audio'.
It has both HID and audio interfaces.
Despite the fact it is based on a standard USB Audio class v2 controller (Tenor 8802).
Which doesn't prevent Teac from writing buggy firmware.
$ dmesg usb 2-4: new high speed USB device using ehci_hcd and address 3 usb 2-4: config 1 has an invalid interface number: 3 but max is 2 usb 2-4: config 1 has no interface number 1
This violates the USB spec. But I guess it shouldn't prevent the driver from attaching to the device.
Right, that's just a warning.
Audio class v2 interfaces need an interface association
This looks like a bug in the driver; there certainly is such an descriptor. Daniel?
The USB audio driver actually just uses functions from the USB driver core to access the interface association. However, the USB core didn't assign it during its probe, which is most probably a result of the broken descriptor set.
I'm still reading through the sources, maybe we can find a more tolerant way of handling such devices. If not, we would need to add a quirk for the device and override the descriptors that way.
Daniel
On 08.04.2012 16:23, Daniel Mack wrote:
On 02.04.2012 10:12, Clemens Ladisch wrote:
bEN wrote:
the new USB DAC from Teac seems detected as 'Human Interface Device' instead of 'Audio'.
It has both HID and audio interfaces.
Despite the fact it is based on a standard USB Audio class v2 controller (Tenor 8802).
Which doesn't prevent Teac from writing buggy firmware.
$ dmesg usb 2-4: new high speed USB device using ehci_hcd and address 3 usb 2-4: config 1 has an invalid interface number: 3 but max is 2 usb 2-4: config 1 has no interface number 1
This violates the USB spec. But I guess it shouldn't prevent the driver from attaching to the device.
Right, that's just a warning.
Audio class v2 interfaces need an interface association
This looks like a bug in the driver; there certainly is such an descriptor. Daniel?
The USB audio driver actually just uses functions from the USB driver core to access the interface association. However, the USB core didn't assign it during its probe, which is most probably a result of the broken descriptor set.
And it turned out it is.
Ben, can you try the patch below, please? It's a pretty obvious flaw in the USB core system which is triggered by buggy descriptors.
Daniel
Anyone try this yet? I have a fiio E10 and a at&t galaxy S3 rooted and ready to go. If someone builds me a flashable kernel I'll give it a go.
participants (5)
-
bEN
-
Clemens Ladisch
-
Daniel Mack
-
Patrick P
-
Pavel Hofman