My discovery that the USB mouse polling rate matters

October 30, 2015

I mentioned recently that I had found a PS/2 to USB converter that worked for my keyboard, but it made my PS/2 mouse kind of jerky and stuttery. Over the past few days I've discovered why that is so, which is unfortunately kind of bad news for me with this converter.

As you might have guessed from my sudden interest in Linux's mouse polling rate, my problem turns out to be that a PS/2 mouse that's run through the PS/2 to USB converter does not have a high enough polling rate. Courtesy of evhz, I can put actual numbers on this for all of the mice I have handy. With default settings for mouse polling, my scroll wheel mouse runs at 125 Hz, my PS/2 mouse claims a 90 Hz rate when connected to the PS/2 mouse port, and for the PS/2 to USB converter I get a rate that jumps back and forth between 31 Hz and 41 Hz. Increasing Linux's mouse polling to 500 Hz increases the rate of real USB mice to that, but it doesn't really change the performance of the PS/2 to USB converter; evhz still has it at an average of about 36 Hz.

This, it turns out, is nowhere near as fast as it needs to be in order to be really smooth. A 36 Hz average rate is just good enough that the mouse mostly performs reasonably well; it's not obviously terrible or anything. Instead it's just subtly jerky from time to time. I could almost imagine it or persuade myself that it wasn't there (and I did off and on). But it's not good enough.

The bad news is that this is clearly an issue in the PS/2 to USB converter itself. Linux can ask it to run at whatever high rate I want, but the converter simply doesn't pass on mouse motion that fast or frequently. I'm never going to have a satisfactory mouse experience with this converter, although it's been fine for my keyboard. The good news is that I clearly don't need a special fast USB mouse in order to get the responsiveness I'm used to, at least if evhz is correct about my PS/2 mouse running at 90 Hz natively.

(According to this PS/2 mouse reference (also), PS/2 mice do natively run at 100 Hz by default unless the host changes that. Linux probably doesn't.)

This leaves me with a number of ways forward. First, I can try other PS/2 to USB converters purely for their mouse conversion, to see if they run at higher sample rates. Second, I'm trying out a HP three button optical USB mouse. So far it seems okay but perhaps not as smooth as my PS/2 mouse, which may partly be because it's an optical mouse instead of a ball mouse and I'm using it on a fairly featureless surface. All of this is enough options that I'm not really worried about things any more; mostly I'm just going to use my PS/2 mice until I don't have a PS/2 port to plug them into.

(Getting a Contour Mouse remains kind of tempting, though. If I liked it, it would be great. That 'if' is of course the problem, given their price.)

Written on 30 October 2015.
« USB mouse polling rates under Linux
In practice, anything involving the JVM is often a heavyweight thing »

Page tools: View Source, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Fri Oct 30 03:08:09 2015
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.