Ubuntu

防止usbhid聲稱新穎的usb設備,以便我可以用libusb控制它?

  • May 19, 2015

我有一個 USB 火箭發射器,我希望通過libusb. 但是,libusb 不能聲明介面;大概是因為usb-devices列表“usbhid”的輸出作為設備的驅動程序。

通過在網際網路上閱讀,我得出的結論是我需要將此驅動程序與設備分離,以便可以將它與 libusb 一起使用。但是,我還沒有找到一個明確的方法來做到這一點,只有幾個不同的想法和錯誤報告。

那麼,有沒有辦法從與 Ubuntu 11.04 提供的核心和工具相關的設備上分離 usbhid 驅動程序?

編輯:

我嘗試創建文件

/etc/udev/rules.d/10-usbhid.rules

並寫下以下內容:

ATTRS{idVendor}=="0a81", ATTRS{idProduct}=="0701", OPTIONS=="ignore_device"

保存,然後重新啟動。該文件仍然存在,但它似乎根本沒有工作。

編輯:

好的,我試過這個:

sudo -i
echo -n "0003:0A81:0701.0006" > /sys/bus/hid/drivers/generic-usb/unbind

之後,導航到 /sys/bus/hid/devices/0003:0A81:0701.0006 和 ls 產生:

drwxr-xr-x 2 root root    0 2011-05-29 15:46 power
lrwxrwxrwx 1 root root    0 2011-05-29 13:19 subsystem ->       ../../../../../../../../../bus/hid
-rw-r--r-- 1 root root 4096 2011-05-29 13:19 uevent

它不再像以前那樣列出“驅動程序”符號連結,所以我假設它解除了綁定。然而,所有證據似乎都表明驅動程序仍然是usbhid。例如 usb-devices 產生:

T:  Bus=02 Lev=03 Prnt=07 Port=00 Cnt=01 Dev#=  9 Spd=1.5 MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0a81 ProdID=0701 Rev=00.01
S:  Manufacturer=Dream Link
S:  Product=USB Missile Launcher v1.0
C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid

libusb 仍然在usb_claim_interface() 上返回-1 ….

如果你只是以 root 身份執行 libusb 程序,

usb_detach_kernel_driver_np()

實際上按預期工作。

我認為您需要將設備 ID 添加到udev的黑名單中,以便沒有模組(包括 usbhid)附加到它。

引用自:https://unix.stackexchange.com/questions/13964