If I use a modified usb skeleton driver on Linux and I insmod the module with the USB device already plugged in, the probe function doesn't get called. I need to unplug and replug the device in order for the driver to be activated. This is not the case for e.g. the serial drivers, I made some tests. Is there a reason for this? How do I get the probe function to get called?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Almost all USB HID devices are automatically managed by usbhid driver. Try the following:
sudo rmmod usbhid
sudo insmod your_driver
sudo insmod usbhid
回答2:
You probably need to unbind your device from usbhid and bind it to your driver:
- try to find the thief driver in :
/sys/bus/usb/drivers/usbhid/
- unbind it :
echo -n "1-1:1.0" > /sys/bus/usb/drivers/usbhid/unbind
- bind your device :
echo <vendor> <product> > /sys/bus/usb/drivers/my_driver/new_id
or if you already have a bus id :echo -n "1-1:1.0" > /sys/bus/usb/drivers/my_driver/bind
see http://www.ha19.no/usb/ see http://lwn.net/Articles/143397/
回答3:
Some software from us was opening the device from /proc/bus/usb and the device was claimed by the usbfs driver, so the new driver couldn't claim the device.