Налаштування віртуальних послідовних портів (емулятор нульового модему Linux) за допомогою tty0tty


9

Я хочу встановити віртуальний емулятор послідовного порту в Linux. Я хочу, щоб порти були постійними, щоб я міг їх використовувати кожен раз при перезапуску. Я намагався використовувати socat для цієї мети, як таким чином,

socat -d -d pty,raw,echo=0 pty,raw,echo=0

Але у мене часто трапляються проблеми з портовими портами під час використання цих VSP (віртуальні послідовні порти) у моїх тестових програмах. Крім того, мені важко створювати постійні / стійкі VSP. Зараз я хочу спробувати tty0tty для своїх цілей. Але рідко є будь-яка документація і як використовувати посібник для цього. Хтось може мене просвітити на цьому? Будь ласка, прокоментуйте, якщо також є рішення для socat.

Відповіді:


13

Установка

  1. Завантажте пакет tty0tty з одного з цих джерел:

  2. Витягніть його

    • tar xf tty0tty-1.2.tgz
  3. Створіть модуль ядра з наданого джерела
    • cd tty0tty-1.2/module
    • make
  4. Скопіюйте новий модуль ядра в каталог модулів ядра
    • sudo cp tty0tty.ko /lib/modules/$(uname -r)/kernel/drivers/misc/
  5. Завантажте модуль
    • sudo depmod
    • sudo modprobe tty0tty
    • Ви повинні побачити нові послідовні порти в / dev / ( ls /dev/tnt*)
  6. Дайте відповідні дозволи для нових послідовних портів
    • sudo chmod 666 /dev/tnt*

Тепер ви можете отримати доступ до послідовних портів як /dev/tnt0(1,2,3,4 тощо). Зверніть увагу, що послідовні порти взаємопов'язані. Наприклад, / dev / tnt0 та / dev / tnt1 підключені так, ніби використовують прямий кабель.

Зберігається через черевик

відредагуйте файл / etc / module (Debian) або /etc/modules.conf

nano /etc/modules

і додайте наступний рядок:

tty0tty

Увага

Зауважте, що цей метод не змусить модуль зберігатись над оновленнями ядра, тому якщо ви коли-небудь оновлюватимете своє ядро, переконайтеся, що ви збираєте tty0tty знову повторити процес.

Якщо ви не перемістите модуль у кожному оновленні ядра systemctl --failed, повернення служби systemd-modules-load.serviceзакінчиться " failed". Також на journalctl -xe | grep "Failed to find".


1
Спасибі товарише, що працювало досить чудово. Не вдалося знайти цього деінде.
юва

1
:) рада, що могла допомогти!
Ruraj

Є чи tty0ttyтакож підтримка Mac OS?
Foad

Можливо, ви зможете його скласти і завантажити модуль ядра за допомогою kextutil, але я ніколи його не пробував!
Рурай

Чудове пояснення. Кожен пункт приємний і акуратний. Завжди радий бачити такі відповіді
master_clown
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.