Configurare le porte seriali virtuali (emulatore di modem null Linux) usando tty0tty


9

Voglio installare un emulatore di porta seriale virtuale su Linux. Voglio che le porte siano permanenti, in modo da poterle usare ogni volta che riavvio. Ho provato a usare socat a tale scopo come in questo modo,

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

Ma spesso ottengo problemi di porta occupati durante l'utilizzo di questi VSP (porte seriali virtuali) nei miei programmi di test. Inoltre, trovo difficile creare VSP permanenti / persistenti. Ora voglio provare tty0tty per i miei scopi. Ma raramente c'è documentazione e come usare la guida per questo. Chiunque può illuminarmi su questo? Si prega di commentare, se ci sono anche soluzioni per socat.

Risposte:


13

Installazione

  1. Scarica il pacchetto tty0tty da una di queste fonti:

  2. Estrai

    • tar xf tty0tty-1.2.tgz
  3. Compilare il modulo del kernel dal sorgente fornito
    • cd tty0tty-1.2/module
    • make
  4. Copia il nuovo modulo del kernel nella directory dei moduli del kernel
    • sudo cp tty0tty.ko /lib/modules/$(uname -r)/kernel/drivers/misc/
  5. Carica il modulo
    • sudo depmod
    • sudo modprobe tty0tty
    • Dovresti vedere nuove porte seriali in / dev / ( ls /dev/tnt*)
  6. Concedere le autorizzazioni appropriate alle nuove porte seriali
    • sudo chmod 666 /dev/tnt*

È ora possibile accedere alle porte seriali come /dev/tnt0(1,2,3,4 ecc.) Notare che le porte consecutive sono interconnesse. Ad esempio, / dev / tnt0 e / dev / tnt1 sono collegati come se si usasse un cavo diretto.

Persistenza attraverso l'avvio

modifica il file / etc / modules (Debian) o /etc/modules.conf

nano /etc/modules

e aggiungi la seguente riga:

tty0tty

avvertimento

Nota che questo metodo non farà persistere il modulo sugli aggiornamenti del kernel, quindi se aggiorni il tuo kernel, assicurati di compilare tty0tty di nuovo ripetendo il processo.

Se non si sposta il modulo su ogni aggiornamento del kernel systemctl --failed, il servizio verrà restituito systemd-modules-load.service" failed". Anche su journalctl -xe | grep "Failed to find".


1
Grazie amico, ha funzionato abbastanza bene. Non riuscivo a trovarlo da nessun'altra parte.
yuva,

1
:) felice di poterti aiutare!
Ruraj,

Fa tty0ttyanche il supporto Mac OS?
Foad,

Potresti essere in grado di costruirlo e caricare il modulo del kernel usando kextutil, ma non l'ho mai provato!
Ruraj,

Splendida spiegazione. Ogni punto è bello e pulito. Sono sempre felice di vedere tali risposte
master_clown
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.