LinuxForum.Fans
Тема

привязка портов к девайсам

Автор: steve_g 6 сообщений 6140 просмотров
#288353

Здравствуйте, уважаемые!!

Мучаюсь с одним вопросом - касаемо привязки конкретного устройства к конкретному порту!!!!

Проблема вот, собственно, в чем! Подключаю к своей системе ( ALtLinux ) модем, создаются файлы устройств ( ttyUSB0-2 ). Слышал, что можно командами AT "сжать" до 1-го ttyUSB0, но сейчас не про это.Вот - подключаю переходник USB to UART - создается файл устройства ttyUSB3. Все работает - всех все устраивает


Но если очередность подключения нарушена и система создала ttyUSB0 для переходника, а ttyUSB1-3 для модема. то ПОЧЕМУ ТО - в порт переходника регулярно присылается команда AT\n ( в ttyUSB0, который соответствует переходнику) - что УЖЕ СТРАННО! и если у кого то есть ответ на это - с радостью и благодарностью выслушаю ( ибо запарился с этой проблемой, сначала выявлял неск-ко дней в чем собсно проблема, думал переходник тупит, а потом безуспешно решал еще столько же)

Ну а суть вопроса , КОТОРЫЙ ГЛАВНЫЙ для меня на этот момент и тема создана именно в этих целях -

как сделать чтобы переходнику ставилось в соответствие всегда устройство /dev/ttyUSB3 и модем всегда занимал устройства /dev/ttyUSB0-2...разбирался с udev-ом сегодня, но не больно то он мне помог..

пишу что - то типа

ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="my_watchdog" ссылка создается, но не на ttyUSB3 (как к примеру симлинк @gsmmodem, который ссылается на файл модема ttyUSB* (кстати, не смог найти udev правило под модем - может что то упустил?)) , а на bys/usb/001/xxx(031, 034 и т.д).

соответсвенно - как правильно написать правила, чтобы
а) получить симлинк на устройство, чтобы использовать его в скриптах
б)привязать переходник к ttyUSB3


Огромное спасибо, за то, что прочитали - ответьте , пожалуйста, кто что знает!!!

#288355
"steve_g" написал:
ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="my_watchdog"

Попробуйте в конце правила указать, какое именно устройство должно быть создано, т.е. что-то вроде NAME="ttyUSB3".

#288361

Попробовал последовать Вашему совету

Получил:

1) моя ссылка указывает теперь на ttyUSB3
2)появился файл устройства ttyUSB3 причем с верными атрибутами
crw-rw---- 1 root uucp
3)НО..все равно видимо система создала файл ttyUSB0 ПРИЧЕМ с НЕ ТЕМИ АТРИБУТАМИ, какие обычно задаются этим устройствам
crw------- 1 root root

что посоветуете делать? переходник я сломал, так что посылать сигнал пока не могу, мне просто важно пока, чтобы остался только ttyUSB3 и симлинк на него..а мешается еще 1 создаваемый системой файл ( как я подозреваю - рабочим будет именно ttyUSB3, либо ни 1 из них не будет работать должным образом, из за неверной групповой принадлежности)

что в думаете по этому поводу?)

#288363
"steve_g" написал:
что в думаете по этому поводу?)

Вообще-то симлинки на устройства для того и придумали, чтобы при конфигурации указывать симлинк, а не само устройство.

#288366

проблема в том, что при подключении модема он занимает все равно ttyUSB1-3, а симлинк переходника остается на ttyUSB3.

такая картина вобщем
1) только переходник вкл
вывод dmesg:
cp210x converter now attached to ttyUSB0

вывод cd /dev -> ls -l | grep USB

lrwxrwxrwx 1 root root my_watchdog -> ttyUSB3
crw------- 1 root root ttyUSB0 (непонятно, откуда - только если система все равно создает)
crw-rw---- 1 root uucp ttyUSB3

2)подключаю дополнительно модем

вывод dmesg:
usb 2-1.6: GSM modem(1-port) converter now attached to ttyUSB1
usb 2-1.6: GSM modem(1-port) converter now attached to ttyUSB2
usb 2-1.6: GSM modem(1-port) converter now attached to ttyUSB3

вывод cd /dev -> ls -l | grep USB

lrwxrwxrwx 1 root root gsmmodem -> ttyUSB1
lrwxrwxrwx 1 root root my_watchdog -> ttyUSB3
crw------- 1 root root ttyUSB0 (единственное устройство с группой root)
crw-rw---- 1 root uucp ttyUSB1
crw-rw---- 1 root uucp ttyUSB2
crw-rw---- 1 root uucp ttyUSB3

#288378

нашел опцию OPTIONS в правилах Udev

попытался написать так

SUBSYSTEMS=="usb-serial", DRIVERS=="cp210x", KERNELS=="ttyUSB0", OPTIONS+="ignore_remove" (пытался и "ignore_device") - устройство все равно появляется(((((

не понимаю я этот udev( вроде в мане написано -

ignore_device
Полностью проигнорировать данное событие.

ignore_remove
Проигнорировать, а затем - удалить событие для данного устройства. Это можно использовать как временное решение проблем с неработающими драйверами устройств.

Войдите или зарегистрируйтесь, чтобы ответить.