You are not logged in.

#1 2021-06-20 21:31:06

mephinet
Member
Registered: 2017-04-22
Posts: 10

Issues with Cherry MX Board 3.0 S: endless keycode 248 presses

I recently bought a Cherry MX Board 3.0 S mechanical keyboard. It features RGB backlight, which unfortunately can only be configured using Cherry's proprietary Windows application - that is, until https://openrgb.org/ has implemented support for it. As the default color scheme is unbearable, I attached the keyboard to a windows notebook, used the Cherry software to change the color setting to something decent, installed the latest firmware (version 0126) along the way, and was ready to get started using it with Linux.

However, I quickly was disappointed, as my system, an up-to-date Arch installation on a Lenovo Thinkpad, behaved really weird as soon as the new keyboard was attached. I wasn't able to type in my password, couldn't press Ctrl-C in the terminal, the terminal's cursor was gone, the mouse cursor disappeared randomly, etc. I was puzzled for a day or two, until I started to debug the issue.

I found out that the keyboard does not show up as 1 USB device, but instead of 4, as xinput list shows:

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ CHERRY Mechanical Keyboard              	id=15	[slave  pointer  (2)]
⎜   ↳ CHERRY Mechanical Keyboard Mouse        	id=18	[slave  pointer  (2)]
...
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ CHERRY Mechanical Keyboard              	id=16	[slave  keyboard (3)]
    ↳ CHERRY Mechanical Keyboard              	id=17	[slave  keyboard (3)]
...

Also, it registers 4 devices below /dev/input/event*. WTF is going on here?

When using xev, you can immediately see the root cause for the system's strange behaviour: one of these 4 USB devices sends 25 keypresses per second, like these:

KeyPress event, serial 31, synthetic NO, window 0x3000001,
    root 0x1d6, subw 0x0, time 2325935, (440,577), root:(1404,601),
    state 0x0, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x3000001,
    root 0x1d6, subw 0x0, time 2326597, (440,577), root:(1404,601),
    state 0x0, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

At first, I wasn't sure whether this was an issue with some X component, but it must be directly related to the Linux kernel, as the issue is already apparent in the initrd, where it's impossible to type in the correct password to decrypt the root filesystem, as can be seen in this video:
https://youtu.be/_ulfZgKdzBw

Luckily, the keypresses come from one of the USB devices that don't seem to have any valid reason to exist, so once the problem is understood, it can be easily circumvented by disabling this device using an evdev rule, e.g. /etc/udev/rules.d/cherry-keyboard.rules:

ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="046a", ATTRS{idProduct}=="0079", ATTR{capabilities/ev}=="10001f", ATTR{inhibited}="1"

When adding this file to the initrd, entering the password for decrypting the root filesystem also becomes possible again. Then can be accomplished by adding this line to /etc/mkinitcpio.conf:

FILES=( /etc/udev/rules.d/cherry-keyboard.rules )

With these modifications in place, the keyboard is fully usable. So here's my question: Where should I go to with this "solution"? Should this be part of the official udev database, and do I need to create a ticket in the systemd bug tracker? Or is this something that needs to be handled in the kernel, and should thus go to kernel's bugzilla? Or should I follow the advice shown there and create a ticket in the Arch bugtracker instead? Or somewhere else entirely? I'm a bit lost here, and I'd love to get this issue fixed so that future users don't have to go through all that debugging that I had to...

Thanks for any suggestions!

Offline

#2 2021-06-28 14:21:47

Mr. Mojo
Member
Registered: 2021-06-28
Posts: 1

Re: Issues with Cherry MX Board 3.0 S: endless keycode 248 presses

Same here and it can cause a lot of unexpected behavior, see e.g. https://bugzilla.mozilla.org/show_bug.cgi?id=1717426. But to implement a udev rule shouldn't be the right way to fix that issue. Instead i called the Cherry support and they already have an experimental, unofficial firmware update 0132:

http://www.cherry.de/files/software/TEM … B_0132.exe (standalone Windows flash executable only)

For me it worked properly so far and disabled this phantom key behavior. They said the firmware will be pushed to the upstream during the upcoming weeks.

Offline

#3 2021-06-28 14:40:37

mephinet
Member
Registered: 2017-04-22
Posts: 10

Re: Issues with Cherry MX Board 3.0 S: endless keycode 248 presses

Mr. Mojo wrote:

Instead i called the Cherry support and they already have an experimental, unofficial firmware update 0132:

Hi Mojo,
yes, you're absolutely right. I also called Cherry support after I created this post. They were super helpful and gave me an unreleased version of the firmware. Once I see an official release, I'll post the link here...

Offline

Board footer

Powered by FluxBB