我有一个 USB 火箭发射器,我希望通过libusb. 但是,libusb 不能声明该接口;大概是因为usb-devices列表“usbhid”的输出作为设备的驱动程序。
通过在互联网上阅读,我得出的结论是,我需要将此驱动程序与设备分离,以便可以将它与 libusb 一起使用。但是,我还没有找到一种明确的方法来做到这一点,只有几种不同的想法和错误报告。
那么,有没有办法将 usbhid 驱动程序与与 Ubuntu 11.04 提供的内核和工具相关的设备分离?
编辑:
我尝试创建文件
/etc/udev/rules.d/10-usbhid.rules
Run Code Online (Sandbox Code Playgroud)
并写下以下内容:
ATTRS{idVendor}=="0a81", ATTRS{idProduct}=="0701", OPTIONS=="ignore_device"
Run Code Online (Sandbox Code Playgroud)
保存,然后重新启动。该文件仍然存在,但它似乎根本不起作用。
编辑:
好的,我试过这个:
sudo -i
echo -n "0003:0A81:0701.0006" > /sys/bus/hid/drivers/generic-usb/unbind
Run Code Online (Sandbox Code Playgroud)
之后,导航到 /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
Run Code Online (Sandbox Code Playgroud)
它不再像以前那样列出“驱动程序”符号链接,因此我认为它已解除绑定。然而,所有证据似乎都表明该驱动程序仍然是 usbhid。例如 usb-devices 产量:
T: Bus=02 Lev=03 Prnt=07 Port=00 Cnt=01 Dev#= 9 Spd=1.5 MxCh= …Run Code Online (Sandbox Code Playgroud) 我最近购买了 Corsair k65 RGB 键盘。当然,一开始它不起作用,但是使用 ckb-opensource 驱动程序,我可以在我的 Arch 系统上运行所有内容。
一切都很顺利,直到我每次启动系统时都开始出错:
usb_submit_urb(ctrl) 失败:-1
出现在我的屏幕上,系统冻结了 30 秒。之后键盘工作,我可以登录我的系统。但错误是什么意思?
[11.238682]隐藏通用0003:1B1C:1B17.0002:usb_submit_urb(ctrl)失败:-1 [11.239526] hid-generic 0003:1B1C:1B17.0002: 初始化报告超时 [ 11.239959] 输入:Corsair Corsair K65 RGB 游戏键盘 /devices/pci0000:00/0000:00:1c.7/0000:07:00.0/usb5/5-1/5-1:1.1/0003:1B71C:1B1B .0002/输入/输入6 [11.291882] hid-generic 0003:1B1C:1B17.0002: input,hidraw4: USB HID v1.11 键盘 [Corsair Corsair K65 RGB 游戏键盘] on usb-0000:07:00.0-1/input1 [21.291319] hid-generic 0003:1B1C:1B17.0003: 初始化报告超时 [21.291585] hid-generic 0003:1B1C:1B17.0003: hiddev0,hidraw5: USB HID v1.11 设备 [Corsair Corsair K65 RGB 游戏键盘] on usb-0000:07:00.0-1/input2 [31.290650]隐藏通用0003:1B1C:1B17.0004:初始化报告超时 [31.290905] hid-generic 0003:1B1C:1B17.0004: hiddev0,hidraw6: USB HID v1.11 设备 [Corsair Corsair K65 RGB 游戏键盘] on usb-0000:07:00.0-1/input3
如果我使用 …