Configuration des ports série virtuels (émulateur null modem Linux) à l'aide de tty0tty

9

Je veux configurer l'émulateur de port série virtuel sous Linux. Je veux que les ports soient permanents, afin de pouvoir les utiliser à chaque redémarrage. J'ai essayé d'utiliser socat à cet effet comme de cette façon,

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

Mais j'ai souvent des problèmes de port occupé lors de l'utilisation de ces VSP (Virtual Serial Ports) dans mes programmes de test. De plus, j'ai du mal à créer des VSP permanents / persistants. Je veux maintenant essayer tty0tty pour mes besoins. Mais, il existe rarement de la documentation et comment utiliser le guide pour cela. N'importe qui peut m'éclairer là-dessus? Veuillez commenter, s'il existe également une solution pour socat.

yuva
la source

Réponses:

13

Installation

  1. Téléchargez le package tty0tty à partir de l'une de ces sources:

  2. Extraire

    • tar xf tty0tty-1.2.tgz
  3. Construisez le module du noyau à partir de la source fournie
    • cd tty0tty-1.2/module
    • make
  4. Copiez le nouveau module du noyau dans le répertoire des modules du noyau
    • sudo cp tty0tty.ko /lib/modules/$(uname -r)/kernel/drivers/misc/
  5. Charger le module
    • sudo depmod
    • sudo modprobe tty0tty
    • Vous devriez voir de nouveaux ports série dans / dev / ( ls /dev/tnt*)
  6. Accordez les autorisations appropriées aux nouveaux ports série
    • sudo chmod 666 /dev/tnt*

Vous pouvez maintenant accéder aux ports série en tant que /dev/tnt0(1,2,3,4, etc.). Notez que les ports consécutifs sont interconnectés. Par exemple, / dev / tnt0 et / dev / tnt1 sont connectés comme si vous utilisiez un câble direct.

Persistance à travers le démarrage

éditez le fichier / etc / modules (Debian) ou /etc/modules.conf

nano /etc/modules

et ajoutez la ligne suivante:

tty0tty

Attention

Notez que cette méthode ne fera pas persister le module sur les mises à jour du noyau, donc si vous mettez à jour votre noyau, assurez-vous de construire à nouveau tty0tty, répétez le processus.

Si vous ne déplacez pas le module à chaque mise à jour du noyau, systemctl --failedle service se systemd-modules-load.serviceterminera " failed". Également sur journalctl -xe | grep "Failed to find".

Ruraj
la source
1
Merci mon pote, cela a très bien fonctionné. Je ne pouvais pas trouver ça ailleurs.
yuva
1
:) heureux d'avoir pu aider!
Ruraj
Prend tty0ttyégalement en charge mac OS?
Foad
Vous pourrez peut-être le construire et charger le module du noyau à l'aide kextutil, mais je ne l'ai jamais essayé!
Ruraj
Magnifique explication. Chaque point est agréable et soigné. Toujours heureux de voir de telles réponses
master_clown