我在 CentOS 5.0 系统上使用某个 USB 设备时遇到了问题。问题是该设备将自己宣传为 HID 设备,而 Linux 很乐意尝试为其提供支持:
在 /ver/log/messages 中我看到一行内容:hiddev96: USB HID 1.11 Device [KXX USB PRO] on usb-0000:00:1d.0-1
我的问题归结为:有没有办法告诉 Linux 不要对该设备使用 hiddev96?如果有,怎么做?如果没有,我有什么选择 - 我可以完全关闭 hiddev96 吗?
更新
我可能应该更详细地说明发生了什么。该机器运行的是 Centos 5.0,在其之上我运行的是 VMWare 工作站和 Windows XP - USB 设备实际上应该在该工作站上运行。其他 USB 设备一切正常(即 VMWare 成功将 USB 设备连接到客户操作系统,操作系统可以使用它,但对于此特定设备,VMWare 将其连接到客户操作系统,但操作系统无法对其进行读取/写入)每次尝试都会锁定试图与设备通信的应用程序。我有理由相信这是因为该设备是 HID 设备,并且 Linux 主机和 Windows 客户操作系统在访问该设备时存在一些争用。
modprobe -l|grep -i hid
以下是@Karolis 请求的输出:
# modprobe -l | grep -i hid
/lib/modules/2.6.18-53.1.14.el5/kernel/net/bluetooth/hidp/hidp.ko
/lib/modules/2.6.18-53.1.14.el5/kernel/drivers/usb/misc/phidgetservo.ko
/lib/modules/2.6.18-53.1.14.el5/kernel/drivers/usb/misc/phidgetkit.ko
下面是输出lsmod
# lsmod
Module Size Used by
udf 76997 1
vboxdrv 65696 0
autofs4 24517 2
hidp 23105 2
rfcomm 42457 0
l2cap 29633 10 hidp,rfcomm
tun 14657 0
vmnet 49980 16
vmblock 20512 3
vmmon 945236 0
sunrpc 144253 1
cpufreq_ondemand 10573 1
video 19269 0
sbs 18533 0
backlight 10049 0
i2c_ec 9025 1 sbs
button 10705 0
battery 13637 0
asus_acpi 19289 0
ac 9157 0
ipv6 251393 27
lp 15849 0
snd_hda_intel 24025 2
snd_hda_codec 202689 1 snd_hda_intel
snd_seq_dummy 7877 0
snd_seq_oss 32577 0
nvidia 7824032 31
snd_seq_midi_event 11073 1 snd_seq_oss
snd_seq 49713 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
snd_seq_device 11725 3 snd_seq_dummy,snd_seq_oss,snd_seq
snd_pcm_oss 42945 0
snd_mixer_oss 19009 1 snd_pcm_oss
snd_pcm 72133 3 snd_hda_intel,snd_hda_codec,snd_pcm_oss
joydev 13313 0
sg 36061 0
parport_pc 29157 1
snd_timer 24645 2 snd_seq,snd_pcm
snd 52421 13 snd_hda_intel,snd_hda_codec,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer
ndiswrapper 170384 0
parport 37513 2 lp,parport_pc
hci_usb 20317 2
ide_cd 40033 1
tg3 104389 0
i2c_i801 11469 0
bluetooth 53925 8 hidp,rfcomm,l2cap,hci_usb
soundcore 11553 1 snd
cdrom 36705 1 ide_cd
serio_raw 10693 0
snd_page_alloc 14281 2 snd_hda_intel,snd_pcm
i2c_core 23745 3 i2c_ec,nvidia,i2c_i801
pcspkr 7105 0
dm_snapshot 20709 0
dm_zero 6209 0
dm_mirror 28741 0
dm_mod 58201 8 dm_snapshot,dm_zero,dm_mirror
ahci 23621 4
libata 115833 1 ahci
sd_mod 24897 5
scsi_mod 132685 3 sg,libata,sd_mod
ext3 123337 3
jbd 56553 1 ext3
ehci_hcd 32973 0
ohci_hcd 23261 0
uhci_hcd 25421 0
答案1
hiddev96 是什么,它是一个设备节点名吗,如 /dev/hiddev96?
您可以通过 udev 配置来配置将哪个设备名称分配给哪个设备,查看文件:
/etc/udev/rules.d/50-udev.rules
我没有针对您的具体情况进行配置,但我有一个条目说明将设备条目符号链接到特定的条目以满足我的需求,
# 东芝 K530i 子系统=="tty", 内核=="ttyACM2", SYSFS{idProduct}=="d079", SYSFS{idVendor}=="0fce", SYMLINK="k530", MODE="666"
您可以从中看到如何通过产品 ID 和供应商 ID 匹配设备。
答案2
你需要做的就是解除司机绑定然后告诉 VMWare 去抓取它。