Enabling 1000hz QMK Polling

I was playing some osu!mania with my newly delivered NK65 keyboard and discovered pretty quickly that something was wrong. The spacing of notes in the hit error bar looked awful, everything felt really bad.

When trying to fix this myself I saw little on google regarding specifically how to fix this from a novice perspective, so here is a pretty simple explainer on how to fix this.

Things you will need:

Once QMK MSYS has been downloaded and installed, Launch it and run qmk setup This will download the full QMK git repo to your machine.

  • Browse to your keyboard folder in the folder QMK MSYS downloaded, in my case it was
    qmk_firmware\keyboards\nk65
    In here there is a folder called “keymaps”
  • Copy the keymap that you would like to keep, I copied the via one in my case as I would like to keep the VIA support, I called the copied folder “via_1000”
  • In the new folder you copied, create a new file called config.h and place the below text into it.

/* Change USB Polling Rate to 1000hz and a larger keys per scan for elite gaming*/
#define USB_POLLING_INTERVAL_MS 1
#define QMK_KEYS_PER_SCAN 12

  • Save this file, Next we will need to build the firmware file. To do this, we can run the command
    qmk compile -kb <keyboard name> -km <keymap name>
    In my case this looked like
    qmk compile -kb nk65 -km via_1000
  • After this compiles, you will get the below message

We can now move onto the flashing process!

  • Boot up QMK Toolbox and select your firmware file
  • Put your keyboard into DFU mode, This will differ for different keyboards, check your vendor for this
  • QMK Toolbox should detect your keyboard and display a message like
    *** STM32 DFU device connected (WinUSB): STMicroelectronics STM32 BOOTLOADER (0483:DF11:2200)
    We are almost there.
  • Click Flash and you will see your keyboard begin the process.
  • After this, you should be done!

Add a comment

Your email address will not be published. Required fields are marked *

Comments

  1. john gabriel

    how do u put a nk65 into dfu mode?

    Reply
    1. You can hold the ESC key while you unplug and plug the keyboard back in to get it into DFU mode

      Reply
  2. Thomas

    Thanks for the info! Im got a tokyo60 and am also a mania player so ran into the same issue as you, so thanks for the easy steps!

    Reply
  3. sgraewe

    Thank you so much!!
    Searched for hours how to fix the polling rate

    Reply
  4. Joe

    so this will allow for me to continue to use via for my keymapping and still have 1000hz polling rate?

    Reply
    1. Yes, That’s right! as long as you copy the via keymap profile and edit that.

      Reply
  5. MK

    I followed everything and this guide and when I compile, I get this error.

    Making nk65 with keymap _1000 and target via_1000 [ERRORS]
    make[1]: *** No rule to make target ‘via_1000’. Stop.
    Making nk65 with keymap default and target via_1000 [ERRORS]
    make[1]: *** No rule to make target ‘via_1000’. Stop.
    Making nk65 with keymap default_65_ansi and target via_1000 [ERRORS]
    make[1]: *** No rule to make target ‘via_1000’. Stop.
    Making nk65 with keymap madhatter and target via_1000 [ERRORS]
    make[1]: *** No rule to make target ‘via_1000’. Stop.
    Making nk65 with keymap mechmerlin and target via_1000 [ERRORS]
    Enabling LTO on ChibiOS-targeting boards is known to have a high likelihood of failure.
    If unsure, set LTO_ENABLE = no.
    make[1]: *** No rule to make target ‘via_1000’. Stop.
    Making nk65 with keymap via and target via_1000 [ERRORS]
    make[1]: *** No rule to make target ‘via_1000’. Stop.
    Making nk65 with keymap yanfali and target via_1000 [ERRORS]
    Enabling LTO on ChibiOS-targeting boards is known to have a high likelihood of failure.
    If unsure, set LTO_ENABLE = no.
    make[1]: *** No rule to make target ‘via_1000’. Stop.
    Make finished with errors
    make: *** [Makefile:523: nk65:via_1000] Error 1

    Reply
  6. Matt Mans

    I keep gettin the error “If unsure, set LTO_ENABLE = no.
    make[1]: *** No rule to make target ‘via_1000’. Stop.
    Make finished with errors
    make: *** [Makefile:523: nk65:via_1000] Error 1”
    What am I doing wrong?

    Reply
    1. Teo Zanty

      try this, worked for me
      qmk compile -kb gmmk/pro -km

      Reply
  7. Kyle

    Does this include key roll over?

    Reply
    1. It doesn’t, However I will make a tutorial on how to do this as well soon.

      Reply
    2. Peet

      iirc N-Key Rollover is activated per default on most boards. If not, the line ‘NKRO_ENABLE = yes’ in the rules.mk file (located in the main, not the keymaps folder) should enable it.

      Reply
  8. Ani

    after I compile it, I don’t get a .bin but instead, I get a .hex…?

    Reply
    1. p0keyy

      did you ever figure out how to get the .bin? I am using a keychron q1 v2 knob and I also got a hex :/

      Reply
  9. Ani

    after I compile it, I don’t get a .bin but instead, I get a .hex? Anyone know a solution?

    Reply
    1. I have a funny feeling .hex should also be fine to flash. Have you tried that? or does that throw an error?

      Reply
      1. olli

        For future readers, flashing with the .hex worked fine for me.

        Reply
        1. p0keyy

          damn I’m using the keychron q1 v2 knob and it needs to be a .bin to flash and I got a hex using this method

          Reply
  10. Anthony

    I just keep getting the qmk toolbox telling me that it cant open the DFU device and no DFU capable device is available.

    Reply
    1. What keyboard are you using? You need to check with the vendor on how to put the device into DFU Mode.

      Reply
  11. Peet

    Is there any chance to check wether the MCU of my PCB can keep up with the higher polling and scan rate?
    I’m concerned my keyboard will start to behave strange/inconsistent when my chip is too underpowered to drive those rates.

    Reply
  12. h

    does this work with keychron k6?

    Reply
  13. Jonny

    Does this work for BM80 RGB?

    Reply
  14. Alexandru

    i get this error: qmk compile -kb q1 -km via_1000
    usage: qmk.exe compile [-h] [-c] [-e ENV] [-j PARALLEL] [-n] [-km KEYMAP] [-kb KEYBOARD]
    [filename]
    qmk.exe compile: error: argument -kb/–keyboard: invalid keyboard_folder value: ‘q1’

    i also tried it with rev_0100 isntead of q1 since there ae multiple versions apparently but i got the same error. How could i write this so i include both? or is that even the problem?

    Reply
  15. Isaac

    Be sure to check your PCB revision if some keys aren’t working after this. In my case I needed to use qmk compile -kb nk65/v1_4 -km via_1000 when compiling the firmware because my PCB is 1.4.

    Thanks so much for the guide!

    Reply
    1. Spud

      This helped me so much. Quick question though, I have enabled “Disable LEDs when USB is suspended” however it does not turn off when my computer is off. Was just wondering if you had this issue and resolved it, greatly appreciated

      Reply
  16. Kevin

    ap.c:19:10: fatal error: moults31.h: No such file or directory
    19 | #include “moults31.h”
    | ^~~~~~~~~~~~
    compilation terminated.
    [ERRORS]

    Not sure how to fix this

    Reply
  17. ice

    Does this work for the hiney H88C PCB ? using the Geonworks frog tkl

    Reply
  18. Jaiden

    Hello, I have a dz60rgb v2.1 and for whatever reason I’ve done everything it worked but my keyboard is still at 125hz, I have a sk61 that says it’s at 1000hz but my custom keyboard isn’t no matter what I do 

    Reply
  19. JJ

    So I have a question. how would you do this for the v1_4 version of the nk65?

    Reply
    1. b

      the command is “qmk compile -kb nk65/v1_4 -km via_1000”. i just had to do this for a new build and figured out the /v1_4 part from an old comment, but it didnt work until i added the whole folder path. hope this helps!

      Reply
      1. b

        wait sorry i had the old command in my clipboard. its “qmk compile -kb novelkeys/nk65/v1_4 -km via_1000”. my bad! hope that helps tho

        Reply
        1. Thanks mate, appreciate the comment 🙂

          Reply
  20. Eric

    Thanks a lot for the info! Also for the compile command, when your keyboards have multiple models and versions, you can use slash ‘/’ separators to select the correct directory! For example, in my case it was “dztech/dz60rgb/v2_1”, so the whole command is “qmk compile -kb dztech/dz60rgb/v2_1 -km via_1000” (without quotes)

    Reply
  21. p0keyy

    Anyone know how to get a .bin instead of a .hex? Tried flashing using the hex but it says I need a .bin for my keychron q1 🙁

    Reply
    1. I would doublecheck the revision of your keyboard that you are selecting. It may be that you have picked the wrong revision as the filetype is tied to the keyboard you pick.

      Reply
  22. sinden

    when i compiled the file, i didnt got an .bin file. Instead he gave me directly the .hex file. Does the system has changed?

    Reply