记一次Linuxx下驱动安装排错经历

时间:2022-03-09 04:14:15

昨天在狗东上买了个雷柏v500合金版黑轴机械键盘,今天到货之后满怀兴奋地装上到了我从公司带回来的thinkpad上,结果发现alt键和ctrl键是失灵的。


进一步测试发现,这两个键并没有失灵,它们特喵的被映射到了shift键上……


面对这种情况,我虽然感到很失望,但一点也不意外,毕竟Linux这个系统的风格就是这样的。自己动手,丰衣足食,驱动不合适,自己写一个啊!


否则我也不会到现在为止在Linux下连一个好用的qq版本都找不到了。


在网上搜索了一番之后,找到了这个:https://github.com/kinglongmee/rapoo-keyboard-driver


git clone下来,照着README.md,sudo make; sudo make install; ./installdriver.sh,咦,为什么报错:

rmmod: ERROR: Module hid_rapoo is not currently loaded

rmmod: ERROR: Module hid_generic is not currently loaded

重试指令,不行;

重启机器了,还是不行;

究竟是什么原因呢?

难道是linux head 4.4.10的版本太新了?不至于吧,这个git repo可是5个月之前才更新的。

所以这个报错信息是什么意思呢?

先查了一下rmmod这个命令,man rmmod,哦,是remove module的意思。

那么报is not currently loaded,就能明白是怎么回事了:如果说一个模块目前没有被加载,那么它确实是没办法被移除的。

好了,所以,这两个模块是什么呢?为什么要移除这两个模块呢?

首先分析了一下installdriver.sh:

#!/bin/bash


#install rapoo v500 driver


rmmod hid-rapoo hid-generic
modprobe hid-rapoo
modprobe hid-generic


如果第一行代码是移除模块,那么后两行代码可能是加载模块的意思。


所以一个可能就是,我编译了这个git repo;我改了这两个模块;我把这两个模块卸下来再装上,于是它们会带着我自定义的配置;似乎还蛮合理呢。

上网百度了一下,这两个模块似乎是跟USB接口,各种人机交互接口有关系的,(百度百科http://baike.baidu.com/item/USB-HID)

也就是说我电脑的USB接口的模块没有挂载是吗?

这怎么可能?那么我电脑的USB接口岂不是不能用了吗?怎么会有如此愚蠢的操作系统,启动之后不加载USB接口的?

咦,不过还真有可能……

我猛然回忆起两个月之前我为了给笔记本电脑省电,装了ubuntu下的tlp,其中还在battery mode中设置了usb口禁用。

哦?好吧,我插上电试试,这样应该就会启动ac mode了吧。

不行啊还是会报错。

好吧,那我删掉tlp试试:

sudo apt-get remove tlp && restart

重新开机,进入目录,执行命令sudo make; sudo make install; ./installdriver.sh

静默,一片静默。

程序安静地走完了它的进程。

那么按照unix系统的编程风格呢,没有消息就是好消息,是不是我的键盘可以用了呢?

我插上键盘,按下atl+tab键。

窗口切换了。

Good.问题解决了。