Настройка com порта virtualbox: Virtualbox — Русский WINE

linux — Эмуляция COM порта

Есть ubuntu 16.04 которая установлена на VirtualBox. В самой машине есть один физический com порт, он прокинут в VirtualBox в режиме «хост устройство» вот так:

Еще я включил 2 порта в режиме «отключен»:

В результате на ubuntu эти порты определяются. (Но работать я так понимаю могу только с одним)

 $ dmesg | grep tty
[    0.004000] console [tty0] enabled
[    0.772403] 00:02: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.794717] 00:03: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
[    0.816355] 00:04: ttyS2 at I/O 0x3e8 (irq = 4, base_baud = 115200) is a 16550A

Вопрос такой: могу ли я сделать так чтобы я мог писать в com-порт и читать из него(как здесь), не подключая никакое устройство (мне просто нужно эхо) и не прибегая ни к каким костылям вроде вставки скрепки в порт что бы замкнуть TX-RX.

Может ли мне в этом помочь socat. Насколько я понял, с помощью него можно сделать мост с одного порта на другой, но я запутался в дебрях его настройки, был бы благодарен если кто подскажет правильную строчку.

Или socat для этой цели не подходит, и мне нужно что-то другое?

  • linux
  • ubuntu
  • com-port






1

Последовательный порт с точки зрения *nix-систем — это обычное терминальное устройство. Так что самое простое — создать псевдотерминал и подключиться к нему:

socat PIPE PTY,link=/tmp/my_pty,raw,echo=0
  • PIPE — создаёт неименованную трубу между входом и выходом, по сути работает как простой эхо-ответчик
  • PTY — создаёт псевдотерминальное устройство, к которому можно подключиться
  • link=/tmp/my_pty — создаёт ссылку на устройство, к которой можно подключаться, как к устройству, именно его можно указывать в open() при открытии порта.
  • raw,echo=0 — задаёт режим работы псевдотерминала, дабы исключить изменение данных ответа.

Из отличий от настоящего порта, самое явное — отсутствие задержки при отправке/получении данных, независимо от установленного baudrate‘а данные будут передаваться почти мгновенно и целым пакетом.


Из альтернатив:

  • tty0tty — эмулирует полноценную пару соединённых друг с другом портов, в качестве эхо можно использовать тот же socat на одном из них.
  • Перенаправить COM-порт в коробке на unix или tcp сокет. После чего можно использовать на этом сокете любой эхо-клиент/сервер на хосте или даже удалённой системе. В качестве клиента/сервера может выступать тот же socat.







Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации


Почта

Необходима, но никому не показывается





Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки


Как добавить COM-порт в виртуальную машину Hyper-V Gen2


21. 12.2021
Автор:Алексей Максимов


2 887 Просмотров

При администрировании Hyper-V иногда возникают нетипичные задачи, например, возникает необходимость получить возможность работать с COM-портами в виртуальных машинах Hyper-V Gen2. Хотя многие администраторы, работающие с такими графическими инструментами управления как Hyper-V Manager, Failover Cluster Manager, Virtual Machine Manager знают, что настройки COM-портов есть только свойствах виртуальных машин первого поколения.

То есть разделы настройки COM-портов, которые мы можем видеть в специальных вкладках среди свойств ВМ Hyper-V Gen1, не отображаются в свойствах ВМ Hyper-V Gen2:

Однако, если обратиться к этому вопросу с помощью PowerShell на стороне хоста виртуализации, то мы увидим, что сведения о COM-портах для виртуальных машин второго поколения на самом деле присутствуют:

Get-VMComPort -VMName KOM-DEV02

Конфигурируем порты, предварительно выключив виртуальную машину:

Set-VMComPort -VMName KOM-DEV02 1 \\. \pipe\Hyper-V-VM-DEV02-COM1-TempPipe
Set-VMComPort -VMName KOM-DEV02 2 \\.\pipe\Hyper-V-VM-DEV02-COM2-TempPipe
Get-VMComPort -VMName KOM-DEV02

Включаем виртуальную машину и проверяем результат. Например, заглянем в оснастку Device Manager и убедимся в том, что в составе оборудования гостевой ОС появились COM-порты:

Таким образом мы привяжем виртуальные COM-порты гостевой системы к именованным каналам текущего хоста виртуализации, на котором выполнялись указанные ранее команды.

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

[System.IO.Directory]::GetFiles('\\.\\pipe\\') -match 'Hyper-V'

Обратите внимание на тот момент, что если COM-порты в ВМ требуется использовать для средств отладки Windows Kernel Debugging, то потребуется отключить режим безопасной загрузки Secure Boot в свойствах виртуальной машины.

Для отключения COM-портов от ВМ (и удаления соответствующих именованных каналов на стороне хоста) можно снова выключить ВМ и выполнить на стороне хоста виртуализации команды вида:

Set-VMComPort -VMName KOM-DEV02 1 ""
Set-VMComPort -VMName KOM-DEV02 2 ""

Дополнительные источники информации:

  • MicrosoftDocs — WindowsServerDocs — Should I create a generation 1 or 2 virtual machine in Hyper-V?
  • John Howard — Senior Program Manager in the Hyper-V team at Microsoft — Hyper-V generation 2 virtual machines – part 5


Опубликовано в : 
Microsoft Hyper-V , Virtualization


Метки : 
COM , Debug , Device Manager , Hyper-V , pipe , PowerShell , Virtualization , vm

3.10. Последовательные порты

Oracle VM VirtualBox поддерживает использование виртуальных последовательных портов в
виртуальная машина.

Со времен первого IBM PC персональные компьютеры были
оснащен одним или двумя последовательными портами, также называемыми COM-портами.
ДОС и Виндовс. Последовательные порты обычно использовались с модемами, и
некоторые компьютерные мыши раньше подключались к последовательным портам до USB
стало обыденным.

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

Если виртуальный последовательный порт включен, гостевая ОС видит стандартный
16550A совместимое устройство UART. Другие типы UART могут быть настроены
с помощью команды VBoxManagemodifyvm . Обе
прием и передача данных поддерживается. Как этот виртуальный
последовательный порт затем подключается к хосту, настраивается, и
детали зависят от вашей операционной системы.

Вы можете использовать вкладки «Настройки» или
Команда VBoxManage для настройки виртуального последовательного порта
порты. Для последнего см. Раздел 7.8, «VBoxManagemodifyvm».
для получения информации о --уарт ,
--uartmode и --uarttype
параметры.

Вы можете настроить до четырех виртуальных последовательных портов на каждый виртуальный
машина. Для каждого устройства необходимо установить следующее:

  1. Номер порта: Определяет
    последовательный порт, который должна видеть виртуальная машина. Для лучшего
    результаты, используйте традиционные значения следующим образом:

    • COM1: база ввода/вывода 0x3F8, IRQ 4

    • COM2: база ввода/вывода 0x2F8, IRQ 3

    • COM3: база ввода/вывода 0x3E8, IRQ 4

    • COM4: база ввода/вывода 0x2E8, IRQ 3

    Вы также можете настроить пользовательский последовательный порт. Введите
    Базовый адрес ввода-вывода и прерывание (IRQ).

  2. Режим порта: Какой виртуальный
    порт подключен к. Для каждого виртуального последовательного порта у вас есть
    следующие варианты:

    • Отключено: Гость
      увидит устройство, но будет вести себя так, как будто кабель не подключен.
      был подключен к нему.

    • Хост-устройство: Подключает
      виртуальный последовательный порт к физическому последовательному порту на вашем
      хозяин. На хосте Windows это будет имя вроде
      COM1 . На хостах Linux или Oracle Solaris
      это будет узел устройства, например
      /dev/ttyS0 . Затем Oracle VM VirtualBox будет
      просто перенаправить все данные, полученные от и отправленные на
      виртуальный последовательный порт к физическому устройству.

    • Хост-канал: Настройка
      Oracle VM VirtualBox для подключения виртуального последовательного порта к
      программный канал на хосте. Это зависит от вашей хост-ОС,
      следующее:

      • На хосте Windows данные будут отправлены и получены
        через именованный канал. Имя канала должно быть в
        формат
        \\.\труба\ имя
        где имя должно идентифицировать
        виртуальной машине, но может быть выбран свободно.

      • На хосте Mac, Linux или Oracle Solaris локальный
        вместо этого используется сокет домена. Имя файла сокета
        должен быть выбран таким образом, чтобы пользователь, выполняющий
        Oracle VM VirtualBox имеет достаточные привилегии для создания и
        напишите ему. /tmp каталог
        часто является хорошим кандидатом.

        В Linux есть различные инструменты, которые могут подключаться к
        сокет локального домена или создайте его в режиме сервера.
        Самый гибкий инструмент socat и
        доступен в составе многих дистрибутивов.

      В этом случае вы можете настроить, будет ли Oracle VM VirtualBox
      должен создать именованный канал или сокет локального домена
      хосты, отличные от Windows, сами по себе или должна ли Oracle VM VirtualBox
      предположим, что труба или сокет уже существуют. С
      Параметры командной строки VBoxManage , это
      называется режимом сервера или режимом клиента,
      соответственно.

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

    • Необработанный файл: Отправить
      вывод виртуального последовательного порта в файл. Этот вариант очень
      полезно для захвата диагностических выходных данных от гостя. Любой
      файл может быть использован для этой цели, если пользователь
      под управлением Oracle VM VirtualBox имеет достаточные привилегии для создания
      и записываем в файл.

    • TCP-сокет: Полезно для
      пересылка последовательного трафика через TCP/IP, выступая в роли сервера,
      или он может действовать как TCP-клиент, подключающийся к другим серверам.
      Эта опция позволяет удаленной машине напрямую подключаться
      к последовательному порту гостя, используя TCP.

      • TCP-сервер: Отменить выбор
        Подключиться к существующему
        Установите флажок Pipe/Socket
        и укажите порт
        номер в
        Поле пути/адреса .
        Обычно это 23 или 2023. Обратите внимание, что в UNIX-подобных
        систем вам придется использовать порт номер больше
        чем 1024 для обычных пользователей.

        Клиент может использовать программное обеспечение, такое как
        PUTTY или
        инструмент командной строки telnet для доступа
        TCP-сервер.

      • TCP-клиент: Для создания
        виртуальный нуль-модемный кабель через Интернет или локальную сеть,
        другая сторона может подключиться с использованием TCP, указав
        имя хоста : порт
        в пути/адресе
        поле. Сокет TCP будет работать в режиме клиента, если вы
        выберите Подключиться к существующему
        Флажок Pipe/Socket
        .

На виртуальную машину можно настроить до четырех последовательных портов, но
вы можете выбрать любые номера портов из вышеперечисленных. Тем не менее, сериал
порты не могут надежно разделять прерывания. Если оба порта должны быть
используемые одновременно, они должны использовать разные уровни прерывания,
например COM1 и COM2, но не COM1 и COM3.

COM-порт VirtualBox — руководство 2022

Electronic Team, Inc. использует файлы cookie, чтобы персонализировать ваш опыт на нашем веб-сайте. Продолжая использовать этот сайт, вы соглашаетесь с нашей политикой в ​​отношении файлов cookie. Кликните сюда, чтобы узнать больше.

Ищете варианты интеграции?

Независимо от того, хотите ли вы распространить наш механизм перенаправления последовательных портов как часть своего продукта или рассматриваете возможность развертывания программного обеспечения Serial over Ethernet на уровне предприятия, мы предлагаем гибкие и доступные корпоративные решения, разработанные для удовлетворения ваших потребностей.

Запрос

Узнать больше об интеграции

Поддержка соединений через USB и последовательный порт

Работа с протоколами TCP, UDP, RDP и Citrix.

Интеграция как использование DLL и ActiveX или уровня ядра

Запрос

Узнать больше об интеграции

Ниже мы рассмотрим некоторые параметры конфигурации последовательного порта VirtualBox:

Raw File: параметр для отправки вывода виртуального последовательного порта в файл. Вы можете указать любой файл. Все, что вам нужно, это убедиться, что у вас есть права на запись и создание.

TCP Socket: полезно, когда вам нужно перенаправить последовательные данные по сети TCP/IP. С помощью этой опции вы можете установить прямое соединение между удаленным компьютером и COM-портом виртуальной машины через TCP. Доступные роли: TCP-клиент и TCP-сервер:

.

1

TCP Server: необходимо указать номер порта (это может быть 23 или 2023) в поле адреса/пути и снять флажок текущего канала/сокета. Обратите внимание, что в UNIX-подобных системах номер порта должен быть больше 1024.

2

TCP-клиент: для этого типа подключения другой конец должен подключаться через TCP, указав при этом имя хоста: порт в поле «Путь/адрес».