Linux
防止 usbhid 認領 USB 設備
直接相關:防止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 閱讀器時,我總是遇到讀取/超時錯誤。