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

9

Ich möchte den Emulator für die virtuelle serielle Schnittstelle unter Linux einrichten. Ich möchte, dass die Ports permanent sind, damit ich sie bei jedem Neustart verwenden kann. Ich habe versucht, socat für diesen 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 der Portbelegung auf. Außerdem fällt es mir schwer, permanente / persistente VSPs zu erstellen. Ich möchte jetzt tty0tty für meine Zwecke ausprobieren. Es gibt jedoch selten Dokumentationen und Anleitungen dazu. Kann mich jemand darüber aufklären? Bitte kommentieren Sie, ob es auch eine Lösung für socat gibt.

Yuva
quelle

Antworten:

13

Installation

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

  2. Extrahieren Sie es

    • tar xf tty0tty-1.2.tgz
  3. Erstellen Sie das Kernelmodul aus der bereitgestellten Quelle
    • cd tty0tty-1.2/module
    • make
  4. Kopieren Sie das neue Kernelmodul in das Verzeichnis der Kernelmodule
    • 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 Schnittstellen in / dev / ( ls /dev/tnt*) sehen.
  6. Geben Sie den neuen seriellen Schnittstellen die entsprechenden Berechtigungen
    • sudo chmod 666 /dev/tnt*

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

Über den Boot hinweg bestehen

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

nano /etc/modules

und fügen Sie die folgende Zeile hinzu:

tty0tty

Warnung

Beachten Sie, dass diese Methode das Modul nicht über Kernel-Updates bestehen lässt. 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, systemctl --failedwird der Dienst systemd-modules-load.servicebeendet " failed". Auch auf journalctl -xe | grep "Failed to find".

Ruraj
quelle
1
Danke Kumpel, das hat ganz gut funktioniert. Konnte das nirgendwo anders finden.
Yuva
1
:) froh, dass ich helfen konnte!
Ruraj
Hat tty0ttyunterstützt auch Mac OS?
Foad
Sie können es möglicherweise erstellen und das Kernelmodul mit laden kextutil, aber ich habe es noch nie versucht!
Ruraj
Wunderschöne Erklärung. Jeder Punkt ist schön und ordentlich. Immer froh, solche Antworten zu sehen
master_clown