host opens usb audio endpoint w/o explicitly setting sampling rate
hi - I'm testing various usb headsets. I'm finding that some versions of linux are not setting the sample rate when opening up the usb audio endpoint. I've taken traces and I see this is the case. If the HS accidentally has a "default" sample rate that matches the system, it will work. If not, there sill just be clicks and pops, what I would expect.
The HS supports several sample rates so it needs to know which to use. Do you know about any discussions regarding this issue? I've searched around quite a bit but have not found anyone diving into this question.
On windows, the host opens usb audio endpoint and explicitly sets the sampling rate of the audio endpoint. That's what the HS is "expecting".
Thanks for any help that you can offer!
I kind of wonder what exactly should be setting the sample rate? If you run 'modinfo' on the related USB modules, does one of them offer setting sample rate as an argument? If so you could add an appropriate /etc/modprobe.d/ entry. If it's not a property of a module then you may be looking at an Udev (or whatever used these days) rule? Or else a filter in whatever audio subsystem is used? (No idea about the latter BTW.)
thx for the reply unSpawn!
We seemed to have verified the suspected problem, which turns out to be that we are are not fully compliant with the usb 2.0 spec when we respond to the getCongurationDescriptor. more specifically,
(Section 9.5) states that:
1. If the class or vendor specific descriptors use the same format as standard descriptors (e.g., start with a
length byte and followed by a type byte), they must be returned interleaved with standard descriptors in
the configuration information returned by a GetDescriptor(Configuration) request. In this case, the
class or vendor-specific descriptors must follow a related standard descriptor they modify or extend.
We weren't doing that correctly and because of that, linux was not able to see the supported sample rates. (This didn't bother windows.)
|All times are GMT -5. The time now is 12:02 AM.|