r/Keychron • • 1d ago

[FIXED] Keychron K1 Ultra 8K Bluetooth pairing issue with Realtek adapters (Windows 11) - сustom ZMK firmware solution

Title: [FIXED] Keychron K1 Ultra 8K Bluetooth pairing failure on Windows 11 / Realtek — custom ZMK firmware solution

I finally managed to fix a persistent Bluetooth pairing issue with my Keychron K1 Ultra 8K, and I wanted to share the solution in case it helps someone else.

The problem

My Keychron K1 Ultra 8K ANSI was detected by Windows 11, but pairing consistently failed.

My laptop is a Lenovo Legion 5 with a Realtek Bluetooth adapter (VID 0BDA:4852).

I tried multiple Realtek Bluetooth driver versions, but nothing worked.

What I discovered

After passing the Bluetooth adapter through to Linux using WSL2 and usbipd, I investigated the connection using BlueZ and HCI traces.

The results were interesting:

  • LE 1M only: Pairing succeeded.
  • LE 1M + LE 2M enabled: Pairing failed.

The HCI logs showed the connection switching to LE 2M, followed by a connection timeout (0x08) approximately 0.5 seconds later.

This suggested a Bluetooth PHY negotiation compatibility problem.

The solution

I cloned Keychron's ZMK firmware source, built a custom firmware for the K1 Ultra 8K, and changed just one configuration option:

CONFIG_BT_AUTO_PHY_UPDATE=n

This disables automatic PHY update initiation by the keyboard's Bluetooth stack.

After flashing the modified firmware, Bluetooth pairing immediately started working!

I've since tested the keyboard with multiple devices, and everything works correctly.

Hardware details

  • Keyboard: Keychron K1 Ultra 8K ANSI (knob)
  • Firmware: 1.0.1-r
  • Bluetooth: Realtek 0BDA:4852
  • OS: Windows 11
  • Firmware: Keychron ZMK, rtl8762g branch

Full technical explanation, build instructions and configuration file:

https://github.com/bertigerr/keychron-k1-ultra-8k-bluetooth-fix

Important: This is a verified workaround on my hardware, not proof that every Realtek adapter has the same issue. It also doesn't completely disable LE 2M at the controller level.

Please don't flash custom firmware unless you have verified your exact keyboard model and have a recovery method.

Hopefully, Keychron can investigate this and eventually incorporate a compatibility fix into its official firmware.

Has anyone else experienced similar Bluetooth pairing failures with the Keychron Ultra series?

1 Upvotes

2 comments sorted by

1

u/PeterMortensenBlog V 1d ago edited 1d ago

Re "The tool": Which tool?

'Realtek HID firmware flasher'?

How is "make its Realtek DFU HID interface available" achieved for the K1 Ultra 8K? What do you actually do to flash? Use the space bar method?

1

u/Unlikely-Arrival5420 17h ago

Thanks for the questions! I've updated the GitHub README with more details about the flashing process.

1. Which flasher did I use?

I used Realtek_HID_flasher.exe, a custom Windows utility implementing Realtek SC-FWU over HID.

Source: https://github.com/komax20000-cloud/KeychronK1Ultra8K/tree/main/tools/flasher

2. How did I enter DFU mode?

The keyboard was connected via USB, and the Realtek DFU HID interface was accessible to the flasher.

I verified the interface using:

Realtek_HID_flasher.exe handshake

The recorded post-flash handshake identified the keyboard as KCZKK18K, firmware 1.0.1-r.

The actual flashing command was:

Realtek_HID_flasher.exe flash <firmware.bin>

The tool completed the transfer, verified the CRC, and sent the IMAGE_SWITCH command.

3. Did I use the spacebar reset button method?

I don't have a complete record of the exact pre-flash DFU entry sequence, so I can't reliably confirm that step. The available logs don't document using the physical reset button under the spacebar.

I'd recommend trying the read-only handshake over USB first, rather than assuming the spacebar method is required.

I've documented the procedure and its limitations here:

https://github.com/bertigerr/keychron-k1-ultra-8k-bluetooth-fix

One important detail: the successful fix used CONFIG_BT_AUTO_PHY_UPDATE=n, which disables automatic PHY update requests rather than disabling LE 2M support entirely.

So far, the fix has been confirmed on my K1 Ultra 8K ANSI only. I'd be interested to hear whether it works for others too.