LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4927|回复: 1

怎样禁止内核自动对特定VendorID和ProductID的USBHID设备挂载驱动?

[复制链接]
发表于 2010-9-28 23:08:39 | 显示全部楼层 |阅读模式
实验对象是一个北通游戏手柄,VendorID:0x0E8F,ProductID:0x0002
通过basename `readlink /dev/class/xxx`查到对应模块是usbhid,把usbhid编译成模块,insmod&rmmod验证,结果确实如此
我在内核源码树相应目录(drivers/hid/)里面把相应的#define去掉,通过grep把包含GREENASIA和PANTHERLORD(两个都是前面#define定义的宏),make modules,可是insmod usbhid.ko之后内核还是自动为设备加载了驱动,rmmod之后就可以加载我自己的驱动

这个如何解释?
发表于 2010-10-15 13:27:15 | 显示全部楼层
本人非专业硬件,有次硬件人员走人,被逼翻着参考书和芯片手册写过一次 HID 固件。

下面是我的理解,不一定正确。

VendorID:0x0E8F,ProductID:0x0002 只是识别具体的厂商和产品,去掉 #define 只是会让产品表现为未知硬件而已。有可能名称还是可以显示,因为产品名称也是固化在硬件
里的一个字符串。

内核的 usb 模块真正识别硬件,靠的是硬件内部的一个数据结构,在连接的时候由硬件发送给电脑主机。

只要这个数据结构是按照 usb.org 的标准写的,就可以正常识别和使用。

所以要达到你的目的,可能需要直接在内核里用代码检测 VendorID 和 ProductID 并忽略它。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表