Linux

防止 usbhid 認領 USB 設備

  • December 5, 2012

直接相關:防止usbhid聲稱新奇的usb設備,以便我可以用libusb控制它?

我想從使用 libusb-0.1 的程序訪問 RFID 閱讀器(用作 HID 設備)。在程式碼中,核心驅動程序已正確分離usb_detach_kernel_driver_np(沒有錯誤),但似乎每當我的程序嘗試訪問 USB 設備時,usbhid 模組都會回收它。以下錯誤總是出現在dmesg

usb 1-1.3:usbfs:usbhid 聲明的介面 0,而“MyProgram”設置配置 #1

我添加了以下 udev 規則,重新啟動 udevd 並重新插入設備,但沒有效果。它應該將設備列入黑名單,以免被 usbhid 使用。

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

除了 dmesg 輸出,我可以看到每次都重新創建/sys/bus/usb/drivers/usbhid/設備1-1.3:1.0,因此黑名單似乎不起作用。

還有什麼我可以嘗試的嗎?作業系統是帶有核心 3.2.27 的 Raspbian(在 Raspberry Pi 上)。

我已經解決了這部分問題:

  • OPTIONS=="ignore_device"已從核心中刪除(送出
  • blacklist usbhid什麼也沒做,甚至沒有擋住我的鍵盤
  • /etc/modprobe.d 中的配置文件options usbhid quirks=0xdead:0xbeef:0x0004不起作用,因為 usbhid 未編譯為模組

因此,我添加usbhid.quirks=0xdead:0xbeef:0x4到啟動命令行(在 Raspbian 上,位於 /boot/cmdline.txt 中)並且 usbhid 不再綁定設備。


然而,我原來的問題仍然存在。第一次訪問 RFID 閱讀器時,我總是遇到讀取/超時錯誤。

引用自:https://unix.stackexchange.com/questions/55495