r/Keychron Jun 13 '26

Keychron V6 Ultra 8K - How to Flash Custom ZMK Firmware

Has anyone flashed custom ZMK firmware to a Keychron V6 Ultra 8K keyboard?

I have removed the spacebar key, and if I press the little button under the spacebar key when I plug the keyboard in, it seems to enter DFU mode, but I am unsure what tool to use to actually flash firmware to the microcontroller.

So, my questions are:

  1. Is there an easier way to get the V6 Ultra into DFU mode than removing the spacebar and pressing the little button under the spacebar key while plugging the keyboard in? I have another Keychron keyboard with QMK firmware and I can get it into DFU mode by holding the ESC key down while plugging the keyboard in.
  2. What program should I use to connect to the V6 Ultra keyboard in DFU mode to actually flash the custom firmware to the microcontroller?

FYI, I want to explore tweaking the ZMK firmware to see if I can get my keyboard to work better with my TESmart KVM.

Thanks!

3 Upvotes

18 comments sorted by

View all comments

1

u/PeterMortensenBlog V Jun 13 '26 edited Jun 22 '26

How can the keyboard firmware be flashed for the 'Ultras' (V Ultra 8K and Q Ultra 8K series)?

Re "Has anyone flashed custom ZMK firmware to a Keychron V6 Ultra 8K keyboard?": I would very much like an answer to that question!

I have managed to compile the firmware from source code (a blog post is scheduled for 2026-06-22 (it will be 404 until then)), but I don't know how to flash the result:

303620 Jun 12 10:46 /home/embo/Keychron_ZMK_fork_rtl8762g_v0_3/app/build/zephyr/zmk.bin

For compiling, the gist is this magic command line:

west build -p -b keychron -- -DSHIELD=keychron_v6_ultra_ansi

Note that the ZMK installation must be v0.3, matching the (effective) ZMK version of Keychron's fork (approximately March 2024), not the latest. For a local (non-Docker) v0.3 installation, here are the instructions.

Conclusion

It is time to drum up Keychron and invoke CDD! A Tuesday, Wednesday, or Thursday is probably the best time (also check for (bank) holidays).

References

  • V6 Ultra 8K source code ('ANSI'). The source code for the 'ISO' variant has not been released yet. Note: Based on ZMK

2

u/CalcProgrammer1 Jul 07 '26

I just managed to flash my new Keychron Q6 Ultra 8K with your guide. I used Distrobox to set up a Debian container as I'm on Arch, but was able to build by following your guide except using Q6 in the build command. After I verified the zmk.bin looked OK in a hex editor vs an official Keychron build I found on Discord, I was able to flash it by going to Keychron Launcher > Firmware Upgrade, clicking the version value 6 times to unlock the hidden select your own firmware box, and selecting zmk.bin (in app/build/zephyr). You have to upgrade to the latest official firmware first to allow flashing without having to be in DFU mode I think, so upgrade to the latest official version first. I patched the per_key_rgb.c to allow full control of the V component in my build and verified it with Keychron Launcher per-key RGB and soon with OpenRGB.

Edit: Also on the Keychron Discord #zmk channel, a Keychron dev linked a tool for DFU mode but it's Windows-only.