-
Notifications
You must be signed in to change notification settings - Fork 50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Isochronous transfer improvement #28
Comments
I am planning on using this driver for a long time, so if there is something broken in ISO support, the please report it. Is it all HIGH speed ISO transfers that do not work? |
Great that you are intending to support libusb0.sys for long term. I will dig out the information and carry out some tests with Cypress FX3 development board and report here. |
Some info here from libusbk website.
Winusb-like power management.
Does not support multiple configurations. |
One old proposal of improvement: |
From Travis about the libusb0.sys isoc support limitation: Using these basic transfer functions, libusbK.sys should be packing the valid bytes to the front of the transfer buffer. i.e. When the reap function returns the length, indexes 0 thru transferLength-1 contain your valid data. As you have noted, this is not necessarily true for libusb0.sys. Instead the data remains indexed in packet frames and you have no way of knowing which parts of the transfer buffer are valid. libusb-win32 does transfer splitting in the dll (libusb0.dll). This does not really work for ISO pipes on transfers larger than 64k (hard coded) because it waits for each batch to complete before submitting the next. i.e. There must always be multiple pending transfer requests. |
Travis mentioned that libusb0,sys may work with high speed isoc transfer in many cases but sometimes it will not work.
Yes, it could. And I agree that this is something we should look at One problem here is that a 'libusb_iso_packet_descriptor' is a bit There is room for improvement in libusb-win32 where iso transers are
Yes, To do this correctly it would need to be a new IOCTL. The problem
It would take some work. Support for all of this would have to be added
libusb-win32 doesn't support all iso transfer scenarios. In-fact it Regards, |
BTW, libusb0.sys works very well for super speed bulk transfer, beating WinUSB and libusbk.sys in terms of performance based on my testing and Travis' testing using Cypress FX3 development board when working on libusbk 3.0.8.0/3.1.0.0 release earlier this year. |
Reference testing results: Cypress FX2LP HighSpeed USB cystream example. |
One of the main improvement of libusbk.sys vs libusb0.sys is that it has better isoc transfer support.
libusb0.sys may only work with full speed isoc transfer and not really with high speed or super speed isoc transfer.
I am not so sure if it is worth the time to enhance the isoc support now that libusbk.sys and winusb both support isoc transfer.
The text was updated successfully, but these errors were encountered: