Hi there
We have a USB1 audio device that has various alternate settings allowing
different channel configurations.
When I open the needed alternate, I get the following message if I ask for too
high bandwidth (though the USB2 available theoretical bandwidth is more than
big enough)
> There is not enough USB isochronous bandwidth to allow the device "xxx" at
> location 0xfa130000 to function in its current configuration (requested 838
> bytes for endpoint 0x83 )
If I check the available bandwidth, the reply is 5376.
If I check the maxPacketSize value, I get 838.
There is no error returned value, neither when opening the interface or calling
GetPipeStatus.
The USB device interface guide explains that, in the user space, the correct
procedure should be
...
• Call SetAlternateInterface (available in OS X version 10.0 and later)
to create the desired interface and allocate the pipe objects.
• Call GetPipeProperties (available in OS X version 10.0 and later) on
the chosen isochronous endpoint. This is a very important step because
SetAlternateInterface will succeed, even if there is not enough bandwidth for
the endpoints. Also, another device might have claimed the bandwidth that was
available at the time the GetBandwidthAvailable function returned. If this
happens, the maximum packet size for your chosen endpoint (contained in the
maxPacketSize field) is now zero, which means that the bandwidth is no longer
available.
How should I proceed in a kernel driver to detect this error?
Thanks in advance
Eric Gorouben
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Usb mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/usb/archive%40mail-archive.com
This email sent to [email protected]