Итак, Диркт дал комментарий, который заставил меня задуматься, и я снова проверил некоторые факты. С помощью udevadm monitor и последующего подключения устройств я получил следующее:
Кобальт :
KERNEL[25393.161856] add /devices/pci0000:00/0000:00:14.0/usb3/3-8 (usb) KERNEL[25393.165873] add /devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0 (usb) KERNEL[25393.165941] bind /devices/pci0000:00/0000:00:14.0/usb3/3-8 (usb) UDEV [25393.183044] add /devices/pci0000:00/0000:00:14.0/usb3/3-8 (usb) UDEV [25393.185175] add /devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0 (usb) UDEV [25393.186958] bind /devices/pci0000:00/0000:00:14.0/usb3/3-8 (usb)
D4i
KERNEL[24333.615580] add /devices/pci0000:00/0000:00:14.0/usb3/3-8 (usb) KERNEL[24333.618406] add /devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0 (usb) KERNEL[24333.618444] add /devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0/ttyUSB0 (usb-serial) KERNEL[24333.618615] add /devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0/ttyUSB0/tty/ttyUSB0 (tty) KERNEL[24333.618644] bind /devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0/ttyUSB0 (usb-serial) KERNEL[24333.618685] bind /devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0 (usb) KERNEL[24333.618729] bind /devices/pci0000:00/0000:00:14.0/usb3/3-8 (usb) UDEV [24333.637591] add /devices/pci0000:00/0000:00:14.0/usb3/3-8 (usb) UDEV [24333.639773] add /devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0 (usb) UDEV [24333.641366] add /devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0/ttyUSB0 (usb-serial) UDEV [24333.648159] add /devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0/ttyUSB0/tty/ttyUSB0 (tty) UDEV [24333.648969] bind /devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0/ttyUSB0 (usb-serial) UDEV [24333.649799] bind /devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0 (usb) UDEV [24333.650906] bind /devices/pci0000:00/0000:00:14.0/usb3/3-8 (usb)
При этом я догадался, что правильные udev-подсистемы должны быть:
- d4i -> tty
- кобальт -> usb
И, как упоминалось в dirkt, используйте ATTRS вместо ATTR для сопоставления во всем пути устройства. Поэтому я изменил правила udev:
# My Cobalt2 DiveComputer SUBSYSTEM=="usb", ATTR=="0471", ATTR=="0888", SYMLINK+="my_cobalt", GROUP="dialout", MODE="0660" # My Suunto D4i DiveComputer SUBSYSTEM=="tty", ATTRS=="0403", ATTRS=="6001", ATTRS=="DiYISDGK", SYMLINK+="my_d4i", GROUP="dialout", MODE="0660"
После перезапуска udev и повторного подключения устройства я получил:
ls -l / dev / tty_d4i
lrwxrwxrwx 1 root root 7 mei 22 00:43 tty_d4i -> ttyUSB0
И это заставило его работать так, как я хотел. Я все еще не уверен на 100%, почему, но это мое ограниченное знание udev. Я буду продолжать расследование Udev, но пока это кажется решенным. Так что спасибо Dirkt за подсказку.
Для справки:
sudo udevadm info -a -n / dev / ttyUSB0
Информация Udevadm начинается с устройства, указанного devpath, а затем идет вверх по цепочке родительских устройств. Он печатает для каждого устройства найдено все возможные атрибуты в формате ключей правил udev. Правило для сопоставления, может быть составлено из атрибутов устройства и атрибуты от одного родительского устройства. глядя на устройство '/devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7:1.0/ttyUSB0/tty/ttyUSB0': KERNEL == "ttyUSB0" SUBSYSTEM == "терминал" DRIVER == "" глядя на родительское устройство '/devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7:1.0/ttyUSB0': KERNELS == "ttyUSB0" SUBSYSTEMS == "usb-серийный" DRIVERS == "ftdi_sio" ATTRS == "16" ATTRS == "0" глядя на родительское устройство '/devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7:1.0': KERNELS == "3-7: 1,0" SUBSYSTEMS == "USB" DRIVERS == "ftdi_sio" ATTRS == "1" ATTRS == "0" ATTRS == "FF" ATTRS == "00" ATTRS == "FF" ATTRS == "FF" ATTRS == "02" ATTRS == "USB Serial Cable" ATTRS == "1" глядя на родительское устройство '/devices/pci0000:00/0000:00:14.0/usb3/3-7': KERNELS == "3-7" SUBSYSTEMS == "USB" DRIVERS == "USB" ATTRS == "1" ATTRS == "0" ATTRS == "1" ATTRS == "00" ATTRS == "00" ATTRS == "00" ATTRS == "8" ATTRS == "500mA" ATTRS == "1" ATTRS == "1" ATTRS == "0600" ATTRS == "a0" ATTRS == "3" ATTRS == "" ATTRS == "14" ATTRS == "7" ATTRS == "6001" ATTRS == "0403" ATTRS == "нет" ATTRS == "Smartinterface" ATTRS == "0" ATTRS == "USB Serial Cable" AttrS == "0x0" ATTRS == "съемный" ATTRS == "DiYISDGK" ATTRS == "12" ATTRS == "15" ATTRS == "2,00" глядя на родительское устройство '/devices/pci0000:00/0000:00:14.0/usb3': KERNELS == "usb3" SUBSYSTEMS == "USB" DRIVERS == "USB" ATTRS == "1" ATTRS == "1" ATTRS == "0" ATTRS == "1" ATTRS == "09" ATTRS == "01" ATTRS == "00" ATTRS == "64" ATTRS == "0mA" ATTRS == "1" ATTRS == "1" ATTRS == "0415" ATTRS == "e0" ATTRS == "3" ATTRS == "" ATTRS == "1" ATTRS == "0" ATTRS == "0002" ATTRS == "1d6b" ATTRS == "1" ATTRS == "нет" ATTRS == "Linux 4.15.0-20-generic xhci-hcd" ATTRS == "15" ATTRS == "Хост-контроллер xHCI" AttrS == "0x0" ATTRS == "неизвестный" ATTRS == "0000: 00: 14.0" ATTRS == "480" ATTRS == "264" ATTRS == "2,00" глядя на родительское устройство '/devices/pci0000:00/0000:00:14.0': KERNELS == "0000: 00: 14.0" SUBSYSTEMS == "PCI" DRIVERS == "xhci_hcd" ATTRS == "0" ATTRS == "0x0c0330" ATTRS == "64" ATTRS == "1" ATTRS == "отключено" ATTRS == "0x8d31" ATTRS == "64" ATTRS == "(нуль)" ATTRS == "1" ATTRS == "19" ATTRS == "0-11" ATTRS == "FFF" ATTRS == "1" ATTRS == "0" ATTRS == "0x05" ATTRS == "0x7a54" ATTRS == "0x1462" ATTRS == "0x8086" глядя на родительское устройство '/ devices / pci0000: 00': KERNELS == "pci0000: 00" SUBSYSTEMS == "" DRIVERS == ""