Меню Рубрики

Установка com порта в ubuntu

Заметки о Linux, электронике, радиолюбительстве

Личный блог Вадима Кузнецова, RA3XDH

воскресенье, 27 июля 2014 г.

Работа с последовательным портом из консоли Linux

В предыдущем посте было показано как запустить UART на отладочной плате Launchpad для MSP430. Теперь рассмотрим как общаться с платой при помощи средств командной строки Linux. Используется плата с прошивкой из предыдущего поста. Для подробностей — см. под кат

Как известно, все устройства последовательных портов представлены файлами устройств в каталоге /dev.Через эти файлы и происходит общение ОС Linux с внешним устройством на последовательном порту. Чтобы передать что-то на внешнее устройство нужно записать данные в файл устройства, а чтобы считать информацию из устройства — прочитать данные из файла устройства. Это можно делать при помощи команд cat и echo так же как для обычных файлов на диске. Или внутри программы на С при помощи вызовов ioctl(), read() и write() или библиотеки termios.

Физическим последовательным портам RS232, к которым подключались диалапные модемы на старых компьютерах, соответствуют файлы устройств /dev/ttyS*, начиная с /dev/ttyS0. Виртуальным последовательным портам, которые создаются различными конвертерами USB UART соответствуют файлы устройств /dev/ttyUSB* и /dev/ttyACM*. Ядро Linux автоматически разпознаёт подключенное устройство, загружает для него драйвер и создаёт файл устройства. Вручную устанавливать драйвер, как в ОС Windows не требуется. Например, если подключить к USB преобразователь USB UART FT232, то создаётся файл устройства /dev/ttyUSB0, с которым можно работать также как и с обычным последовательным портом. На плате Launcpad находится микросхема TUSB3410, которая тоже представляет собой конвертер USB UART. Если подключить её к USB, то создаётся файл устройства /dev/ttyACM0. Чтобы общаться с платой нужно что-либо писать/читать с этого файла.

Чтобы пользователь мог читать или писать в файл устройства последовательного порта, его нужно добавить в группу dialout. Иначе работать с последовательным портом сможет только администратор root.

Простейшим приложением с графическим интерфейсом, которое работает с последовательным портом, является CuteCOM. Он обычно уже есть в вашем дистрибутиве Linux. Его можно установить из репозиториев. При помощи CuteCOM мы работали с платой в предыдущем посте. Выглядит CuteCOM вот так:

Работать с ним крайне просто. Указываем нужное устройство, если его нет в списке, то его можно впечатать вручную. Затем указываем скорость и параметры и нажимаем OpenDevice. В окне видим данные, которые пришли от устройства. В поле ввода в нижней части можем печать строку символов, которые предаются на устройство. Чтобы передать данный нажимаем Enter и смотрим ответ устройства в окне.

Теперь рассмотрим как работать с COM-портом из командной строки. Для этого служат три команды: stty, cat и echo.

Команда stty устанавливает параметры и скорость COM-порта. Её формат:

stty -F

Чтобы установить параметры для платы Launchpad для соединения на скорости 9600 нужно выполнить:

$ stty 9600 -F /dev/ttyACM0 raw -echo

Параметр raw устанавливает, что данные в компьютер передаются байт за байтом так же как приходят в порт без преобразований. Аппаратное управление потоком отключено. Подробнее о том, что включает и выключает raw — см. man stty. Если не включить raw, то скорее всего ничего работать не будет.

Теперь в той же консоли нужно набрать

$ cat /dev/ttyACM0

И можно смотреть данные, которые приходят от платы. Выход — нажать Ctrl+C.

Теперь нажимаем на плате RESET и видим, что в консоди напечатался текст.

Чтобы передать в плату данные, в другой консоли нужно использовать команду echo и перенаправление вывода в файл устройства. Наберём в другой консоли:

$ echo "1">/dev/ttyACM0

Видим, что на плате загорелся красный светодиод и в первой консоли было выдано сообщение об этом. Чтобы убрать конец строки в передаваемых данных, то нужно использовать запуск echo -n, а чтобы интерпретировать 16-ричные коды — нужно echo -e. Ключи можно комбинировать.

В итоге должно получиться так:

Чтобы увидеть 16-ричные коды данных, приходящих от устройства, нужно использовать команду hexdump:

$ cat /dev/ttyACM0|hexdump -C

Получится вот так:

Чтобы иметь вывод данных от устройство на экран и в текстовый файл нужно использовать tee:

источник

Настраиваем виртуальный компорт в Ubuntu

Удобно работать с виртуальной машиной XPSP3 в VirtualBox’е: когда надо включаешь её, когда не надо – выключаешь, всё очень быстро, и вирусы прочно экранируются. Но вот понадобилось внести изменения в отлаживаемую «виндовую» программу, работающую со старыми добрыми компортами. И тут обнаруживается: не работает компорт виртуальной машины. В ЛОРе нет хорошего ответа. Всё сводится к рекомендации создания новой машины, а это время. Западные пользователи на форумах тоже дают немало пустых советов. А на самом деле всё не так уж и сложно.

Читайте также:  Установка 4 канального видеорегистратора

Сначала надо установить утилиту настройки аппаратного компорта хост-машины. Называется она setserial, в дистрибутивах Ubuntu её нет, но зато она есть в репозиториях, поэтому воспользуемся командой терминала:

sudo apt-get install setserial

И, конечно, запустим эту утилиту, чтобы посмотреть, присутствует ли на материнской плате, что собой представляет и как настроен аппаратный порт хозяйки (далее в примере исследуем COM1):

sudo setserial -g /dev/ttyS0

Учтите, что ttyS0 соответствует COM1, ttyS1 соответствует COM2 и т.д. согласно терминологии Линукса. Подставьте нужное. После ввода пароля суперпользователя в норме должен быть получен ответ:

/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4

Иначе компорт отсутствует или отключен на уровне BIOS’а хост-машины. Выключенный порт включаем. В случае отсутствия на материнской плате аппаратного компорта придётся поставить «костыль» из дополнительной PCI-платы расширения и добавить модуль его драйвера из прилагаемого к ней диска. Проверено: для Линукса драйверы раюотоспособны, но уточните номер появившегося компорта командой терминала

При необходимости параметры настройки коммуникационного порта можно откорректировать ( как именно – см. терминальной командой man setserial).

Настраиваем проключение виртуального COMn в аппаратный COMn, то бишь в файл ttySn+1. Для этого запускаем VirtualBox, НЕ ЗАПУСКАЯ ВИРТУАЛЬНУЮ МАШИНУ, и настраиваем параметры её компорта, как показано на этом скриншоте:

Здесь важно, чтобы номер порта, номер прерывания и адрес ввода-вывода совпадали бы с теми, которые проиндицировала утилита setserial. Если не совпадают, то утилита setserial поможет перенастроить параметры аппаратного компорта.

Но если вы сейчас попытаетесь запустить виртуальную машину, то с очень большой вероятностью получите ошибку. А всего-то надо сделать ещё две вещи.

Во-первых, вы, хотя и являетесь «главным администратором», не обязательно автоматически являетесь членом группы пользователей виртуальной машины. Удивительно? Но бывает нередко. Впрочем, эта нелепость устраняется легко. Чтобы не заморачиваться с CLI, установите с помощью эмулятора терминала великолепную утилиту gnome-system-tools (она есть в репозиториях) командой

sudo apt-get install gnome-system-tools

Данную утилиту рекомендую для многократного употребления, поэтому скопируйте из папки /usr/share/applications значок «Пользователи и группы» на рабочий стол и запустите эту утилиту из рабочего стола. Откроется окно «Параметры пользователей». Жмите кнопку «Управление группами», в открывшемся окне «Параметры групп» скроллингом отыщите группу vboxusers, выберите её и дважды щёлкните по ней. Откроется окно «Свойства группы vboxusers». Внутри панели «Члены группы» пометьте чекбокс напротив своего имени, отражающего вас, как пользователя системы.

Во вторых, реальному порту следует присвоить права «666», что означает разрешение дуплексного обмена через компорт на уровнях владельца, членов его группы и остальных пользователей. Делается это командой

Вместо ttyS0 подставьте обозначение нужного аппаратного компорта хост-машины. Вcё, теперь можно смело запускать виртуальную машину, включать привычный «виндовый» гипертерминал и с помощью виртуальной Windows настраивать модемы, управлять программаторами и т.д. Словом, делать всё то, как будто бы вы работали с реальной Windows XP или «семёркой». Успехов!

источник

Научиться работать через COM порт в Ubuntu с устройством CISCO ASA 5505

Решил в свободное время на работе начать повышать свой кваллификационный уровень значимости себя как специалиста в компании , но ведь как известно, что чем больше ты якобы разбираешься в возникающих проблемах, то тем слабее ты как специалист, но от этого никуда не убежать, невозможно знать все на свете очень и очень хорошо. Можно быть специалистом в одной области, но как системный администратор я себе такого позволить не могу, почему – ну кому я буду нужен если я буду только в Windows системах к примеру разбираться, получается мне дорога только в крупные компании, там то уж я выше головы не прыгну, но я не такой – я хочю и могу контролировать различные области настройки и обслуживания самостоятельно – мне это нравится. И вот теперь я решил взяться за работу с сетевой частью , а именно в моем распоряжении появилась железка CISCO ASA 5505 – для меня это многое значит. Но как начать ее пользоваться, конечно я думаю для многих это не вызываем проблем, типа взял да подключил, но когда ты к сетевому оборудованию не имел доступа, то для тебя по первой это темный лес, что я имею: у меня есть консольный провод, а на другом конце обычный сетевой разъем RJ45, но цветовая расцветка которого имеет отличия от того каким прокладывают сеть:

По схеме из документации я вижу, как устройство нужно подключить к компьютеру

Читайте также:  Установка антенного усилителя триада

(ноутбук если его использовать должен иметь в наличии COM порт (для справки это: разъем RS232) или переходник (USB COM PORT) на него, но сейчас на 2015 год встретить такой ноутбук целая проблема)

Подключив данный COM порт к компьютеру, в настоящий момент на рабочем месте я использую ось: OpenSUSE 13.2 amd64 через консоль терминала определяю информацию по определившему оборудованию в системе:

> sudo setserial -g /dev/ttyS0

/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4

Эти данные мне понадобятся, когда я хочю воплотить такую задумку в практическую часть по рассмотрению, как на своей системе с установленной средой VirtualBOX (использую для тестов) сделать пробросс COM порта внуть гостевой оси, а именно Ubuntu 12.04.5 Server amd64, я просто хочю разобрать как работать с COM портом, кто-то скажет, зачем пробрассывать в Ubuntu если у тебя рабочая станцию OpenSUSE, просто мне OpenSUSE не нравиться, а использовать Ubuntu на рабочем месте по многим причинам пока не представляется возможным, к примеру управление кластером который используется не поддерживает самую последнюю версию, но да ладно вернуть к решению своей головоломке.

Создаю виртуальную машину (или откатываю уже существующую на любой удобный мне снапшот) и в настройках предопределяю используемый COM-порт, вот так как представленно на ниже приведенном скриншоте.

  1. Порт 1:
  2. Включить последовательный порт
  3. Номер порта: COM1
  4. Прерывание: 4 (это из вывода выше IRQ)
  5. Порт B/B: 0x03f8 (это также из вывода выше Port)
  6. Режим порта: Хост-устройство
  7. Путь к порту/файлу: /dev/ttyS0

Когда виртуальная машина с Ubuntu 12.04.5 Server amd64 на борту загрузиться устанавливаю пакет приложения который может работать с COM-портами:

$ sudo apt-get install minicom

Запускаю утилиту minicom:

minicom: cannot open /dev/tty8: Permission denied

Ага, нужно права суперпользователя, исправляюсь:

Нажмите Ctrl-A Z чтобы попасть в меню справочных команд

Чтобы отредактировать подключение то нажимаем O (Configure Minicom), переходим на Serial port setup для выставления параметров соединения:

Нажимаем клавишу: “A” и приводим значение Serial Device к виду определенному системой, в моем случае это: /dev/ttyS0 и нажимаем Enter

а после нажимаем клавишу “E”

  • 9600 band
  • 8 data bits
  • no parity
  • 1 stop bit

и здесь нужно нажать: CLVW

После нажимаем клавишу: F = для изменения значения на Yes

А после уже смотрю изменился статус подключения с offline на online (хотя может и не измениться – это не столь важно)

CTRL-A Z for help | 9600 8N1 | NOR | Minicom 2.7 | VT102 | Online 1:38 | ttyS0

Далее сохраняем конфиг на подключение – Save setup as

Выходим из minicom (Exit → Ctrl – A + Q → на вопрос Leave without reset? Отвечаем Yes) и подключаемся с помощью minicom и сохраненным конфигом к устройству:

$ sudo minicom -c on config-asa

после нажимаем Enter и Enter и у Вас должно появиться приглашение на ввод команд для получения/изменения информации на устройстве:

Если же у Вас не подхватился сохраненный конфигурационный файл, то когда набрали команду выше можно проделать все действия по определению параметров подключения к устройству подключенному к компьютеру через COM порт, сохранить настройки, выйти и заново набрать команду:

$ sudo minicom -c on config-asa

и подключение пройдет (видимо это глюк, но у меня так заработало), нажимаем Enter и получаем ожидающую строку ввода:

ciscoasa> — ожидающая строка ввода на управление CISCO ASA 5505

На заметку: Чтобы отобразить справку по командам или по ключам команды, то синтаксис следующий: ? — отобразить список всех команд, show ? — отобразить справку по команде.

ciscoasa> show version

Cisco Adaptive Security Appliance Software Version 8.3(2)

Device Manager Version 6.3(2)

Compiled on Fri 30-Jul-10 20:17 by builders

System image file is «disk0:/asa832-npe-k8.bin»

Config file at boot was «startup-config»

ciscoasa up 18 mins 29 secs

Hardware: ASA5505, 512 MB RAM, CPU Geode 500 MHz

Internal ATA Compact Flash, 128MB

BIOS Flash M50FW016 @ 0xfff00000, 2048KB

Encryption hardware device : Cisco ASA-5505 on-board accelerator (revision 0x0)

Boot microcode : CN1000-MC-BOOT-2.00

SSL/IKE microcode: CNLite-MC-SSLm-PLUS-2.03

IPSec microcode : CNlite-MC-IPSECm-MAIN-2.06

0: Int: Internal-Data0/0 : address is 74a0.2f5a.e2d6, irq 11

1: Ext: Ethernet0/0 : address is 74a0.2f5a.e2ce, irq 255

2: Ext: Ethernet0/1 : address is 74a0.2f5a.e2cf, irq 255

3: Ext: Ethernet0/2 : address is 74a0.2f5a.e2d0, irq 255

4: Ext: Ethernet0/3 : address is 74a0.2f5a.e2d1, irq 255

5: Ext: Ethernet0/4 : address is 74a0.2f5a.e2d2, irq 255

6: Ext: Ethernet0/5 : address is 74a0.2f5a.e2d3, irq 255

7: Ext: Ethernet0/6 : address is 74a0.2f5a.e2d4, irq 255

8: Ext: Ethernet0/7 : address is 74a0.2f5a.e2d5, irq 255

9: Int: Internal-Data0/1 : address is 0000.0003.0002, irq 255

Читайте также:  Установка литых дисков на уаз патриот

Licensed features for this platform:

Maximum Physical Interfaces : 8 perpetual

Dual ISPs : Disabled perpetual

VLAN Trunk Ports : 0 perpetual

Inside Hosts : 10 perpetual

Failover : Disabled perpetual

VPN-DES : Enabled perpetual

VPN-3DES-AES : Disabled perpetual

SSL VPN Peers : 2 perpetual

Total VPN Peers : 10 perpetual

Shared License : Disabled perpetual

AnyConnect for Mobile : Disabled perpetual

AnyConnect for Cisco VPN Phone : Disabled perpetual

AnyConnect Essentials : Disabled perpetual

Advanced Endpoint Assessment : Disabled perpetual

Botnet Traffic Filter : Disabled perpetual

Intercompany Media Engine : Disabled perpetual

This platform has a Base license.

Serial Number: JMX1848Z1AK

Running Permanent Activation Key: 0x6218f56c 0xac92ad8f 0xbcd2012c 0xbbc48c80 0x4f052f9e

Configuration register is 0x1

Configuration has not been modified since last system restart.

Ура я разобрался – и это здорово. Теперь я знаю чуточку больше чем обычно. Продолжаю знакомство.

Переход в привилигированный режим

ciscoasa> enable

Если я правильно понимаю документацию, то по умолчанию пароля на доступ в данный режим из консоли нет, поэтому просто нажимаю Enter и попадаю в необходимый режим работы с устройством:

Текущий метод работы устройства:

ciscoasa# show firewall

Отобразить какие VLAN предопределены сейчас на устройстве:

ciscoasa# show switch vlan

1 inside down Et0/1, Et0/2, Et0/3, Et0/4

Назначить пароль на доступ в привилигированный режим:

ciscoasa# configure terminal

ciscoasa(config)# enable password 712mbddr@

входим в настройку интерфейса 1:

ciscoasa(config)# interface vlan 1

ciscoasa(config-if)# nameif lan

Параметр «имя интерфейса» (nameif) в дальнейшем позволяет использовать в настройках не физическое наименование интерфейса, а его имя, которое можно выбрать «говорящим» (inside, outside, dmz, partner и т.д.)

Указываем уровень безопасности:

ciscoasa(config-if)# security-level 100

Параметр «уровень безопасности» (security level) – это число от 0 до 100, которое позволяет сравнить 2 интерфейса и определить, кто из них более «безопасен». Параметр используется качественно, а не количественно, т.е. важно только отношение «больше-меньше». По умолчанию трафик, идущий «наружу», т.е. с интерфейса с большим уровнем безопасности на интерфейс с меньшим уровнем безопасности, пропускается, сессия запоминается и обратно пропускаются только ответы по этим сессиям. Трафик же идущий «внутрь» по умолчанию запрещен.

Назначаем адрес интерфейсу:

ciscoasa(config-if)# ip address 192.168.1.1 255.255.255.0

Waiting for the earlier webvpn instance to terminate…

Previous instance shut down. Starting a new one.

ciscoasa(config-if)# no sh

Выходим из настроек данного интерфейса:

ciscoasa(config-if)# exit

Теперь нужно настроить сопоставление аппаратного интерфейса с настроенными сетями:

ciscoasa(config)# show interface

Interface Vlan1 «lan», is down, line protocol is down

Hardware is EtherSVI, BW 100 Mbps, DLY 100 usec

MAC address 74a0.2f5a.e2d6, MTU 1500

IP address 192.168.1.1, subnet mask 255.255.255.0

Traffic Statistics for «lan»:

1 minute input rate 0 pkts/sec, 0 bytes/sec

1 minute output rate 0 pkts/sec, 0 bytes/sec

1 minute drop rate, 0 pkts/sec

5 minute input rate 0 pkts/sec, 0 bytes/sec

5 minute output rate 0 pkts/sec, 0 bytes/sec

5 minute drop rate, 0 pkts/sec

ciscoasa(config)# show ip

Interface Name IP address Subnet mask Method

Vlan1 lan 192.168.1.1 255.255.255.0 manual

Vlan2 outside unassigned unassigned DHCP

Interface Name IP address Subnet mask Method

Vlan1 lan 192.168.1.1 255.255.255.0 manual

Vlan2 outside unassigned unassigned DHCP

ciscoasa(config)# interface Ethernet0/0

Отобразить информацию по интерфейсу: (насколько я понял по читаемой книге по CISCO это информация очень полезна и позволяет узнать как работает порт, есть ли ошибки, как происходит обмен трафиком и многое другое)

ciscoasa(config-if)# show interface Ethernet0/0

Interface Ethernet0/0 «», is down, line protocol is down

Hardware is 88E6095, BW 100 Mbps, DLY 100 usec

Input flow control is unsupported, output flow control is unsupported

Available but not configured via nameif

MAC address 74a0.2f5a.e2ce, MTU not set

0 packets input, 0 bytes, 0 no buffer

Received 0 broadcasts, 0 runts, 0 giants

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort

0 switch ingress policy drops

0 packets output, 0 bytes, 0 underruns

0 pause output, 0 resume output

0 output errors, 0 collisions, 0 interface resets

0 late collisions, 0 deferred

0 input reset drops, 0 output reset drops

0 switch egress policy drops

Сопоставляем интерфейсы с только что настроенной сетью:

ciscoasa(config-if)# switchport access vlan 1

ciscoasa(config-if)# no sh

Работает, получается можно подключаться через проброшенный COM порт в виртуальную систему Ubuntu 12.04.5 Server amd64, точно такие шаги выше справедливы и для подключения к устройству из OpenSUSE. Теперь для меня аббревиатура подключение к консольному порту сетевого устройства не вызывает недоуменине, да и вообще оказалось что в этом нет ничего сложного, сложно только по первой, после это уже как обыденность. На этом я заканчиванию практическое повествование данной заметки. До встречи с уважением автор блога – Олло Александр (ник: ekzorchik)

источник

Добавить комментарий

Adblock
detector