How to add a new keyboard mode

I think the usb@1:4 Holtek thing is the external one then.

A shot in the dark: try adding atkbd.reset i8042.nomux to the kernel parameters.
No need to edit anything at this point, when in GRUB (by the way, does laptop keyboard work in GRUB?), press e and add it at the end of the kernel ... (:man_facepalming: ) linux line (beware, it likely wraps because it's long) then proceed.
You may have to use the external keyboard if it doesn't.

edit: also try booting without the external one connected (disconnect soon after GRUB if you have to use it there)

3 Likes

which line?linux ?initrd?
I added atkbd.reset i8042.nomux but it seems not saved.ctrl+x to quit,how to save then quit.
Btw, I can use my laptop keyboard in grub.

1 Like

Apologies, memory failed me. The linux one, not kernel.
It does not save anything anyway, it only applies it for the current boot, so you can test if it makes a difference.

1 Like

'atkbd.reset i8042.nomux' does not work,this is a kernel question,right?After all I can use keyboard in grub.

I am not sure what the problem is, this is my theory: that keyboard is a little bit troublesome and is not being recognized but just needs some special handling to work.
I have to check how GRUB deals with keyboard input but the fact it works there gives me hope.
The kernel has a number of parameters that can be tweaked to deal with oddball hardware, sadly I don’t know much and I just harvest those from other issues, so there’s a bunch more of those to try.

Some combination of the atkbd and i8042 ones from kernel-parameters.txt is a good bet.

You may also try some other kernel variant like -mainline or -lts.

To be honest I’m puzzled that I can’t find anything online specifically about the MECHREVO keyboard.


OK, I think it’s this: 蛟龙16K在高版本linux下内置键盘失灵问题【机械革命吧】_百度贴吧

automatic translation

Model: Jiaolong 16K (Jiaolong16K Series GM6BG0Q)
This model has a built-in keyboard failure problem on a high-version linux kernel, specifically, the linux version is greater than or equal to 6.0.
This problem has been since the patch ACPI: skip IRQ override on AMD Zen platforms (kernel.org) The patch began to appear after canceling the special handling of ACPI interrupts for the AMD Ryzen platform.
After my investigation and debugging, the keyboard interrupt description in the ACPI DSDT table of Jiaolong 16K BIOS is wrong. The keyboard interrupt in DSDT is described as edge-sensitive and active low (Edge ActiveLow), but the machine keyboard is actually edge-sensitive, Active high (Edge ActiveHigh).
Before this patch, linux made special processing for interrupts with BUG. If an edge-sensitive, active-low interrupt was read, it would be considered a bug in the BIOS, and it would be processed directly as an edge-sensitive, active-high interrupt. However, this approach has caused some Ryzen notebook keyboards to fail, because the keyboards of these notebooks are edge-sensitive and low-level effective, so the above-mentioned patch cancels this approach.
However, the Jiaolong 16K keyboard should be edge-sensitive and active-high, but it is written as edge-sensitive and active-low in the BIOS. Therefore, after applying this patch, the keyboard of Jiaolong 16K cannot work normally.
Therefore, I hope that I can contact the technicians of Mechanical Revolution, and I can completely solve this problem through a BIOS update, and it can also prevent other problems in the future.

The picture contains text for a kernel patch to fix it, I don’t know if maybe there’s a simpler work around now that the problem is known. [see last edit, there is] Maybe some of the acpi parameters, but judging by other issues I’ve read, messing with those may have adverse effects elsewhere.


There’s a comment about contacting the manufacturer, maybe they’ll provide a BIOS update (or maybe not).


More translations from that page:

In the relevant discussions I found, it was mentioned that a notebook motherboard GMxRGxx from the same party also had this problem. According to the code name, Jiaolong’s motherboard should be very close to that motherboard. In this case, I guess there are problems with the several notebooks of the Jiaolong series. in trouble

I did an update of the dsdt table, using initrd to replace the dsdt table at boot time as a temporary bypass, use the tutorial search engine to search Upgrading ACPI tables via initrd. Download link http ps:// ww i.lan zoup.co m/i3n 8m0qy 4tih

yep the download link is written funny, however, that’s one way about it (other than waiting for either a BIOS fix or a workaround patch in the kernel – or recompiling it with the patch above that is).
Fix the link removing weird characters and an extra p in https. Got the file just in case.

Upgrading ACPI tables via initrd — The Linux Kernel documentation
DSDT - ArchWiki

whether this means compiling it yourself or trusting some stranger on the Internet is at your discretion.


Beware that both the kernel patch and the file are for a similar but different model, you’d have to adjust the patch and likely the file is not usable on your machine.

2 Likes