C'è anche tty0tty http://sourceforge.net/projects/tty0tty/ che è un vero emulatore di null modem per Linux.
È un semplice modulo del kernel: un piccolo file sorgente. Non so perché ha ottenuto solo il pollice verso il basso su sourceforge, ma funziona bene per me. La cosa migliore è che emula anche i pin hardware (RTC / CTS DSR / DTR). Implementa anche i comandi TIOCMGET / TIOCMSET e TIOCMIWAIT iotcl!
Su un kernel recente potresti ricevere errori di compilazione. Questo è facile da aggiustare. Basta inserire poche righe all'inizio del sorgente module / tty0tty.c (dopo gli include):
#ifndef init_MUTEX
#define init_MUTEX(x) sema_init((x),1)
#endif
Quando il modulo viene caricato, crea 4 coppie di porte seriali. I dispositivi sono da / dev / tnt0 a / dev / tnt7 dove tnt0 è connesso a tnt1, tnt2 è connesso a tnt3, ecc. Potrebbe essere necessario correggere i permessi del file per poter usare i dispositivi.
modificare:
Immagino di essere stato un po 'veloce con il mio entusiasmo. Anche se il conducente sembra promettente, sembra instabile. Non lo so per certo, ma penso che si sia schiantato una macchina in ufficio su cui stavo lavorando da casa. Non posso controllare finché non torno in ufficio lunedì.
La seconda cosa è che TIOCMIWAIT non funziona. Il codice sembra essere copiato da un codice di esempio "tiny tty". La gestione di TIOCMIWAIT sembra a posto, ma non si sveglia mai perché manca la chiamata corrispondente a wake_up_interruptible ().
modificare:
L'incidente in ufficio è stato davvero colpa del guidatore. Mancava un'inizializzazione e il codice TIOCMIWAIT completamente non testato ha causato un arresto anomalo della macchina.
Ho passato ieri e oggi a riscrivere il driver. Ci sono stati molti problemi, ma ora funziona bene per me. Manca ancora del codice per il controllo del flusso hardware gestito dal driver, ma non ne ho bisogno perché gestirò i pin da solo usando TIOCMGET / TIOCMSET / TIOCMIWAIT dal codice in modalità utente.
Se qualcuno è interessato alla mia versione del codice, mandami un messaggio e te lo invierò.