URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID15
Нить номер: 4184
[ Назад ]

Исходное сообщение
"Помогитеразобраться с udev (создание симлинка)"

Отправлено qazarus , 01-Ноя-14 00:57 
Имеется два полностью идентичных модема. Нужно их подключить, и знать какой порт какому модему принадлежит. Все-бы ничего, но периодически при перезагрузке порты меняются местами, в итоге модемы путаются, что приводит к очень нехорошим последствиям.

Так вот, я пришел к выводу что нужно создать для каждого модема по статическому симлинку, и работать уже с ним.
Итак, я приступил к написанию правила, всего-то нужно:

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="vid", ATTRS{idProduct}=="pid", KERNEL=="ttyUSB*", SYMLINK+="modem"

Вроди все просто, да вот не совсем... Модемы то идентичные, по этому vid и pid у них одинаковые. Значит нужно искать другие отличия. Решил остановиться на серийнику - серийники разные, и в системе видны. Заменил пид/вид на "ATTRS{iSerial}==", и начал тестировать. Дернул модем раз, второй - не создается симлинк... Сделал "udevadm test /dev/ttyUSB0" - правило проходит.
Посидел, подумал, и родилась мысль - а серийник случайно определяется не после того, как сработал udev? Если это так, то как решить это, я даже не представляю. Если ошибаюсь, то, пожалуйста, подскажите где. Как заставить работать udev по серийнику?

Содержание

Сообщения в этом обсуждении
"Помогитеразобраться с udev (создание симлинка)"
Отправлено qazarus , 01-Ноя-14 01:58 
Ну что-же, как всегда - как только написал, так сразу-же нашел решение. Оказалось что я в правиле накосячил.

Этот вопрос решен, но появился новый - модемы с несколькими интерфейсами, по этому их нужно так сказать разделять. Для этого используется ATTRS{bInterfaceNumber}. Так вот, как только я добавляю в правило ATTRS{bInterfaceNumber}=="00" и ATTRS{bInterfaceNumber}=="01", как правило перестает работать.


"Помогитеразобраться с udev (создание симлинка)"
Отправлено qazarus , 01-Ноя-14 12:40 
Не актуально. Попытаюсь решить проблему по другому.