slow USB 2.0 bulk transfer on Windows 10

%3CLINGO-SUB%20id%3D%22lingo-sub-1223102%22%20slang%3D%22en-US%22%3Eslow%20USB%202.0%20bulk%20transfer%20on%20Windows%2010%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1223102%22%20slang%3D%22en-US%22%3E%3CP%3EWe%20are%20moving%20our%20USB%202.0%20device%20from%20a%20custom%20driver%20to%20WinUSB.%20The%20device%20must%20continue%20to%20work%20with%20both%20the%20older%20driver%20and%20the%20new%20WinUSB%20approach%20so%20changing%20to%20isochronous%20for%20example%20would%20not%20be%20possible.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EIn%20our%20testing%20we%20are%20seeing%20significantly%20slower%20bulk%20transfer%20speeds%20on%20Windows%2010%20vs%20Windows%207%20-%20Windows%2010%20takes%20approximately%2060%25%20longer%20to%20transfer.%26nbsp%3B%20This%20same%20slowdown%20occurs%20whether%20we%20use%20the%20older%20custom%20driver%20or%20WinUSB.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EOur%20data%20is%20not%20large%20%3D%20~10%20Mb%2Fs%20(1%20Mb%20every%2010%20Hz%20revolution%2C%20i.e.%20100%20ms)%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EIn%20our%20base%20tests%2C%20we%20transfer%20two%20blocks%20of%20470K%2C%20one%20block%20of%2054k%2C%20and%20a%20final%20block%20of%20107k.%3C%2FP%3E%3CP%3EOn%20Windows%207%2C%20each%20470k%20blocks%20take%20just%20over%2018%20ms%20to%20transfer%20-%20overall%20~43%20ms%20for%201.1%20Mb%20transfer%3C%2FP%3E%3CP%3EOn%20Windows%2010%2C%20each%20470k%20blocks%20take%20just%20over%2029%20ms%20to%20transfer%20%3D%3D%2061%25%20longer%20-%20overall%20~70%20ms%26nbsp%3Bfor%201.1%20Mb%20transfer%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThese%20times%20were%20verified%20using%20tracing%20on%20the%20device%20running%20under%20JTAG%20control%20as%20well%20as%20a%20USB%203%20analyzer.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EIs%20there%20any%20knowledge%2C%20any%20information%2C%20any%20suggestions%20for%20the%20cause%20and%20possible%20solution%20for%20this%20significant%20difference%20in%20bulk%20transfer%20speeds%3F%26nbsp%3B%20TIA!%3C%2FP%3E%3C%2FLINGO-BODY%3E
New Contributor

We are moving our USB 2.0 device from a custom driver to WinUSB. The device must continue to work with both the older driver and the new WinUSB approach so changing to isochronous for example would not be possible.

 

In our testing we are seeing significantly slower bulk transfer speeds on Windows 10 vs Windows 7 - Windows 10 takes approximately 60% longer to transfer.  This same slowdown occurs whether we use the older custom driver or WinUSB.

 

Our data is not large = ~10 Mb/s (1 Mb every 10 Hz revolution, i.e. 100 ms)

 

In our base tests, we transfer two blocks of 470K, one block of 54k, and a final block of 107k.

On Windows 7, each 470k blocks take just over 18 ms to transfer - overall ~43 ms for 1.1 Mb transfer

On Windows 10, each 470k blocks take just over 29 ms to transfer == 61% longer - overall ~70 ms for 1.1 Mb transfer

 

These times were verified using tracing on the device running under JTAG control as well as a USB 3 analyzer.

 

Is there any knowledge, any information, any suggestions for the cause and possible solution for this significant difference in bulk transfer speeds?  TIA!

0 Replies