libusb経由で使用したいUSBロケットランチャーがありますlibusb
。しかし、おそらく出力にusb-devices
デバイスドライバとして "usbhid"がリストされているので、libusbはインターフェイスを宣言できません。
インターネットから読んだ結果、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のサイズを変更します。
ベストアンサー1
libusbプログラムをrootとして実行すると、
usb_detach_kernel_driver_np()
実際に期待通りに動作します。