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:
- QMK MSYS
- QMK Toolbox
- A text editor of your choice – I use VSCode
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 likeqmk 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!
how do u put a nk65 into dfu mode?
You can hold the ESC key while you unplug and plug the keyboard back in to get it into DFU mode
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!
Thank you so much!!
Searched for hours how to fix the polling rate
so this will allow for me to continue to use via for my keymapping and still have 1000hz polling rate?
Yes, That’s right! as long as you copy the via keymap profile and edit that.
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
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?
im not able to get this to work on my gmmk pro. i get these errors:https://i.imgur.com/N1M4s8K.png is anyone able to get it to work?
try this, worked for me
qmk compile -kb gmmk/pro -km
Does this include key roll over?
It doesn’t, However I will make a tutorial on how to do this as well soon.
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.
after I compile it, I don’t get a .bin but instead, I get a .hex…?
did you ever figure out how to get the .bin? I am using a keychron q1 v2 knob and I also got a hex :/
after I compile it, I don’t get a .bin but instead, I get a .hex? Anyone know a solution?
I have a funny feeling .hex should also be fine to flash. Have you tried that? or does that throw an error?
For future readers, flashing with the .hex worked fine for me.
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
I just keep getting the qmk toolbox telling me that it cant open the DFU device and no DFU capable device is available.
What keyboard are you using? You need to check with the vendor on how to put the device into DFU Mode.
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.
does this work with keychron k6?
Does this work for BM80 RGB?
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?
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!
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
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
Does this work for the hiney H88C PCB ? using the Geonworks frog tkl
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
So I have a question. how would you do this for the v1_4 version of the nk65?
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!
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
Thanks mate, appreciate the comment 🙂
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)
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 🙁
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.
when i compiled the file, i didnt got an .bin file. Instead he gave me directly the .hex file. Does the system has changed?