usbhidがUSBデバイスを要求できないようにする

usbhidがUSBデバイスを要求できないようにする

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

libusb-0.1を使用するプログラムでRFIDリーダー(HIDデバイスとして使用)にアクセスしたいと思います。コードでは、カーネルドライバは正しく分離されていますがusb_detach_kernel_driver_np(エラーはありません)、私のプログラムがUSBデバイスにアクセスしようとするたびにusbhidモジュールがそれをリサイクルしているようです。次のエラーが常に発生しますdmesg

USB 1-1.3:usbfs:インタフェース0はusbhidによって要求され、「MyProgram」は設定#1を設定します。

次のudevルールを追加し、udevdを再起動してからデバイスを再接続しましたが、うまくいきませんでした。デバイスをブラックリストに追加してusbhidで使用するのを防ぐ必要があります。

# I anonymized the vendor/product IDs here
ATTRS{idVendor}=="dead", ATTRS{idProduct}=="beef", OPTIONS=="ignore_device"

/sys/bus/usb/drivers/usbhid/dmesg出力に加えて、デバイスが毎回再生成されるのを見ることができるので、1-1.3:1.0ブラックリストが機能しないようです。

私が試すことができる他のものがありますか?オペレーティングシステムはRaspbian(Raspberry Pi)で、カーネルは3.2.27です。

答え1

私は問題のこの部分を解決しました。

  • OPTIONS=="ignore_device"カーネルから削除されました(犯罪)
  • blacklist usbhid何もしませんでしたが、キーボードもブロックしませんでした。
  • options usbhid quirks=0xdead:0xbeef:0x0004usbhidがモジュールにコンパイルされていないため、/etc/modprobe.dの設定ファイルは機能しません。

usbhid.quirks=0xdead:0xbeef:0x4そのため、ブートコマンドライン(Raspbianの場合は/boot/cmdline.txt)に追加しましたが、usbhidはデバイスをバインドしなくなりました。


しかし、元の問題はまだ存在します。 RFIDリーダーに初めてアクセスすると、読み取り/タイムアウトエラーが発生し続けます。

答え2

私は同じ問題があり、udevルールファイルを次のように修正して問題を解決しました.

SUBSYSTEM=="input", GROUP="input", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="4242", ATTRS{idProduct}=="e131", MODE:="666", GROUP="users"

これでlibusb、この機能を使用してRFIDロガーを読み取ることができます。

関連情報