Overclock USB Controllers Polling Rate - eniva/MisSTer_Guides GitHub Wiki

USB controllers usually have an interval value which the host (MiSTer Linux kernel) respects to poll their inputs at. Most of USB devices can actually perform better by being polled more often without any side effects.

Here's a well-sampled test result of default polling vs. overclocked polling:

(test and graph provided by jorge)

For more results, click here!

Download the Enex Linux kernel

DOWNLOAD PAGE(https://github.com/eniva/MisSTer_Guides/wiki/Enex-Linux-Kernel)

Contents of u-boot.txt

v=loglevel=4 usbhid.jspoll=1 xpad.cpoll=1

loglevel You can set this to 9 to get debugging messages with dmesg command via SSH. When you connect your controller, type that command to see what polling rate was applied to your controller. 4 is default.

usbhid.jspoll is interval for USB HID controllers, usually DirectInput. 0 is default: uses the requested value from the controller.

  • 0 is default: uses the requested value from the controller.
  • 1 is recommended, but if you ever encounter any issues, try higher integer values. This shouldn't go above 8.

xpad.cpoll is interval for USB XInput controllers. Most popular controllers use this. There is no practical difference here. XInput is for Microsoft's Xbox consoles and PC.

  • 0 is default: uses the requested value from the controller.
  • 1 is recommended, but if you ever encounter any issues, try higher integer values. This shouldn't go above 8.

btusb.bpoll is interval for Bluetooth controllers.

  • 0 is default: uses the requested value from the controller.
  • 1 is recommended, but if you ever encounter any issues, try higher integer values. This shouldn't go above 8.
  • This value is not implemented yet, but coming soon. It is normal to not have this in your u-boot.txt as of now.

If you put it too high (e.g. 64), a lot of controllers will just work at their default interval.

The regular interval for USB controllers is usually 4 ~ 8ms. On this black magic chapter, we will set it to 1ms for pretty much 99.99% of the controllers out there or 0.125ms for high/super speed controllers.

When changing this file, please make sure there is a new empty line. The file MUST use UNIX ending!

You must reboot MiSTer for changes to take effect.

Procedure

  1. Place zImage_dtb & u-boot.txt from the zip in your SD card's "linux" folder. Full path is "/media/fat/linux".
  2. Reboot your MiSTer.
  3. That's it! Enjoy your improved USB controllers.

Double-Input issues

With this setting, it's possible OSD will now start responding to faster inputs (such as double input). There is a MiSTer_Enex binary that you can download to avoid this. Simply rename the file "MiSTer" in your MicroSD root to something else (because it won't let you delete it first), grab the MiSter_Enex binary from here. This binary does more than fixing doulbe-inputs. The link has full list of features. MiSter_Enex is actively being maintained. To see what version from the main it is based on, just check on the dates on that download page.

How to identify which controller isn't working at the fastest polling

There is no way to know until you plug in your controller with the settings above. It would behave weird, and you will be able to tell quite easily. However, we have not seen any controllers that wouldn't work with the value so far.