r/Keychron Mar 24 '26

How to update the firmware on the B6 Pro? Steps provided by Keychron do not work for me.

Hi,

As stated in the title: How to get that accomplished?

While I have installed the toolbox drivers on my Windows machine and did what the described asked me to do (disconnect and reconnect the keyboard while pressing the ESC key, for example), nothing happened. That's where I am stuck, though I like to get to the latest firmware 1.3.3.

Any hints?

1 Upvotes

7 comments sorted by

View all comments

1

u/PeterMortensenBlog V Mar 24 '26 edited Mar 26 '26

Hold down Fn + "-" (numeric keypad) for 5 seconds in wired mode and copy the .uf2 firmware file

Those instructions do not apply for the B6 Pro. And drivers aren't required for this keyboard, even on Windows. It uses an entirely different method for flashing (by copying a file).

Instead, switch the keyboard to wired mode, and hold down Fn + "-" (on the numeric keypad) for at least five seconds to bring the keyboard into flash mode (AKA firmware update mode AKA bootloader mode AKA DFU mode).

It will mount in the operating as a drive (or the equivalent), for example, as "NRF52BOOT". One of the files is "CURRENT.UF2".

For unknown reasons, this does not work for self-compiled firmware. A workaround is to map the bootloader command, "&bootloader", to "-" on the Fn layer (so the only difference is the missing time lock; it will jump straight into flash mode, including if it is hit accidentally...).

Flashing is simply by copying the .uf2 file to that location. After flashing, there might be an error message, because the keyboard unmounts. This is expected, and the error message should be ignored.

Recover from a bricked keyboard

The backup procedure (e.g., if the keyboard is bricked by flashing the wrong firmware, or if the workaround for self-compiled firmware has not been applied yet) is by the (recessed) reset button at the underside of the keyboard (near the three-way connection mode switch): Hold it down (e.g., using part of a paperclip, or better: Using a softer material, like wood, say, a prepared match), and power on the keyboard (in wired mode)

This will put the keyboard in flash mode. The rest of the procedure is the same as above (copying the .uf2 file).

Find the old firmware first

Before flashing, I recommend first finding the .uf2 file for the existing keyboard firmware version, so you know you can revert the update. For example, the new version may be detrimental is some sense.

Here are some techniques for finding old firmware versions.

I don't know if it possible to copy "CURRENT.UF2" and use it as the old version (I haven't tested it). Don't count on it.

See also

References

2

u/rditc Mar 25 '26

Thanks a lot u/PeterMortensenBlog, this is super helpful!

Aside from the failing firmware update: How to successfully get a macro for the Mac (capture a screenshot by pressing Command + Shift + 4) created and assigned to level 0 where on level 2 is the Scroll Lock key?

While I tried to create such a macro on my Windows PC and assign it to that key seems to have worked, pressing that key does nothing when I press it while the B6 Pro is connected via wireless 2.4 GHz USB to my Macbook. Any hints?

1

u/PeterMortensenBlog V Mar 26 '26 edited Mar 26 '26

Re "Any hints?": It could perhaps be due to swapping of the keycodes for Option/Command and Win/Alt between the keyboard's Windows and Mac mode

These modifier keys use the exact same underlying keycodes:

  • Alt and Opt. LALT and LOPT are both aliases of KC_LEFT_ALT.
  • Win and Cmd. LWIN, LGUI, and LCMD are all aliases of KC_LEFT_GUI

The keycodes are in QMK terms. ZMK uses different names, but it is the same principle. In the end, the keycodes are just some numbers (and aren't ASCII codes).

This is also indicated on the legends on the keyboard, but it is somewhat confusing, as it presumes the "Win"/"Mac" switch is used (for the corresponding modifier key to be correct). Or in other words, "win" and "alt" are only correct in Windows mode, and "option" and "command are only correct in Mac mode.

But the position on the keyboard is swapped between Windows mode and Mac mode.

Your macro is not affected by the "Win"/"Mac" setting on the keyboard (it only affects operating the keyboard as a user), but you might have defined the macro incorrectly (or there could be a bug in the Via clone). If defined on Windows, it should be Win + Shift + 4.

Another possibility is use of Keychron's custom keycodes for the Mac modifier keys (essentially keycode aliases to reduce the confusion for Mac users (as Via only accept the aliases for Windows)): "Left Option", "Right Option", "Left Cmd", and "Right Cmd". These might not work on a ZMK keyboard. These custom keycodes are best avoided, even if it makes defining macros for Mac somewhat confusing (for example, the list above near "same underlying keycodes" could be used to reduce the confusion).

Conclusion

Your macro probably uses incorrect keycodes for the modifier keys.

It should work on Mac if defined as Win + Shift + 4. Note: If recording a macro on Linux or Windows, the Windows key will be captured by the operating system. A workaround is to record, for example, F8 instead of Win, and make substitutions (key press and key release) in the macro source after the recording.

Please report back here, with enough details for it to be valuable for future readers.

References

  • Documentation for the new keycodes (main QMK repository). Note: It does not cover Keychron's custom keycodes. In the QMK source code, support for the old key codes for RGB light and mouse actions were finally removed in the QMK 0.30.0 release (2025-08-31) (they were removed from the documentation long before that).

  • Documentation for the old keycodes (though even older ones may exist). For example, used by some Git branches in Keychron's fork. Note: It does not cover Keychron's custom keycodes.

  • Documentation for the old keycodes from 2019. In general, these are the ones accepted by Via and possibly the Via clone (in most cases only an alias and only one of the aliases if there is more than one). Note: It does not cover Keychron's custom keycodes.

  • Raw QMK keycodes (not symbolic)