- /dev/blog
- 25 июн. 2013 г.
- Проброс последовательного порта по сети в Linux (serial over ip)
- Ссылки
- Входные данные
- Способ 1: socat
- Способ 2: RFC 2217
- Сервер
- Клиент
- TTYredirector
- Способ 3: Serial to Ethernet Converter
- Подключаем последовательные интерфейсы по IP
- Характеристики
- Виртуальный COM-порт
- Режим RFC 2217
- Режим P2P
- Уведомления о событиях
- Логирование через Syslog
- Первичная настройка
- Заключение
- RS232 через ethernet
/dev/blog
25 июн. 2013 г.
Проброс последовательного порта по сети в Linux (serial over ip)
Ссылки
Входные данные
Способ 1: socat
Самый простой способ – использовать socat. С его помощью можно соединить последовательное устройство и сокет.
На server создаем сокет на tcp-порту 12345, привязанный к /dev/ttyS0 :
На client создаем виртуальный терминал в /dev/pts/N и привязываем его к сокету server:12345 :
При такой схеме передаются данные, но не управляющая информация. Настройка виртуального терминала на хосте client никак не отражается на реальном терминале на хосте server. Это значит, что приложения, которые используют ioctl(2) или termios(3) , не будут работать так, как ожидается.
Способ 2: RFC 2217
Сервер
- ser2net
ser2net реализует телнет-сервер RFC 2217.
Запускаем на хосте server на порту 23:
ser2net можно также запускать в режиме демона или с помощью inetd .
- sredird
sredird – другая реализация сервера RFC 2217. Он лучше совместим с клиентом cyclades-serial-client .
Запускаем на хосте server на порту 23 с помощью netcat:
sredird можно также запускать с помощью inetd .
- sercd
sercd – еще одна реализация. Он основан на sredird .
Клиент
- telnet
После запуска сервера к удаленному терминалу можно подключиться по телнет:
- ckermit
Вместо telnet можно использовать C-Kermit, который поддерживает RFC 2217:
С ним помимо телнет будут также доступны команды для конфигурирования порта.
- cyclades-serial-client
cyclades-serial-client – клиент для сервера RFC 2217. Он работает с помощью трюка с LD_PRELOAD .
Для каждого удаленного терминала создается:
- Виртуальный терминал /dev/pts/N .
- Символическая ссылка на него /dev/NAME .
- Локальный сокет /dev/NAME.control .
Затем пользователь с помощью LD_PRELOAD может заставить приложение, использующее терминал /dev/NAME , перенаправлять вызовы ioctl(2) и tcsetattr(3) в сокет /dev/NAME.control , откуда они будут прочитаны демоном cyclades-ser-cli и отправлены в удаленный терминал.
Настраиваем конфиг клиента /etc/cyclades-devices (без этого не будет работать трюк с LD_PRELOAD ):
Запускаем демон, обслуживающий виртуальный терминал:
Можно также запускать демон с помощью cyclades-serial-client .
Проверяем передачу данных:
Cообщение hello должен получить тот, кто подключен к порту /dev/ttyS0 на хосте server .
Проверяем настройку baud rate :
На хосте server у терминала /dev/ttyS0 должно обновиться значение:
У меня этот клиент работает с сервером sredird , но не работает с ser2net .Другие проблемы:
- Не все параметры ioctl() реализованы.
- Подход с использованием LD_PRELOAD для ioctl() и tcgetattr() работает не для всех приложений. У меня так и не заработала команда setserial(8) .
- Network Virtual Terminal
nvtty – это драйвер ядра, реализующий виртуальный терминал, перенаправляющий все запросы удаленному серверу RFC 2217. Патч основан на cyclades-serial-client .And this is still something that should be done in userspace if necessary
by fixing up the tty layer to support pty/tty pair modem lines and
termios change reporting, or some kind of generic vt that can also
expose all the config other net protocols might need.TTYredirector
Способ 3: Serial to Ethernet Converter
Serial to Ethernet Converter – устройство, преобразующее RS-232 (и/или другие протоколы) в Ethernet и обратно.
Есть как минимум два производителя, поставляющие вместе со своими преобразователями драйвер для Linux, который создает виртуальный COM-порт и перенаправляет все запросы к нему в сеть:
- Tibbo VSPDL (Virtual Serial Port Driver for LINUX)
- Perle TruePort
Источник
Подключаем последовательные интерфейсы по IP
Последовательные интерфейсы RS-232/422/485 до сих пор очень популярны в промышленности: по ним подключаются диагностические порты, датчики, сканеры штрих-кодов и RFID меток и т.д. Однако последовательные интерфейсы имеют свои ограничения. Иногда возникает необходимость получить доступ к такому интерфейсу по IP-сети, или, например, иметь доступ к одному устройству с RS-232 с нескольких удаленных компьютеров одновременно, или объединить несколько удаленных объектов в одну шину RS-485.
Сервер последовательных интерфейсов конвертирует последовательные физические протоколы в IP-пакеты, и позволяет программно управлять ими — подключать удаленный виртуальный COM-порт к компьютеру по сети так, будто он подключен физически, и прозрачно соединять несколько устройств в режиме P2P, без использования компьютеров.
В статье мы разберем сервер последовательных интерфейсов Advantech EKI-1524, имеющий четыре последовательный порта, каждый из которых поддерживает протоколы RS-232/422/485, и два LAN-порта.
Сервер последовательных интерфейсов EKI-1524 имеет четыре порта DB9 и два LAN-порта.- Виртуальный COM-порт — позволяет программно эмулировать виртуальный COM-порт удаленного устройства на системе Linux.
- Одновременное подключение нескольких клиентов — в режиме сервера дает возможность использовать один последовательный порт для нескольких устройств одновременно.
- Работа в режиме P2P — одновременная работа в режиме клиента и сервера позволяет объединить несколько EKI-1524 напрямую, без использования серверов и компьютеров.
Характеристики
Дополнительно представлены модели с повышенным уровнем защищенности, для работы в экстремальных условиях, и гальванической развязкой портов, для защиты от высоких напряжений: EKI-1522I, EKI-1524I, и другие.
Все модели поддерживают подключение двух источников питания. Переключение между источниками питания происходит без перезагрузки устройства. Реле индикации обрыва питания замыкается в случае, если на одной из линий отсутствует напряжение.Виртуальный COM-порт
Сервер последовательных интерфейсов позволяет по TCP/IP получить доступ к удаленным устройствам таким образом, что для прикладного ПО это будет выглядеть так, будто устройства подключены к физическому COM-порту.
Принцип работы виртуального COM-порта по сети EthernetДля этого на стороне клиента используется модуль ядра Linux и программа для обмена данными с сервером последовательных интерфейсов. В итоге для пользователя такое подключение выглядит как физический порт (устройство /dev/ttyADV0).
На данный момент Advantech выпускает драйвера виртуального COM-порта только для ОС Linux. Инструкция по сборке модуля ядра VCOM 2.0 на Ubuntu.
Также существуют бинарные пакеты драйвера под разные дистрибутивы: Linux Pseudo TTYВ веб-интерфейсе можно настроить параметры работы в данном режиме:
Дополнительные настройки. Можно вручную задать таймауты и т.д:
Настройки параметров последовательного интерфейса. В этом меню также можно изменить основной протокол (RS-232/422/485), для каждого порта.
Режим RFC 2217
Также доступен открытый протокол перенаправления COM-порта RFC 2217, представляющий собой расширенные команды для протокола Telnet. В этом режиме устройство принимает входящие подключения по TCP, в настройках можно указать порт для входящий соединений.
Режим P2P
Для сложных случаев, когда несколько устройств нельзя соединить напрямую, можно использовать два терминальных сервера в режиме прозрачного моста. Таким образом можно подключить удаленные устройства, используя в качестве транспорта TCP/IP.
Подключение двух удаленных устройств по последовательному протоколу через TCP/IP-транспортТаким образом можно программно переключать устройства между собой, соединять удаленные шины по RS-485 и делать много другое, используя все преимущества IP-сетей, включая радиомосты, виртуальные частные сети (VPN) и т.д. Передаваемые данные между двумя серверами можно дополнительно защитить от перехвата, используя шифрование на транспортном уровне.
Уведомления о событиях
Устройство позволяет настроить уведомления о событиях с помощью Email и SNMP Trap. MIB-файл для настройки SNMP-сервера доступен для каждого устройства.
События для уведомлений можно настроить вручную.
Логирование через Syslog
В веб-интерфейсе можно задать адрес удаленного Syslog-сервера для логирования. В лог записываются события подключения клиентов, ошибки аутентификации, статус LAN и последовательных портов и т.д.
Первичная настройка
Первичную конфигурацию сервера последовательных интерфейсов можно выполнить через утилиту EKI Device Configuration Utility. При этом утилита работает через ARP-пакеты и не требует настройки соответствующего IP-адреса на сетевом интерфейсе. Это значит, что можно задать любой IP-адрес устройству, без утраты доступа.
Заключение
Серверы последовательных интерфейсов позволяют обходить ограничения, которые накладывают физические протоколы, и легко масштабировать подключения. Режим P2P позволяет подключать устаревшие устройства, используя интернет в качестве транспорта, при этом обходиться без серверов.
Источник
RS232 через ethernet
Кто-нибудь пробрасывал rs232 через ethernet на linux? Мне нужно удаленный ups прикрутить к мониторингу, а в нем только com-порт.
Для этого есть готовые девайсы. В чём проблема?
пью чай. положил клубничное варенье вместо сахара. не очень-то и вкусно. а с вишнёвым вкусно.
Есть серверная, есть удаленный узел со свитчем и ups с com портом. Как привязать этот ups к Nut в серверной?
google: rs232 ethernet adapter или converter
Мне нужно удаленный ups прикрутить к мониторингу
Moxa NPort, как тут уже писали. Я использовал. Но надо драйвер под ядро собирать. Соответственно, могут быть определённые неудобства.
Может таки через RJ45 а не через «ethernet»?
Есть и через RJ, есть и через FC, а бывают медиаконверторы и ethernet.
Есть и через RJ, есть и через FC
У автора? Откуда инфа?
некоторые неудобства. Под 4 ядро драйверов так и нет.
что обслуживает ups?
google: rs232 ethernet adapter или converter
Ради одного порта это всегда очень overpriced.
Если б это была задача прокинуть информацию, бегающую по компорту, то хоть и громоздкое, но было б решением. Но, для не smart-UPS, где сигналы идут не по данным, а тупо по сигнальным линиям, это решение не годится. В прочем, как и многие другие предложенные тут.
Не у автора, а вообще. Автору надо через эзернет. Какой-нибудь nport, modbus, у моха есть на все случаи жизни.
Инфа про медиаконвертеры? Приходилось работать с этими железками. Например делать двумя rs232-FC гальваническую развязку для фискальных принтеров. Иначе в контроллерах порты выгорали. Потом делали такую же развязку через rs232-RJ c оптотронной развязкой. Или например подключать комп к экрану в нескольких километрах через оптоволокно. Там использовался VGA-FC.
Про то, что есть у автора. По-моему вопрос сформулирован так, что напрашивается RJ45-COM-USB адаптер в сервер и UTP до UPS’a
Откуда ты знаешь, что надо автору? Ты телепат?
На мой взгляд вопрос сформулирован так, что надо из RS-232 в медиаконвертер, медиаконвертер в коммутатор, который и воткнут в этот самый ИБП. И ИБП может быть сильно дальше ста метров.По сравнению с бесплатной программной эмуляцией — это всё равно бесконечно дорого. 🙂 Тем более, что если это УПС, то воткнуть в ближайший сервер явно не помешает, а потом уже шарить управление питания даже без эмуляции, а правильным образом.
Ближайший сервер может быть за сотню километров. Автор же не указал конкретно условия эксплуатации.
Может это точка регенерации в оптическом кабеле и там кроме коммутатора, ИБП, да кросса ничего нет.RS232 через ethernet (комментарий)
Есть серверная, есть удаленный узел со свитчем и ups с com портом. Как привязать этот ups к Nut в серверной?Пока километраж до «удаленный узел» не будет указан, фантазировать не о чем.
PS: но я б просто заменил ИБП на модель с ethernet. Им и управлять можно и логи забирать удобнее и в случае отсутствия связи с ним логи никуда не денутся.
Типичный вопрос нуба забаненого в гугле, иначе была бы дополнительная информация (например, почему надо именно over-ethernet, а не over-ip)
Ближайший сервер может быть за сотню километров.
Вы явно не распарсили: «Тем более, что если это УПС».
И таки да, если это Симметра на 100 кВт и за 30 метров от ближайшего сервера, как у нас, то там вы и компорт то не найдёте. Хоть за модули snmp eth и дерут бешенные деньги, на фоне стоимости УПСа оно выглядит бесплатно.
Вы явно не распарсили: «Тем более, что если это УПС».
Задачи не было. Тут бы правильно распарсить что автору темы хочется.
Если сравнить с потраченным временем на кустарное решение, то окажется, что готовое решение гораздо выгодней.
Смотри в сторону железок Wiznet — дешево и сердито
Задачи не было. Тут бы правильно распарсить что автору темы хочется.
Блин, а два коротких предложения ТСа слабо прочитать?
Я собственно почему в курсе решения, так как я его сделал, у меня полтыщи клиентов так работали, псевдомодем по tcp/ip, а уже через него сертифицированный vpn с версией только через GRE, потому не могущий у всех клиентов работать непосредственно. Объяснять сотням клиентам как открывать GRE или что-то покупать — весьма неумно.
Штучное решение vs. конвейер тоже роль на цену играют. 😉
Автор задал простой вопрос, решение которого очевидно. К чему весь этот флуд?
NUT (Network UPS Tools) никто не использует что-ли?- Подключаешь UPS к локальной машине с linux по com порту
- Устанавливаешь на нее NUT и настраиваешь в режиме
Понятное дело, что надо еще настроить драйвер ups и есть ли он для конкретной модели — не известно.
Я прикручивал только SmartUPS от APC (разные мождели) по com и по usb.
По NUT манов очень много в интернетах.
Я прикрутил еще smssend + GSM мопед для отправки смс в особо критических случаях.
Если нет компа рядом с UPS, варианта 2:- Поставить его ))) (всяко дешевле старенький десктоп, чем решения от Moxa или Aten).
- KVM Com over IP от вышеуказанных производителей.
Я использую 16-ти портовый Aten SN0116. Технология такая: Подключаешь его к локалке и все UPS-ки по com портам.
На удаленной linux машине устанавливаешь драйвер от Aten (как модуль ядра, правда максимум 3.11 поддерживается).
Потом с помощью этого драйвера создаются виртуальные девайсы — /dev/ttya00X и мапятся к IP:port данной железяки.
NUT-у скармливаются данные девайсы как локальные UPS-ки.Источник