두 개의 Logitech Unifying 수신기가 각각 키보드에 연결되어 있는 설정이 있습니다. 수신기 중 하나는 장치가 연결된 물리적 머신에서 사용되고 다른 하나는 QEMU 가상 머신에 전달되어야 합니다.
다음 지침에 따라 수신자를 수동으로 바인딩 해제할 수 있습니다.Linux 커널 드라이버를 사용하여 USB-HID 장치 인터페이스를 바인딩/바인딩 해제하는 방법은 무엇입니까?. 이 접근 방식에는 몇 가지 단점이 있습니다.
- dmesg를 보고 장치 식별자를 수동으로 확인해야 합니다.
- 바인딩 해제 프로세스는 가상 머신이 종료될 때마다 그리고 다시 시작될 때마다 반복되어야 합니다.
그런 다음 USB 드라이버가 바인딩하는 것을 방지하는 커널 모듈 옵션을 찾으려고 노력했고 다음을 발견했습니다.quirks
옵션usbhid
. 안타깝게도 공급업체와 장치 ID가 동일한 두 개의 동일한 수신기가 있기 때문에 이 매개변수를 사용할 수 없습니다.
두 장치는 별도의 버스로 구별될 수 있습니다. 즉, lsusb
다음과 같습니다.
Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 002 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
USB 장치를 특정 버스에 바인딩하는 것을 방지 hid-logitech-dj
(또는 ) 하는 방법이 있습니까 ?usbhid
대상 시스템은 Linux 3.9 커널과 함께 Arch Linux 64비트를 실행합니다.
답변1
UDEV에서는 특정 버스를 검색하는 규칙을 추가하고 옵션을 "ignore_device"로 설정할 수 있습니다. 커널 버전이나 운영 체제를 언급했나요?
답변2
먼저 살펴보세요내 대답은 여기에 있다- USB 장치가 연결되는 방식을 이해하는 데 필요한 모든 정보가 있어야 합니다.
그런 다음 실행 중에 장치를 연결하여 udevadm monitor
어떤 이벤트가 시작되고 udevadm test --action=<action> <path>
어떤 작업이 수행되고 있는지 확인할 수 있습니다.우데브현재 복용중입니다.
시스템 규칙이 있어야 합니다 . 패키지 업그레이드로 인해 덮어쓰이지 않도록 경로에서 규칙을 재정의 /lib/udev/rules.d
할 가능성이 높습니다 . /etc/udev/rules.d
두 가지 옵션이 있습니다:
/lib/udev/rules.d
동일한 경로/이름에 규칙을 복사/etc/udev/rules.d
하고 편집합니다. 장치/버스 조합을 제외하려면 일치하는 필터를 약간만 변경하면 되므로 가장 쉽습니다. Udev는 일치하는 etc 규칙이 있는 시스템 규칙을 실행하지 않습니다. Otoh udev 관리자 변경 사항은 제가 수동으로 추가해야 합니다.후속 규칙 만들기(더 높은이후에 실행되도록 하고 이전 규칙에서 수행한 작업(예: 삭제 또는 변경
RUN
작업)을 재정의합니다.
재정의할 기존 규칙이 없는 경우 바인드 해제/바인드 명령 실행과 같이 필요한 추가 작업을 수행하는 규칙을 추가하기만 하면 됩니다.
적절한 규칙 필터를 찾으려면 장치 속성 보기를 사용할 수 있습니다 usevadm info <path>
. -a
스위치 로 모든 것을 얻을 수 있습니다시스템 파일 시스템장치 속성및 모든 상위 노드, 일치에도 사용할 수 있습니다(속성 중복의 경우 첫 번째 일치가 사용됨).
man udev
규칙 작성에 대한 자세한 지침은 (7)을 참조하세요.