Чому правила udev припиняють роботу після додавання ATTRS {serial}?


0

Я намагався вирішити свою проблему, дивлячись на інші теми, такі як Чому мій 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"

Проблема полягає в тому, що у мене є два пристрої, які однакові, і єдина різниця між атрибутами двох - це серійний номер, вони навіть мають однаковий 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} до двох останніх правил тоді обидва припиняють роботу.

Чому це?

Дякую!!


Ви вже перевірили в /sysабо udevadm info -aщо вони (або батьківський пристрій) дійсно на насправді файл з ім'ям serialз цим точним змістом?
grawity

@grawity так, я перевірив, це точна інформація для обох пристроїв
m4l490n

1
Чи є в одному port_numberі serialтому ж каталозі пристроїв? ATTRSдещо дивно, оскільки він шукає дерево, але виконує всі відповідність на одному рівні в дереві.
Toby Speight

@TobySpeight Я змінив своє правило, щоб включити лише атрибути з одного каталогу, і воно працює, тим не менш, перший набір правил працює, і вони знаходяться не в одному каталозі. То чому це?
m4l490n

Відповіді:


1

Основна інформація міститься в цьому пункті на udev(7)сторінці чоловіка (моя емпаси):

ATTRS{filename}

Шукайте пристрою вгору на пристрої зі значеннями атрибутів sysfs. Якщо ATTRSвказано кілька збігів, всі вони повинні відповідати на одному пристрої. Пробіл пробілів у значеннях атрибутів ігнорується, якщо тільки вказане значення відповідності не містить пробіли пробілу.

Отже, якщо у вас є більше одного ATTRSправила (як і у вас), усі відповідні властивості (назви файлів) повинні знаходитися в одній директорії пристроїв.

Це не повинен бути тим самим пристроєм, який відповідає SUBSYSTEMSабо DRIVERSправилу.


Гаразд, справа в тому, якщо моє правило буде базуватися на декількох ATTRS {filename}, то всі вони повинні бути в одному каталозі. Це має сенс, оскільки "port_number" і "serial" не знаходяться в одному каталозі, тоді правило було невдалим. Але коли я змінив його, щоб включити ATTRS тільки з однієї директорії, то правила працювали. Дякую!!
m4l490n
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.