USB polling rate

Hi,
Do you know how to change USB polling rate by drvier?

Jeff

Impossible, it is hardcoded to the spec to be 8KHz for hi-speed and IIRC 1KHz for full and low-speed.

For interrupt pipe, the polling rate it is hardcoded in the config descriptor to be BusPollingRate/( 1 << N ), where N is some small number (1 and up).


Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com

wrote in message news:xxxxx@ntdev…
> Hi,
> Do you know how to change USB polling rate by drvier?
>
> Jeff
>

xxxxx@gmail.com wrote:

Do you know how to change USB polling rate by drvier?

Let me try to fill in the details that you have omitted here, because
the question as you have asked it does not make sense.

You are a gamer. You use a USB mouse or game controller for your
games. You read somewhere that there was a custom driver for Windows XP
that increased the “USB polling rate,” which magically made the games
more responsive. Maybe you even used it. That driver doesn’t work on
Vista and beyond, so you want to write one. Is that right?

What that driver did was replace the standard USB HID driver with one
that submitted smaller buffers. It didn’t poll any faster (it can’t do
so – that’s determined by the hardware), but by submitting smaller
buffers more often, it was able to get results back with lower latency.

They didn’t actually write a new driver. They reverse-engineered and
then patched the existing USB HID driver to reduce the buffer sizes.
That’s a fair amount of work. As far as I know, no one has yet
reverse-engineered the USB HID drivers in the later systems to do the
same thing.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

There is a program called HIDUSBF* that allows users to customize the
polling interval of USB mice and other HIDs on a per-device basis.
It consists primarily of a lower-level filter driver to HidUsb that
listens for IOCTL_INTERNAL_USB_SUBMIT_URB requests, and when an URB of
URB_FUNCTION_SELECT_CONFIGURATION arrives, sets the member bInterval of
the first endpoint descriptor of the first interface descriptor of the
configuration descriptor to a registry-supplied value. (A more robust
implementation would probably selectively search for interrupt endpoints.)
Since Windows does not allow a polling interval below 8 ms for low-speed
USB devices, the driver furthermore attempts to remove this restriction by
patching the responsible driver usbport.sys in memory.

* http://www.overclockers.ru/lab/15925.shtml;
http://sweetlow.at.tut.by/download/hidusbf.zip

On Tue, 21 Sep 2010 19:50:51 +0300, Tim Roberts wrote:
> xxxxx@gmail.com wrote:
>> Do you know how to change USB polling rate by drvier?
>
> Let me try to fill in the details that you have omitted here, because
> the question as you have asked it does not make sense.
>
> You are a gamer. You use a USB mouse or game controller for your
> games. You read somewhere that there was a custom driver for Windows XP
> that increased the “USB polling rate,” which magically made the games
> more responsive. Maybe you even used it. That driver doesn’t work on
> Vista and beyond, so you want to write one. Is that right?
>
> What that driver did was replace the standard USB HID driver with one
> that submitted smaller buffers. It didn’t poll any faster (it can’t do
> so – that’s determined by the hardware), but by submitting smaller
> buffers more often, it was able to get results back with lower latency.
>
> They didn’t actually write a new driver. They reverse-engineered and
> then patched the existing USB HID driver to reduce the buffer sizes.
> That’s a fair amount of work. As far as I know, no one has yet
> reverse-engineered the USB HID drivers in the later systems to do the
> same thing.

Thanks all, that’s really help, I’ll start from studying hidusbf.