Thursday, February 14, 2008

CS:S Mouse Optimization Guide

There seems to be a fair amount of misunderstanding about mouse related concepts like resolution, in game sensitivity, acceleration, USB report rates, Windows settings, etcetera.

I have created this guide to give comprehensive information on about how to make whatever mouse you currently have, provide the best response, control and smoothness in Counter-Strike: Source. Although this is specifically for CS:S many of the tips may be useful for all FPS games.

Some of this guide is my personal opinion about things, but I will say so if it is. Most of the it however, is proven knowledge about the way to tweak a mouse and optimize it's settings. I consider myself an expert in this subject, as my college major is electrical engineering. I also know an engineer who works for Logitech and have learned a lot from him as well.

Now about the tweaking, whenever you make a major change (such as turning off acceleration for the first time) you will probably play worse before adjusting to it. It is no different than anything. Just stick with it for a few days and practice in CSSDM to see if you improve. You will.

Last but not least, make a system restore point so you have a way to restore your computer back to previous settings if any tweak causes trouble. And I apologize for not getting the second chapter out sooner, but as you will see the added effort I put into it was extremely worth it.

Table of Contents
Basic Optimization
1.1 - Disable mouse acceleration.
1.2 - Adjust Windows mouse properties.
1.3 - Adjust driver specific control panels.
1.4 - USB vs. PS/2 ports.
1.5 - DPI related to in-game sensitivity.
1.6 – Find a good sensitivity.
1.7 - CS:S startup commands.
1.8 - In-game console commands.
1.9 - Pros & Cons for installing mouse drivers.

Advanced Optimization
Warning some tweaks may be risky!
2.1 - Measure mouse report rate.
2.2 - Overclock your USB port.
2.3 - Remove extra weight from MX500/MX510.
2.4 - Update mouse firmware.
2.5 - Advanced Mouseware control panel.
2.6 - Maximize monitor refresh rate.
2.7 - Boost PS/2 port performance.
2.8 - Quick mouse sensitivity switch binding.
2.9 - Reducing mouse lag or delay.
2.10 - Finding the PERFECT sensitivity

Basic Optimization (Updated)

1.1 - Disable mouse acceleration.

It is absolutely vital to disable all mouse acceleration when playing Counter-Strike. With acceleration on, you will not be able to play consistently. For example, you might move the mouse 6 inches to turn 180 degrees, then you move the mouse 6 inches another time, and depending on how fast you move the mouse you might turn 100 degrees, you might turn 270. This uncertainty in mouse response inevitably limits everyone's potential.

The easiest way to make sure any variable mouse sensitivity is disabled is to uninstall your mouse driver from the 'Add or Remove Programs' part of control panel, afterwards in mouse properties uncheck 'Enhance Pointer Precision'.

After doing this, some residual acceleration may remain, as Windows gives no way to completely eliminate all cursor acceleration from the control panel. This is where the CPL mousefix comes in. To use the CPL mousefix simply unzip the folder and click on the .reg file and say yes to anything that comes up. All it does is change two lines in your system registry to completely stop all mouse acceleration. Remember if you have used Mouse Acceleration for sometime, and have gotten used to it, this is one of the hardest settings changes to get used to. It is completely worth it to adapt to playing without accelleration, so stick with it and you will slowly notice the improvement.

You can download it, (at any of the links)

You can remove it, BUT ONLY AFTER you have given it an honest effort for like a week,

1.2 - Adjust Windows mouse properties.

When I see people list their mouse settings, many players are putting themselves at a big disadvantage. Windows has a slider for setting pointer speed, but that doesn't mean gamers should use it. The reason is that changing a setting here can in no way make up for the dpi (resolution in counts per inch) a mouse has or doesn't have. Increasing the pointer speed even one notch, will make your cursor skip pixels. Losing pixel accuracy is not worth it when sensitivity is adjustable in-game. Lowering the setting here, throws away dpi from the mouse forcing you to use a use a higher, less precise sensitivity in-game.

At the highest setting, the cursor goes two pixels for each count. If you open up MS Paint, use the pencil tool, swing the mouse around to make circle patterns and notice how terribly notchy the edges are. This is not normal aliasing if you have the wrong settings in mouse properties it will make easily visible notches, not jaggies, it will look like teeth from a saw blade or something else bad. This is not the same as the normal stair steps on the edges of non antialiased graphics.

On the other hand, if you reduce the pointer speed setting, even by one notch, you get two different mouse sensitivities and your cursor will move, slowly to the right, and faster to the left. This is probably even worse than raising it, so KEEP THIS ON DEFAULT!! The default setting is the 6th notch in the middle and it wont interpolate or filter your mouse inputs, so you get the dpi your mouse is advertised. This may take some getting used to but it's worth it, you need to live with it if you do not want your per pixel targeting or sane mouse response compromised.

You can clearly see the differences between these settings in my screenshots (Windows x64):

In the normal 32-bit windows the 6th notch is also the default and optimal setting. This is because raising it doesn't make a mouse have more dpi, so it's faster at the expensive of desktop precision and lowering it throws away dpi not using your mouse's full potential, and by setting sensitivity higher to compensate you've lost in-game precision.

(click on the image to see it in it's original size)
In addition there are similar problems with tracking like in Windows x64, but not nearly as pronounced. For example when you raise sensitivity you still get notchiness but you can't see it as much until you start making slower precise movements in paint. When you change the sensitivity it is near impossible to perceive but if you do the mouse looping exercise the cursor falls slowly to the lower left during about a minute of looping. So I am 100% positive you have multiple sensitivities in different directions, it's faster to the downward left. I tested this carefully with my mice. Even started in the bottom left corner of my mouse pad where I had no where to go in that direction, the looping slowly drifted that direction anyways. It's not nearly as dramatic in windows XP x64 but my reccommendation stands without need of correction to use the default 6th notch.

And there is no formula for changing between different windows sensitivities because I don't know the scaling values the OS uses.

1.3 - Adjust driver specific control panels.

If you've not installed or have uninstalled your mouse drivers you can skip to Section 1.4!

Although I recommend against installing the drivers on most mice. I will briefly cover how to optimize the driver control panels for people who have installed their mouse drivers. The above settings usually have limited or no effect on such systems. First make sure any mouse acceleration settings are turned off completely, and if there is an option so you can have acceleration on the desktop but not in games, I recommend you turn it off as you need to be used to no acceleration all the time.

The same problems of section 1.2 will apply to most all mice and drivers. The cold truth of the matter is that raising your pointer speed in a control panel or driver, does not and can not make up for the true physical dpi limitations of your mouse. If you do try increasing your pointer speed and still have precise pixel targeting, you are getting the faster response through some sort of mouse acceleration where the mouse does it's native speed until a certain unknown point where it speeds up and becomes non linear. With Logitech Setpoint, the mouse shows acceleration even if you increase pointer speed one notch and even have acceleration turned off, including within the driver. I tested this myself.

So I advise you to put this on the middle setting or the mouse defaults. I have checked in SetPoint, Mouseware and IntelliMouse and it sometimes is possible to get the ideal pure raw input from the mouse without it being accelerated, interpolated sped up or slowed down. If you wish to decrease the mouse speed, I advise against this. Especially for people who play CS:S at higher screen resolutions or faster sensitivities. Lowering the pointer speed in the driver is basically throwing away valuable mouse inputs, which will hurt you in the end if you want smooth as possible aiming with a wide range of sensitivities in the game. You will also get the issue with different speeds in different directions problem from 1.2 although it will be very much unnoticable for the most part.

1.4 - USB vs. PS/2 ports

Many mice include a USB to PS/2 adapter or vice versa when you get them. So the question of what port is better to plug into may arise. There is not an ideal port to plug every mouse into. PS/2 is the standard mouse interface that's existed as long as I've been playing games, USB is newer. The default report rate for USB is 125hz and for PS/2 it is 100hz, so if you aren't tweaking anything USB is going to be 25% faster and you may or may not feel that performance. Now I will just list the pros and cons of each interface. Give either one a try and see which you prefer using.

PS/2 Mouse Port
  • You free up a USB port on computers without many USB ports.
  • When you increase the report rate on a PS/2 port, it only effects the mouse.
  • The way to overclock a PS/2 port is a little easier to do than overclocking a USB port.
  • PS/2 mice can't be plugged in when the computer is on.
  • The performance is really slow at just 100hz, until you do some tweaking.
  • You often can't overclock the port to as high of speeds.
  • Sometimes buttons besides the scroll wheel and the main 5 may not function without the driver.
  • Some optical mice may not turn off their sensor even if you power down your system which wastes energy.
USB Port
  • USB works a little faster by default, and can be overclocked to 250, 500 or 1000hz.
  • Turns off when your computer turns off.
  • If the mouse is designed for USB most features will work correctly with just the windows driver.
  • New mice like the G5 or Krait may automatically work at a higher frequency like 500hz or 1000hz.
  • Overclocking your USB bus may affect every USB device on your computer, which may cause problems if other devices can't handle the speed.
  • The way to overclock a USB port takes longer and more expertise than PS/2 which has a setting right in Device Manager.
  • Some computers may only have 2 or 4 USB ports if they are very old, and this uses one up.

Anyways I advise you use USB for the very best performance, unless you have no other choice. A higher report rate makes your cursor movement smoother, especially when you are aiming quickly. However try both interfaces if you want to and decide which works best for you.

1.5 - DPI related to in-game sensitivity

If your mouse does NOT have adjustable dpi then you can skip this chapter if you want to!

People who do not use the driver may have preset options like: 400, 800 or 1600dpi. The important thing is to use the full capability of the mouse when playing CS:S. No matter what sensitivity you play the game at, you really should use your mouse on it's highest dpi setting while in-game. This gives the finest precision and makes movement feel noticeably smoother. The only exception to this rule is players using a very low sensitivity may sometimes be able to reduce negative acceleration at a lower dpi setting.

Although this is certainly not a rule. For example, the best low sensitivity mouse made, the DeathAdder, has a glitch that causes it to have worse tracking and more negative accel at less than it's maximum 1800dpi. Using less than the maximum will not fix skipping, only negative acceleration. (move the mouse so you turn 180 degrees, measure the distance moved, move the mouse very quickly so you turn 180 degrees, if it takes farther, thats negative accel) Laser and other bad mice may tend to skip at high speeds regardless of what dpi they are using. In general though I still recommend you use the maximum dpi of a mouse.

The reason why you perhaps haven't used the highest resolution of the mouse is because you found a sensitivity that you like and don't want to mess it up by making the mouse faster. Here is a formula for calculating what your new in-game sensitivity should be when you switch dpi settings:

[(Current dpi) x (In-game sensitivity)] / (Maximum dpi) = (New Sensitivity for max dpi)

Using this formula you wont change the overall sensitivity in CS:S. For example if I'm using a 400dpi mouse at in-game sensitivity 0.750, and then I buy a Razer DeathAdder, I will use it at 1800dpi but reduce my in-game sensitivity to 0.167 and my overall sensitivity stays just as slow. (~25 inches to turn 180)

Just because some mice can do a very high dpi, does not mean you should upgrade to them for dpi alone. There is a simple formula for approximating how much dpi your mouse actually needs to have to not cause any problems with precision. The ideal is that each input from the mouse turns you just one pixel or less on the game screen. This formula works because the standard CS:S field of view is 90 degrees at a 4:3 aspect resolution. The number of vertical pixels is the second number in your resolution. (like 768 in 1024x768 or 1200 in 1920x1200)

[(Vertical # of pixels at in-game resolution) x 2.667] / (inches needed to make a 180 turn) = (Necessary DPI)

This shows how much dpi is actually useful for the sensitivity and resolution you wish to play at. For example if I play at 1024x768 and want to turn 180 in 3 inches, it would say I need at least 700dpi to do that and still have pixel accuracy inside the game.

At higher sensitivities and resolutions there is certainly some benefit of extra dpi. Once you go beyond what this formula says you actually need there will be a point where you can't even notice it anymore. Because you get aiming precision way smaller than one pixel. An example of this would easily be sensitivity .25 at 2000dpi. A player who uses this wouldn't even notice any difference in their accuracy switching to a 400dpi mouse. Having more dpi than you need does not hinder you. Having less dpi than you need does.

This is a general guideline:
  • Low sensitivity (8+ inches to turn 180) can get away with any dpi higher than 200 without affecting the game. Maximum tracking speed is more important for these players.
  • Medium sensitivity (4-8” to turn 180) will probably want at least a 400dpi mouse but 800dpi could benefit some who play at higher than 1024x768.
  • High sensitivity (under 4”) will want at least 1000dpi and even beyond with faster settings. These players see the most benefit from more dpi.

1.6 - Find a good sensitivity.

I have to touch on this subject as there are far too many questions about it and I have my own opinion about it, but I just want to lay out some facts. Your sensitivity is a preference, low sensitivity is not always better than high sensitivity, high sens is not better than low sens. If you were to experiment around with a range of different sensitivities you would find there would probably be some sensitivity for you. You know it's a good setting if above it you play worse, and below it you play worse.

People debate about high and low sensitivity often. The benefit people most often claim about lower mouse sensitivities is that it separates looking and turning from precise movements like aiming or controlling recoil. With a low enough sensitivity you will be able to look and turn by moving your whole arm, and then precisely target and shoot moving just the hand. For some players this is very beneficial. I have also heard things like, because the arm is closer to your brain stem it takes less time for the nerve synapses to reach the muscles so you can react faster than by just moving your hand or wrist.

On the other hand higher sensitivities have advantages too. Being able to turn very quickly to defend yourself can save your life. Some players find it uncomfortable or fatiguing to have to move their arm long distances to turn. Some mice just plain can't handle the speed needed for low. Lastly if you have a small mouse surface to play on this can be an only option. I am not a high sensitivity user so there are other benefits I may be neglecting to list.

Never use a mouse sensitivity because someone else uses it. It's a preference and it varies from person to person. If you are going to use a lower sensitivity you need to have good sound to know where to be looking to minimize the slow turning disadvantage. If you're going to play a high sensitivity you need steady hands and a mouse with good DPI. On the other hand optical mice are ideal for lower sensitivity because they tend to malfunction at higher speeds. To use a really low mouse sensitivity you need to be able to move your mouse blazing fast at a moment's notice. Many pros in CS use large mouse pads with a very slow sensitivity and it takes a lot of skill to play well with such low settings.

Find a sensitivity that balances turning speed with your desire for accuracy. It also needs to be appropriate for your mouse surface, if its small you may need to go higher, if it's cloth you may need to go lower because of friction. If your mouse skips easily with quick movements go to a higher sensitivity, if it's only 400dpi stay at medium and low sens. The key concept is balance, you need one speed that embodies and makes the most of your skills and what you have to work with.

As with other settings in the guide, take some time to get used to a new setting. When you feel you are getting close to your ideal mouse sensitivity make smaller adjustments by going by .1, or even .01 until you get it perfect, spend at least 10-20 minutes practicing with a setting before tweaking it again. Good Luck.

In the Advanced chapter of the guide I have included a way that some very experienced players use to find their perfect mouse sensitivity. It takes more time to do but it will dial you in to less than .01 of your best setting. Try it. Thanks go to impuLsive for the heads up.

1.7 - CS:S startup commands.

If you have done the other tweaks above correctly, you should have no acceleration in windows. However some people are just plain superstitious! These are the 3 commands they add to their CS:S launch properties to be absolutely sure acceleration is disabled in the game.

-noforcemspd -noforcemparms -noforcemaccel

You can make these startup commands work by opening up Steam, going to 'My Games', right clicking on CS:S and going to properties, then by clicking 'Set Launch Options', and put these in. Make sure to separate different commands with a single space, and start each command with a -

1.8 - In-game console commands.

There are settings that can be adjusted from the console that you can't access or tune as finely in the game menu that may be useful.

sensitivity "3"
This changes your mouse sensitivity... pure preference obviously. The only tips I can suggest is don't put it over 13 on 640x480, 10 on 800x600, 8 on 1024x768, or 7 on 1280x1024, or 5 on 1600x1200 or you'll for sure lose single pixel accuracy. You want to avoid pixel skipping if at all possible.
m_filter "0"
Although the concept of smoothing mouse inputs over the last two frames sounds attractive, this is something you want to have set to 0. Basically by averaging your last two inputs you are watering down everything you do with the mouse. You know what to do better than the computer does. This adds a slight bit of mouse lag too. I would only recommend using this if you have a mouse that is crappy and jitters alot.
m_pitch ".022"
This determines how sensitive your mouse is on the vertical axis. When you look straight ahead the most you need to turn vertically is 90 degrees up or down, but the most you have to turn horizontally is 180 degrees left or right. This means you could potentially lower this setting and gain precision with aiming height and recoil control. Set it however you like. I use ".0165" which is 75% the default speed. Adjust in small amounts like +/- .005 and set to your preference.
m_yaw ".022"
This determines how sensitive the mouse is on the horizontal axis. If you want to adjust your sensitivity in only the horizontal direction change this in small amounts like +/- .005. Set to your preference.
m_customaccel "0"
This allows you to define a custom acceleration curve in CS:S, you don't want this so turn it off.
zoom_sensitivity_ratio "1"
This changes the sensitivity in relation to normal when you use a scope. Raising this increases the sensitivity when scoped, decreasing this setting lowers the scoped sensitivity. The setting of “2” is as fast while scoped as not scoped (like quake 3), anything higher than 2 then is a pointless setting. Many people set this between 1 and 1.2. Set it to your preference.

1.9 - Pros & Cons for installing mouse drivers.

This is a misleading title because installing the mouse drivers is not very useful. But there are Pros and Cons of doing so, but for this guide you can do most anything the driver lets you do and more without installing them.

  • Gives you a cool looking interface where you can adjust many things all in one place.
  • Puts a pretty little icon of a mouse or brand of your mouse in system tray. : P
  • Lets you bind extra buttons to keystrokes, which you can then bind to keys to use in-game.
  • Allows you to set custom dpi settings, but this may not be useful if you read section 1.5.
  • Some mice like the MX500/510 have an issue that means they are not capable of their stated dpi unless a driver is installed.
  • Razer's drivers let you turn off the colored lights, make additional profiles and use less memory.
  • You can actually cross install mice drivers like installing Razer Copperhead Drivers on a MS Habu for example. Or Intellipoint drivers on a MX518.
  • May make you later wish you had not installed the mouse driver.
  • Can use up a fairly large amount of memory and loads on start up slowing down bad PCs.
  • Some can be pretty frustrating to use and figure out how to set application specific settings.
  • The new pointer speed settings that SetPoint or Mouseware may give you feel better than windows settings, but really have similar problems.
  • Increasing Pointer Speed in the driver above the default setting, basically causes mouse acceleration even if you have acceleration forced off. (bad for everyone)
  • Decreasing the Pointer Speed in the driver throws away mouse inputs lowering the DPI. (bad for high sens)
  • May add undesired functionality such as an application quick switch button that kicks you out of a game.
  • You can just as easily bind things to mouse buttons using the in-game console.
  • The windows driver is good enough if you aren't going to change your cursor speed. (And you don't want to do this.)
  • If the driver sets a pointer speed, my formulas and statements regarding DPI don't work. : (
  • If you bring your mouse along with you to use on different computers you will have to play without the driver.
  • Even without a driver you can still map the first 5 buttons to anything using a little program called X-Mouse.
You can get X-Mouse here:

Now that you have read this, I think you should be pretty much about ready to uninstall your drivers and be prepared to take your mouse tweaking to a whole new level in the Advanced Optimization chapter.

Advanced Optimization

Table of Contents
Advanced Optimization
Warning some tweaks may be risky!
2.1 - Measure mouse report rate.
2.2 - Overclock your USB port.
2.3 - Remove extra weight from MX500/MX510.
2.4 - Update mouse firmware.
2.5 - Advanced Mouseware control panel.
2.6 - Maximize monitor refresh rate.
2.7 - Boost PS/2 port performance.
2.8 - Quick mouse sensitivity switch binding.
2.9 - Reducing mouse lag or delay.
2.10 - Finding the PERFECT sensitivity.

2.1 - Measure mouse report rate.

It is nice to know what your mouse is currently capable of reporting at in windows before you start overclocking. The mouse rate checker is very easy to use, there is nothing to install. When you run the program and move your mouse in fast sweeping circles and it figures out your average mouse rate. This is how many times per second your mouse is updating in windows. The higher the better. A higher mouse rate means smoother cursor movement, and less latency. (the time between clicking or moving and your computer getting the instruction.) Here is a formula for mouse latency:
1000 / (average mouse rate in hz) = (average mouse latency in ms)
Lastly, some newer mice automatically work at an increased USB mouse rate, such as 500hz with the Logitech G3, or 1000hz on the Microsoft Habu and you can ensure those claims with this tool.

You can download it,

USB default is 125hz and 8ms.
My MX510 Plugged into USB.

2.2 - Overclock your USB port.
Can be risky and you need to be comfortable editing system files to perform this

Skip this section if your mouse reported well above 400hz by default in section 2.1.

One tricks that was tucked away up some sleeves until recently was how to change the USB polling rate to faster than the Windows default of 125hz. For all intents and purposes the default 125hz polling rate has a 8ms built in response time (lag) that cannot be overcome without changing the usbport.sys file. If you change the polling rate to 250hz your mouse response time drops to 4ms. At 500hz it drops to 2ms and 1000HZ it drops to 1ms. This is an obvious advantage in a gaming environment. Some Logitech and Microsoft mice also have a huge performance boost when you overclock the mouse port, because of an interface limit related to the 8-bit data bus. Specifically they are: Logitech's MX300, MX500 & MX510 and Microsoft's WMO, IE3.0 & Laser 6000. My recommendation is to set the USB rate to 500Hz for these mice. However increasing the reporting rate of any mouse will benefit from smoother tracking and faster response, however not all mice will dramatically reduce negative acceleration and improve perfect control like these do.

There are things to consider before changing anything in your system. First of all, you have probably been using the standard 125hz for quite awhile. You are used to it. You have learned to compensate for the delay however minute it is and if you change the polling rate of your system there will be an adjustment period. At first it may seem awkward but in my experience the change made the tracking in my mouse feel noticeably smoother. Turns were more natural and fluid. I have also heard some players did not like the change and some couldn't tell the difference. Your mileage may vary.

Also, not all mice are created equal. There should be no harm to your system or mouse if you attempt to change your system to a polling rate that the mouse does not support. There should be no system hangs or glitches if you perform the tweak correctly. However, all mice have relative limits and just because you set a mouse to 500hz does not mean it will report at that speed. Furthermore wireless mice cannot be overclocked since their limitation is not in the USB interface but in the wireless transmit speed so don't try. Raising USB report rate increases CPU utilization slightly, if your computer is very old you may notice a small FPS drop, use a slower setting.

Read or print my instructions and the readme files before starting! You won't have internet connectivity while in Safemode.
  1. The first thing you will want to do is download a mouse rate checking program, and see what your average mouse rate is using the USB interface. So you can compare to see if you have improved it.
  2. Now if you have 32-bit Windows XP you can download the USB Mouserate Switcher below and extract it to your desktop. If you have 64-bit Windows XP you will have to do it a different way which I will cover after 32-bit Windows
    You can download it,
  3. Reboot your computer and before Windows begins to load rapidly press F8 on your keyboard to get a startup selection screen. If your computer loaded back up to regular windows try again and make sure you are not using a USB keyboard, either use a PS/2 adapter or turn on something called “USB Legacy Device Support” in your system BIOS. Finally if you still can't boot into safe mode you may just have to use MSConfig. Go Start>Run type “msconfig” without quotes, click the 'BOOT.ini' tab, just check “SAFEBOOT” and click Okay and say 'Yes restart my computer'.
  4. If you get the the windows startup diagnostic screen use the arrow keys to select safemode, make sure to sign into an account with administrative privileges and click yes when it tells you Safemode is for diagnostic purposes.
  5. Make a backup of your C:\Windows\system32\drivers\usbport.sys file!! You can rename it something like usbport.sys.old or usbport.sys.bak and just leave it in the folder. If you ever need to revert back to the old settings you can delete the patched files and rename your backup to usbport.sys.
  6. After backing up that file and while still in safemode, run the usbmrs11.exe file and follow the instructions. I suggest you first try changing your USB polling rate from 125hz to 250hz. This change alone reduces mouse latency to 4ms. You can go higher later.
  7. Now install the patch, then you will have to restart your computer for it to take effect, boot into safe mode again in case you need to revert back to the previous setting or want to keep pushing the port higher. To pick a setting above 250hz say 'no' to the prompt of setting it to 250hz, and then say 'yes' to the prompt of setting it to 500hz.
  8. When your computer loads into safemode, run the 'Mouserate Checker' to see if the change has taken effect. If it did not, get out of safemode and do a good search for “USB port overclocking” or “USB Polling Rate” in Google you might find some more help. Make sure you followed all the instructions properly.
  9. Repeat steps 6 through 8 until you've hit and tested the speed you want to stay at, I don't really recommend 1000hz since it's overkill and most mice can't obtain that speed. Best to pick a speed your mouse handles. If you used MSConfig to make your computer boot into safe mode, run msconfig again and then just click the circle by “Use Original BOOT.ini” and restart and you will have your computer back.

Here are some guidelines for knowing when you've overclocked far enough. First off, I don't recommend you use 1000hz it is twice the stress on your USB components for only a 1ms improvement in latency (vs 500hz). My G5 can be overclocked to 1000hz, but actually only averages at 620hz, which I can't tell the difference from 500hz, so I keep it on default. You want to raise your average mouserate by overclocking, so if you try 250hz and your average hz increases, and then try 500hz and it doesn't increase much, you've probably hit the limit of your device and should stick with 250hz.

Furthermore, you want the update rate to be stable, that is to say, does not constantly vary wildly between different values when you are moving the mouse quickly at speed in the box. If you overclock you mouse and you get a series of update rates in the box like 125,250,125,250,... it means your mouse does not like it's new settings. Not only that, this may make you play worse, because the response time on the mouse is not being consistent.

So just remember when you overclock:
  1. You want to see a real improvement in your average mouserate, not just setting it as high as possible if you are only going to average at 133hz for example.
  2. You want the polling rate to be very constant or close to rock solid, it it's flipping between different rates every other polling or once every 3 pollings that is not good for the mouse, and not good for your gaming consistency. See my pictures for illustration of this tip.
  3. Remember every USB component in your system is also connected at this speed, if you set your polling rates too high your mouse may do fine and pass the first two tips, but your USB sound card might start crackling or your printer might not print, be safe rather than sorry is the rule here.
(For example after several months of 500hz, my Steelsound 5Hv2 USB soundcard began to crackle from time to time. I am not sure if it would have started to do this anyways because it was a cheapy 15 dollar sound card, but it's worth noting. Just don't let this stop you from overclocking at all, because more than likely you wont have any problems.)

Okay, now if you have 64-bit windows and really want to do this, it will take a bit more skill and you have to thank me greatly for hosting the required .sys files. It took me about 3 hours of searching the internet just to find someone who had manually patched and would give me the unlocked usbport.sys drivers for 64-bit windows.
  1. Same as 32-bit step 1. Test your Mouserate.
  2. Download the x64 Mouserate Switcher file from my ftp, this is the only place you can get this on the internet as far as I know. You can download it here:
  3. Same as 32-bit step 2. Boot into Safe Mode.
  4. Once you are in safemode make a backup of your usbport.sys you can find it in this folder:
  5. Extract the 64-bit mouse rate folder you will see several more folders inside, named things like 1830_usbport.sys_250hz_4ms
    Inside each folder there is a modded usbport.sys file, select the rate you would like to overclock to and copy that usbport.sys
  6. Head to your 'C\Windows\system32\drivers\' folder and paste your usbport.sys into there, don't overwrite your old one, just rename the backup one to 'usbport.sys.bak'. Also don't delete anything else in this folder or your computer will be broken very quickly.
  7. Restart your computer into safemode again and use Mouserate Checker to see if your setting has taken effect.
  8. Repeat steps 5 through 7 except now it's okay to overwrite the modified usbport.sys since you're replacing patched versions and not the original. Follow my tips above while you look for a stable setting that is good for your mouse (and other USB devices!).
  9. Reboot into normal Windows XP and enjoy your new mouse.
2.3 - Remove extra weight from MX500/MX510.
Be careful with this tweak and work over a flat table or white sheet of paper so you don't lose any parts that could fall out.

Many mice come from the factory with weights inside them to make the mouse feel more substantial and help it stay on the mouse pad better. If you feel your mouse to be heavier than you like you can remove the ballast. This may not make you play better by being able to move the mouse quicker, but this is instead mostly a personal preference. The weight of your hand is far greater than the weight of your mouse, so the amount it's mass hinders your movement is probably negligible.

Although I'll just quickly cover the MX5x0 mice there may be other mice with removable weights inside. However don't take apart a wireless mouse looking for weight, it's the batteries inside adding weight. Also don't take apart a mouse that has it's mouse skates intentionally set up to block the screwdriver holes, that's a sign there is probably nothing inside you can service. The MX518, along with many other “Gaming” purpose mice have no weights.
  1. Unplug your mouse from your computer's USB port, or turn off your PC off and then unplug from a PS/2 port.
  2. Flip it over and look for the three screw holes on the bottom, they are covered by the mouse's stickers. Remember their locations and get a screwdriver. These steps may be a lot different if you are trying with a different mouse than the MX5x0, but you will get the idea.
  3. Poke holes and use the screwdriver to loosen each screw. The front two screws will tear some of the sticker at the front of the mouse, just make sure your P/N is not ruined because if you ever have to make warranty claims they'll ask for that. The rear screw will probably not want to come out because the sticker might block it from leaving the shaft, use a magnet to pull it out, or just pinch the sticker away so the screw can fall out.
  4. Once you've got all 3 screws removed, start firmly but gently prying the mouse starting at the front and working to the rear, the back will pop and the two halves will separate when you get it. TAKE YOUR TIME!! If you force the mouse open small parts that make the scroll wheel work could go flying, try hard to keep the scroll wheel together as you open it.
  5. The weight is located inside the upper section of the mouse it's held in with a screw, simply unscrew it and keep the weight and screw someplace just in case you want to go back to the heavier setting.
  6. Reassemble the mouse making sure the sticker in front is held down by the two screws so it does not drag and interfere with gaming. If your sticker is causes friction now, trim it back, but do not wreck you P/N unless you've wrote it down somewhere you aren't going to lose.
  7. You are done.
If you're brave and try this with a mouse other than an MX500 or MX510 please post what mouse you used that had a weight, what you did and how to do it. So then other people with the same mouse you have can also try changing the weight of their mouse.

2.4 - Update mouse firmware.

Some new high end mice come with flash memory inside, which can be manually updated to improve the performance of the mouse on various surfaces and fix bugs. The firmware is not a driver, but you sometimes need to have the driver installed before you can update it. Firmware is software that is inside your mouse that controls how it works. If you update the firmware on your mouse, you'll still be updated even if you bring your mouse to a different computer, which is a good thing. But it also means there is no way to reverse what you have done either. So when you update firmware on a mouse make sure to follow the instructions, and do not shutdown your PC or unplug the mouse while the update is happening or you may have a new paperweight. Mice that I know have an update are the Copperhead, Deathadder, G5/G3 and Habu.

You can download the latest firmware from your manufacturer's support website. If you need have the driver installed to update the firmware make a system restore point, install your mouse driver, flash the firmware onto the mouse, restore your computer back to before you installed the driver. That way you'll get the updated mouse without the added hassle of a driver. For mice that can store custom profiles inside them like the Razer DeathAdder you can briefly install the driver to add new custom profiles you want like say 1800dpi and 1000hz. Then restore back to before installing the driver and the button on the bottom of the mouse will still be able to switch between custom profiles.

Look for your firmware update here:
Logitech Support:,CRID=1792
Razer Support:

2.5 - Advanced Mouseware control panel.

If you are using 32-bit windows and can use the old Mouseware driver with a Logitech mouse you can access an advanced control panel that allows you to adjust game specific settings but most importantly tune the sensor in your optical mouse for speed or precision. You can download the Mouseware advanced control panel from Logitech's support site above.

This would be the only good reason to install the Mouseware driver, by default when you install the Mouseware driver on a Mouseware supported 800dpi Logitech mouse your mouse can run at 800dpi, but this is known to cause problems with these older generation mice and very fast mouse movements. With this control panel you can set your mouse sensor to 'Optimized for Speed' and this pretty much fixes the negative acceleration problem for low sensitivity players. For medium and high sensitivities the default setting of 'Optimize for Precision' is ideal.

NOTE: The Logitech MX300, MX310, MX500, MX510 are all “800dpi” mice technically, but they will not support that setting unless the driver is installed! Use the second formula from section 1.5 to figure out how much dpi you really NEED before deciding to install Mouseware or Setpoint. If the formula says that you need over 400dpi then I recommend installing the driver to enable 800dpi otherwise if you only need 400 or less then follow my general recommendation from section 1.9. If you need need 800dpi but move fast enough to experience negative acceleration at the optimize for "Precision" setting try overclocking your USB port to 500hz and see if it is cured.

2.6 - Maximize monitor refresh rate.

This section doesn't seem to have anything to do with mice, but it does. You may have wondered what was the point of overclocking a mouse to 500hz when your monitor may only be refreshing at 60hz. Overclocking the USB or PS/2 port first off reduces latency of the mouse, and it can even reduce negative acceleration on some mice, but you will not notice the full improvement in fluidness unless your monitor is running at it's best refresh rates. LCD monitors tend to have limited refresh rates like 60hz or 75hz, CRTs may be capable of much higher refresh rates like 120hz at 800x600 but might only be able to do 60hz at 1600x1200. No matter what resolution you use, you want your monitor to refresh at it's fastest speed. There is a big advantage of using 100hz or greater, the game plays more fluid and isn't as choppy. When you are getting high enough framerates, then the more your monitor refreshes each second, the smoother the game and mouse will feel. On CRT monitors this has an added benefit of reducing eyestrain in long gaming sessions, and on all monitors this can help reduce tearing artifacts.

If you do not know what is the highest refresh rate your monitor supports at the resolution you play your game, you can right click your desktop, go to properties and then click the settings tab. Now adjust the slider to your in-game resolution if it is not already. Click apply. Now to go advanced, and click the monitor tab. Click the drop down menu and it will show you all the settings your monitor can support at that resolution. Try the highest setting, it should be much easier on your eyes, and your cursor movement will be noticeably smoother. If after you do this the picture on your screen is off the edge or not centered just adjust it using the buttons on your display.

The easiest way to force a new refresh rate in CS:S is by adding commands to your CS:S launch options. Follow the same steps as in section 1.7 and add these commands: (without quotes and replace the numbers with your desired value)

“-w 1024 -h 768 -refresh 100”
Make sure to change the number after -w to number of horizontal pixels in your game resolution (the first number) and -h to the number of vertical pixels in your resolution. Lastly change the number behind -freq to the best refresh rate your monitor can handle at the chosen resolution. Starting each new command with a - and separating new ones with a single space, so with all the startup commands in this guide, it might look something like this (without quotes):
“-noforcemspd -noforcemparms -noforcemaccel -w 1280 -h 1024 -freq 75”
For games other than CS:S, use a free program called RefreshForce. ReForce works in almost any program or game. It tricks your monitor driver into acting as if the only refresh rate it can do is the one you decide to set in each resolution! The program only needs to be run one time so there are no startup tasks. But do save it somewhere on your PC since when you update your video card drivers you'll need to run it again.

To use ReForce just run the program find the monitor you want to tweak in the list, it will say [ACTIVE] behind it's name. When it asks you if you would like to 'Auto Populate' say yes and then it will make a long list of resolutions and the frequency it wants to force for them, check through this list to make sure you are okay with the settings then click apply. Your computer will be forced to use the monitor's highest refresh rate in every resolution now. If this causes problems, you can always run Reforce again, select your monitor and click 'restore original settings.'

You can download RefreshForce 1.10,

2.7 - Boost PS/2 Port Performance.

If your mouse only has PS/2 for an option, or if you did not feel comfortable overclocking the USB ports. You are not out of luck. It is very easy to overclock a PS/2 port compared to the steps involved with USB. The steps below are the same for Windows 2000, XP, and XP 64-bit. There is a program you need to download to change this for Windows 98/Me, I have a link at the end.
  1. With your mouse plugged into a PS/2 port and working in Windows, click 'Start', and right click on 'My Computer'. Choose Properties.
  2. In the System Properties window click on the 'Hardware' Tab. Then click 'Device Manager'.
  3. In the Device Manager window , look for 'Mice and other pointing devices' in the list. Click the [+] sign in front of that line to see your connected mice.
  4. Right click on your 'PS/2 Compatible Mouse' and choose 'Properties.'
  5. Now in your mouse's properties page, click the 'Advanced Settings' tab.
  6. Set your sample rate to 200 reports / second.
  7. Set 'Wheel Detection' to 'Assume wheel is present', if your mouse has a scrolling wheel, set it to 'Detection Disabled' if you really don't have a scroll wheel.
  8. Set your 'Input Buffer Length' to 200 packets if you use a high sensitivity or a faster medium sensitivity. Set your Input Buffer Length to 300 packets if you use a low or medium low sensitivity as this may help reduce negative acceleration from the fastest movements of the mouse.
  9. Click Okay and tell it yes you want to restart your computer now.
  10. Verify that the change was successful with Mouserate Checker.
  11. Enjoy it in games.

If you have an old version of windows and would like to do this tweak you can download an easy program that changes the report rate,

2.8 - Quick mouse sensitivity switch binding.

If you have an old mouse which does not have the "On-The-Fly" Sensitivity switching that new gaming mice have, do not despair. First off, few people find these buttons actually that useful. Second many manufacturers put the buttons in hard places to reach while playing. Third, you can make a binding in Counter-Strike (and likely many other games) that has the exact same or better functionality than the ones designed into the mouse.

If you already have an autoexec.cfg you can modify my mouse sensitivity changing scripts to fit your needs and paste it into your config relatively easily. If you do not, go to your "C:\Program Files (x86)\Steam\steamapps\[Your Username]\counter-strike source\cstrike\cfg" folder and right right click to make a new text document. Name it "autoexec.cfg" windows might tell you that changing the file extension will make the file unstable click okay.

Now right click on it click open with, and then choose to open it with 'Notepad' and you are set. After opening it with notepad just paste in my code and change the numbers to what you need.

You will need to change the mouse sensitivity to match what you are using or plan to use, a good factor to use between your "Fast" and "Slow" setting is 3x. So if I normally were playing at sensitivity 3 and I wanted to make a button to slow down for precision shots, I would use sensitivity 1 for the new slow speed. I recommend using less than 3 mouse speeds, but I couldn't even get used to 2 speeds myself. These bindings may be useful for people trying to adapt to no mouse sensitivity and miss the quick flick turning they used to be able to do.

//Antigen07 Toggling Sensitivity Bind
alias Toggler "HighSpeed"
alias HighSpeed "Sensitivity 3; alias Toggler LowSpeed"
alias LowSpeed "Sensitivity 1; alias Toggler HighSpeed"
bind "mouse4" "Toggler"
//Change the 'sensitivity 3' to the faster of the two sensitivities you want,
//and then sensitivity 1 to about a third of that value.
//"mouse4" can be replaced by any key or mouse button you want.

//Antigen07 Press/Release quick Sensitivity Bind
Sensitivity 1
alias +SensChange "Sensitivity 3"
alias -SensChange "Sensitivity 1"
bind "mouse4" "+SensChange"
//To use this you keep your finger on mouse4 constantly, and release it when
//you need to make a more precise shot. (do not set "Sensitivity 3" higher
//than you can handle comfortably)
//Alternatively don't press mouse4 until someone sneaks up behind you and
//then press it to whip around quickly and return fire. (do not set "sensitivity 1"
//lower than you can handle comfortably)
//"mouse4" can be replaced with any key or mouse button you wish.

//Antigen07 Triple Toggling Sensitivity Bind
alias faster "HighSens"
alias slower "LowSens"
alias HighSens "High; alias faster; alias slower MedSens"
alias MedSens "Med; alias faster HighSens; alias slower LowSens"
alias LowSens "Low; alias faster MedSens; alias slower"
alias High "sensitivity 1.5"
alias Med "sensitivity .75"
alias Low "sensitivity .375"
bind mouse4 slower
bind mouse5 faster
//Change the sensitivity values for your High Medium and Low sensitivities.
//Pressing one button increases speed, pressing the other button decreases speed.
//Bind them to any key or mouse buttons you want.
//This can make an MX510 emulate the DPI changing buttons on a Logitech G5 or MX518
//since with the driver the top two buttons could be set to keystrokes bound to slower and faster.
You might find any of these binds useful so try them. Remember though they are somewhat not that useful since, you can always get more precision for aiming by just lowering your mouse sensitivity a bit, and you can always turn around faster by moving your hand quicker. Some players, including me find it disorienting to switch between two or more sensitivities on the fly, these can also affect your reaction time if you need to press or release a button before you have enough accuracy to fire a shot. If you have to hit a button to change sens in combat you may get killed a lot.

These should all be CAL-Legal.

2.9 - Reducing mouse lag or delay.

Despite the term “mouse lag” most mouse delay is actually not caused by the mouse at all. I will just make a list of things that may contribute to control lag in CSS and other games.
  • m_filter 1 in CS:S console.
  • an old wireless mouse.
  • V-sync enabled in your advanced graphics settings.
  • An LCD monitor - The true input delay on LCDs can be up to 5 times higher than the stated “response time.”
  • Adware or Spyware using CPU time.
  • Very low framerates (under 25).
  • Low monitor refresh rate.
  • Using an adapter on your mouse cord to switch from USB to PS/2.
  • Unneeded background tasks.
These are mostly fixable problems. Set m_filter 0 in console. Try a wired mouse to see if that reduces the delay. Make sure V-sync is off. Try using a CRT with your computer and see if the delay was from your LCD monitor. Get Ad-Aware and clean your PC from spyware. Use a graphics config and lower resolutions to get higher framerates. Raise your monitor's refresh rate. Plug your mouse in how it's meant to plug in without an adapter.

Lastly you can cut down on latency via USB or PS/2 port overclocking but if you are already used to 125hz 8ms lag this probably isn't causing your problem working at default speeds. System lag becomes very noticable once it gets above 25ms, considering all sources, lets say 10ms from a PS/2 mouse port, up to 10ms from a 2ms response time LCD panel, And all it would take would be another 10ms added from m_filter or 3 more added from using 60hz instead of 75hz or dropping below 100fps before the different contributing sources add together and really make a game feel sloppy. Just do what you can to minimize the different contributing factors and hope for the best.

Ad-Aware can be downloaded,
It is one of the best free Anti-Spyware programs.

2.10 - Finding the PERFECT sensitivity.

Thanks to impuLsive (so +rep him also :D) I can describe an excellent way of getting very close to your ideal sensitivity in-game. The way this method works is you start your own server in CS:S by typing "map de_dust2" into console. Then you type, sv_cheats 1 in console. Then "give weapon_ak47" without quotes. Now you have an AK-47 and an empty server to use.

Start by looking at a wall somewhere in the open and fire a 3-5 round burst into it. Now keep the bullet marks in your crosshairs and start strafing, aim fixed as best as you can on the bullet holes. The goal is to be so perfectly on target looking at your bullet marks that it's as if there is a poll hinged from them that's attached to your gun, and you just rotate and move as one around the marks.

You can strafe around your marks from different distances, including close range and farther away to get a good feel for the exercise. Also consider what spots you play on your maps and the distances you usually will encounter enemies from while playing when you decide how far back to be from your marks. It also helps to move your mouse smoothly and not drag your hand too much while doing this exercise. When you are finished practicing, write down the sens you were using on a sheet of paper and get a calculator. (or use the windows calculator if you don't mind to Alt+Tab)

Skim through the next three paragraphs then download my SensFinding demo from my ftp at the end. It will will be much more clear once you have seen me perform the steps so you get the idea.

Now in console, type sensitivity and double that value. Try the same experiment again with twice the sens. Once you quickly get used to the new speed, see if you are tracking the marks better or worse than before. Write this sensitivity down on the sheet. Now you are going to compare to one half the original value, the calculator will help you find this, you only need to bother with precision to the nearest .001 when you write your sens down. Quickly adjust to it and do the strafing experiment and aim the best you can. While you are trying to decide consider the following: if a mouse sensitivity is too high you may find trouble controlling the crosshair and it may bounce around your marks and jitter, conversely if it is too slow, you may find yourself sliding off your mousepad or falling behind the bullet holes while you strafe.

Now look at the sheet of paper. Cross out the worst highest or lowest sens remaining, leaving your best two sensitivities on the sheet. If you kept the higher sens, double it again and test at that new higher sens. If you kept the lower sens, divide it by two and test at that new lowest one. Write down the new sens and again eliminate the worst highest or lowest sens remaining. If you found that the new one was better, repeat this paragraph, crossing out the worst lowest or highest sens until you get a 'worse' for the new sens.

Now you have two sens on the sheet above one you are 'worse', below the other you are 'worse'. Your ideal sens should be between them. Average the two sens by adding them together and dividing by 2, round to the nearest thousandth when you get decimals. Write down the average but don't test it yet. Instead, carefully test the highest and lowest sens remaining and decide which is worse, cross it out, then repeat this paragraph with the new two remaining sens until you can't for the life of you tell which of the two sensitivities are worse. Then average those two that were indistinguishable, and you now have very closely pin pointed your mouse sens.

I tried this method from different starting sens and always come within .05 of the same value each time. In the process of writing this guide I did this whole process on three occasions, first time getting 1.181, then getting 1.200 and another time getting 1.155. That is pretty accurate but there is some normal variation but it's less than ±5%.

So why is it different each time? First off because you are feeling differently on different days, it may be worth it to test more than one time over a few different days and from various starting sens. After maybe 3-5 trials throughout a week's timespan, average the different final values you have determined and that will be your long term perfect sensitivity.

That way no matter how you are feeling, you will be the closest to what sensitivity would be perfect for you on any given day of the week. This also means you don't have to change your sensitivity very often and when you do change it slightly (less than ±5%) you stay in your optimum "range" of good sensitivities. This is important, finding just one value and sticking to it! The mind likes consistency, and if you are constantly making big adjustments more than 5% up or down to your sensitivity you can expect to play inconsistently and have slumps more often.

Finally for those shopping or in the market for a new mouse:

KNOW BEFORE YOU BUY! (ESR) benchmarks mice and soon mousepads to determine their capabilities in a scientifically repeatable way. Very much unlike other mouse reviews which are just nothing more than a reviewers flat out stupid opinion. Both are a highly recommended read and were major inspiration for me to write my own guide about mice.

ESReality MouseScore 2007

Razer DeathAdder Review


Yannick Ruile said...

Frankie!! :D

Yannick Ruile said...


Unknown said...

REALLY great!
thanks alot!, suprised no one else posted a thanks!

Unknown said...

how do i adjust dpi/hz without a driver?

Unknown said...

how do I adjust dpi/hz on the mouse without installing my razer driver?

Unknown said...

hi, I really like your guide. I tried your way to check this pixel accuracy in paint. And I had really sharp edges at 6th notch, but at 4 all was smooth. Apart from that i did everything as you described. Is it possible for my pc,that 4th notch is the good one? I have win7 64b and roccat kone mouse.

Unknown said...

hi, I really like your guide. I tried your way to check this pixel accuracy in paint. And I had really sharp edges at 6th notch, but at 4 all was smooth. Apart from that i did everything as you described. Is it possible for my pc,that 4th notch is the good one? I have win7 64b and roccat kone mouse.

Anonymous said...

AWESOME, must have been a massiv effort, thanks