GNU/Linux에서 공급업체 ID를 기반으로 USB 장치를 비활성화하는 방법은 무엇입니까?

GNU/Linux에서 공급업체 ID를 기반으로 USB 장치를 비활성화하는 방법은 무엇입니까?

존재하다그 질문누군가 모든 USB 장치를 블랙리스트에 추가하고 특정 장치만 허용하려고 합니다.

이 문제에서 우리는 모든 USB 장치를 허용하지만 드라이버가 cdc_acm하나의 특정 장치 유형(예:레고® NXT 브릭플래시 모드는 사용하면 안 되지만( fwflash장치에 대한 원시 액세스가 필요하므로) 드라이버는 Arduino 보드에 계속 액세스하여 /dev/ttyACM0,교육 환경NXT 및 Arduino 하드웨어에 액세스하세요.

답변1

몇 가지 속임수를 쓴 후 udev 규칙을 사용하여 이 작업을 수행할 수 있었습니다( lsusb플래시 모드에서 장치의 공급업체 및 제품 ID 찾기 사용).

$ cat /etc/udev/rules.d/nxt.rules
# disable NXT in flash mode
ACTION=="add", ATTR{idVendor}=="03eb", ATTR{idProduct}=="6124", RUN="/bin/sh -c '/bin/echo -n $kernel:1.0 | /usr/bin/tee /sys/bus/usb/drivers/cdc_acm/unbind | /usr/bin/logger -t nxt-flashmode'"

이 규칙은 NXT 블록이 플래시 모드로 삽입되거나 삽입된 동안 플래시 모드로 들어갈 때 트리거됩니다. 잡는 것을 막지는 못하지만 , 장치 에 접근할 수 cdc_acm있도록 장치를 해제하라고 즉시 지시합니다 .fwflash

:1.0나는 그것이 무엇인지, 왜 그것이 :1.1sysfs에도 나타나는 대신에 사용되는지 알지 못했습니다 . 그러나 나는 (나에게) 효과적인 솔루션을 공유하고 싶었습니다. 환경: 2014년 10월 말 현재 데비안은 불안정합니다(즉, 거의 데비안 jessie와 같습니다).

관련 정보