Keychron / qmk_firmware

Open-source keyboard firmware for Atmel AVR and Arm USB families
https://qmk.fm
GNU General Public License v2.0
720 stars 956 forks source link

[Bug] Q10 Pro and K11 Pro Bluetooth not working with NKRO - Via keymap #250

Open galaxyeden opened 5 months ago

galaxyeden commented 5 months ago

Describe the Bug

On my Q10 Pro, Bluetooth doesn't work when built from the wireless_playground branch. It connects fine, but keys give unexpected (and wrong) actions - like it's misinterpreting matrix scans.

Keyboard Used

Keychron Q10 Pro

Link to product page (if applicable)

No response

Operating System

macOS

qmk doctor Output

No response

Is AutoHotKey / Karabiner installed

Other keyboard-related software installed

No response

Additional Context

Works fine in USB, Karabiner isn't modifying events from this keyboard

lokher commented 5 months ago

Can you elabrate more and upload the compilred .bin file?

galaxyeden commented 5 months ago

Hi @lokher - sorry for the delayed reply, I wasn't home, as I travel a lot I actually just bought a K11 Pro and have the same issue. What I mean is that when paired by Bluetooth (both to my MacBook Air and to my Pixel 7) most keys do nothing and those that do, don't do the right thing. For example Q sends M and W sends A on the K11 Pro.

I've tried a factory reset with no luck, and I've compiled from the head of the current branch to rule out any of the config options I've set. I can install the firmware from your website and it works fine. Unfortunately, there are some config options Via can't set I need (the whole reason I bought your keyboards - QMK support).

I've attached a K11 Pro firmware I compiled from the HEAD of wireless_playground earlier today, which exhibits this issue. The start of the file name is the commit hash I compiled from.

e5e57f406e4281f3a9e61afdb6c3e7d323c0cf7b_keychron_k11_pro_ansi_encoder_rgb_via.zip

PeterMortensen commented 5 months ago

This may be caused by the keyboard being in (full) NKRO mode (not the default; the default is 6NKRO).

Recover by Fn + N (if using the default key mapping). If the firmware has been changed to use "#define FORCE_NKRO" then it must be done at every power up.

Though a factory reset should also do it, unless "#define FORCE_NKRO" is active/set.

I get the exact same behaviour with a K10 Pro in (full) NKRO mode, wireless mode, and branch 'wireless_playground' (it works perfectly fine in wired mode). The 2024-04-12 fix (E5E57) didn't seem to make a difference, but I will do more checking, incl. comparing with the 'bluetooth_playground' branch.

galaxyeden commented 5 months ago

Thanks @PeterMortensen I'm using #FORCE_NKRO, yes - now not when I'm on a freshly compiled version but NKRO would have remained and I didn't even think about it.

galaxyeden commented 5 months ago

Hi, I can confirm that this is the issue and disabling NKRO allows Bluetooth to work correctly - obviously not ideal so I'll leave this open and update the issue title

PeterMortensen commented 4 months ago

The 2024-04-12 fix (E5E57) didn't seem to make a difference

Perhaps it is hidden behind a feature flag, WIRELESS_NKRO_ENABLE, and must be explicitly enabled?