Re: Feedback endpoint poll rate
Travis <[email protected]>
| Newsgroups | gmane.comp.lib.libusb.devel.windows |
|---|---|
| Message-ID | <[email protected]> |
Greetings, I have never worked with ISO feedback endpoints. libusbK doesn't do anything special for a ISO feedback endpoint nor does it manage the polling period (bInterval). I *beleive* the polling period is managed by usbhub.sys but I'm not certain. That said, you may experiment with the following ISO pipe policies: #define ISO_START_LATENCY 0x20 #define ISO_ALWAYS_START_ASAP 0x21 ..but I don't think these are going to help you. Here is a windows specific link for dealing with ISO that might be of some use: http://msdn.microsoft.com/en-us/library/windows/hardware/hh406225%28v=vs.85%29.aspx Regards, Travis On 4/11/2014 5:30 AM, Børge Strand-Bergesen wrote: > Hi guys, > > any input appreciated on how the ep poll rate is set in a libusbK.sys driver. > > Thanks, > Borge > > On Thu, Apr 10, 2014 at 10:32 AM, Børge Strand-Bergesen > <[email protected]> wrote: >> Hi guys, >> >> I'm maintaining an audio ASIO driver for USB Audio Class 2 (i.e. >> Hi-Speed). It uses libusbK. Descriptor dump from tdd.exe attached. >> Code: https://github.com/nikkov/Win-Widget/tree/exp_asio It builds >> with VC++08. >> >> Most of it works quite well, but I have trouble setting the poll rate >> for a feedback endpoint. This ep lets the Device tell the Host if the >> latter needs to adjust the audio sample rate. That's at the core of >> asynchronous USB audio. >> >> In line 220 bInterval = 0x04. The Device uses 250us microframes. >> Regardless of what I set this bInterval to, the Windows driver polls >> the endpoint at a 1ms rate. OS X and Linux support it in built-in >> class drivers. OS X polls the ep at quite a different rate. (4 or 8ms >> if I remember correctly.) The 0x04 value is a compromize where both >> libusbK and OS X are functional. In Linux I haven't yet correlated >> bInterval to the actual poll rate. >> >> I'd like to significantly slow down the poll rate. A 32 or 64ms >> interval will probably work just fine in the application and reduce >> the load on both Host and Device. >> >> I don't know if there is a bug in the descriptor. >> >> Question: What part of the chain (OS, low-level USB driver, >> libusbK.sys, libusbk.dll, user mode application) does the actual ep >> poll timing? When parsing this value from the descriptor, how is the >> poll timing set up? >> >> I have control over the user mode application and Device firmware. And >> in both I see that correct feedback data is received and generated, >> respectively. I just don't know how to trace it through the Host and >> back to the Device. >> >> >> Thanks, >> >> Borge > ------------------------------------------------------------------------------ > Put Bad Developers to Shame > Dominate Development with Jenkins Continuous Integration > Continuously Automate Build, Test & Deployment > Start a new project now. Try Jenkins in the cloud. > http://p.sf.net/sfu/13600_Cloudbees > _______________________________________________ > Libusb-win32-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel > ------------------------------------------------------------------------------ Put Bad Developers to Shame Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud. http://p.sf.net/sfu/13600_Cloudbees