You are not logged in.

#1 2023-01-07 19:45:16

ineptsofar
Member
Registered: 2023-01-07
Posts: 5

[SOLVED] keyboard inoperable after kernel update broke custom keymap

A few weeks ago I upgraded my Thinkpad x230 laptop with `pacman -Syu` and now the console login screen does not recognize keypresses. I'm prevented from using the device.

Here's my uname for reference

 $uname -a
Linux arch 6.1.3-arch1-1 #1 SMP PREEMPT_DYNAMIC Wed, 04 Jan 2023 16:28:15 +0000 x86_64 GNU/Linux

First I tried plugging in an external USB keyboard but that didn't work either.

Next I booted into the live arch environment, mounted my root partition, chrooted into that, and enabled sshd as suggested by other posts. The keyboard works fine in the live environment, so I thought it it could be something with the kernel modules.

Here is the output of `lsmod` in the live environment:

Module                  Size  Used by
ext4                  798720  1
crc32c_generic         16384  0
crc16                  16384  1 ext4
mbcache                16384  1 ext4
jbd2                  139264  1 ext4
ccm                    20480  0
algif_aead             16384  0
cbc                    16384  0
des_generic            16384  0
libdes                 24576  1 des_generic
ecb                    16384  0
arc4                   16384  0
algif_skcipher         16384  0
cmac                   16384  0
md4                    16384  0
algif_hash             16384  0
af_alg                 32768  3 algif_hash,algif_skcipher,algif_aead
wl                   6467584  0
iwldvm                278528  0
mac80211             1040384  1 iwldvm
joydev                 28672  0
mousedev               24576  0
libarc4                16384  2 mac80211,arc4
intel_rapl_msr         20480  0
intel_rapl_common      32768  1 intel_rapl_msr
x86_pkg_temp_thermal    20480  0
intel_powerclamp       20480  0
iwlwifi               393216  1 iwldvm
coretemp               20480  0
snd_hda_codec_hdmi     73728  1
kvm_intel             327680  0
snd_hda_codec_realtek   135168  1
snd_hda_codec_generic    98304  1 snd_hda_codec_realtek
kvm                   835584  1 kvm_intel
snd_hda_intel          53248  0
snd_intel_dspcfg       28672  1 snd_hda_intel
snd_hda_codec         167936  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
intel_rst              16384  0
irqbypass              16384  1 kvm
iTCO_wdt               16384  0
snd_hda_core          106496  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
mei_wdt                16384  0
crct10dif_pclmul       16384  1
thinkpad_acpi         114688  0
iTCO_vendor_support    16384  1 iTCO_wdt
ghash_clmulni_intel    16384  0
cfg80211              897024  4 wl,iwldvm,iwlwifi,mac80211
mei_hdcp               24576  0
nvram                  16384  1 thinkpad_acpi
snd_hwdep              16384  1 snd_hda_codec
snd_pcm               147456  4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
ledtrig_audio          16384  3 snd_hda_codec_generic,snd_hda_codec_realtek,thinkpad_acpi
rapl                   16384  0
snd_timer              45056  1 snd_pcm
intel_cstate           16384  0
intel_uncore          159744  0
psmouse               184320  0
snd                   114688  9 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,thinkpad_acpi,snd_pcm
input_leds             16384  0
rfkill                 28672  4 thinkpad_acpi,cfg80211
ac                     16384  0
evdev                  28672  5
mei_me                 49152  2
mac_hid                16384  0
soundcore              16384  1 snd
i2c_i801               36864  0
mei                   126976  5 mei_wdt,mei_hdcp,mei_me
lpc_ich                28672  0
pcspkr                 16384  0
wmi_bmof               16384  0
pkcs8_key_parser       16384  0
ip_tables              36864  0
x_tables               53248  1 ip_tables
overlay               139264  1
squashfs               69632  1
loop                   40960  2
nls_iso8859_1          16384  1
nls_cp437              20480  1
vfat                   24576  1
fat                    86016  1 vfat
uas                    32768  0
usb_storage            77824  2 uas
i915                 2617344  2
i2c_algo_bit           16384  1 i915
drm_kms_helper        253952  1 i915
syscopyarea            16384  1 drm_kms_helper
sysfillrect            16384  1 drm_kms_helper
crc32_pclmul           16384  0
sysimgblt              16384  1 drm_kms_helper
fb_sys_fops            16384  1 drm_kms_helper
crc32c_intel           24576  2
cec                    69632  2 drm_kms_helper,i915
rc_core                61440  1 cec
serio_raw              20480  0
aesni_intel           368640  0
atkbd                  36864  0
glue_helper            16384  1 aesni_intel
crypto_simd            16384  1 aesni_intel
libps2                 20480  2 atkbd,psmouse
drm                   581632  3 drm_kms_helper,i915
cryptd                 24576  2 crypto_simd,ghash_clmulni_intel
sdhci_pci              61440  0
cqhci                  32768  1 sdhci_pci
xhci_pci               20480  0
sdhci                  77824  1 sdhci_pci
ehci_pci               20480  0
mmc_core              188416  3 sdhci,cqhci,sdhci_pci
ehci_hcd               98304  1 ehci_pci
xhci_hcd              286720  1 xhci_pci
intel_gtt              24576  1 i915
e1000e                299008  0
agpgart                53248  2 intel_gtt,drm
wmi                    36864  1 wmi_bmof
battery                20480  1 thinkpad_acpi
i8042                  32768  0
serio                  28672  7 serio_raw,atkbd,psmouse,i8042

And here is the output for the broken system:

Module                  Size  Used by
ccm                    20480  6
joydev                 28672  0
mousedev               24576  0
intel_rapl_msr         20480  0
intel_rapl_common      32768  1 intel_rapl_msr
x86_pkg_temp_thermal    20480  0
intel_powerclamp       20480  0
coretemp               20480  0
8021q                  40960  0
kvm_intel             393216  0
garp                   16384  1 8021q
mrp                    20480  1 8021q
stp                    16384  1 garp
llc                    16384  2 stp,garp
snd_hda_codec_hdmi     86016  1
kvm                  1146880  1 kvm_intel
snd_ctl_led            24576  0
snd_hda_codec_realtek   172032  1
irqbypass              16384  1 kvm
snd_hda_codec_generic    98304  1 snd_hda_codec_realtek
crct10dif_pclmul       16384  1
snd_hda_intel          61440  0
crc32_pclmul           16384  0
snd_intel_dspcfg       36864  1 snd_hda_intel
iwldvm                286720  0
polyval_clmulni        16384  0
polyval_generic        16384  1 polyval_clmulni
gf128mul               16384  1 polyval_generic
snd_intel_sdw_acpi     20480  1 snd_intel_dspcfg
mac80211             1314816  1 iwldvm
ghash_clmulni_intel    16384  0
sha512_ssse3           53248  0
libarc4                16384  1 mac80211
snd_hda_codec         188416  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
aesni_intel           393216  4
vfat                   24576  1
fat                    98304  1 vfat
snd_hda_core          118784  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
iTCO_wdt               16384  0
iwlwifi               491520  1 iwldvm
snd_hwdep              16384  1 snd_hda_codec
at24                   28672  0
crypto_simd            16384  1 aesni_intel
intel_pmc_bxt          16384  1 iTCO_wdt
cryptd                 24576  2 crypto_simd,ghash_clmulni_intel
mei_wdt                16384  0
mei_pxp                20480  0
mei_hdcp               24576  0
rapl                   16384  0
iTCO_vendor_support    16384  1 iTCO_wdt
intel_cstate           20480  0
snd_pcm               172032  4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
think_lmi              40960  0
i2c_i801               45056  0
psmouse               212992  0
intel_uncore          217088  0
pcspkr                 16384  0
cfg80211             1126400  3 iwldvm,iwlwifi,mac80211
mei_me                 57344  3
firmware_attributes_class    16384  1 think_lmi
snd_timer              49152  1 snd_pcm
wmi_bmof               16384  0
e1000e                331776  0
lpc_ich                28672  0
i2c_smbus              20480  1 i2c_i801
mei                   176128  7 mei_wdt,mei_hdcp,mei_pxp,mei_me
mac_hid                16384  0
fuse                  176128  1
bpf_preload            24576  0
ip_tables              36864  0
x_tables               57344  1 ip_tables
ext4                 1019904  1
crc32c_generic         16384  0
crc16                  16384  1 ext4
mbcache                16384  1 ext4
jbd2                  188416  1 ext4
i915                 3473408  2
serio_raw              20480  0
sdhci_pci              86016  0
drm_buddy              20480  1 i915
atkbd                  36864  0
cqhci                  45056  1 sdhci_pci
intel_gtt              28672  1 i915
libps2                 20480  2 atkbd,psmouse
vivaldi_fmap           16384  1 atkbd
sdhci                  90112  1 sdhci_pci
thinkpad_acpi         184320  0
ledtrig_audio          16384  3 snd_ctl_led,snd_hda_codec_generic,thinkpad_acpi
drm_display_helper    212992  1 i915
platform_profile       16384  1 thinkpad_acpi
crc32c_intel           24576  2
snd                   131072  10 snd_ctl_led,snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,thinkpad_acpi,snd_pcm
cec                    81920  2 drm_display_helper,i915
mmc_core              233472  3 sdhci,cqhci,sdhci_pci
soundcore              16384  2 snd_ctl_led,snd
xhci_pci               20480  0
ttm                    94208  1 i915
xhci_pci_renesas       24576  1 xhci_pci
rfkill                 32768  4 thinkpad_acpi,cfg80211
video                  65536  2 thinkpad_acpi,i915
i8042                  49152  0
wmi                    45056  3 video,wmi_bmof,think_lmi
serio                  28672  7 serio_raw,atkbd,psmouse,i8042

I've tried working through the diff using the `modinfo` command but that's been slow going. Most of the kernel modules names are cryptic and some don't have descriptions of what they do.

At this stage I tried to get an overview of how the keyboard and mouse work on linux and learned about the `evtest` utility. Interestingly pressing keys shows up there!

$ sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:	Lid Switch
/dev/input/event1:	Sleep Button
/dev/input/event10:	HDA Intel PCH Dock Headphone
/dev/input/event11:	HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event12:	HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event13:	HDA Intel PCH HDMI/DP,pcm=8
/dev/input/event14:	SynPS/2 Synaptics TouchPad
/dev/input/event15:	TPPS/2 IBM TrackPoint
/dev/input/event2:	Power Button
/dev/input/event3:	ThinkPad Extra Buttons
/dev/input/event4:	AT Translated Set 2 keyboard
/dev/input/event5:	Video Bus
/dev/input/event6:	PC Speaker
/dev/input/event7:	HDA Intel PCH Mic
/dev/input/event8:	HDA Intel PCH Dock Mic
/dev/input/event9:	HDA Intel PCH Headphone
Select the device event number [0-15]: 4
Input driver version is 1.0.1
Input device ID: bus 0x11 vendor 0x1 product 0x1 version 0xab54
Input device name: "AT Translated Set 2 keyboard"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
    Event code 5 (KEY_4)
    Event code 6 (KEY_5)
    Event code 7 (KEY_6)
    Event code 8 (KEY_7)
    Event code 9 (KEY_8)
    Event code 10 (KEY_9)
    Event code 11 (KEY_0)
    Event code 12 (KEY_MINUS)
    Event code 13 (KEY_EQUAL)
    Event code 14 (KEY_BACKSPACE)
    Event code 15 (KEY_TAB)
    Event code 16 (KEY_Q)
    Event code 17 (KEY_W)
    Event code 18 (KEY_E)
    Event code 19 (KEY_R)
    Event code 20 (KEY_T)
    Event code 21 (KEY_Y)
    Event code 22 (KEY_U)
    Event code 23 (KEY_I)
    Event code 24 (KEY_O)
    Event code 25 (KEY_P)
    Event code 26 (KEY_LEFTBRACE)
    Event code 27 (KEY_RIGHTBRACE)
    Event code 28 (KEY_ENTER)
    Event code 29 (KEY_LEFTCTRL)
    Event code 30 (KEY_A)
    Event code 31 (KEY_S)
    Event code 32 (KEY_D)
    Event code 33 (KEY_F)
    Event code 34 (KEY_G)
    Event code 35 (KEY_H)
    Event code 36 (KEY_J)
    Event code 37 (KEY_K)
    Event code 38 (KEY_L)
    Event code 39 (KEY_SEMICOLON)
    Event code 40 (KEY_APOSTROPHE)
    Event code 41 (KEY_GRAVE)
    Event code 42 (KEY_LEFTSHIFT)
    Event code 43 (KEY_BACKSLASH)
    Event code 44 (KEY_Z)
    Event code 45 (KEY_X)
    Event code 46 (KEY_C)
    Event code 47 (KEY_V)
    Event code 48 (KEY_B)
    Event code 49 (KEY_N)
    Event code 50 (KEY_M)
    Event code 51 (KEY_COMMA)
    Event code 52 (KEY_DOT)
    Event code 53 (KEY_SLASH)
    Event code 54 (KEY_RIGHTSHIFT)
    Event code 55 (KEY_KPASTERISK)
    Event code 56 (KEY_LEFTALT)
    Event code 57 (KEY_SPACE)
    Event code 58 (KEY_CAPSLOCK)
    Event code 59 (KEY_F1)
    Event code 60 (KEY_F2)
    Event code 61 (KEY_F3)
    Event code 62 (KEY_F4)
    Event code 63 (KEY_F5)
    Event code 64 (KEY_F6)
    Event code 65 (KEY_F7)
    Event code 66 (KEY_F8)
    Event code 67 (KEY_F9)
    Event code 68 (KEY_F10)
    Event code 69 (KEY_NUMLOCK)
    Event code 70 (KEY_SCROLLLOCK)
    Event code 71 (KEY_KP7)
    Event code 72 (KEY_KP8)
    Event code 73 (KEY_KP9)
    Event code 74 (KEY_KPMINUS)
    Event code 75 (KEY_KP4)
    Event code 76 (KEY_KP5)
    Event code 77 (KEY_KP6)
    Event code 78 (KEY_KPPLUS)
    Event code 79 (KEY_KP1)
    Event code 80 (KEY_KP2)
    Event code 81 (KEY_KP3)
    Event code 82 (KEY_KP0)
    Event code 83 (KEY_KPDOT)
    Event code 85 (KEY_ZENKAKUHANKAKU)
    Event code 86 (KEY_102ND)
    Event code 87 (KEY_F11)
    Event code 88 (KEY_F12)
    Event code 89 (KEY_RO)
    Event code 90 (KEY_KATAKANA)
    Event code 91 (KEY_HIRAGANA)
    Event code 92 (KEY_HENKAN)
    Event code 93 (KEY_KATAKANAHIRAGANA)
    Event code 94 (KEY_MUHENKAN)
    Event code 95 (KEY_KPJPCOMMA)
    Event code 96 (KEY_KPENTER)
    Event code 97 (KEY_RIGHTCTRL)
    Event code 98 (KEY_KPSLASH)
    Event code 99 (KEY_SYSRQ)
    Event code 100 (KEY_RIGHTALT)
    Event code 102 (KEY_HOME)
    Event code 103 (KEY_UP)
    Event code 104 (KEY_PAGEUP)
    Event code 105 (KEY_LEFT)
    Event code 106 (KEY_RIGHT)
    Event code 107 (KEY_END)
    Event code 108 (KEY_DOWN)
    Event code 109 (KEY_PAGEDOWN)
    Event code 110 (KEY_INSERT)
    Event code 111 (KEY_DELETE)
    Event code 112 (KEY_MACRO)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
    Event code 117 (KEY_KPEQUAL)
    Event code 118 (KEY_KPPLUSMINUS)
    Event code 119 (KEY_PAUSE)
    Event code 121 (KEY_KPCOMMA)
    Event code 122 (KEY_HANGUEL)
    Event code 123 (KEY_HANJA)
    Event code 124 (KEY_YEN)
    Event code 125 (KEY_LEFTMETA)
    Event code 126 (KEY_RIGHTMETA)
    Event code 127 (KEY_COMPOSE)
    Event code 128 (KEY_STOP)
    Event code 140 (KEY_CALC)
    Event code 142 (KEY_SLEEP)
    Event code 143 (KEY_WAKEUP)
    Event code 155 (KEY_MAIL)
    Event code 156 (KEY_BOOKMARKS)
    Event code 157 (KEY_COMPUTER)
    Event code 158 (KEY_BACK)
    Event code 159 (KEY_FORWARD)
    Event code 163 (KEY_NEXTSONG)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 165 (KEY_PREVIOUSSONG)
    Event code 166 (KEY_STOPCD)
    Event code 172 (KEY_HOMEPAGE)
    Event code 173 (KEY_REFRESH)
    Event code 183 (KEY_F13)
    Event code 184 (KEY_F14)
    Event code 185 (KEY_F15)
    Event code 217 (KEY_SEARCH)
    Event code 226 (KEY_MEDIA)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
  Event type 17 (EV_LED)
    Event code 0 (LED_NUML) state 0
    Event code 1 (LED_CAPSL) state 0
    Event code 2 (LED_SCROLLL) state 0
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    250
    Repeat code 1 (REP_PERIOD)
      Value     33
Properties:
Testing ... (interrupt to exit)
Event: time 1673119656.801761, type 4 (EV_MSC), code 4 (MSC_SCAN), value 20
Event: time 1673119656.801761, type 1 (EV_KEY), code 32 (KEY_D), value 1
Event: time 1673119656.801761, -------------- SYN_REPORT ------------
Event: time 1673119656.912961, type 4 (EV_MSC), code 4 (MSC_SCAN), value 21
Event: time 1673119656.912961, type 1 (EV_KEY), code 33 (KEY_F), value 1
Event: time 1673119656.912961, -------------- SYN_REPORT ------------
Event: time 1673119656.983296, type 4 (EV_MSC), code 4 (MSC_SCAN), value 20
Event: time 1673119656.983296, type 1 (EV_KEY), code 32 (KEY_D), value 0
Event: time 1673119656.983296, -------------- SYN_REPORT ------------
Event: time 1673119657.022657, type 4 (EV_MSC), code 4 (MSC_SCAN), value 22
Event: time 1673119657.022657, type 1 (EV_KEY), code 34 (KEY_G), value 1
Event: time 1673119657.022657, -------------- SYN_REPORT ------------
Event: time 1673119657.077538, type 4 (EV_MSC), code 4 (MSC_SCAN), value 21
Event: time 1673119657.077538, type 1 (EV_KEY), code 33 (KEY_F), value 0
Event: time 1673119657.077538, -------------- SYN_REPORT ------------
Event: time 1673119657.164302, type 4 (EV_MSC), code 4 (MSC_SCAN), value 22
Event: time 1673119657.164302, type 1 (EV_KEY), code 34 (KEY_G), value 0
Event: time 1673119657.164302, -------------- SYN_REPORT ------------
Event: time 1673119657.712761, type 4 (EV_MSC), code 4 (MSC_SCAN), value 1f
Event: time 1673119657.712761, type 1 (EV_KEY), code 31 (KEY_S), value 1
Event: time 1673119657.712761, -------------- SYN_REPORT ------------
Event: time 1673119657.847397, type 4 (EV_MSC), code 4 (MSC_SCAN), value 1f
Event: time 1673119657.847397, type 1 (EV_KEY), code 31 (KEY_S), value 0
Event: time 1673119657.847397, -------------- SYN_REPORT ------------
Event: time 1673119658.254233, type 4 (EV_MSC), code 4 (MSC_SCAN), value 22
Event: time 1673119658.254233, type 1 (EV_KEY), code 34 (KEY_G), value 1
Event: time 1673119658.254233, -------------- SYN_REPORT ------------
Event: time 1673119658.364954, type 4 (EV_MSC), code 4 (MSC_SCAN), value 22
Event: time 1673119658.364954, type 1 (EV_KEY), code 34 (KEY_G), value 0
Event: time 1673119658.364954, -------------- SYN_REPORT ------------
Event: time 1673119658.793806, type 4 (EV_MSC), code 4 (MSC_SCAN), value 1f
Event: time 1673119658.793806, type 1 (EV_KEY), code 31 (KEY_S), value 1
Event: time 1673119658.793806, -------------- SYN_REPORT ------------
Event: time 1673119658.928564, type 4 (EV_MSC), code 4 (MSC_SCAN), value 1f
Event: time 1673119658.928564, type 1 (EV_KEY), code 31 (KEY_S), value 0
Event: time 1673119658.928564, -------------- SYN_REPORT ------------
Event: time 1673119659.175238, type 4 (EV_MSC), code 4 (MSC_SCAN), value 12
Event: time 1673119659.175238, type 1 (EV_KEY), code 18 (KEY_E), value 1
Event: time 1673119659.175238, -------------- SYN_REPORT ------------
Event: time 1673119659.309919, type 4 (EV_MSC), code 4 (MSC_SCAN), value 12
Event: time 1673119659.309919, type 1 (EV_KEY), code 18 (KEY_E), value 0
Event: time 1673119659.309919, -------------- SYN_REPORT ------------

I'm stuck trying to learn more about what layer of the keyboard functionality is missing on my system between the driver and the console and why that would have suddenly broken over a system upgrade.

Last edited by ineptsofar (2023-01-07 23:23:40)

Offline

#2 2023-01-07 19:51:51

Head_on_a_Stick
Member
From: The Wirral
Registered: 2014-02-20
Posts: 9,003
Website

Re: [SOLVED] keyboard inoperable after kernel update broke custom keymap

This could be a kernel regression. Does downgrading the kernel fix the problem?


Jin, Jîyan, Azadî

Offline

#3 2023-01-07 20:04:42

ineptsofar
Member
Registered: 2023-01-07
Posts: 5

Re: [SOLVED] keyboard inoperable after kernel update broke custom keymap

I tried downgrading the linux package to a previous 6.0.X version and something in the 5.19.X range and neither made a difference.

There is also this output. Googling around made it seem like warnings of this sort were typically false alarms, but I seem to have several of them. I don't see an issue with the [keyboard] hook, but admittedly I'm out of my depth here

$ sudo mkinitcpio -p linux
[sudo] password for loganf:
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
  -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> Starting build: 6.1.3-arch1-1
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [autodetect]
  -> Running build hook: [modconf]
  -> Running build hook: [kms]
  -> Running build hook: [keyboard]
==> WARNING: Possibly missing firmware for module: xhci_pci
  -> Running build hook: [keymap]
  -> Running build hook: [consolefont]
==> WARNING: consolefont: no font found in configuration
  -> Running build hook: [block]
  -> Running build hook: [filesystems]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: /boot/initramfs-linux.img
==> Image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback'
  -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect
==> Starting build: 6.1.3-arch1-1
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [modconf]
  -> Running build hook: [kms]
==> WARNING: Possibly missing firmware for module: ast
  -> Running build hook: [keyboard]
==> WARNING: Possibly missing firmware for module: xhci_pci
  -> Running build hook: [keymap]
  -> Running build hook: [consolefont]
==> WARNING: consolefont: no font found in configuration
  -> Running build hook: [block]
==> WARNING: Possibly missing firmware for module: aic94xx
==> WARNING: Possibly missing firmware for module: wd719x
==> WARNING: Possibly missing firmware for module: qed
==> WARNING: Possibly missing firmware for module: qla2xxx
==> WARNING: Possibly missing firmware for module: bfa
==> WARNING: Possibly missing firmware for module: qla1280
  -> Running build hook: [filesystems]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: /boot/initramfs-linux-fallback.img
==> Image generation successful

Offline

#4 2023-01-07 20:17:32

Lone_Wolf
Administrator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 15,150

Re: [SOLVED] keyboard inoperable after kernel update broke custom keymap

  -> Running build hook: [keymap]
  -> Running build hook: [consolefont]
==> WARNING: consolefont: no font found in configuration

That suggests your mkinitcpio hooks may be setup incorrectly.

Are you using encryption ?
please post your etc/mkinitcpio.conf .


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.

clean chroot building not flexible enough ?
Try clean chroot manager by graysky

Online

#5 2023-01-07 20:32:19

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 76,403

Online

#6 2023-01-07 21:13:54

ineptsofar
Member
Registered: 2023-01-07
Posts: 5

Re: [SOLVED] keyboard inoperable after kernel update broke custom keymap

No encryption AFAIK. Here is my etc/mkinitcpio.conf

$ cat /etc/mkinitcpio.conf
# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES=(usbhid xhci_hcd)
MODULES=()

# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image.  This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()

# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way.  This is useful for config files.
FILES=()

# HOOKS
# This is the most important setting in this file.  The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added.  Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
##   This setup specifies all modules in the MODULES setting above.
##   No RAID, lvm2, or encrypted root is needed.
#    HOOKS=(base)
#
##   This setup will autodetect all modules for your system and should
##   work as a sane default
#    HOOKS=(base udev autodetect modconf block filesystems fsck)
#
##   This setup will generate a 'full' image which supports most systems.
##   No autodetection is done.
#    HOOKS=(base udev modconf block filesystems fsck)
#
##   This setup assembles a mdadm array with an encrypted root file system.
##   Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices.
#    HOOKS=(base udev modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck)
#
##   This setup loads an lvm2 volume group.
#    HOOKS=(base udev modconf block lvm2 filesystems fsck)
#
##   NOTE: If you have /usr on a separate partition, you MUST include the
#    usr and fsck hooks.
HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block filesystems fsck)

# COMPRESSION
# Use this to compress the initramfs image. By default, zstd compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="zstd"
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"

# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()

# MODULES_DECOMPRESS
# Decompress kernel modules during initramfs creation.
# Enable to speedup boot process, disable to save RAM
# during early userspace. Switch (yes/no).
#MODULES_DECOMPRESS="yes"

Following along from one of the links seth sent, which is a great match for my situation:

$cat /etc/vconsole.conf
KEYMAP=Caps2Escape.map
$ls /usr/share/kbd/keymaps
amiga  atari  Caps2Escape.map  i386  include  mac  pine  ppc  sun
$ loadkeys us
Couldn't get a file descriptor referring to the console.

I was running the above code via ssh, which I guess can cause issues?

That reminds me that I've also been getting this message at the ssh login:

Last login: Sat Jan  7 15:54:35 2023 from 192.168.1.135
Couldn't get a file descriptor referring to the console.
Couldn't get a file descriptor referring to the console.

I did find that the following does solve the issue, but I'm not connecting all the dots to understand why this has broken and what will fix it.

$ sudo loadkeys -C /dev/console us

Here's the contents of my custom mapping which worked fine previously.

$ cat /usr/share/kbd/keymaps/Caps2Escape.map
keymaps 0-2,4-5,8,12
keycode 58 = Escape

As a side note, is there a way to read the man pages linearly or get an index of them?
I would never figure out that `man 5 keymaps` was an option on my own

Offline

#7 2023-01-07 21:33:20

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 76,403

Re: [SOLVED] keyboard inoperable after kernel update broke custom keymap

I was running the above code via ssh, which I guess can cause issues?

Yes. The other user was operating on https://bbs.archlinux.org/viewtopic.php … 7#p2052387

Can you "loadkeys Caps2Escape.map" later on and does the problem go away if you remove the keymap hook and rebuild the initramfs?

As a side note, is there a way to read the man pages linearly or get an index of them?

You mean list all manpages?
https://superuser.com/questions/207450/ … -man-pages

Online

#8 2023-01-07 22:13:44

ineptsofar
Member
Registered: 2023-01-07
Posts: 5

Re: [SOLVED] keyboard inoperable after kernel update broke custom keymap

huh. it was as easy as `man -k .` very helpful

Okay, here is the full solution as I understand it for the benefit of the next person.

I guess I misinterpreted the following quote from the arch keyboard configuration wiki

As a side note, it is worth noting that such a personal keymap is useful also to redefine the behaviour of keys already treated by the default keymap: when loaded with loadkeys, the directives in the default keymap will be replaced when they conflict with the new directives and conserved otherwise. This way, only changes to the keymap must be specified in the personal keymap.

Based on that guidance, my Caps2Escape.map personal keymap only included the override.

$ cat /usr/share/kbd/keymaps/Caps2Escape.map
keymaps 0-2,4-5,8,12
keycode 58 = Escape

This worked without incident for months, but for whatever reason isn't working now after a recent update.

The fix was to explicitly include the us keymap.

$ cat /usr/share/kbd/keymaps/Caps2Escape.map
include "/usr/share/kbd/keymaps/i386/qwerty/us.map.gz"
keymaps 0-2,4-5,8,12
keycode 58 = Escape

And for good measure I added an absolute path to my keymap environment variable based on `man 5 keymaps`

$ cat /etc/vconsole.conf
KEYMAP=/usr/share/kbd/keymaps/Caps2Escape.map

Then I regenerated the initial ramdisk environment

$ sudo mkinitcpio -p linux

Any idea what could cause this issue before I mark as closed? I don't want to be apprehensive about installing updates in the future.

Offline

#9 2023-01-07 23:00:59

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 76,403

Re: [SOLVED] keyboard inoperable after kernel update broke custom keymap

I'd assume the keymap hook moves the Caps2Escape.map into the initramfs, but not the us map, and so you're loading a very incomplete map.
A comparative lsinitcpio could tell.

Online

#10 2023-01-07 23:24:56

ineptsofar
Member
Registered: 2023-01-07
Posts: 5

Re: [SOLVED] keyboard inoperable after kernel update broke custom keymap

Thanks for the help. This was a frustrating issue but I learned a lot by digging into it.

Offline

Board footer

Powered by FluxBB