Usb virtual com port linux

как сделать эмуляцию serial порта на usb-устройстве?

В windows’е для определенного устройства есть специальный драйвер. Как мне его воспроизвести на linux mint 15? http://dumpz.org/753081/ — вот код драйвера.

Написать драйвер. Что за устройство-то?

Написать драйвер. Что за устройство-то?

Самодельное — дали поюзать, описали протокол взаимодействия по Serial-порту, дали драйвер под винду..)

Как драйвер под венду называется?

CDC, «драйвер» в ведре.

Cмотри драйвер usbserial.

Установи пакет tinyserial, запускай com /dev/ttyACM0 [скорость] . Или тупо screen используй — он-то у всех установлен.

А еще можно при помощи setserial или minicom настроить «порт» и фигачить посредством echo туда всякую дребедень, считывая tailf ‘ом.

Это, извиняюсь, говнище какое-то, но никак не код «драйвера»!

Да, конечно. Я бы даже не начинал разбираться, если б протокола не было )))

Лол, это *.inf от вендового драйвера; не код, да.

В общем, похоже, ТС собирается сделать «то, не знаю, что». Трудно ему придется.

В общем, похоже, ТС собирается сделать «то, не знаю, что». Трудно ему придется.

Для того тему и завел — спросить совета. tinyserial в mint’е нету. $ /dev/ttyACM0 не появляется. С setserial и minicom не разобрался. Да. Трудно.

Как страшно жить.

Вынимаешь железку, вставляешь, смотришь dmesg что там определилось. В девайсах у тебя появятся ttyACM0 или ttyU0 . На него и натравливаешь cu или minicom .

Par example: cu -s 9600 -l /dev/ttyU0

Либо эта самоделка глючит либо драйвер её не опознаёт.

Попробуй lsusb, может он его покажет. Но то, что в dmesg его не видно это плохой признак.

Кабель к нему тоже самопальный идёт?

Кабель к нему тоже самопальный идёт?

Покупной обычный Mini usb — Crc-драйвер успешно ищется и встает на винде — только-что попробовал.

Ну ты как маленький прямо! Запусти udevadm monitor и воткни железяку. Если по выхлопу удева не поймешь, то dmesg тебе, возможно, что-то подскажет.

А если это не CDC, а хитрожопая вантузная НĒХ, то придется при помощи libusb что-нибудь пилить.

В девайсах у тебя появятся ttyACM0 или ttyU0

Увы — их не появляется.

dmesg что говорит? А lsusb ? А udevadm monitor при втыкании железяки?

Если все молчат, производитель железки — козел.

До неё только дошел — уже завтра буду разбираться. Через pyusb делаю:

путем исключения после втыкания и вытыкания usb-девайсов, становится понятно, что что-то там видно на usb-порте. вопрос тепрь, как с этим «что-то» работать, через вот эту либу.

после втыкания и вытыкания usb-девайсов, становится понятно, что что-то там видно на usb-порте.

Посмотри через lsusb, что за VID и PID у железяки. А еще глянь, какое устройство ей соответствует (/dev/bus/usb/[BUS]/[DEV]) и попробуй его открыть в обычном последовательном терминале. Вдруг случится чудо? Тогда просто правило для удева напишешь для этих VID и PID, чтобы симлинк делал.

Есть нормальные железные эмуляшки от старых нокиа. Банка пива.
Правда получается не com1, com2 и с програматорами правильно не сростется.
Если конечно для этого нужно. rts, cts и тп.

Читайте также:  Kyocera fs 1035 mfp драйвер windows 10 сканер

Поднял задницу — нашел.
Bus 005 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Оно.

USB CDC ACM Vendor and Product ID Definitions VID 04D8 PID 000A

Гуглишь «linux VID 04D8 PID 000A» и находишь что стоит его один раз воткнуть в Ubuntu 10.04 — оно начинает рабоать везде. Так что выкинь нахер свой минт и ставь убунту.

I did not change anything. No patches, nothing. I just loaded «usbserial», «cdc_acm» and «ftdi_sio», plugged in the device and it worked. I added the modules to /etc/modules and the board gets ready with the RPi boot. Perfect! The only difference is, that I plugged it once into my notebook with Ubuntu 10.04 (2.6.+).

Волшебный дистрибутив — сам пользуюсь 🙂

Возможно ТС-у просто нужно вручную сделать:

$ modprobe usbserial $ modprobe cdc_acm

и воткнуть девайс. Возможно тогда оно подцепится в Mint.

Скорее всего, в параметрах указав pid и vid девайса (product=xxx, vendor=xxx).

Источник

Виртуальный последовательный порт для Linux

Мне нужно протестировать приложение последовательного порта в Linux, однако моя тестовая машина имеет только один последовательный порт.

Есть ли способ добавить виртуальный последовательный порт в Linux и протестировать мое приложение, эмулируя устройство через оболочку или скрипт?

Примечание: я не могу переназначить порт, он жестко запрограммирован на ttys2, и мне нужно протестировать приложение, как оно написано.

Для этого вы можете использовать pty («псевдотелетайп», где последовательный порт является «настоящим телетайпом»). С одного конца откройте /dev/ptyp5 , а затем прикрепите свою программу к /dev/ttyp5 ; ttyp5 будет действовать так же, как последовательный порт, но будет отправлять / получать все, что он делает, через / dev / ptyp5.

Если вам действительно нужно, чтобы он разговаривал с файлом с именем /dev/ttys2 , просто уберите старый /dev/ttys2 и создайте символическую ссылку с ptyp5 на ttys2 .

Конечно, вы можете использовать другое число, кроме ptyp5 . Возможно, выберите один с большим числом, чтобы избежать дублирования, поскольку все ваши терминалы входа также будут использовать ptys.

В Википедии есть дополнительная информация о ptys: http://en.wikipedia.org/wiki/Pseudo_terminal

Дополняя ответ @ slonik.

Вы можете протестировать socat для создания виртуального последовательного порта, выполнив следующую процедуру (проверено на Ubuntu 12.04):

Откройте терминал (назовем его Terminal 0) и запустите его:

Приведенный выше код возвращает:

Откройте другой терминал и напишите (Терминал 1):

имя порта этой команды может быть изменено в зависимости от компьютера. это зависит от предыдущего вывода.

вы должны использовать номер, доступный в выделенной области.

Откройте другой терминал и напишите (Терминал 2):

Теперь вернитесь в Терминал 1, и вы увидите строку «Тест».

Для этого используйте socat:

Также существует tty0tty http://sourceforge.net/projects/tty0tty/, который является настоящим эмулятором нуль-модема для Linux.

Это простой модуль ядра — небольшой исходный файл. Я не знаю, почему он получил отрицательные отзывы на sourceforge, но мне он подходит. Самое лучшее в нем то, что он также эмулирует аппаратные контакты (RTC / CTS DSR / DTR). Он даже реализует команды TIOCMGET / TIOCMSET и TIOCMIWAIT iotcl!

В недавнем ядре вы можете получить ошибки компиляции. Это легко исправить. Просто вставьте несколько строк вверху источника module / tty0tty.c (после включений):

Когда модуль загружен, он создает 4 пары последовательных портов. Устройства: от / dev / tnt0 до / dev / tnt7, где tnt0 подключен к tnt1, tnt2 подключен к tnt3 и т. Д. Вам может потребоваться исправить права доступа к файлам, чтобы иметь возможность использовать устройства.

Читайте также:  Mac os как переводится

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

Во-вторых, TIOCMIWAIT не работает. Код, кажется, скопирован из какого-то примера кода «крошечного терминала». Обработка TIOCMIWAIT кажется на месте, но она никогда не просыпается, потому что соответствующий вызов wake_up_interruptible () отсутствует.

Авария в офисе действительно произошла по вине водителя. Отсутствовала инициализация, и полностью непроверенный код TIOCMIWAIT вызвал сбой машины.

Вчера и сегодня потратил на переписывание драйвера. Было много проблем, но теперь у меня все хорошо. По-прежнему отсутствует код для аппаратного управления потоком данных, управляемого драйвером, но он мне не нужен, потому что я сам буду управлять контактами, используя TIOCMGET / TIOCMSET / TIOCMIWAIT из кода пользовательского режима.

Если кому-то интересна моя версия кода, напишите мне, и я отправлю его вам.

Источник

Thread: Virtual COM Port

Thread Tools
Display

Virtual COM Port

Hi, I’m new at Ubuntu and I need something like when I connect an USB the computer recognizes as a serial device, how I can do that?
I Googled a lot but I need that for a Wine program so any ideas, feel free to tell.

Re: Virtual COM Port

There are USB-to-serial adapters that allow you to connect to a serial device even if your machine does not have a serial port. Is that what you are asking about?

Re: Virtual COM Port

Thanks for your fast reply, but I have a printer that connects in USB port, but I need that the port can be recognized as a serial (ttys0) port, because I need it in a Windows wine program.
By the way, the USB-Serial adapter couldn’t be a bad idea, thanks.

Re: Virtual COM Port

Ok. Have you looked for some /dev/ttyUSB0 or something like that when you’ve plugged in your USB printer?

Re: Virtual COM Port

If that’s a way that a USB can be used as a serial port then yes, exactly. How I can configure it?

Re: Virtual COM Port

It’s not a matter of configuring it, it’s there if the device already appears to Ubuntu to be a serial device. If that is the case then you should be able to connect to it like any other serial device.

Does /dev/ttyUSB0 or similar appear when you plug in that device?

Re: Virtual COM Port

Caveat: I’m not into hardware.

It’s not a matter of configuring it, it’s there if the device already appears to Ubuntu to be a serial device. If that is the case then you should be able to connect to it like any other serial device.

Does /dev/ttyUSB0 or similar appear when you plug in that device?

Источник

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

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

Читайте также:  Aion windows 10 не запускается

Сначала надо установить утилиту настройки аппаратного компорта хост-машины. Называется она 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», что означает разрешение дуплексного обмена через компорт на уровнях владельца, членов его группы и остальных пользователей. Делается это командой

sudo chmod 666 /dev/ttyS0

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

Источник

Оцените статью