On 23/04/2013 00:19, Daniel Mack wrote:
On 22.04.2013 21:23, Torstein Hegge wrote:
On Mon, Apr 22, 2013 at 20:44:40 +0200, Daniel Mack wrote:
Also, the lsusb dumps don't contain a audio specific header descriptor,
which normally looks like this:

        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined

And without the "Sampling Frequency" bit in bmAttributes, the driver
will bail out early (clock.c):
I think it has the class specific endpoint descriptor, but it is in
front of the standard endpoint descriptor. From the 'lsusb -v':

       AudioStreaming Interface Descriptor:
         bLength                14
         bDescriptorType        36
         bDescriptorSubtype      2 (FORMAT_TYPE)
         bFormatType             1 (FORMAT_TYPE_I)
         bNrChannels             2
         bSubframeSize           2
         bBitResolution         16
         bSamFreqType            2 Discrete
         tSamFreq[ 0]        16000
         tSamFreq[ 1]        48000
       ** UNRECOGNIZED:  07 25 01 81 02 00 00
       Endpoint Descriptor:
         bLength                 9
         bDescriptorType         5
         bEndpointAddress     0x03  EP 3 OUT
         bmAttributes            1
           Transfer Type            Isochronous
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x00c0  1x 192 bytes
         bInterval               1
         bRefresh                0
         bSynchAddress           0

The UNRECOGNIZED bit matches the missing AudioControl endpoint
descriptor.

Even if this is against the specification, devices that does this is out
there. I have seen the same thing on a Sennheiser BTD-500, but that only
supports one frequency, so I didn't hit this problem.
But it should still complain about "no or invalid class specific
endpoint descriptor", right?

If you have time, please check the attached (totally untested) patch.
Let's see.

Yves - did you ever compile and run your own kernel? Then please also
try this patch.


I've done it a long time ago.
Can't I just apply the patch to snd-usb-audio, rebuild the module (I assume that I need the kernel headers.. what else?) and use modprobe to load it (removing the previous version first)?

Thanks,
Daniel