Intereting Posts
Какая файловая система имеет лучшую поддержку для сокращения? Возврат владельца процесса с учетом PID Как добавить пакеты на Fedora live USB Установите ионизатор для многопоточного применения Как удалить ACL из каталога и вернуться к обычному контролю доступа? Как открыть решение Visual Studio 2013 в MonoDevelop Порт tcp источника растяжения Debian * всегда * даже Корреляция / var / log / * timestamps Невозможно прочитать файл / proc / pid / stack даже с соответствующими разрешениями Как сделать sendmail не реле (при определенных условиях) Щелчки мыши перестают работать после случайного времени, используя Awesome WM + Gnome Как я могу контролировать загрузку php-скрипта на сервере? Переадресация ввода-вывода и головная команда Как сделать соединение openvpn доступным для всех хостов в той же подсети? Почему мой фоновый процесс Python заканчивается при завершении сеанса SSH?

Не удалось загрузить драйвер USB-клавиатуры на машине Debian

У меня довольно простой драйвер для USB-клавиатуры:

#include <linux/module.h> #include <linux/kernel.h> #include <linux/usb.h> #include <linux/usb/input.h> #include <linux/hid.h> MODULE_LICENSE("GPL"); MODULE_AUTHOR("TEST_USER"); MODULE_DESCRIPTION("A USB Keyboard Driver Kernel Module"); static struct usb_device_id usb_kbd_id_table[] = { { USB_INTERFACE_INFO( USB_INTERFACE_CLASS_HID, USB_INTERFACE_SUBCLASS_BOOT, USB_INTERFACE_PROTOCOL_KEYBOARD) }, { } /* Terminating entry */ }; MODULE_DEVICE_TABLE(usb, usb_kbd_id_table); static int kbd_probe(struct usb_interface *interface, const struct usb_device_id *id) { pr_info("USB keyboard probe function called\n"); return 0; } static void kbd_disconnect(struct usb_interface *interface) { pr_info("USB keyboard disconnect function called\n"); } static struct usb_driver kbd_driver = { .name = "usbkbd", .probe = kbd_probe, .disconnect = kbd_disconnect, .id_table = usb_kbd_id_table, }; static int __init kbd_init(void) { int res = 0; res = usb_register(&kbd_driver); if (res) pr_err("usb_register failed with error %d", res); return res; } static void __exit kbd_exit(void) { pr_debug("USB Keyboard Removed..\n"); usb_deregister(&kbd_driver); return; } module_init(kbd_init); module_exit(kbd_exit); 

Я kbtest.ko это kbtest.ko и загружаю его с помощью insmod kbtest.ko и он успешно и проверен с помощью lsmod . В частности:

 lsmod | grep "usb" usbhid 31758 0 hid 69153 2 hid_generic,usbhid usbcore 115019 6 ohci_hcd,ohci_pci,ehci_hcd,ehci_pci,kbtest,usbhid usb_common 12484 1 usbcore 

Поэтому я подключаю USB-клавиатуру, но не могу выполнить драйвер. Конкретно, функция зонда не вызывается. Вот мой dmesg после обнаружения клавиатуры:

 [ 1219.695553] usb 1-2: new full-speed USB device number 6 using ohci-pci [ 1219.996010] usb 1-2: New USB device found, idVendor=1267, idProduct=0103 [ 1220.016126] usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 1220.100005] input: HID 1267:0103 as /devices/pci0000:00/0000:00:06.0/usb1/1-2/1-2:1.0/0003:1267:0103.0008/input/input14 [ 1220.126349] hid-generic 0003:1267:0103.0008: input,hidraw1: USB HID v1.10 Keyboard [HID 1267:0103] on usb-0000:00:06.0-2/input0 [ 1220.206453] input: HID 1267:0103 as /devices/pci0000:00/0000:00:06.0/usb1/1-2/1-2:1.1/0003:1267:0103.0009/input/input15 [ 1220.224334] hid-generic 0003:1267:0103.0009: input,hidraw2: USB HID v1.10 Device [HID 1267:0103] on usb-0000:00:06.0-2/input1 

Информация заканчивается здесь. В чем же проблема? Я запускаю Debian-машину внутри Virtual Box.

У меня была такая же проблема на моей машине ubuntu 14.04. Проблемой может быть драйвер usbhid по умолчанию, usbhid предотвращает правильную работу вашего драйвера. Это может быть причиной того, что probe не будет вызван на hotplug. Попробуйте удалить модуль usbhid . Проверьте udev rules определенные вашим дистрибутивом, который автоматически usbhid модуль драйвера usbhid по умолчанию на hotplug, даже если вы его выгрузите.