Cookie
Electronic Team, Inc. uses cookies to personalize your experience on our website. By continuing to use this site, you agree to our cookie policy. Click here to learn more.

Porte seriali Linux - Guida completa

Nikolai Svarachevsky Nikolai Svarachevsky
Aggiornato: Aug 4, 2026

Qui puoi scoprire come connetterti a un dispositivo seriale Linux, oltre a un modo semplice per collegare dispositivi seriali connessi a un computer remoto. Userò come esempio una stampante per ricevute conforme a ESC/POS.

14-giorni disponibili di prova gratuita
Il prezzo della licenza parte da $259.95
Disponibile per
usb a desktop remoto

Verifica delle porte

Le porte seriali sono un tipo di dispositivo seriale. Il comando dmesg ti aiuterà a vedere se un dispositivo seriale è stato rilevato e riconosciuto dal sistema operativo. In tal caso, verrà elencato nell’output di questo comando.

Poiché dmesg elenca tutti i dispositivi del sistema, filtreremo l’output tramite grep. Questo cerca nel testo le righe che contengono la parola chiave fornita. I nomi delle porte seriali su Linux iniziano con “ttyS”, quindi possiamo usarlo come query. L’output di dmesg può essere passato a grep collegando i due comandi con una pipe (il simbolo |). Saranno inoltre necessari i privilegi di superutente, quindi è necessario aggiungere sudo. Il comando risultante appare così:

sudo dmesg | grep tty
risultati della ricerca dmesg
I dispositivi verranno elencati insieme ai rispettivi nomi dei file di dispositivo. Questi sono file in /dev, come ttyS0 e ttyS1, che possiamo poi usare come argomenti per altri comandi, per specificare con quale porta seriale interagire. Inoltre, dmesg può indicare un problema tecnico se il dispositivo non compare affatto.

Se stai usando adattatori USB-seriale, compariranno come dispositivi ttyUSB. Possono anche essere trovati in dmesg usando lo stesso comando.

Importante: per poter usare le porte seriali del sistema, un utente deve appartenere al gruppo dialout. Anche se questo non è un problema per il primo utente predefinito, lo diventa quando si tenta di accedere alle porte seriali come altri utenti, creati dopo l’installazione del sistema.

In altre parole, se riscontri l’errore "Could not open serial port...", esegui il seguente comando:

sudo adduser your_user_name dialout

Sostituisci "your_user_name" con l’utente che ha problemi ad accedere alle porte.

Interazione con dispositivi seriali

Utilizzando utilità standard

Poiché le porte seriali sono rappresentate da file su Linux, è possibile utilizzare utilità standard come echo e cat per interagire con esse. stty può essere usato per modificare le impostazioni della porta. Vediamo come viene utilizzata ciascuna di queste applicazioni.

Con stty, puoi impostare il baud rate della porta, il numero di bit di dati, la parità, il tipo di handshake (noto anche come controllo di flusso) e altri parametri. Questo può essere necessario per interagire con un dispositivo o un’applicazione, poiché nella maggior parte dei casi i parametri devono corrispondere affinché la connessione funzioni.

Nota da Nick:
Ho eseguito la seguente dimostrazione su Debian 11 (Bullseye) con una stampante SP-POS88VMF.
Tuttavia, puoi anche provare i comandi forniti con una connessione null-modem tra due porte seriali o USB-to-serial sullo stesso computer. In tal caso, dovrai modificare il comando cat per metterlo in ascolto sull’altra porta collegata, non su quella che invia.


Usa il seguente comando per elencare le impostazioni correnti della tua porta:

sudo stty -a -F <your port>
Visualizzazione delle impostazioni della porta con stty
E questo è un comando di esempio che imposta la velocità in baud della porta ttyS0 a 9600, i bit di dati a 8 e abilita l’handshaking RTS/CTS:

sudo stty -F /dev/ttyS0 9600 cs8 crtscts

Con le impostazioni corrette selezionate, possiamo inviare dati al dispositivo con echo. È possibile inviare testo semplice a una porta seriale con echo, in questo modo:

echo 'TEXT' > /dev/ttyS0

Tuttavia, per farlo, è necessario accedere come superutente. Questo può essere fatto con il comando “su -”.

Nel nostro caso, sono necessari simboli ASCII speciali, come ESC e Carriage Return, per sfruttare appieno la stampante collegata. Un modo per farlo è utilizzare l’argomento -e di echo e le sequenze di escape. Una sequenza di escape per i caratteri ASCII inizia con \x, seguita da un numero esadecimale che corrisponde al carattere.
Per esempio, ecco come si può stampare la parola “TEXT” con le sequenze di escape:

echo -e '\x54\x45\x58\x54'

Invieremo i seguenti messaggi:

1B 40 (ESC @, Initialize)
1B 6D (ESC m, Full Cut)
4C 49 4E 45 20 31 ("LINE 1")
1B 21 80 (Enable Underline)
4C 49 4E 45 20 32 ("LINE 2")
0D 0A (CR LF, New Line)
1B 6D (Full Cut)


L’argomento -e è necessario per consentire le sequenze di escape esadecimali “\x”. Ecco come appare nel terminale e nella stampa risultante:
Comandi della stampante tramite echo e stampa dei risultati
Mentre echo può essere usato per inviare dati tramite una connessione seriale, cat può essere usato per riceverli. Nel nostro caso, la stampante risponderà alle richieste standard ESC/POS per informazioni di stato e ID. Questo significa che dovremo intercettare le risposte. Per prima cosa, avvieremo cat, in ascolto sul dispositivo ttyS0 e reindirizzando l’output a un file di testo:

cat /dev/ttyS0 > examplefile

L’applicazione deve rimanere in esecuzione per ricevere dati, quindi è necessario aprire una nuova finestra o scheda del Terminale per inviare richieste al nostro dispositivo. Useremo echo per inviare quanto segue:

1D 49 31 (Request model ID)
1D 49 32 (Request type ID)
Poiché le risposte verranno fornite in formato esadecimale, l'output diretto di cat, che è stato registrato in “examplefile”, non sarà leggibile dall'uomo. Invece, eseguiremo il file tramite hexdump:
Richiesta e risposta della stampante

Utilizzo di gtkterm

Linux offre anche terminali seriali come minicom e gtkterm che possono interagire in modo completo con le porte seriali, gestendo sia l’input sia l’output, offrendo più opzioni di formattazione e rendendo le cose complessivamente più semplici.

Come esempio, proveremo gtkterm. Analogamente a stty, gtkterm deve essere avviato con argomenti da riga di comando per specificare le impostazioni di connessione, se i valori predefiniti non sono adatti.

Nota da Nick:
Sebbene Minicom sia uno strumento altamente flessibile, i controlli complicati lo rendono inadatto all’uso da parte dei principianti e difficile da trattare in una guida rapida. Se vuoi iniziare a imparare Minicom, parti dalla sua pagina man per evitare di confonderti una volta avviata l’app.

Interfaccia GTKTerm
Alcune opzioni utili includono l'eco locale (per duplicare i dati che invii dal tuo lato), la registrazione, la visualizzazione esadecimale e l'invio di dati esadecimali. Inoltre, nota gli indicatori in basso a destra: mostrano gli stati delle linee di segnale DTR, RTS, CD, DSR e RI: è un altro modo per vedere che il dispositivo è connesso e pronto a ricevere dati.
Menu di configurazione e indicatori di handshake in GTKTerm

Connessione a una porta seriale sulla rete locale

In alcuni casi, un dispositivo seriale deve essere condiviso tra più computer, oppure potresti voler sostituire una connessione seriale fisica tra due computer con una virtuale. Uno dei miei progetti - Serial to Ethernet Connector - è un modo efficiente per ottenere questo risultato. Oltre a rendere disponibili le porte fisiche su una rete locale, l’applicazione può creare porte virtuali a cui possono accedere le applicazioni.

Serial to Ethernet Connector può essere configurato rapidamente e dispone di un’interfaccia a riga di comando che rende facile integrarlo in un flusso di lavoro in Terminale o in script bash. Documentazione dettagliata, guide utente ed esperti dell’assistenza clienti saranno a disposizione per aiutarti. Inoltre, è disponibile una Prova Gratuita di 15 giorni, quindi consiglio vivamente di provarlo.

Come utilizzare un Serial to Ethernet Connector

1
Iscriviti per una prova gratuita a questa pagina. Attendi che la chiave di attivazione arrivi nella tua casella di posta.
Iscriviti per una prova gratuita
2
Vai al Centro download. Scegli l’installer giusto per la tua distribuzione Linux e architettura.
Vai al Centro Download
3
Apri il Terminale, vai al file e usa i seguenti comandi sui sistemi basati su Debian (sarà necessario l’accesso da superutente):

dpkg -i serial_ethernet_connector_64.deb
apt-get install -f


Oppure questo comando su Fedora o CentOS:

sudo rpm -i serial_ethernet_connector_64.rpm

Una volta completata l’installazione, riavvia il computer.
4
Utilizza il tuo codice di attivazione eseguendo il seguente comando:

evesecli register <your activation code>

L'attivazione può essere verificata eseguendo:

evesecli license

Questi passaggi di installazione e attivazione dovranno essere completati su entrambe le macchine che verranno collegate.
Usa il tuo codice di attivazione
5
Poiché invieremo messaggi tra due applicazioni, creeremo porte virtuali sia per il server sia per il client. Inizia utilizzando il seguente comando sul server:

evesecli add -v /tmp/ttyLS0 server --local 5000

Il comando “start” aprirà la connessione:

evesecli start /tmp/ttyLS0

Inoltre, dovrai conoscere l’indirizzo IP del tuo computer sulla rete locale. Esegui “hostname -I” (i maiuscola).
crea porte virtuali sia per il server che per il client
6
Sul computer client, esegui quanto segue:

evesecli add -v /tmp/ttyRS0 client --remote <your IP address>:5000
evesecli start /tmp/ttyRS0


Puoi verificare se la connessione è andata a buon fine usando “evesecli list”. Dovrebbe mostrare che c’è 1 connessione.
verificare se la connessione è riuscita
7
Infine, poiché le porte connesse sono entrambe virtuali, possono essere testate, come in precedenza, con cat/echo.
poiché le porte collegate sono entrambe virtuali, possono essere testate
Non dimenticare che puoi usare “man evesecli” per ottenere maggiori informazioni sulle opzioni e i comandi disponibili. Inoltre, è disponibile una guida utente che può essere consultata per esempi e informazioni generali sull’uso di Serial to Ethernet Connector.

Le mie credenziali

Sono Nikolai Svarachevsky, uno sviluppatore senior impiegato presso Electronic Team, Inc. Sono lead developer su più progetti, tra cui Serial to Ethernet Connector. Ho scritto codice di livello commerciale per scopi di comunicazione seriale, networking e crittografia. Inoltre, sono un utente esperto di Linux e adoro trovare nuovi modi per usare sia le utilità integrate sia software di terze parti per risolvere problemi, semplici o complessi che siano! Spero che questa guida ti sia utile.
Serial to Ethernet Connector
Access remote serial port over IP Network for Windows
14-giorni disponibili di prova gratuita
Il prezzo della licenza parte da $259.95
Disponibile per