Как отключить hiddev96 в Linux (или сказать, чтобы оно игнорировало конкретное устройство)
У меня проблемы с системой 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
2 ответа
Все, что вам нужно сделать, это отсоединить драйвер перед тем, как сообщить VMWare о его получении.
Что такое hiddev96, это имя узла устройства, как в /dev/hiddev96?
Вы можете настроить, какое имя устройства будет назначено какому устройству через конфигурацию udev, посмотрите в файл:
/etc/udev/rules.d/50-udev.rules
Я не настроил его для вашего конкретного случая, но у меня есть запись, указывающая на запись устройства symlink на конкретную для моих нужд,
# SE K530i SUBSYSTEM == "tty", KERNEL == "ttyACM2", SYSFS {idProduct} == "d079", SYSFS {idVendor} == "0fce", SYMLINK = "k530", MODE = "666"
Из этого вы можете узнать, как сопоставить устройство по идентификатору продукта и идентификатору поставщика.