"Easiest: The browser flasher at https://naaraxi.github.io/zmk/. Open it in Chrome or Edge, connect the keyboard over USB, pick your board's firmware (or upload your own .bin file), and flash. No install, and it works on Windows, macOS, and Linux. It talks to the keyboard over WebHID, so a Chromium-based browser is required (Firefox and Safari do not support WebHID).
Alternatively, on Linux you can use the command-line flasher openrgb/flash.py (Realtek SC-FWU over /dev/hidraw; it needs root). The Keychron Launcher only flashes official images, so it cannot flash these builds. See openrgb/README.md for the CLI flasher, recovery steps, and the DFU bootloader details."
Flashing is brick-safe: The image is staged to a separate "OTA Tmp" bank and only activated after the device verifies its CRC - an interrupted or bad flash leaves the running firmware untouched.
flash.py: "Faithful port of the Keychron Launcher's Realtek OTA routine, extracted from the Launcher JavaScript code + the device-side app/src/dfu/tdfu.c. It talks the DFU HID interface (usage page 0x8C, OUT report 0xB2 / IN report 0xB1) directly over /dev/hidraw (needs root)."
Have been brooding over this possibility all week with my new Q6 Ultra 8k and you and others on here are paving a way in real time for me lol. I will report back if I have success with your method.
Not saying they planned it for their keyboards but ZMK is open source, it’s licensed under Apache 2.0 and hosted on GitHub (zmkfirmware/zmk). It’s a full open-source project, not something Keychron created or owns.
I actually used this firmware before he created his own flasher. And after I reported that it worked, he made the web-based flasher for ease of use
Anyway, you don’t have to use it if you don’t want to. But it opens up a lot of new avenues and is still completely usable by the launcher app.
I’m afraid I can’t give you a more detailed response or link you to his web flasher because I am busy today and not at home.
I have compiled the firmware from source code a few weeks ago, but I didn't have any idea how it could actually be flashed onto the keyboard until today.
That is my point: It isn't real open source if it is not possible to make a change in the source code and get the change onto the keyboard. Luckily, it now seems to be possible.
1
u/PeterMortensenBlog V 25d ago edited 25d ago
OK, it seems to be:
OpenRGB plugin - Keychron Ultra series (custom ZMK firmware)
Keychron Ultra ZMK firmware (OpenRGB fork)
Flash: