it-swarm.com.de

Richten Sie mit tty0tty virtuelle serielle Ports (Linux-Nullmodem-Emulator) ein

Ich möchte den Emulator für virtuelle serielle Schnittstellen unter Linux einrichten. Ich möchte, dass die Ports permanent sind, damit ich sie bei jedem Neustart verwenden kann. Ich habe versucht, socat zu diesem Zweck wie folgt zu verwenden:

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

Bei der Verwendung dieser VSPs (Virtual Serial Ports) in meinen Testprogrammen treten jedoch häufig Probleme mit belegten Ports auf. Außerdem finde ich es schwierig, permanente/persistente VSPs zu erstellen. Ich möchte jetzt tty0tty für meine Zwecke ausprobieren. Es gibt jedoch selten eine Dokumentation und eine Anleitung dazu. Kann mich jemand aufklären? Bitte kommentieren Sie, ob es auch für socat eine Lösung gibt.

9
yuva

Installation

  1. Laden Sie das tty0tty-Paket von einer der folgenden Quellen herunter:

  2. Extrahiere es

    • tar xf tty0tty-1.2.tgz
  3. Erstellen Sie das Kernel-Modul aus der angegebenen Quelle
    • cd tty0tty-1.2/module
    • make
  4. Kopieren Sie das neue Kernelmodul in das Kernelmodulverzeichnis
    • Sudo cp tty0tty.ko /lib/modules/$(uname -r)/kernel/drivers/misc/
  5. Laden Sie das Modul
    • Sudo depmod
    • Sudo modprobe tty0tty
    • Sie sollten neue serielle Ports in/dev/(ls /dev/tnt*) sehen
  6. Weisen Sie den neuen seriellen Anschlüssen die entsprechenden Berechtigungen zu
    • Sudo chmod 666 /dev/tnt*

Sie können jetzt auf die seriellen Ports als /dev/tnt0 (1,2,3,4 usw.) zugreifen. Beachten Sie, dass die aufeinander folgenden Ports miteinander verbunden sind. Zum Beispiel sind/dev/tnt0 und/dev/tnt1 wie mit einem direkten Kabel verbunden.

Persistent über Boot

bearbeiten Sie die Datei/etc/modules (Debian) oder /etc/modules.conf

nano /etc/modules

und füge die folgende Zeile hinzu:

tty0tty

Warnung

Beachten Sie, dass bei dieser Methode das Modul nicht über Kernel-Aktualisierungen hinweg bestehen bleibt . Wenn Sie also jemals Ihren Kernel aktualisieren, stellen Sie sicher, dass Sie tty0tty erneut erstellen, und wiederholen Sie den Vorgang.

Wenn Sie das Modul nicht bei jedem Kernel-Update verschieben, gibt systemctl --failed diesen Dienst zurück. systemd-modules-load.service beendete "failed". Auch auf journalctl -xe | grep "Failed to find".

13
Ruraj