プラグインするといくつかの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ルールをどのように扱いますか?
最後にそれを理解しました。 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をリストしたので、プライマリポートだけがこの基準を満たします。