所以我有一个我自己制作的 USB 键盘,它运行qmk键盘固件。我首先要说的是,这可能是键盘固件中的一个错误。但是,由于键盘在 Windows 上似乎可以正常工作,并且因为我可以通过运行 linux 命令来使其工作(即不更改键盘端的任何内容),所以我认为这可能是 linux 端的问题。
本质上,在我手动检查 Arch 中的设备文件之前,键盘无法工作。
已插入键盘(且除内置摄像头外未插入其他 USB 设备)的情况下启动计算机时的一些相关日志文件:
此时,由于枚举失败错误,键盘无法工作。键盘位于 USB 1-1.2 上。
相关行是:
[ 1.832175] usb 1-1.2: new full-speed USB device number 3 using ehci-pci
[ 1.905512] usb 1-1.2: device descriptor read/64, error -32
[ 2.085461] usb 1-1.2: device descriptor read/64, error -32
[ 2.265515] usb 1-1.2: new full-speed USB device number 4 using ehci-pci
[ 2.338846] usb 1-1.2: device descriptor read/64, error -32
[ 2.518816] usb 1-1.2: device descriptor read/64, error -32
[ 2.625860] usb 1-1-port2: attempt power cycle
[ 3.218828] usb 1-1.2: new full-speed USB device number 5 using ehci-pci
[ 3.632148] usb 1-1.2: device not accepting address 5, error -32
[ 3.705494] usb 1-1.2: new full-speed USB device number 6 using ehci-pci
[ 4.118807] usb 1-1.2: device not accepting address 6, error -32
[ 4.119230] usb 1-1-port2: unable to enumerate USB device
[ 17.805499] usb 1-1.2: device descriptor read/64, error -32
[ 17.985547] usb 1-1.2: device descriptor read/64, error -32
[ 18.165533] usb 1-1.2: new full-speed USB device number 9 using ehci-pci
[ 18.238879] usb 1-1.2: device descriptor read/64, error -32
[ 18.418843] usb 1-1.2: device descriptor read/64, error -32
[ 18.525892] usb 1-1-port2: attempt power cycle
[ 19.118769] usb 1-1.2: new full-speed USB device number 10 using ehci-pci
[ 19.532187] usb 1-1.2: device not accepting address 10, error -32
[ 19.605514] usb 1-1.2: new full-speed USB device number 11 using ehci-pci
[ 20.018843] usb 1-1.2: device not accepting address 11, error -32
[ 20.019332] usb 1-1-port2: unable to enumerate USB device
[ 42.472082] usb 1-1.2: new full-speed USB device number 12 using ehci-pci
[ 42.545439] usb 1-1.2: device descriptor read/64, error -32
[ 42.725428] usb 1-1.2: device descriptor read/64, error -32
[ 42.905429] usb 1-1.2: new full-speed USB device number 13 using ehci-pci
[ 42.978812] usb 1-1.2: device descriptor read/64, error -32
[ 43.158874] usb 1-1.2: device descriptor read/64, error -32
[ 43.265778] usb 1-1-port2: attempt power cycle
[ 43.858811] usb 1-1.2: new full-speed USB device number 14 using ehci-pci
[ 44.272092] usb 1-1.2: device not accepting address 14, error -32
[ 44.345501] usb 1-1.2: new full-speed USB device number 15 using ehci-pci
[ 44.758834] usb 1-1.2: device not accepting address 15, error -32
[ 44.759116] usb 1-1-port2: unable to enumerate USB device
拔下插头并重新插入后,这些日志如下所示:
此时,lsusb(USB ID ca04:0248)已识别键盘,但打字仍然无法正常工作。
我可以让计算机注册键盘输入的方法是查看 dmesg 并看到键盘占用 /dev/hidraw0、/dev/hidraw1 和 /dev/hidraw2。然后我必须运行sudo cat /dev/hidraw2
,从那时起一切正常(即使在我杀死猫之后)。如果我插入了其他外围设备并且键盘获得了其他 hidraw 编号,我总是必须选择最后一个(例如,当我的 USB 鼠标也插入时,键盘获得 /dev/hidraw5,这就是我必须做的cat
让它发挥作用。
有谁知道检查文件系统中的设备正在做什么才能使其正常运行?我知道每次插入键盘时编写一个 udev 规则来执行此操作非常简单,但如果可能的话,我想解决根本问题。