その質問 誰かがすべてのUSBデバイスのブラックリストを望んでいて、特定のデバイスのみを許可しました。
この質問では、すべてのUSBデバイスを受け入れますが、ドライバー(cdc_acm
など)が特定のデバイスタイプを取得しないようにします。たとえば、フラッシュモードの LEGO®NXTブリック 取得されません(fwflash
はデバイスへのrawアクセスが必要なため)が、 教育環境 アクセスで/dev/ttyACM0
を生成するには、ドライバーがArduinoボードにアクセスする必要がありますNXTとArduinoの両方のハードウェア。
いくつかのトリックの後、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
が何であるか、そしてなぜsysfsにも表示される:1.1
ではなくそれを使用するのかわかりません。しかし、私は(私にとって)実用的なソリューションを共有したかったのです。環境:2014年10月末現在、Debianは不安定です(つまり、ほとんどのDebian jessie)。