Подключение по com порту linux

Обновлено: 08.07.2024

Напомню, что последовательные порты в Linux именуются в виде файлов /dev/ttyS* (на месте звёздочки может быть любой номер порта, начиная с нуля). Иногда, если используются адаптеры COM2USB, порты могут именоваться /dev/ttyUSB* (тоже начиная с нуля).

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

На всех этапах следует выбирать одинаковую скорость порта.

Содержание

В репозиториях ALT доступны несколько пакетов программ для работы по COM-порту:

  • cutecom (графический)
  • minicom (текстовый полноэкранный)
  • picocom : picocom -b115200 /dev/ttyUSB0
  • python-module-serial : miniterm.py --eol CRLF --raw /dev/ttyUSB0 115200
  • uucp : cu -l ttyS0 -s 115200

Для удаленного подключения к Serial Console через IPMI потребуется настроить управление сервером в BIOS или при помощи ipmitool; для подключения используется следующая команда:

Как выше было написано, функция есть не в каждом BIOS. Практически всегда встречается в BIOS серверных материнских плат Intel. Следует найти соответствующий раздел и настроить.

Может случиться так, что до входа в систему дело не дойдёт из-за неправильно настроенной загрузки. Существует способ взаимодействовать с загрузчиком по последовательному порту.

В файл /etc/sysconfig/grub2 нужно записать:

и далее выполнить update-grub (если этого скрипта ещё не было, то grub-mkconfig -o /boot/grub/grub.cfg ).

В файл /boot/grub/menu.lst нужно записать:

В общие параметры загрузчика следует добавить

В общую часть syslinux.cfg (isolinux.cfg, extlinux.cfg -- по надобности) добавляем:

Пример изменения /etc/sysconfig/grub2 (без splash!):

Пример записи в /boot/grub/menu.lst с подсказками от Сергея Власова:

Пример записи в /etc/lilo.conf :

Годятся mgetty и agetty. Ставятся из соответствующих пакетов. Для настройки входа вам нужно установить одну из этих утилит. Сделайте это обычным методом (apt-get, aptitude, synaptic).

Например, это может выглядеть так (mgetty):

Эти параметры (с которыми init запустит mgetty для первых двух последовательных портов) означают, что на портах /dev/ttyS[01] (mgetty сам умеет добавлять /dev/) ожидаются прямые (-r, то есть, с других компьютеров/терминалов, в противоположность модемным) соединения со скоростью 115200 бит/с (-s) и с уровнем отладочной информации равным нулю (-x). Изменения вступят в силу лишь после прочтения файла init-ом (в результате команды telinit q от суперпользователя или перезагрузки машины).

Дополнительную краткую информацию по вызову mgetty можно почерпнуть из mgetty(8).

agetty настраивается аналогично, но командная строка отличается:

Minicom - это консольная программа операционной системы linux для установки сеанса связи с устройствами через последовательный com-порт. Для подключения к com-порту программу можно запускать с заданными аргументами и использовать псевдо-графический оконный интерфейс для изменения и сохранения настроек подключения. Рассмотрим настройку программы на примере популярной операционной системы семейства linux - Ubuntu.

Установка программы в Debian/Ubuntu:

Подключение будет осуществляться к последовательному порту устройства со следующими настройками:
Скорость/Четность/Биты (Bps/Parity/Bits) = 38400 8N1.

Настройка подключения к com-порту

Запуск программы лучше выполнять в привилегированном режиме sudo, т.к. программе могут понадобиться повышенные права для доступа к порту или для сохранения настроек.

Для доступа к меню конфигурации программу minicom нужно запустить с параметром -s:


Выбираем пункт "Настройка последовательного порта".

При использовании нуль-модемного кабеля, адресом последовательного порта в linux будет /dev/ttyS0 для COM1, /dev/ttyS1 для COM2 и т.д. В случаях, когда используется адаптер USB-to-COM, в качестве порта ввода-вывода будет использоваться /dev/ttyUSB0 или /dev/ttyUSB1.

Список доступных портов можно посмотреть командой:

Настройки для подключения к последовательному порту USB-to-COM с заданными параметрами будут выглядеть примерно так:


Для выбора последовательного порта нужно нажать клавишу [A] и отредактировать значение.

Для изменения скорости нажать клавишу [E] и затем [D], чтобы выбрать скорость 38400.


Нажимаем два раза клавишу [Enter], чтобы принять изменения и вернуться в начало меню "Конфигурация".
Сохраняем настройки, выбрав пункт "Сохранить настройки как dfl". Это изменит настройки запуска программы, используемые по умолчанию.


Если выбрать пункт "Сохранить настройки как.." и указать имя файла настроек, например "cisco", то это не изменит настройки по умолчанию и в дальнейшем можно будет запускать программу с конкретными параметрами, указав имя файла с настройками.

В завершении настройки переходим к пункту "Выход" и если все настроено правильно, то будет установлен сеанс подключения по последовательному порту.

Запуск minicom с аргументами

Minicom можно запускать без выполнения настроек в оконном режиме. Для этого достаточно выполнить запуск программы с заданными аргументами.

Для подключения к устройству с помощью адаптера USB-to-COM со скоростью 38400:

Урок посвящен интерфейсу RS-232, который в простонародье называют COM-порт. Мы разберемся как он представлен в Linux, какой у него интерфейс, научимся его конфигурировать, а также узнаем, что написание программы для коммуникации через COM-порт в Linux не представляет сложности.

$dmeg | grep «ttyS»

то мы увидим, что, в действительности , у меня только один файл ttyS4 связанный с конкретным COM-портом, у которого есть некоторый диапазон ввода/вывода, номер прерывания, и который сейчас настроен на скорость обмена 150200 бит в секунду (или бод).

Для того, чтобы сконфигурировать мой COM-порт по умолчанию в Linux можно воспользоваться программой mincom, запускать её нужно от суперпользователя, либо добавить текущего пользователя в группу dialout. Запустим

$sudo minicom -s

Ключ -s – обозначает конфигурацию (setup),

Здесь мы видим следующее [2:24]. Есть параметры последовательного порта, важно прописать правильно файл, то есть указать тот файл, который у вас в системе связан с физическим COM-портом, Второй важный момент – это настройка параметров обмена (ключ Е). Дело в том, что корректный обмен данными по последовательному соединению возможен только тогда, когда обе стороны имеют один и тот же набор параметров. В этом окне можно набор этих параметров менять [3:08]. Мы видим, что у нас задана скорость 8 бит, нет контроля четности, и один стоповый бит. Именно здесь можно это все увидеть и настроить так, как требуется или, как требует ваше устройство.

Сохраняем конфигурацию по умолчанию. Дальше будем взаимодействовать - сначала с помощью команды терминала, чтобы проверить, как вручную это работает; а потом напишем небольшую программу, которая будет слать данные в COM-порт. Выйти из Mincom можно набрав ctrl-A-X.

Для того чтобы проверить, как работает COM-порт можно воспользоваться программой miniterm [4:03]. Я создал виртуальную машину с обычным linux, у неё указал, что в наличии имеется один COM-порт (это COM1), по умолчанию назначились линии обработки запросов прерывания. Я ассоциировал этот COM-порт с файлом на моей host-машине. С этого файла мы будем читать данные записанные в порт.

Итак, мы видим, что в левой части экрана у нас есть логин на виртуальную машину [4:46]. Давайте проверим с помощью minicom -s, как настроены коммуникации. Проверим, что /dev/ttyS0 – это действительно правильный физический порт – да, это именно так. Теперь мы можем вызвать команду

$sudo miniterm

она говорит, что есть следующие доступные порты, и просит ввести, через какой порт работать. Далее я попадаю терминал, связанный с COM-портом, где могу набирать текст. Набирая команды, я вижу «эхо» в моем файле справа. Обратите внимание, что я пишу в левом окне, а на экране надпись мы видим в правом. В левом окошке – виртуальная машина, на которой настроен порт. В правом – тот лог, который мы видим в файле ассоциированном с этим COM-портом на host-машине.

Создадим какой-нибудь каталог, в котором будем разрабатывать приложение. Как это ни странно, приложение будет выглядеть очень просто, потому что все действия, которые мы делаем с COM-портом в linux, это действия с файлами с использованием тех же самых файловых операций. Нам потребуется stdio.h, unistd.h, чтобы получить доступ – функциям open/read/write, fcntl.h, чтобы иметь возможность использовать файловые флажки. Открываем файловый дескриптор, COM-порт, имя, и флаги из COM-порта. Проверим, что файловый дескриптор у нас открылся, то есть если порт меньше или равен 0, то есть какая-то ошибка, оповестим об этом пользователя и вернем управление. В противном случае, можно писать в этот файловый дескриптор. write принимает файловый дескриптор, указатель на буфер, размер. Дальше мы закрываем файловый дескриптор и возвращаем управление. Приложение готово.

Теперь давайте попробуем запустить то, что у нас вышло, вернее, скомпилировать и запустить [10:40]. При запуске приложения произошла ошибка, но она вызвана понятными причинами, потому что пользователь должен был быть включен группу dialout [11:03], или нам надо запускать приложение от суперпользователя. Сделаем это. И сразу видим, что в нашем окошке появилась запись «hello world». Можно повторить и увидеть, что все работает корректно.

Точно таким же образом можно осуществлять чтение из COM-порта, то есть использовать не функцию write, а функцию read.

Logo

Настройка различных коммутаторов, маршрутизаторов и другого оборудования обычно производится через последовательный COM порт (RS232). Вначале нужно найти и соединить подходящим консольным кабелем компьютер и коммутатор (через COM-порт или USB переходник) компьютер. В этой статье посмотрим как производить настройку в ОС Linux.

Настройка через minicom

В первую очередь нужно найти в документации к оборудованию настройки консольного com порта. Для подключения под linux необходимо поставить программу minicom. Поставим из пакета под Debian (ubuntu):

Чтобы minicom увидел Сisco его необходимо правильно настроить запускаем с ключом:

Заходим в настройку последовательного порта (Serial port setup) и меняем значения Скорость/Четность/Биты (Bps/Par/Bits) на 9600 8N1.

Меняем последовательный порт (Serial Device) на порт, к которому подключено оборудование и настраиваем параметры управления потоком(Flow Control). В данном примере это /dev/ttyS0 — адрес порта COM1. При подключении через разъем mini-usb порт может быть таким /dev/ttyACM0.

Справку по командам можно получить нажав Ctrl+A затем Z.

В итоге получаем стандартные настройки для Cisco и HP procurve:

Сохраняем конфигурацию, как настройки по-умолчанию в главном меню minicom (Save setup as dfl), либо как конфигурацию с конкретным названием ( Save setup as..).

Для выхода из minicom необходимо нажать Ctrl+A затем Q.

Далее запускаем minicom с настройками по-умолчанию.

Либо с сохранными настройками.

А это пример настроек для свитчей 3com(hp) 4210 и 4500

Устройство /dev/ttyUSB0 обычно используется при подключении через переходник usb->com. Скорость 19200 иногда 115200 используется на свитчах 3COM (теперь уже HP) причем любую другую скорость они не понимают. Так что перед подключением нужно внимательно читать в документации какие скорости и контроль потока нужно выставлять. Однако иногда параметры подключения пишут прямо на устройстве рядом с консольным портом.

Настройки через утилиту cu

Можно подключиться к консоли командой

Главное достоинство утилитки cu что она одинаково хорошо работает под linux и под freebsd только названия устройств отличаются.

На freebsd получится так:

Единственное нужно правильно выбрать файл устройства куда подключено устройство.

Читайте также: