Ubuntu
防止usbhid聲稱新穎的usb設備,以便我可以用libusb控制它?
我有一個 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)附加到它。