usb/125264: [patch] sysctl for set usb mouse rate (very useful for gamers - FPS games)

vvd at quakeworld.ru vvd at quakeworld.ru
Fri Jul 4 15:00:12 UTC 2008


>Number:         125264
>Category:       usb
>Synopsis:       [patch] sysctl for set usb mouse rate (very useful for gamers - FPS games)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-usb
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jul 04 15:00:09 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     VVD <vvd at quakeworld.ru>
>Release:        FreeBSD 7.0-STABLE i386
>Organization:
no
>Environment:
System: FreeBSD vvd.home 7.0-STABLE FreeBSD 7.0-STABLE #0: Tue Jul 1 04:39:52 MSD 2008 root at vvd.home:/usr/obj/usr/src/sys/VVD2 i386
Platform independent patch.
Tested on: i386, motherboard ASUS P4P8X, mice Logitech MX300 and Logitech G5, game ezQuake 1.9.

>Description:
Add "options UMS_HZ=<INT_VALUE>" in kernel config.
USB mouse rate: value from 1 to 1000, other values set default rate - mouse specific.
Most mice suport till 250Hz and 500Hz. Greater value - smoother movements.
Some of "professional gaming" mice support 1000Hz and have default rate 500Hz.
User can to change this value using sysctl hw.usb.ums.hz.
For applying it user must take out mouse and insert it back.

>How-To-Repeat:
Use usb mouse. :-D

>Fix:

--- ums_hz.diff begins here ---
--- sys/conf/options.orig	2008-07-01 04:22:39.000000000 +0400
+++ sys/conf/options	2008-07-01 04:22:45.000000000 +0400
@@ -621,6 +621,7 @@
 UPLCOM_INTR_INTERVAL	opt_uplcom.h
 UVSCOM_DEFAULT_OPKTSIZE	opt_uvscom.h
 UVSCOM_INTR_INTERVAL	opt_uvscom.h
+UMS_HZ			opt_ums.h
 
 # Embedded system options
 INIT_PATH
--- sys/dev/usb/ums.c.orig	2008-06-16 19:51:35.000000000 +0400
+++ sys/dev/usb/ums.c	2008-07-01 04:23:41.000000000 +0400
@@ -69,6 +69,13 @@
 
 #include <sys/mouse.h>
 
+#include "opt_ums.h"
+#ifdef UMS_HZ
+static int ums_hz = UMS_HZ;
+SYSCTL_NODE(_hw_usb, OID_AUTO, ums, CTLFLAG_RW, 0, "USB ums");
+SYSCTL_INT(_hw_usb_ums, OID_AUTO, hz, CTLFLAG_RW, &ums_hz, 0, "");
+#endif
+
 #ifdef USB_DEBUG
 #define DPRINTF(x)	if (umsdebug) printf x
 #define DPRINTFN(n,x)	if (umsdebug>(n)) printf x
@@ -700,7 +707,12 @@
 	err = usbd_open_pipe_intr(sc->sc_iface, sc->sc_ep_addr,
 				USBD_SHORT_XFER_OK, &sc->sc_intrpipe, sc,
 				sc->sc_ibuf, sc->sc_isize, ums_intr,
-				USBD_DEFAULT_INTERVAL);
+#ifdef UMS_HZ
+				(ums_hz > 0 && ums_hz <= 1000) ? 1000 / ums_hz : USBD_DEFAULT_INTERVAL
+#else
+				USBD_DEFAULT_INTERVAL
+#endif
+				);
 	if (err) {
 		DPRINTF(("ums_enable: usbd_open_pipe_intr failed, error=%d\n",
 			 err));
--- sys/conf/NOTES.orig	2008-07-02 01:00:01.000000000 +0400
+++ sys/conf/NOTES	2008-07-02 01:06:12.000000000 +0400
@@ -2431,6 +2431,12 @@
 device		umodem
 # USB mouse
 device		ums
+# USB mouse rate (1 to 1000, other values set default rate - mouse specific).
+# Most mice suport till 250Hz and 500Hz. Greater value - smoother movements.
+# Some of "professional gaming" mice support 1000Hz and have default rate 500Hz.
+# You can to change this value using sysctl hw.usb.ums.hz.
+# For applying it you must take out mouse and insert it back.
+options		UMS_HZ=-1
 # Diamond Rio 500 MP3 player
 device		urio
 # USB scanners
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-usb mailing list