Skip to content
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

Find a way to enable RAW_IO WinUSB policy when running on Windows #481

Open
whitequark opened this issue Oct 29, 2023 · 1 comment
Open
Labels
software Component: software upstream Meta: something we can't change ourselves

Comments

@whitequark
Copy link
Member

whitequark commented Oct 29, 2023

References:

This is likely significantly limiting our latency numbers on Windows.

Being able to do this depends on progress in both libusb1 and python-libusb1, so this will likely take a while.

@whitequark whitequark added software Component: software upstream Meta: something we can't change ourselves labels Oct 29, 2023
@isabelburgos
Copy link
Contributor

I'm not sure why, but I found that Windows USB performance is better with the libusb-win32 driver instead of the stock WinUSB driver. I installed the libusb-win32 driver with Zadig.

With WinUSB:

I: glasgow.cli: running handler for applet 'benchmark'
I: glasgow.applet.internal.benchmark: running benchmark mode source for 8.000 MiB
E: glasgow.applet.internal.benchmark: mode source failed!
I: glasgow.applet.internal.benchmark: running benchmark mode sink for 8.000 MiB
I: glasgow.applet.internal.benchmark: mode sink: 25.59 MiB/s (204.71 Mb/s)
I: glasgow.applet.internal.benchmark: running benchmark mode loopback for 8.000 MiB
I: glasgow.applet.internal.benchmark: mode loopback: 33.04 MiB/s (264.30 Mb/s)
I: glasgow.applet.internal.benchmark: running benchmark mode latency for 8.000 MiB
I: glasgow.applet.internal.benchmark: mode latency: mean: 458.82 us stddev: 103.68 us worst: 4375.20 us

With libusb-win32:

I: glasgow.cli: running handler for applet "benchmark'
I: glasgow.applet.internal.benchmark: running benchmark mode source for 8.000 MiB
I: glasgow.applet.internal.benchmark: mode source: 42.49 MiB/s (339.91 Mb/s)
I: glasgow.applet.internal.benchmark: running benchmark mode sink for 8.000 MiB
I: glasgow.applet.internal.benchmark: mode sink: 42.49 MiB/s (339.90 Mb/s)
I: glasgow.applet.internal.benchmark: running benchmark mode loopback for 8.000 MiB
I: glasgow.applet.internal.benchmark: mode loopback: 44.33 MiB/s (354.62 Mb/s)
I: glasgow.applet.internal.benchmark: running benchmark mode latency for 8.000 MiB
I: glasgow.applet.internal.benchmark: mode latency: mean: 438.91 us stddev: 106.88 us worst: 3135.40 us

This was on Windows 11.
Specifics about this system:

  • Windows 11 Home 22H2, OS build 22621.3737
  • WinUSB version 10.0.22621.608
  • libusb-win32 version 1.4.0.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
software Component: software upstream Meta: something we can't change ourselves
Projects
None yet
Development

No branches or pull requests

2 participants