Linux USB driver probe not called if device already plugged

房东的猫 提交于 2019-12-08 08:52:15

问题


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.



来源:https://stackoverflow.com/questions/2538079/linux-usb-driver-probe-not-called-if-device-already-plugged

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!