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