Tôi có một trình phóng tên lửa USB mà tôi muốn thử nghiệm thông qua libusb
. Tuy nhiên, libusb không thể yêu cầu giao diện; có lẽ vì đầu ra của usb-devices
danh sách 'usbhid' là trình điều khiển cho thiết bị.
Từ việc đọc trên internet, tôi chỉ đưa ra kết luận rằng tôi cần tách trình điều khiển này khỏi thiết bị để tôi có thể sử dụng nó với libusb. Tuy nhiên, tôi đã không tìm thấy một cách dứt khoát duy nhất để làm điều đó, chỉ có một số ý tưởng và báo cáo lỗi khác nhau.
Vậy, có cách nào để tách trình điều khiển usbhid khỏi thiết bị có liên quan đến kernel và các công cụ được cung cấp với Ubuntu 11.04 không?
BIÊN TẬP:
Tôi đã thử tạo tập tin
/etc/udev/rules.d/10-usbhid.rules
và viết như sau:
ATTRS{idVendor}=="0a81", ATTRS{idProduct}=="0701", OPTIONS=="ignore_device"
Lưu, sau đó khởi động lại. Các tập tin vẫn còn đó, nhưng nó dường như không hoạt động.
BIÊN TẬP:
Được rồi, tôi đã thử điều này:
sudo -i
echo -n "0003:0A81:0701.0006" > /sys/bus/hid/drivers/generic-usb/unbind
Sau đó, điều hướng đến /sys/bus/hid/devices/0003 0A81:0701.0006 và ls mang lại:
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
Nó không còn liệt kê một liên kết "trình điều khiển" như trước đây, vì vậy tôi sẽ cho rằng nó không gắn kết nó. Tuy nhiên, tất cả các bằng chứng dường như cho thấy rằng trình điều khiển vẫn là usbhid. Ví dụ sản lượng thiết bị usb:
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 vẫn truy xuất -1 trên usb_claim_interface () ....