You are not logged in.
Tonight I migrated a Debian Trixie install to Excalibur using the instructions on the Devuan site. Almost everything seems to be working, except that my custom hwdb keyboard rules now aren't loading. They'd been working on Debian before the migration, and they are still working on another partition on the same PC, which was always running Devuan. It seems something specific about the migration broke hwdb, though.
Unfortunately these rules are kind of important, because my left control key is entirely broken off. It's an old laptop, with no replacement keyboard available. I have a file at /etc/udev/hwdb.d/99-keyboard.hwdb that remaps caps lock to left ctrl. Here's the contents of the file:
evdev:name:AT Translated Set 2 keyboard:*
KEYBOARD_KEY_3a=leftctrl(I cut down the rules to just this one for troubleshooting purposes.) I verified that the timestamp on /etc/udev/hwdb.bin is being refreshed when I run udevadm hwdb --update. In the past, running udevadm trigger would always load any rule changes immediately. I could verify them with udevadm info /dev/input/by-path/platform-i8042-serio-0-event-kbd. Now, however, nothing ever changes, not even after I reboot.
If it matters, I run pretty "barebones" systems. I don't have elogind installed on my machines. However, I saw that installing it was part of the migration instructions, so I did as I was instructed. Still, I wonder if my system is too different from the expected configuration for the migration process to work properly. Maybe I should just start over from scratch at this point.
Offline
No experience of any of this, my comments below are worth exactly what you pay for them (nothing).
My first foray would be to investigate if usrmerge has broken something.
Make sure the files being accessed are the right files in the right place with appropriate permissions.
I would personally resort to 'strace udevadm ....' as I am used to reading its output and catching unexpected behaviour.
Online
Thanks for the suggestion, I hadn't thought about checking with strace. At least I know now that udevadm hwdb --update is successfully opening and reading my .hwdb file:
openat(AT_FDCWD, "/etc/udev/hwdb.d/99-keyboard.hwdb", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=68, ...}) = 0
read(3, "evdev:name:AT Translated Set 2 k"..., 4096) = 68
read(3, "", 4096) = 0
close(3) = 0
I checked the trace for the udevadm trigger as well, but it didn't contain anything useful. I checked again to make sure I was using the right name for my keyboard, and it still appeared to be correct:
# udevadm info -a /dev/input/by-path/platform-i8042-serio-0-event-kbd
...
ATTRS{name}=="AT Translated Set 2 keyboard"I believe usrmerge was already applied in Trixie before I started the migration to Excalibur. I remember checking for the symlinks shortly after installing Debian.
Offline
@stultumanto, the only other step I can think of is to confirm that the newer hwdb from Excalibur\Trixie does not already have a definition using that keyboard string.
(Im using Daedalus)
strings /lib/udev/hwdb.bin | grep -E 'AT.*eyboard'
AT91SAM HID Keyboard Demo ApplicationSorry I cannot help more.
I do not know how to 'udevadm monitor' and hotplug a laptop keyboard ![]()
Just one thought, I have used\had my desktop re-map my keyboard on login...
Last edited by g4sra (2025-11-13 18:32:14)
Online
Thanks for sticking with the problem, g4sra. In fact, I think you are right. It appears that name is no longer valid. It worked for years, but it must have been changed recently. I searched through the predefined keyboard rules under /usr/lib/udev/60-keyboard.hwdb and found a ruleset that matched the output of udevadm info for my keyboard. I copied the string used with this ruleset into my own file, and it worked! This was the working string:
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAlienware*:pn*:*Offline
but it must have been changed recently.
Debian have become rather fond of breaking changes made recently. If you are lucky that showed up in a news file most people never see or read when the package with the breaking change was installed. Good to see you get it solved and actually posted the solution something that can be a rare occurrence on internet forums, thanks for doing it.
Offline
Debian have become rather fond of breaking changes made recently.
I really began to suspect something had changed when I saw this header in /usr/lib/udev/hwdb.d/60-keyboard.hwdb:
# Note: The format of the "evdev:" prefix match key is a contract between the
# rules file and the hardware data, it might change in later revisions to
# support more or better matches, it is not necessarily expected to be a stable
# ABI.The sheer number of posts about udev & hwdb I found across the web suggests it's a huge source of frustration for Linux users. I remember it took me hours to figure out that my rules needed to be indented by exactly one space. I can't think of another parser that brittle. Even Python is more forgiving!
Someone tried to open a bug report about it several years ago, but Pottering himself closed it. He said it sounded "like a support issue!"
Offline
Someone tried to open a bug report about it several years ago, but Pottering himself closed it. He said it sounded "like a support issue!"
More garbage produce by that asshole, small shock there.
Offline
@stultumanto, I have learnt from your summary, thanks for posting in detail how you resolved it.
Online