Arch Linux下USB鼠标键盘不能工作之迷[2]: 记录一个【走近科学】般的查错剧本

[接上集]

这两天配了台27寸的显示器,发现小红点在大屏幕下的移动速度和操作精度都跟不上我的要求,便买个蓝牙鼠标,刚好iPad也能用。

到货以后发现鼠标在iPad上能用,但是我的arch下怎么也用不了,无论是蓝牙还是用USB适配器,我以为是鼠标的问题,于是又买了个廉价的有线鼠标,结果也不能用,让我大吃一惊,明明Arch的内核都是最新的呀。

于是我开始了一整个上午的排错,具体过程可以看这里:[solved]usb mouse not working


先是手写了个udev rules放在 /etc/udev/rules.d/,试图用udev来处理这个鼠标,事实证明并没有用;期间我还选择用了不同的kernel modules来处理,包括(mousedev, psmouse, libps2,serio)

然后呢,我想是不是我的内核太新了,对太老的usb设备已经不支持了?我想考虑下重新编译下驱动。可是我的usb鼠标是最廉价的山寨鼠标,他的vendorID 居然是0000, 根本没有专用固件,更何况编译对我而言太麻烦了。


接着在论坛大神的指点下,我检查了是不是对usb设备开启了autosuspend也就是省电模式,又尝试禁用省电模式,事实证明这也没有用。


无奈呀,绝望呀,折腾了一上午,居然什么都没搞定,我留到晚上再搞吧。

不过回头想想,也至少了解了这些命令比如

用 `udevadm control - -reload && udevadm trigger` 来重载udev

`udvadm control - -log-priority=debug` 把udevadm设成debug模式,然后用`journalctl -f`来查看事件,或者用udevadm monitor来检查事件

到了晚上,狗血却又柳暗花明的事情发生了,在我上网搜了一圈之后,我发现正常Linux处理usb鼠标的都是`hid-generic`或者是`usbhid`,似乎用不上我自己来写udev rules的,难道我的内核没有加载这两个模块,于是我手动尝试加载

`modprobe hid_generic && modprobe usbhid`

结果系统提示我这两个模块不存在

```

sudo modprobe usbhid

modprobe: FATAL: Module usbhid not found in directory /lib/modules/5.6.11-arch1-1

sudo modprobe hid_generic

modprobe: FATAL: Module hid_generic not found in directory /lib/modules/5.6.11-arch1-1

```

这就有意思了,据我所知我在编译内核的时候应该是可能包含了usb驱动的内核模块的,怎么可能会会加载不了呢?百思不得其解,我把这个发现update在论坛上面

论坛中的大佬一语中地:你怕不会是更新了内核没有reboot吧??


果然!一波重启之后,鼠标已经能用了,连我祖传的十几岁的webcam都用被驱动了, `lsmod | grep hid ` 里面usbhid和hid-generic都在,鼠标直接由hid-generic驱动了。

事实证明啊,linux的内核驱动向来是最完善的,很少有不能驱动的硬件哪

refer: 配置usb设备省电模式  Arch Linux省电模式可能引发的问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。