Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


moxa:forwarding-physical-com-port-from-moxa-nport-5610-to-virtual-machine-with-linux-debian-8-jessie

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
moxa:forwarding-physical-com-port-from-moxa-nport-5610-to-virtual-machine-with-linux-debian-8-jessie [15.09.2017 11:14]
Алексей Максимов создано
moxa:forwarding-physical-com-port-from-moxa-nport-5610-to-virtual-machine-with-linux-debian-8-jessie [26.01.2019 19:36] (текущий)
Алексей Максимов [Установка драйвера Moxa Nport на стороне Linux Debian]
Строка 1: Строка 1:
 ===== Трансляция COM-порта с устройства Moxa Nport 5610 в виртуальную машину с Linux Debian 8 (Jessie) ===== ===== Трансляция COM-порта с устройства Moxa Nport 5610 в виртуальную машину с Linux Debian 8 (Jessie) =====
 +
 +В этой статье описан пример того, как **GSM**-модем,​ подключенный к физическому **COM**-порту (**RS-232**) устройства **Moxa NPort** транслировать в виртуальную машину с гостевой ОС **Linux Debian 8 (Jessie)**. В данном примере используется устройство **Moxa NPort 5610 8-Port RS-232 Device Server** (с прошивкой версии **3.8 Build 17030709**).
 +
 +{{ :​moxa:​pasted:​20170915-113830.png }} 
 +
 +К одному из **COM**-портов устройства (в нашем примере это будет порт **2**) подключаем **GSM**-модем. В данном случае в качестве модема используется терминал **Siemens TC35i Terminal**.
 +
 +{{ :​moxa:​pasted:​20170915-113434.png }}
 +
 +\\
 +==== Настройка COM-порта на устройстве Moxa Nport ====
 +
 +Переходим в веб-консоль управления устройства **Moxa NPort** и в разделе **Serial Settings** > **Port 2** настраиваем параметры порта в соответствии со спецификацией поддерживаемых режимов работы подключенного к порту устройства:​
 +
 +{{ :​moxa:​pasted:​20170915-114207.png }}
 +
 +Затем переходим в раздел веб-консоли **Operating Settings** > **Port 2** и устанавливаем режим работы порта как **Real COM Mode**
 +
 +{{ :​moxa:​pasted:​20170915-114456.png }}
 +
 +Далее переходим в раздел веб-консоли **Accessible IP Settings**, включаем опцию **Enable the accessible IP list** и в табличной части указываем IP-адресы хостов,​ которые могут подключаться к нашему устройству **Moxa NPort** для трансляции **COM**-портов по сети. То есть, в нашем случае,​ здесь указывается IP-адрес виртуального Linux-сервера,​ в который мы в дальнейшем будем подключать транслируемые **COM**-порты. Дополнительно о настройке данного ограничивающего доступ списка можно почитать в [[https://​www.moxa.com/​support/​faq/​faq_detail.aspx?​id=257|Moxa FAQ]].
 + 
 + 
 +{{ :​moxa:​pasted:​20170915-115055.png }}
 +
 +<WRAP center important 100%>
 +**Внимание**! \\
 +Если на устройстве опция **Enable the accessible IP list** ранее не была включена,​ то при её включении после нажатия кнопки **Submit** устройство **Moxa NPort** будет автоматически перезагружено.
 +</​WRAP>​
 +
 +\\
 +==== Поиск и получение драйвера Moxa Nport для Linux ====
 +
 +Все драйверы,​ которые должны устанавливаться в систему,​ принимающую по сети транслируемые **COM**-порты можно найти на официальном сайте Moxa в разделе **Support**. В частности для Linux-систем драйвер для нашей модели доступен [[https://​www.moxa.com/​support/​sarch_result.aspx?​type=soft&​prod_id=57&​type_id=9|по ссылке]]
 +
 +{{ :​moxa:​pasted:​20170915-120247.png }}
 +
 +
 +На данный момент нам доступен старый драйвер:​
 +**NPort Real TTY Driver for Linux  - Edition 1.18 - Released on Mar 20, 2012**
 +\\
 +В заметках к драйверу,​ которые доступны [[https://​www.moxa.com/​support/​download.aspx?​type=support&​id=952
 +|по ссылке]] есть информация о том, что данная версия драйвера поддерживает ядро **Linux Kernel** до версии **3.1.0-7**. В нашем же случае используется более новая версия ядра, установленная из официальных репозиториев **Debian Jessie**:
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">#​ uname -a
 +
 +Linux ... SMP Debian 3.16.43-2+deb8u2 (2017-06-26) x86_64 GNU/​Linux</​div></​pre></​HTML>​
 +
 +Сразу скажу, что драйвер со страницы загрузки у меня даже не установился. Поэтому пришлось воспользоваться более свежей версией драйвера,​ которую удалось обнаружить на форуме Moxa в ветке [[https://​www.moxa.ru/​forum/​index.php?/​topic/​25155-ustanovka-real-tty-driver-v-debian/​|Установка Real TTY Driver в Debian]]. ​
 +Действующая на данный момент ссылка на файл, опубликованная в этой ветке: [[https://​www.moxa.ru/​forum/​index.php?​app=core&​module=attach&​section=attach&​attach_id=2107|npreal2_1.18.65_build_17062316.tgz]]
 +
 +\\
 +==== Установка драйвера Moxa Nport на стороне Linux Debian ====
 +
 +Переходим на наш виртуальный сервер с **Debian Jessie**, и распаковываем в отдельный каталог загруженный по указанной ранее ссылке драйвер:​
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">#​ mkdir MoxaNPort
 +# cd MoxaNPort/
 +# tar zxf npreal2_1.18.65_build_17062316.tgz -C ~/​MoxaNPort/</​div></​pre></​HTML>​
 +
 +Ознакомится с документацией,​ поставляемой с драйвером можно в файле ''​README.TXT''​ в распакованном подкаталоге с драйвером:​
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">#​ nano ~/​MoxaNPort/​moxa/​README.TXT</​div></​pre></​HTML>​
 +
 +В этом файле перечислены пакеты,​ которые могут потребоваться в системе для сборки и установки драйвера. Чтобы установить все сборочные зависимости выполним:​
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">#​ apt-get install build-essential
 +# apt-get install linux-headers-`uname -r`</​div></​pre></​HTML>​
 +
 +Переходим в каталог с распакованным драйвером и запускаем скрипт установки с ключом ''​m64'',​ так как в нашем случае используется 64-битная ОС Linux:
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">#​ cd ~/​MoxaNPort/​moxa/​kernel3.x/​
 +# ./mxinst m64</​div></​pre></​HTML>​
 +
 +Вывод скрипта установки будет примерно таким:
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">​===============================================================================
 +Copyright (C) 2002-2015 ​ Moxa Inc.
 +All Rights Reserved.
 +
 +MOXA NPort Server Real TTY Driver Ver1.18.65 Installation.
 +System Information:​ Kernel 3.16.0-4-amd64;​ Machine x86_64.
 +===============================================================================
 +
 +Building driver...
 +
 +If you want to use secure communication with target,
 +you might choose [y] to enable the SSL function.
 +Note: This function support RealCOM with secure mode only.
 +Do you want to enable secure function? [y/N].
 +n
 +make -C /​lib/​modules/​3.16.0-4-amd64/​build SUBDIRS=/​root/​MoxaNPort/​moxa/​kernel3.x modules
 +make[1]: Entering directory '/​usr/​src/​linux-headers-3.16.0-4-amd64'​
 +make[1]: Entering directory `/​usr/​src/​linux-headers-3.16.0-4-amd64'​
 +  CC [M]  /​root/​MoxaNPort/​moxa/​kernel3.x/​npreal2.o
 +/​root/​MoxaNPort/​moxa/​kernel3.x/​npreal2.c:​ In function ‘npreal_net_write’:​
 +/​root/​MoxaNPort/​moxa/​kernel3.x/​npreal2.c:​3674:​16:​ warning: ​
 +ignoring return value of ‘copy_from_user’, ​
 +declared with attribute warn_unused_result [-Wunused-result]
 +  copy_from_user(k_buf,​ buf, count);
 +                ^
 +  Building modules, stage 2.
 +  MODPOST 1 modules
 +  CC      /​root/​MoxaNPort/​moxa/​kernel3.x/​npreal2.mod.o
 +  LD [M]  /​root/​MoxaNPort/​moxa/​kernel3.x/​npreal2.ko
 +make[1]: Leaving directory '/​usr/​src/​linux-headers-3.16.0-4-amd64'​
 +cp -p npreal2.ko /​lib/​modules/​3.16.0-4-amd64/​kernel/​drivers/​char/​
 +depmod -a
 +cc   -c npreal2d.c
 +cc npreal2d.o -o npreal2d
 +strip   ​npreal2d
 +cc   -c redund_main.c
 +cc   -c redund.c
 +cc      redund_main.o redund.o -lpthread -o npreal2d_redund
 +strip   ​npreal2d_redund
 +cc   -o mxaddsvr mxaddsvr.c
 +strip mxaddsvr
 +cc   -o mxdelsvr mxdelsvr.c
 +strip mxdelsvr
 +cc   -o mxcfmat mxcfmat.c
 +strip mxcfmat
 +cc   -o mxloadsvr mxloadsvr.c
 +strip mxloadsvr
 +cc   -o mxsetsec mxsetsec.c
 +strip mxsetsec
 +Check Driver...
 +Copying configurations files ... OK!
 +Copying driver files ... OK!
 +Load driver...
 +OK!
 +
 +Loading TTY Driver...
 +Complete.
 +
 +===============================================================================
 +Installation process is completed.
 +The all driver files are installed on /​usr/​lib/​npreal2/​driver.
 +Now you can cd /​usr/​lib/​npreal2/​driver and run ./mxaddsvr to add tty port.
 +===============================================================================</​div></​pre></​HTML>​
 +
 +После успешного окончания установки все инструменты управления драйвером мы можем найти в каталоге ''/​usr/​lib/​npreal2/​driver''​. В частности,​ нам могут быть полезны утилиты:​
 +
 +  * **mxaddsvr** (Add Server, map tty port)
 +  * **mxsetsec** (Set secure communication mode)
 +  * **mxdelsvr** (Delete Server, un-map tty port)
 +  * **mxloadsvr** (Reload Server)
 +  * **mxuninst** (Remove tty port and driver files)
 +
 +<WRAP center important 100%> Обратите внимание на то, что в в последующем,​ в случае обновления ядра Linux, может потребоваться повторное выполнение утилиты **mxinst**, так как модуль ядра **npreal2** может перестать загружаться. ​
 +</​WRAP>​
 +
 +\\
 +==== Подключение портов Moxa Nport на стороне Linux Debian ====
 +
 +Итак, давайте подключим **COM**-порт c устройства **Nport** с помощью утилиты **mxaddsvr**,​ передав ей в качестве параметра IP адрес устройства и количество портов,​ которые мы хотим создать в системе
 + 
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">#​ /​usr/​lib/​npreal2/​driver/​mxaddsvr 10.1.2.254 8</​div></​pre></​HTML>​
 +
 +Вывод должен быть примерно таким:
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">​Adding Server...
 +
 +ttyr00, cur00
 +ttyr01, cur01
 +ttyr02, cur02
 +ttyr03, cur03
 +ttyr04, cur04
 +ttyr05, cur05
 +ttyr06, cur06
 +ttyr07, cur07
 +Added RealCom server: ip : 10.1.2.254
 +
 +mknod -m 666 ttyr00 c 33 0
 +mknod -m 666 cur00 c 38 0
 +mknod -m 666 ttyr01 c 33 1
 +mknod -m 666 cur01 c 38 1
 +mknod -m 666 ttyr02 c 33 2
 +mknod -m 666 cur02 c 38 2
 +mknod -m 666 ttyr03 c 33 3
 +mknod -m 666 cur03 c 38 3
 +mknod -m 666 ttyr04 c 33 4
 +mknod -m 666 cur04 c 38 4
 +mknod -m 666 ttyr05 c 33 5
 +mknod -m 666 cur05 c 38 5
 +mknod -m 666 ttyr06 c 33 6
 +mknod -m 666 cur06 c 38 6
 +mknod -m 666 ttyr07 c 33 7
 +mknod -m 666 cur07 c 38 7
 +Complete.</​div></​pre></​HTML>​
 + 
 +В результате в нашей Linux-системе должно появится устройство ''/​dev/​ttyr01'',​ которое мы будем использовать в дальнейшем для обращения девайсу,​ подключенному к удалённому **COM**-порту. Конфигурация подключения к устройству **Moxa NPort** при этом будет записана в файл ''/​usr/​lib/​npreal2/​driver/​npreal2d.cf''​.Если вы захотите править этот файл вручную (внимательно читайте инструкции в ''​README.TXT''​),​ то после его правки для вступления изменений в силу нужно запускать утилиту ''/​usr/​lib/​npreal2/​driver/​mxloadsvr''​.
 +
 +Теперь нам остаётся убедиться в том, что добавленный в процессе установке драйвера скрипт инициализации ''/​etc/​init.d/​npreals''​ успешно отрабатывает в процессе перезагрузки системы. Перезагружаем наш Debian сервер и проверяем наличие информации о загруженном драйвере в **dmesg**
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">#​ dmesg | grep MOXA
 +
 +... MOXA Async/NPort server family Real TTY driver ​
 +ttymajor 33 calloutmajor 38 verbose 0 (Ver1.18.65)</​div></​pre></​HTML>​
 +
 +Если драйвер по какой-то причине на попал в загрузку,​ смотрим о способах решения данной проблемы в ''​README.TXT''​
 +
 +\\
 +==== Проверяем доступность транслированного в Linux устройства ====
 +
 +Проверяем доступность подключенного через Nport и транслируемого в нашу систему GSM-модема. Для этого установим утилиту **screen**:
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">#​ apt-get install screen -y</​div></​pre></​HTML>​
 +
 +Подключаемся к порту:
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">#​ screen /​dev/​ttyr01</​div></​pre></​HTML>​
 +
 +Должен открыться новый пустой экран консольной сессии с модемом. Набираем команду получения информации о модеме
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">​ATI</​div></​pre></​HTML>​
 +
 +В ответ мы должны получить от модема его модель. Например,​ в нашем случае ответ выглядит так:
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">​SIEMENS
 +MC35i
 +REVISION 02.00
 +
 +OK</​div></​pre></​HTML>​
 +
 +Если ответ получен,​ значит желаемый результат нами достигнут.
 +
 +Завершаем screen сессию клавишами "​**Ctrl**+**a**"​ затем "​**\**"​
 +
 +Внизу экрана появится вопрос
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">​Really quit and kill all your windows [y/​n]</​div></​pre></​HTML>​
 +
 +Жмём "​**y**"​. Сессия **screen** будет завершена и соединение с модемом на порту ''/​dev/​ttyr0''​ будет завершено.
 +
 +\\
 +==== Отключение портов и удаление драйвера Moxa Nport в Linux ====
 +
 +Как удалить подключение к устройству Moxa Nport:
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">#​ /​usr/​lib/​npreal2/​driver/​mxdelsvr 10.1.2.254</​div></​pre></​HTML>​
 +
 +Как удалить драйвер Moxa NPort:
 +
 +<​HTML><​pre style="​padding:​3px;"><​div style="​background:#​5a5a62;​color:#​ffffff;​padding:​10px;">#​ /​usr/​lib/​npreal2/​driver/​mxuninst</​div></​pre></​HTML>​
 +
  
  
 ---- ----
 Проверено на следующих конфигурациях:​ Проверено на следующих конфигурациях:​
-^ Версия ^ Версия ^ +^ Версия ​Moxa NPort Firmware ​^ Версия ​ОС Linux ^ Версия драйвера Real TTY 
-|||+|3.8 Build 17030709|Linux Debian 8.6 (Jessie) Kernel 3.16.0-4-amd64|1.18.65|
  
 ---- ----

moxa/forwarding-physical-com-port-from-moxa-nport-5610-to-virtual-machine-with-linux-debian-8-jessie.1505463285.txt.gz · Последние изменения: 15.09.2017 11:14 — Алексей Максимов