Настройте виртуальные последовательные порты (эмулятор нуль-модема Linux) с помощью tty0tty
Я хочу настроить эмулятор виртуального последовательного порта в Linux. Я хочу, чтобы порты были постоянными, чтобы я мог использовать их при каждом перезапуске. Я пытался использовать socat для этой цели, как в этом случае,
socat -d -d pty,raw,echo=0 pty,raw,echo=0
Но я часто сталкиваюсь с проблемами занятости портов во время использования этих VSP (виртуальных последовательных портов) в моих тестовых программах. Кроме того, мне трудно создавать постоянные / постоянные VSP. Теперь я хочу попробовать tty0tty для моих целей. Но есть редко какая-либо документация и как использовать руководство для этого. Кто-нибудь может просветить меня об этом? Пожалуйста, прокомментируйте, если есть решение для socat.
1 ответ
Монтаж
Загрузите пакет tty0tty из одного из следующих источников:
- http://sourceforge.net/projects/tty0tty/files/
- клонировать репозиторий https://github.com/freemed/tty0tty
git clone https://github.com/freemed/tty0tty
Извлеки это
tar xf tty0tty-1.2.tgz
- Сборка модуля ядра из предоставленного источника
cd tty0tty-1.2/module
make
- Скопируйте новый модуль ядра в каталог модулей ядра.
sudo cp tty0tty.ko /lib/modules/$(uname -r)/kernel/drivers/misc/
- Загрузите модуль
sudo depmod
sudo modprobe tty0tty
- Вы должны увидеть новые последовательные порты в / dev / (
ls /dev/tnt*
)
- Дайте соответствующие разрешения новым последовательным портам
sudo chmod 666 /dev/tnt*
Теперь вы можете получить доступ к последовательным портам как /dev/tnt0
(1,2,3,4 и т. Д.) Обратите внимание, что последовательные порты связаны между собой. Например, / dev / tnt0 и / dev / tnt1 подключаются, как если бы использовался прямой кабель.
Сохраняется через загрузку
отредактируйте файл /etc/modules (Debian) или /etc/modules.conf
nano /etc/modules
и добавьте следующую строку:
tty0tty
Предупреждение
Обратите внимание, что этот метод не заставит модуль сохраняться после обновления ядра, поэтому, если вы когда-нибудь обновите свое ядро, убедитесь, что вы собрали tty0tty снова, повторите процесс.
Если вы не перемещаете модуль при каждом обновлении ядра systemctl --failed
вернет эту услугу systemd-modules-load.service
закончилсяfailed
". Также на journalctl -xe | grep "Failed to find"
,