libusbを使用して制御できるようにusbhidが新しいUSBデバイスを宣言するのを防ぎますか?

libusbを使用して制御できるようにusbhidが新しいUSBデバイスを宣言するのを防ぎますか?

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()

実際に期待通りに動作します。

おすすめ記事