udev для назначения / ограничения последовательных портов на ряд номеров

Я пытаюсь изолировать последовательные порты на основе атрибута производителя ATTRS{manufacturer} .

Я хотел бы назначить /dev/ttyUSBx тем, которые были обнаружены как у производителя A, где x может принимать значение только от 0 до 9 . Аналогично, для тех, которые обнаружены как у производителя B, я хочу назначить /dev/ttyUSBy , где y может принимать значение от 10 до 19 .

Мне попалась эта статья, где автор говорит, что можно изменить имена с помощью symlinks . Можем ли мы сделать что-то подобное для удовлетворения моих требований?

  • Не работает правило udev с systemd-udevd на Fedora 19
  • В чем разница между udev и hald?
  • Драйвер ядра для отслеживания на Lenovo Thinkpad 13
  • Клавиатура Bluetooth не отображается в / dev / input
  • Авто-спящий режим с правилом udev
  • udev случайным образом смешивает устройства ethernet на Debian Squeeze
  • udev правила для PS / 2 и игровой порт не совпадают на attr, только env
  • Как получить SPI для работы с allwinner A20 с ядром 4.4
  • One Solution collect form web for “udev для назначения / ограничения последовательных портов на ряд номеров”

    Не прямой ответ на ваш вопрос, но вы можете проверить

     $ ls -l /dev/serial/by-id/ 

    (после подключения хотя бы одного USB-последовательного адаптера), чтобы проверить, дает ли это вам идею решить вашу проблему.

    Вы также можете проверить /lib/udev/rules.d/60-serial.rules чтобы иметь пример и посмотреть, как работает /dev/serial . На моем Kubuntu 16.04 он выглядит так:

     ACTION=="remove", GOTO="serial_end" SUBSYSTEM!="tty", GOTO="serial_end" SUBSYSTEMS=="pci", ENV{ID_BUS}="pci", ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{device}" SUBSYSTEMS=="pci", IMPORT{builtin}="hwdb --subsystem=pci" SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" # /dev/serial/by-path/, /dev/serial/by-id/ for USB devices KERNEL!="ttyUSB[0-9]*|ttyACM[0-9]*", GOTO="serial_end" SUBSYSTEMS=="usb-serial", ENV{.ID_PORT}="$attr{port_number}" IMPORT{builtin}="path_id" ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="", SYMLINK+="serial/by-path/$env{ID_PATH}" ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-path/$env{ID_PATH}-port$env{.ID_PORT}" IMPORT{builtin}="usb_id" ENV{ID_SERIAL}=="", GOTO="serial_end" SUBSYSTEMS=="usb", ENV{ID_USB_INTERFACE_NUM}="$attr{bInterfaceNumber}" ENV{ID_USB_INTERFACE_NUM}=="", GOTO="serial_end" ENV{.ID_PORT}=="", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}" ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}-port$env{.ID_PORT}" LABEL="serial_end" 
    Linux и Unix - лучшая ОС в мире.