Подключение по 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.
Настройка различных коммутаторов, маршрутизаторов и другого оборудования обычно производится через последовательный 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 получится так:
Единственное нужно правильно выбрать файл устройства куда подключено устройство.
Читайте также: