Re: [alsa-devel] USB Audio device syncpipe error
Well I basically understand what is wrong. Usbaudio is expecting the packet size to be 4 and the value to be encoded as 16.16 because the device is operating at high speed. I made the change and my device now shows up properly as an output device and playback works but the feedback polling interval is incorrect.
Since the feedback endpoint descriptor is not class specific I can see why one would expect it to be a usb 2.0 standard endpoint descriptor, however, that would mean I should also change my other audio streaming endpoint descriptors.
Unfortunately, I'm not sure the proper way to fix this - any advice would be appreciated.
Cheers
On Thu, Sep 9, 2010 at 10:04 AM, 6275 kson 6275.kson@gmail.com wrote:
On Thu, Sep 9, 2010 at 2:50 AM, Clemens Ladisch clemens@ladisch.dewrote:
6275 kson wrote:
cannot submit syncpipe for urb 0, error -90: internal error
Documentation/usb/error-codes.txt says: | -EMSGSIZE (a) endpoint maxpacket size is zero; it is not usable | in the current interface altsetting. | (b) ISO packet is larger than the endpoint maxpacket. | (c) requested data transfer length is invalid: negative | or too large for the host controller.
So, what is the sync packet size?
The packet size is 3.
The descriptor used for High Speed is essentially the same as the full speed descriptor except we have adjusted the endpoint polling rates so they match the full speed rate (1ms).
Thanks for your help,
On Thu, Sep 09, 2010 at 04:51:45PM -0500, 6275 kson wrote:
Well I basically understand what is wrong. Usbaudio is expecting the packet size to be 4 and the value to be encoded as 16.16 because the device is operating at high speed. I made the change and my device now shows up properly as an output device and playback works but the feedback polling interval is incorrect.
Since the feedback endpoint descriptor is not class specific I can see why one would expect it to be a usb 2.0 standard endpoint descriptor, however, that would mean I should also change my other audio streaming endpoint descriptors.
Unfortunately, I'm not sure the proper way to fix this - any advice would be appreciated.
Hmm, I don't get your point. Why don't you just change the bInterval field of your endpoint descriptor? Does your device work with OSX, for example?
Daniel
6275 kson wrote:
Well I basically understand what is wrong. Usbaudio is expecting the packet size to be 4 and the value to be encoded as 16.16 because the device is operating at high speed. I made the change and my device now shows up properly as an output device and playback works but the feedback polling interval is incorrect.
What interval do you expect in this situation, and what interval do you actually get?
Since the feedback endpoint descriptor is not class specific I can see why one would expect it to be a usb 2.0 standard endpoint descriptor,
Yes, the UAC 1.0 spec cannot override the USB spec in this regard.
however, that would mean I should also change my other audio streaming endpoint descriptors.
Which other descriptors? AFAICS, the only other thing that is affected by high-speed is the packet size and format of the sync endpoint.
Regards, Clemens
Clemens Ladisch <clemens <at> ladisch.de> writes:
6275 kson wrote:
Well I basically understand what is wrong. Usbaudio is expecting the packet size to be 4 and the value to be encoded as 16.16 because the device is operating at high speed. I made the change and my device now shows up properly as an output device and playback works but the feedback polling interval is incorrect.
What interval do you expect in this situation, and what interval do you
Hi kson,
bInterval in HS is in terms of uFrame, ie 128us. In FS it is in Frame, ie 1ms.
Also, the feedback endpoint may be using bRefresh instead of bInterval to determine the interval to check the feedback sample rate.
I'm also implementing the async iso OUT with feedback using UAC1 at HS right now so I'm following your posts :-)
Alex
participants (4)
-
6275 kson
-
Alex Lee
-
Clemens Ladisch
-
Daniel Mack