LINUX.ORG.RU
ФорумAdmin

Зафиксировать порт для USB модема

 ,


4

1

Для sms оповещения используется USB-модем Huewei. Для отправки sms используется gammu, соответсветнно в конфе gammu указан порт, к примеру /dev/ttyUSB0. После перезагрузки сервера или рекконекта модема значение порта меняется, к примеру на /dev/ttyUSB1, после этого смс-ки уже не отправляются. Вопрос - возможно ли сделать так, чтобы после рекконекта модема значение порта не менялось?

чую что udev правило надо написать, принцип тот-же что и для флешек. Примеров в сети вроде есть.

irton ★★★★★ ()

Проблема, после перезагрузки бывает меняются номера ttyUSB у 3G модемов, чтобы не было путаницы, делаем udev правило привязки определенных USB портов к модемам.

Узнаем на каких USB портах находится нужный модем

udevadm info -a -n /dev/ttyUSB0

Ищем значение KERNELS и прописываем такие правила

root@voip:/etc/udev/rules.d# cat 99-usb-3g.rules
ACTION!="add|change", GOTO="device_huawei_end"

KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.1.1:1.0", SYMLINK+="megafon-modem"
KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.1.1:1.1", SYMLINK+="megafon-audio"
KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.1.1:1.2", SYMLINK+="megafon-data"

KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.2:1.0", SYMLINK+="mts-modem"
KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.2:1.1", SYMLINK+="mts-audio"
KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.2:1.2", SYMLINK+="mts-data"

KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.1.2:1.0", SYMLINK+="beeline-modem"
KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.1.2:1.1", SYMLINK+="beeline-audio"
KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.1.2:1.2", SYMLINK+="beeline-data"

LABEL="device_huawei_end"

Для Asterisk работающего в контейнере LXC такое работает не особенно хорошо, но есть обходной путь, в udev.rules добавить копирование получившегося симлинка в каталог /dev контейнера.

KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.1.1:1.0", SYMLINK+="megafon-modem" RUN+="/bin/cp -fRP /dev/megafon-modem /var/lib/lxc/asterisk/rootfs/dev/"
KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.1.1:1.1", SYMLINK+="megafon-audio" RUN+="/bin/cp -fRP /dev/megafon-audio /var/lib/lxc/asterisk/rootfs/dev/"
KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.1.1:1.2", SYMLINK+="megafon-data" RUN+="/bin/cp -fRP /dev/megafon-data /var/lib/lxc/asterisk/rootfs/dev/"

KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.2:1.0", SYMLINK+="mts-modem" RUN+="/bin/cp -fRP /dev/mts-modem /var/lib/lxc/asterisk/rootfs/dev/"
KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.2:1.1", SYMLINK+="mts-audio" RUN+="/bin/cp -fRP /dev/mts-audio /var/lib/lxc/asterisk/rootfs/dev/"
KERNEL=="ttyUSB[0-9]*", KERNELS=="1-5.2:1.2", SYMLINK+="mts-data" RUN+="/bin/cp -fRP /dev/mts-data /var/lib/lxc/asterisk/rootfs/dev/"

У меня так сделано, работает нормально.

pitman ()

Правилоом udev создавать симлинк по серийному номеру или что там есть.

anonymous ()

Если я не ошибаюсь, то в /dev должно быть дерево которое включает конкретные оконечные USB порты и их расположение на шине.

rezedent12 ☆☆☆ ()
Ответ на: комментарий от borschov

Да, один 3G модем видится системой как три разных последовательных порта.

pitman ()
20 декабря 2016 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.