У меня есть USB-модем, который создает несколько ttyACM соединений при включении. Я заставил udev управлять для создания символьной ссылки на ttyACM файл, однако я не знаю, как сказать, с каким 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
Я ожидаю, что это укажет на ttyACM0 не ACM3, поскольку ACM0 является первичным портом модема как показано следующим выводом mmcli:
-------------------------
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: Как Вы имеете дело с правилами udev об устройствах, которые используют несколько ttyACM портов?
Наконец понятый это. Используя 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*"
. Только первичный порт был бы statisfy это критерии, потому что я перечислил 1-1. *:1.0.