MouseTester Software Reloaded - Overclock.net - An Overclocking Community
Forum Jump: 

MouseTester Software Reloaded

Reply
 
Thread Tools
post #1 of 76 (permalink) Old 02-08-2016, 04:05 AM - Thread Starter
New to Overclock.net
 
dobragab's Avatar
 
Join Date: Jul 2015
Posts: 68
Rep: 28 (Unique: 22)
MouseTester Software Reloaded

Microe made a small software for testing mice under MIT License, but stopped developing it at v1.2. I added many useful features, here it is.

Requires .NET 4.0 Full. Note that on Windows XP you will need to install this patch, too.

Key features

You can use this to detect / measure the following sensor defects:
  • data path limit
  • perfect control speed
  • pixel skipping
  • jitter
  • low speed inaccuracy
  • unstable polling rate
  • input lag
  • acceleration

Most important changes from v1.2:
  • Dual device mode with built-in supprort for measuring input lag
  • PNG export features: non-transparent, not only 800×600
  • Automatic saving of several settings
  • Hotkey for collecting
  • Sum vs. Time plot type, just like in MouseComparator
  • Frequency vs. Time plot type

Feature requests are always welcome.

Full changelog and instructions soon in posts below.

GitHub repository
MouseTester_v1.5.3.zip 153k .zip file
Attached Files
File Type: zip MouseTester_v1.5.3.zip (152.8 KB, 10950 views)
dobragab is offline  
Sponsored Links
Advertisement
 
post #2 of 76 (permalink) Old 02-08-2016, 04:05 AM - Thread Starter
New to Overclock.net
 
dobragab's Avatar
 
Join Date: Jul 2015
Posts: 68
Rep: 28 (Unique: 22)
Basic Instructions

Quote:
Originally Posted by microe View Post

First, specify the resolution of the mouse by either typing in a value or by clicking the Measure button and following the instructions in the text box at the bottom. Helpful hint, the program does not intercept clicks or movements from the system so I usually just click in the text box area when starting the data collection.

Second, collect some mouse data by clicking the Collect button (or the Log Start button) and following the instructions in the text box at the bottom.

After that you can Plot the data you have collected using the specified cpi for calculations.

You can also save and load your data to .csv for future reference or importing into other programs like excel or [R] etc...

As far as the plots are concerned, first thing I do is window the data (to hide the garbage at the beginning and end of the collection) using the Data Point Start and Data Point End. From there it depends on the movement that was recorded.
dobragab is offline  
post #3 of 76 (permalink) Old 02-08-2016, 04:06 AM - Thread Starter
New to Overclock.net
 
dobragab's Avatar
 
Join Date: Jul 2015
Posts: 68
Rep: 28 (Unique: 22)
Plot descriptions

Quote:
Originally Posted by microe View Post

Count vs. Time: This is for looking at the raw counts from the mouse. The line is a moving average of the data and is provided as a general reference to gauge the consistency of the reporting from the mouse. For a mouse that does not loose tracking you will see the counts generally bouncing above and below the line without much deviation. If the counts deviate too much from the line then the mouse tracking may not appear smooth. If the mouse looses tracking then you will see the counts go erratic. You can also sometimes see angle snapping / prediction here (the counts will go to zero and hold there even though you moved the mouse with a slight arc). You can also see data path clipping here if the data plateaus at a fixed value (e.g. 127 for 8-bit mice). If the mouse is performing some form of multiplication for cpi boosting then you may be able to see that here as skipped counting steps.

Velocity vs. Time: This uses the time interval between updates, the cpi, and the counts to calculate the velocity of the mouse movement. Using fast swipes you can try to get the malfunction rate of the mouse here. Just like Counts vs. Time going erratic, when the tracking is lost the velocity goes erratic as well.

Interval vs. Time: This is for checking the consistency of the update rate from the mouse (i.e. 1000 Hz mouse updates every 1 ms).

X vs. Y: This is just plotting the data that you collected as a path. Like paint testing you can draw arbitrary shapes and see the exact raw mouse reports (e.g. jitter, angle snapping, stair stepping, etc...). Arbitrary movements can be used for acceleration and accuracy testing using this kind of plot as well. For example accuracy can be tested by starting from some point "A", moving the mouse (e.g. varying speed / angles) and then returning to point A. You should see the path that you moved the mouse along with the start and end points being roughly the same. You can do fast swipe / slow swipe back to the same point movements for acceleration testing. You can also do things like move the mouse in a bunch of circles and seeing if the path drifts away.
dobragab is offline  
Sponsored Links
Advertisement
 
post #4 of 76 (permalink) Old 02-08-2016, 04:06 AM - Thread Starter
New to Overclock.net
 
dobragab's Avatar
 
Join Date: Jul 2015
Posts: 68
Rep: 28 (Unique: 22)
Other Notes

Quote:
Originally Posted by microe View Post

Mice have some characteristics that we have in general classified using the following terms:

Tracking Speed: Moving the mouse quickly is reported correctly by the mouse. Some mice when you move them too fast will lose tracking and either stop reporting entirely or spaz out and give you random reports or cap out at some count.
Move the mouse very quickly and look at the velocity. In general you should see a curve that is unbroken and maybe has some jitter at high speeds. If the velocity drops to zero or there is some garbage then the mouse lost tracking. The highest velocity along the curve that still looks okay is in general the max tracking speed. Some mice the top of the curve is a plateau, this is indicative of internal data path saturation in the mouse sensor or firmware which results in negative acceleration. Others have used Enotus in the past, but without the data curve plotted you can't see if Enotus is falsely reporting because of some garbage or jitter from the mouse.

Acceleration: Moving the mouse the same distance fast results in different total reported counts than when we move it slow. Can be positive (moves farther the faster the mouse moves) or negative (moves less the faster you move the mouse).
Move the mouse fast in one direction and then move the mouse slow back to exactly the original position. If you plot the X-Y you should see the mouse counts return exactly back to the origin. You can also do this test in game and there are some youtube videos of in-game tests.

Jitter: Moving the mouse in a relatively straight line results in an inconsistent (random staircase) movement.
Move the mouse slowly in a diagonal motion and view the data in the X-Y plot. You are looking for big stair-step or non-linearity along the path. Look around for old Razer Abyssus paint plots.

Angle Snapping/Prediction/Drift Control: This one has been called a few things but in general it is the mouse reporting straight line movement even when the user might have meant to draw a slight angle or curve.
You can sometimes see this during the fast swipes for max tracking rate. The "Y" reports from the mouse will go to zero and hold there (which is highly unlikely from swiping your mouse fast). The other way is to draw a circle and see if the mouse "forces" a straight line. People have done this in paint or you can do this with the X-Y plot and capturing a circle. One of the nice things with my tool is you can draw the shapes in paint and then plot the corresponding raw data with my tool, as long as it is one complete motion and you hold the button down the entire time.

Excessive Anti-Jitter: Moving the mouse slightly or very slowly from a standstill may result in a delay or no movement registration.
Move the mouse very slowly and see what the counts reports look like. This one is kind of hard to test.

Polling Rate Consistency: Move the mouse and see if the report rate from the mouse is consistent at the supposed setting (125, 500, 1000 Hz). Some mice have had a problem with 1000 Hz in the past.
Just move the mouse around and plot the interval. It should be a relatively straight line at the desired report rate. 1ms = 1000 Hz of course. There are other report rate measuring tools out there.

Interpolation: Scaling the counts from a mouse to one that is not native to the sensor. Magnified counts is a form of interpolating CPI up, while halving counts can be seen as a form of interpolating down. Doesn't have to be a power of two, can be any factor since it's just math. Mouse driver sensitivity slider is a form of interpolation that runs on the PC.
This one you can't really see with my tool alone. If I had an oscilloscope and captured the communications from the sensor to the mouse microprocessor and compared that to the counts from the microprocessor reported to the PC then I could see if the mouse microprocessor is interpolating the data.

Measuring CPI: 400 DPI/CPI isn't necessarily 400 CPI! Due to manufacturing tolerance and other factors the CPI that you set may not be exact. You can use my tool to measure the "real" CPI and compare that to the "desired" CPI setting. Some mice are way off, others are dead on. Ruler + counts doesn't lie, but of course take into account human error and maybe do some averaging. Moving the mouse quickly is reported correctly by the mouse. Some mice when you move them too fast will lose tracking and either stop reporting entirely or spaz out and give you random reports or cap out at some count.
Move the mouse very quickly and look at the velocity. In general you should see a curve that is unbroken and maybe has some jitter at high speeds. If the velocity drops to zero or there is some garbage then the mouse lost tracking. The highest velocity along the curve that still looks okay is in general the max tracking speed. Some mice the top of the curve is a plateau, this is indicative of internal data path saturation in the mouse sensor or firmware which results in negative acceleration. Others have used Enotus in the past, but without the data curve plotted you can't see if Enotus is falsely reporting because of some garbage or jitter from the mouse.

Smoothing/Frame-Induced Delay:This is a new one that has come up recently but unfortunately it is very difficult to measure, the following is my somewhat simplified understanding of the process. The mouse sensor acquires images of the surface called "frames". The frame rate of the sensor may or may not be constant. There are signal processing algorithms that takes these frames and translates them into counts. Depending on the signal processing algorithm there is an inherent latency from when the movement occurs to when the sensor has the counts available in the motion registers (frame delay). These counts are acquired from the sensor by an external microcontroller which accumulates these counts, optionally does some additional processing, finally sending a value to the PC on the next USB poll.
dobragab is offline  
post #5 of 76 (permalink) Old 02-08-2016, 04:06 AM - Thread Starter
New to Overclock.net
 
dobragab's Avatar
 
Join Date: Jul 2015
Posts: 68
Rep: 28 (Unique: 22)
Changelog

Quote:
Originally Posted by microe View Post

Changes in v1.1, February 15, 2015
  • Fix for log file save region decimal symbol
  • Added logging mode
  • Set processor affinity to core #2

Changes in v1.2, July 29, 2015
  • Fixed up description handling for plot and save
  • Report total number of events collected
  • Report X/Y displacement from start in counts and distance
  • Report piece-wise linear total path length in counts and distance
  • Added line / stem options to plots

Changes in v1.3, November 2, 2015
  • Dual Mouse mode, with built-in support for measuring input lag
  • Added PNG features: fixed size / variable size; transparent / white background
  • Frequency vs. Time plot

Changes in v1.4, January 6, 2016
Remembers the following user settings, stored in config.ini:
  • Lines
  • Stem
  • Transparent PNG
  • Fixed size PNG
  • Maximized or not
Note that it needs write access to config.ini to work properly.

Changes in v1.5, Feburary 8, 2016
  • Added Sum vs. Time plots, useful for measuring acceleration
  • Saves window position, name and CPI of the mice
  • Hotkey for Log Start / Log Stop

Changes in v1.5.3, February 11, 2016
  • Fixed crash that occured when Windows was set to anything but 96 DPI
  • Ugly bugs fixed that nobody noticed but myself
dobragab is offline  
post #6 of 76 (permalink) Old 02-08-2016, 04:10 AM - Thread Starter
New to Overclock.net
 
dobragab's Avatar
 
Join Date: Jul 2015
Posts: 68
Rep: 28 (Unique: 22)
FAQ

Quote:
Originally Posted by microe View Post

Some anti-virus software will flag this program because it probably looks like a keylogger and/or because of the hooks into win32 libraries. Full source code is available in case you want to compile your own binary. All you need is the (as of this post still available and still free from Microsoft) Visual C# 2010 Express.
dobragab is offline  
post #7 of 76 (permalink) Old 02-09-2016, 12:35 PM
New to Overclock.net
 
Join Date: Apr 2011
Location: Germany
Posts: 1,648
Rep: 122 (Unique: 91)
nice, but it doesn't work here. frown.gif
It always gives me an error when i click on "plot".


thuNDa is offline  
post #8 of 76 (permalink) Old 02-09-2016, 12:53 PM
New to Overclock.net
 
HAGGARD's Avatar
 
Join Date: Jun 2013
Posts: 657
Rep: 56 (Unique: 44)
Works for me on Windows 7.

Another thing I noticed: Throughout the logging we can keep plotting the results - we just have to keep hitting "Plot". So, isn't continuous plotting, i. e. live-updating the graph, just one step away from that? That would be pretty cool. tongue.gif
HAGGARD is offline  
post #9 of 76 (permalink) Old 02-09-2016, 02:03 PM
New to Overclock.net
 
SweetLow's Avatar
 
Join Date: Jan 2016
Posts: 487
Rep: 55 (Unique: 31)
Quote:
Originally Posted by thuNDa View Post

nice, but it doesn't work here. frown.gif
It always gives me an error when i click on "plot".
Same here. Look like problem when .NET 4.6 on system.
p.s. v1.4 and v1.5 have problem, v1.3 - no.
SweetLow is offline  
post #10 of 76 (permalink) Old 02-09-2016, 02:37 PM
New to Overclock.net
 
SmashTV's Avatar
 
Join Date: Sep 2014
Location: Innovation
Posts: 1,723
Rep: 58 (Unique: 45)
Thanks for the contribution!

Software working here on 8.1 x64

MX518 Legendary
Nixeus Revel
Logitech G603 (91g)

Allsop Raindrop XL
Razer Goliathus Speed
SmashTV is offline  
Reply

Quick Reply
Message:
Options

Register Now

In order to be able to post messages on the Overclock.net - An Overclocking Community forums, you must first register.
Please enter your desired user name, your email address and other required details in the form below.
User Name:
If you do not want to register, fill this field only and the name will be used as user name for your post.
Password
Please enter a password for your user account. Note that passwords are case-sensitive.
Password:
Confirm Password:
Email Address
Please enter a valid email address for yourself.
Email Address:

Log-in



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Show Printable Version Show Printable Version
Email this Page Email this Page


Forum Jump: 

Posting Rules  
You may post new threads
You may post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off