web-dev-qa-db-ja.com

複数のttyポートを持つデバイスのUDEVルールを作成する

プラグインするといくつかのttyACM接続を作成するUSB​​モデムがあります。ttyACMファイルへのシンボリックリンクを作成するudevルールを作成しましたが、リンク先のttyファイルを確認する方法がわかりません。

これが私のルールです:

SUBSYSTEM=="tty", ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", SYMLINK="cellmodem0", MODE="0666"

これがls -l/devの現在の出力です

lrwxrwxrwx  1 root   root           7 Feb 11 12:35 cellmodem0 -> ttyACM3

次のmmcli出力で示されているように、ACM0はモデムのプライマリポートであるため、これはACM3ではなくttyACM0を指していると思います。

-------------------------
System   |         device: '/sys/devices/3530000.xhci/usb1/1-1/1-1.1'
         |        drivers: 'cdc_acm'
         |         plugin: 'Telit'
         |   primary port: 'ttyACM0'
         |          ports: 'ttyACM3 (at), ttyACM0 (at)'
-------------------------

TL; DR:複数のttyACMポートを使用するデバイスでudevルールをどのように扱いますか?

2
Austin

最後にそれを理解しました。 udevadm info /dev/<relevent port>を使用すると、デバイスのパスを確認できます。私にとっては:/devices/3530000.xhci/usb1/1-1/1-1.1/1-1.1:1.0/tty/ttyACM0はttyACM0で、実際にマップしたいポートです。このパスは、ttyACMxのインデックスと1-1.1:1.xが異なることを除いて、作成されたすべてのポートでほとんど同じです。私のデバイスでは、プライマリポートは常にx = 0で1-1.1:1.xになります。

それで、udevルールにステートメントDEVPATH=="/devices/3530000.xhci/usb1/1-1/1-1.*/1-1.*:1.0/tty/ttyACM*"を追加しました。私が1-1。*:1.0をリストしたので、プライマリポートだけがこの基準を満たします。

1
Austin