Which Linux distro are you using?
Arch Linux x86_64
(If rolling release, last date updated?)
20204-12-27
Which kernel are you using?
6.12.6-arch1-1
Which BIOS version are you using?
03.05
Which Framework Laptop 16 model are you using?
AMD Ryzen™ 7040 Series
Hello,
I am using certain kernel parameters and initramfs hooks in order to have data-at-rest encryption of my root partition with LUKS.
As such, during boot, while in the initramfs stage, the system asks me to input the password for the drive. All good so far.
the problem is that even after this prompt appears, for 2-4 seconds it won’t register any keystrokes. Only after that time passes, can i input the password
My understanding is that the keyboard, like all other input modules, is USB based, and this is a departure from most laptop keyboards which are usually PS/2. I strongly suspect this is at the heart of the issue. Is there a way to make the USB recognition process go faster so that it’s ready by the time the LUKS prompt shows up?
Some info:
Here are my mkinitcpio hooks:
HOOKS=(base systemd autodetect modconf keyboard sd-vconsole sd-encrypt block filesystems fsck)
As you can see, keyboard
is before sd-encrypt
. I have also replicated this with booster, an alternative initramfs generator.
Here’s lsusb
:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 004: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 005: ID 8087:0032 Intel Corp. AX210 Bluetooth
Bus 001 Device 006: ID 27c6:609c Shenzhen Goodix Technology Co.,Ltd. Goodix Fingerprint USB Device
Bus 001 Device 007: ID 32ac:0012 Framework Laptop 16 Keyboard Module - ANSI
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 002: ID 05e3:0625 Genesys Logic, Inc. USB3.2 Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 002: ID 32ac:0002 Framework HDMI Expansion Card
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
and with lsusb -t
we can see the keyboard is using the usbhid
kernel module:
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/5p, 480M
|__ Port 002: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 003: Dev 003, If 0, Class=Hub, Driver=hub/3p, 480M
|__ Port 004: Dev 004, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 001: Dev 006, If 0, Class=Vendor Specific Class, Driver=[none], 12M
|__ Port 003: Dev 007, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 003: Dev 007, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 003: Dev 007, If 2, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 003: Dev 007, If 3, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 005: Dev 005, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 005: Dev 005, If 1, Class=Wireless, Driver=btusb, 12M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 10000M
|__ Port 002: Dev 002, If 0, Class=Hub, Driver=hub/3p, 10000M
/: Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
/: Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M
/: Bus 005.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
|__ Port 001: Dev 002, If 0, Class=Billboard, Driver=[none], 12M
|__ Port 001: Dev 002, If 1, Class=Human Interface Device, Driver=usbhid, 12M
/: Bus 006.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M
/: Bus 007.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
/: Bus 008.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M