Zaunkoenig M2K firmware

You do not need to install any external software to set up the M2K. The firmware of the M2K, that is the software running in the microcontroller unit (MCU) of the M2K, is powerful enough to give you full control over all important attributes: sensitivity (measured in counts per inch, commonly abbreviated as CPI), polling rate (measured in hertz), Angle Snapping and lift of distance (measured in millimeters, commonly abbreviated as LOD).

As was true for the M1K, the M2K firmware is optimized for lowest possible input lag.

An overview over the default settings of the M2K

The M2K uses the PixArt 3360 sensor. The default values of the M2K are the same as they were on the M1K: Per default Angle Snapping is disabled, LOD is set to 2 millimeters, CPI is set to 800 and the polling rate is set to 1,000 hertz.

Thanks to using the best available 3360 firmware version (also called SROM, or «secure read-only memory») the 3360 inside the M2K has just 2 frames of smoothing for CPI values of 100 up to 3,500. From 3,600 CPI to 12,000 CPI however the smoothing jumps to 16 frames. We thus recommend not going above 3,500 CPI.

As promised already: you can change CPI, polling rate, Angle Snapping and LOD without having to install any software on your PC. Everything you change will be saved directly in the MCU of the M2K. See the following for how you can change the parameters of the M2K.

Changing CPI, polling rate, Angle Snapping and LOD

Changing CPI of your M2K

You can change CPI in steps of 100. Like so:

  1. Plug the M2K into your PC.
  2. Lift the M2K a few centimeters off your mousepad so it stops tracking.
  3. Hold down both mouse buttons for five seconds.
  4. The M2K now enters the so-called «CPI programming mode». Upon entering the mouse cursor will move to show you at what CPI the M2K is currently at. The standard value of the M2K is 800 CPI. So when you enter the CPI programming mode with a brand new M2K the mouse cursor will go up and down exactly eight times. At 1,400 CPI the mouse cursor would move to the right and back once (indicating 1,000 CPI), and then up and down four times (indicating 400 CPI).
  5. Now place the M2K back on your mousepad. You can now change the CPI by pressing either the left or right mouse button. Each time you now press your left mouse button, the CPI will be decreased by 100 until you reach the minimum CPI value of 100. Pressing right increases CPI by 100. While you are doing this you can move the M2K around to get a feeling for different CPI values.
  6. If you want to increase CPI by 1,000 you can use the following shortcut: hold down the left mouse button and press right. The mouse cursor makes a bigger jump to indicate the increase. Switch buttons to do the same for decreasing CPI by 1,000.
  7. You exit the CPI mode the same way you entered it: Lift the M2K a few centimeters off your mousepad so it stops tracking and hold down both mouse buttons for five seconds.
  8. The M2K exits CPI programming mode and tells you again at what CPI it is running now. Say you set the mouse to 700 CPI: the mouse cursor now will move up and down seven times. After the mouse cursor has stopped moving the M2K is ready to go.

Changing polling rate of the M2K

The M2K can do driverless 8,000 hertz. The default mode of the M2K is 1,000 hertz via USB Full Speed however. You can switch to 8,000 hertz via USB High Speed by plugging in the M2K with the left and right mouse button held down. The cursor on your screen will do a figure eight to indicate the change (you can now let go of the buttons :P). Should you want to switch back to 1,000 hertz via USB Full Speed repeat the above procedure. The cursor on your screen will move to the right and down to indicate the change.

Alternatively you can cycle through different hertz levels with your M2K without having to plug your M2K out. Note that your M2K has to be set to 8,000 hertz in order to being able to do that though. This is how you can enter «hertz programming mode»: hold up your M2K so that the sensor stops tracking and press down the middle mouse button for five seconds. Your M2K is now entering hertz programming mode and upon doing so it will indicate at how much hertz it is currently set to by moving the cursor up and down again. Example: when set to 8,000 hertz the mouse cursor will move up and down eight times in a row.

Once you have entered hertz programming mode you can put your M2K back on your mousepad. You can now cycle through the following hertz levels by scrolling in the direction of the cable (increasing hertz) or by scrolling in the direction of your hand (decreasing hertz). Increasing hertz is indicated by your cursor jumping up and down; vice versa reducing hertz is indicated by your cursor jumping down and up. The following hertz values are available: 1,000 hertz, 2,000 hertz, 4,000 hertz as well as 8,000 hertz.

You can cycle through hertz values in your actual game of choice, which is useful if you want to test out whether 8,000 hertz results in the game stuttering but 4,000 hertz not, for example. Say you switch from 8,000 hertz down to 4,000 hertz by scrolling towards your hand: your mouse cursor will jump down and up again four times, indicating that you lowered hertz by 4,000.

You can exit hertz programming mode by holding up your M2K and pressing down your middle mouse button for five seconds. Upon exiting hertz programming mode the M2K will again tell you at how many hertz it is currently running. Say you set your M2K to 2,000 hertz and now are exiting hertz programming mode; in that case the cursor will move up and down exactly two times.

A word about measuring 8,000 hertz: when you measure the USB update rate with a tool, chances are your M2K will be shown as hovering around 4,000 hertz. The reason for this is simple: the sensor in the M2K essentially is a small digital video camera that runs with a certain frame rate. Your normal iPhone camera shoots video at 30 or 60 frames per second (FPS). The FPS of the sensor in the M2K (PixArt 3360) depends on how quickly you move your mouse around. The 3360 has four FPS steps: 4,100; 4,900; 5,900 as well as 11,600. Only for very quick movements (roughly one meter per second) will the FPS actually be 11,600. For most of your movements the FPS will thus be either 4,100 or 4,900 or 5,900 FPS.

Say the 3360 in your M2K is running with 5,900 FPS while you are trying to measure the update rate of your M2K. It will now appear that the M2K is running with 5,900 hertz. That does not mean that the M2K is not capable of doing 8,000 hertz however. The M2K firmware is programmed in a way that the M2K will only transmit sensor data if there is new sensor data. And when the 3360 only has 5,900 new data points each second instead of 8,000 new data points each second, it will appear that the M2K is running with just 5,900 hertz.

Unfortunately there is nothing you or Zaunkoenig can do about this: PixArt does not allow it to modify the FPS of its sensors, unless your name is Logitech or Razer.

Finally: clicks will always profit from 8,000 hertz, since the switches in the M2K are sampled continously.

Changing Angle Snapping and LOD on the M2K

To activate Angle Snapping, press and hold the middle mouse button while plugging in the M2K. Cursor moves clockwise in a square to indicate the change. To disable Angle Snapping, repeat the same procedure; this time the cursor will do the square counterclockwise.

To set the LOD to 3 millimeters plug in the M2K while holding down the left mouse button: cursor will do three clockwise squares to indicate change. Repeat the procedure for changing the LOD to 2 millimeters; this time the cursor will move counterclockwise in a square for two times.

Ready for tournaments

Say you are at a tournament and you quickly want to decrease the polling rate of your gaming mouse from 8,000 to 4,000 hertz. Typically you are not allowed to install software on your PC. So when your mouse does not have the ability to change the polling rate without external software you are screwed. We designed every aspect of the M2K with professional gamers in mind and thus external software was out of the question. (By the way: most gaming mice need external software because otherwise controlling all those fancy RGB effects would be tricky. Luckily the M2K does not have any RGB.)

Some gaming mice out there offer dedicated buttons for changing sensitivity or polling rate. On the plus side you can use those buttons even when you are at a tournament. On the negative side however these buttons add weight plus the potential to accidentally trigger them. Thus these buttons are only convenient at first glance.

Entering firmware programming mode on the M2K

Note that you only have to install firmware programming mode when you want to install a new firmware version on the M2K. The following explains how to enter firmware programming mode on the M2K.

Hold down the right mouse button while plugging in the M2K and keep the right mouse button down for at least three seconds. Once your mouse cursor has frozen you know that you have successfully entered the firmware programming mode of the M2K. You can now install new firmware.

Lowest possible input lag

It should go without saying, but having a gaming mouse with low input lag is crucial. The more latency you have in a gaming mouse, the bigger the disconnect between you and your game will be.

We have thus left no stone unturned to reduce latency as much as possible.

We already mentioned we are using the best available sensor SROM, in order to reduce 3360 latency as much as possible. Since the M2K is a wired mouse we disabled all energy saving schemes for maximum performance. We use zero latency debouncing for our switches (Omron D2F-01F), and the state of each switch are sampled continuously so that there is no delay due to reading a switch while it is bouncing. Add to that driverless 8,000 hertz, the ridiculously overpowered 216 MHz MCU, plus a bunch of little tricks and the end result is the worlds quickest 3360 gaming mouse.

By the way: If you are wondering why not more gaming mouse companies are using zero latency debouncing read our blog article about the M1K firmware.

Oh and if you are wondering why some gaming mice offer adjustable debounce time: that is a marketing gimmick. The only acceptable debounce time is zero.

The firmware of the M2K will be open-source

The firmware of the M1K was based on an AVR MCU by Microchip Technology: the ATmega32U2. The M1K firmware already is open-source. See our GitHub repository.

The M2K is using an ARM MCU by STMicroelectronics: the STM32F7 series (216 MHz Cortex-M7 core). We will release the firmware of the M2K as open-source in the near future. Once the M2K firmware is open-sourced this article will be updated accordingly.

The Zaunkoenig newsletter

Join the Zaunkoenig newsletter if you would like to get no-bullshit Blog articles about our gaming mouse design philosophy delivered to your inbox: