>> I'm writing a kernel module, but probe() is never called since usbhid >> claims the usb device as soon as the device is plugged in. > > What type of module for what type of device? And why do you want to > override the hid driver from binding to it? > > thanks, > > greg k-h I'm just learning about device drivers, so I'm writing a dummy usb device driver. I've pasted the code here (I hope the formatting is correct): #include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/usb.h> static int mmod_probe(struct usb_interface *intf, const struct usb_device_id *id) { pr_debug("mmod: probe is called"); /* return -ENODEV if we don't want to claim the device */ return 0; } static void mmod_disc(struct usb_interface *intf) { pr_debug("mmod: disconnected"); } static const struct usb_device_id mmod_id[] = { {.match_flags = USB_DEVICE_ID_MATCH_INT_PROTOCOL, .bInterfaceClass = 0x01 }, {} }; /* export the id to userspace */ MODULE_DEVICE_TABLE(usb, mmod_id); static struct usb_driver mmod_driver = { .name = "mmod_driver", .id_table = mmod_id, .probe = mmod_probe, .disconnect = mmod_disc }; static int __init init_task05(void) { pr_debug("mmod loaded"); usb_register(&mmod_driver); return 0; } static void __exit exit_mymod(void) { pr_debug("mmod unloaded"); usb_deregister(&mmod_driver); } module_init(init_mmod); module_exit(exit_mmod); MODULE_LICENSE("GPL"); I can load and unload the module and I can see the messages being printed. I can also see usbcore registering the new driver in dmesg, but when I plug any usb keyboard (which I have registered in id table), the probe never gets called. Instead, I see usbhid taking over and initializing the device in dmesg. And as far as intention goes, this is just for fun. I have thought about editing hid-core.c and adding usb quirks there and recompile the kernel, but that seems a bit drastic. I thought maybe there's a better way to do it. Thanks a lot, -- Armin Moradi _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies