Я пытался решить свою проблему, просматривая другие темы, такие как Почему мой USB-порт, исправляющий правила udev, не работает, и правила udev не работают с небольшим числом среди других нескольких сообщений, касающихся правил udev, но ни одна из проверенных мной записей не является помогая мне выяснить, почему я испытываю эту проблему.

Правило udev с bInterfaceNumber не работает - это проблема, очень похожая на ту, которая у меня есть, по сути, такая же, но у нее нет ответа с 2013 года, и я думаю, что она к настоящему времени забыта.

У меня есть следующие правила, которые работают отлично:

SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="mos7840", ATTRS{port_number}=="0", SYMLINK+="USB-RS232-0", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="mos7840", ATTRS{port_number}=="1", SYMLINK+="USB-RS232-1", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="ftdi_sio", ATTRS{port_number}=="0", SYMLINK+="USB-TTL-0", MODE="0777"

Проблема в том, что у меня есть 2 одинаковых устройства, и единственное различие между атрибутами двух заключается в серийном номере, они даже имеют одинаковый VID/PID, поэтому мне нужно добавить ATTRS {serial} к правилам для завершения до:

SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="mos7840", ATTRS{port_number}=="0", SYMLINK+="USB-RS232-0", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="mos7840", ATTRS{port_number}=="1", SYMLINK+="USB-RS232-1", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="ftdi_sio", ATTRS{port_number}=="0", ATTRS{serial}=="AFYS1HLQ", SYMLINK+="USB-TTL-0", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="ftdi_sio", ATTRS{port_number}=="0", ATTRS{serial}=="FTV8IUSR", SYMLINK+="USB-TTL-1", MODE="0777"

Поэтому после добавления ATTRS {serial} к двум последним правилам оба перестают работать.

Почему это?

Спасибо!!

1 ответ1

1

Ключевая часть информации находится в этом параграфе на странице руководства udev(7) (мой emhpasis):

ATTRS{filename}

Поиск устройства devpath вверх с соответствующими значениями атрибута sysfs. Если указано несколько ATTRS , все они должны совпадать на одном устройстве. Конечные пробелы в значениях атрибута игнорируются, если только указанное значение совпадения не содержит конечных пробелов.

Таким образом, если у вас есть более одного правила ATTRS (как у вас), все совпадающие свойства (имена файлов) должны находиться в одном каталоге устройства.

Это не нужно быть таким же устройством , которое соответствует SUBSYSTEMS или DRIVERS правила.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .