usbhid에서 장치 바인딩을 해제하고 자신의 드라이버에 바인딩

usbhid에서 장치 바인딩을 해제하고 자신의 드라이버에 바인딩

OS: 데비안 8

문제: 마이크로컨트롤러인 맞춤형 USB HID용 USB 드라이버 모듈을 작성 중인데 랩톱에 연결하면 usbhid 드라이버에 바인딩됩니다. 그렇게 하면 rmmod usbhid마우스 연결도 끊어지고 별로 좋지 않습니다. 다음을 통해 바인딩을 해제할 수 있습니다.

sudo sh -c 'echo -n "1-3:1.0" > /sys/bus/usb/drivers/usbhid/unbind'

, 그러나 장치를 연결할 때마다 이를 수행하는 것은 흥미롭지 않습니다. 스크립트를 작성한 후에도 계속해서 실행하면 재미가 없다는 것을 알게 되었습니다. 내 장치를 usbhid 드라이버에서 자동으로 바인딩 해제할 수 있습니까?

답변1

정말 멋진 솔루션을 찾는 것이 쉽지 않았지만 해냈습니다. 이 솔루션은 udev를 다루지 않습니다. 우리 장치에 닿아서는 안 되는 숨겨진 코어를 말해야 합니다. usbhid가 모듈로 컴파일되었는지 여부에 따라 두 가지 방법으로 수행할 수 있습니다. 이것을 확인하세요:

https://unix.stackexchange.com/questions/55495/prevent-usbhid-from-claiming-usb-device

https://askubuntu.com/questions/605251/dkms-installed-kernel-module-but-not-working-after-reboot/606359#606359

PS "GRUB_CMDLINE_LINUX_DEFAULT에는 Linux 커널에 대한 명령줄 인수가 포함되어 있습니다. 원하는 만큼 입력할 수 있습니다.공백으로 구분."

내 생각에 이 훌륭한 솔루션을 찾는 데 많은 시간을 소비했기 때문에 누군가의 시간을 절약할 수 있기를 바랍니다.

감사합니다.

답변2

부팅 시 장치에 로드 및 바인딩되지 않도록 드라이버를 블랙리스트에 추가할 수 있습니다. 종속성이 있는 다른 모듈이 있으면 로드에 실패합니다.

https://askubuntu.com/questions/110341/how-to-blacklist-kernel-modules

관련 정보