[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 279.   Modem e porte seriali

In un elaboratore x86 si hanno generalmente a disposizione due porte seriali, che eventualmente possono essere estese fino a quattro, denominate COM1:, COM2:,... La tabella 279.1 mostra la corrispondenza tra indirizzi e nomi dei file di dispositivo.

Tabella 279.1. Indirizzi delle porte seriali.

Porta su x86 IRQ I/O dispositivo
COM1: 4 3F816 /dev/ttyS0
COM2: 3 2F816 /dev/ttyS1
COM3: 4 3E816 /dev/ttyS2
COM4: 3 2E816 /dev/ttyS3

In passato, si distingueva nei sistemi GNU/Linux tra dispositivi per le chiamate in uscita e dispositivi per le chiamate in ingresso. Per le prime si utilizzavano i nomi /dev/cua* che sono ormai obsoleti. Attualmente, i dispositivi /dev/ttyS* svolgono entrambi i compiti.

Dal momento che la prima e la terza porta seriale, così come la seconda e la quarta, condividono lo stesso IRQ, per evitare conflitti è meglio limitarsi all'utilizzo delle sole prime due porte seriali. Tuttavia, il kernel Linux può gestire delle schede seriali multiple speciali, in cui, con un solo IRQ si hanno a disposizione fino a un massimo di 32 porte seriali.

279.1   Configurazione

Nell'introduzione a questo capitolo è stato descritto subito il problema dei conflitti di configurazione delle porte seriali, quando queste sono più di due. In generale è difficile trovare un elaboratore x86 con più di due porte seriali, ma se si inserisce una scheda aggiuntiva, questa dovrebbe essere configurabile attraverso ponticelli o del software.

Il vero problema sta nel fare in modo che le porte seriali siano individuate correttamente anche quando utilizzano una configurazione non standard. A questo proposito, GNU/Linux offre Setserial, (1) un programma di servizio specifico per configurare le porte seriali in base alle loro caratteristiche reali:

setserial [opzioni] dispositivo [parametro [argomento]]...
setserial -g [-a] [-b] dispositivo...

setserial permette di definire o verificare le informazioni sulla configurazione di una porta seriale particolare nell'ambito dei kernel Linux. Principalmente, si tratta dell'indicazione dell'indirizzo di I/O e del numero di IRQ in cui il kernel si deve aspettare di trovare la porta seriale in questione.

In pratica, l'uso di setserial è necessario quando si utilizzano porte seriali configurate in modo non standard, allo scopo di ottenerne l'identificazione e gestione corretta, secondo la loro configurazione particolare. Quando esiste questa esigenza, dal momento che il kernel dovrebbe essere configurato in tal modo a ogni avvio, è generalmente opportuno programmare l'utilizzo di setserial all'interno della procedura di inizializzazione del sistema.

Per fare riferimento alla porta seriale da verificare o di cui si deve definire la configurazione, si utilizza il nome del file di dispositivo corrispondente, /dev/ttyS*, subito dopo le opzioni eventuali.

Dopo il nome del dispositivo seriale, vengono indicati i «parametri», che a loro volta sono seguiti da un argomento eventuale. Se setserial viene utilizzato senza parametri, oppure con l'opzione -g, si ottiene semplicemente lo stato attuale della configurazione della porta seriale corrispondente.

Segue la descrizione di alcune opzioni della riga di comando.

Opzione Descrizione
-g
Mostra le informazioni sui dispositivi seriali indicati come argomenti.
-a
Quando setserial viene utilizzato per informare sullo stato della configurazione, con questa opzione si ottengono tutte le informazioni disponibili.
-b
Quando setserial viene utilizzato per informare sullo stato della configurazione, con questa opzione si ottiene solo un riassunto delle informazioni disponibili.

Segue la descrizione di alcuni parametri da indicare nella riga di comando.

Parametro Descrizione
port indirizzo_i/o
Permette di definire l'indirizzo di I/O della porta seriale.
irq indirizzo_irq
Permette di definire l'indirizzo IRQ della porta seriale.
uart {none\
  \|8250|16450|16550\
  \|16550A|16650|16750\
  \|16850|16950|16954}
Permette di definire in modo esplicito il tipo di UART utilizzato, salvo il caso di none che disabilita la porta seriale. Può essere utile quando il sistema di autorilevamento non funziona per qualche ragione, oppure quando il tipo individuato non risulta veritiero. In generale, si distingue tra il tipo 16550A e gli altri; il primo ha una memoria FIFO che viene utilizzata, mentre per gli altri, anche se alcuni ne dispongono, non ne viene attivato l'utilizzo.
spd_hi
Fa in modo che venga utilizzata la velocità di 57 600 bit/s (bps) quando l'applicazione ne richiede 38 400.
spd_vhi
Fa in modo che venga utilizzata la velocità di 115 200 bit/s quando l'applicazione ne richiede 38 400.
spd_shi
Fa in modo che venga utilizzata la velocità di 230 400 bit/s quando l'applicazione ne richiede 38 400.
spd_warp
Fa in modo che venga utilizzata la velocità di 460 800 bit/s quando l'applicazione ne richiede 38 400.

Vengono descritti alcuni esempi.

Quando si ha la necessità di configurare una o più porte seriali attraverso setserial, è opportuno che questa operazione venga svolta ogni volta che si accende l'elaboratore, attraverso la procedura di inizializzazione del sistema. Generalmente si tratta di modificare o creare il file /etc/init.d/setserial, o un altro file simile, in relazione all'organizzazione della propria distribuzione GNU/Linux.

279.2   Connettori

Il connettore di un porta seriale presente su un elaboratore x86 può essere di due tipi: maschio DB-25 o maschio DB-9. La porta seriale RS-232C originale utilizza il connettore DB-25, ma dal momento che in pratica si utilizzano solo nove dei 25 contatti, sugli elaboratori x86 sono apparse delle semplificazioni a nove contatti.

Figura 279.4. Connettori DB-25 e DB-9. Il terminale numero uno si trova a un'estremità della fila superiore di contatti.

connettori DB-25 e DB-9

La tabella seguente elenca i segnali associati ai contatti delle porte seriali:

Segnale DB-25 DB-9
TD Transmit data 2 3
RD Receive data 3 2
RTS Request to send 4 7
CTS Clear to send 5 8
DSR Data set ready 6 6
Massa dei segnali 7 5
DCD Data carrier detect 8 1
DTR Data terminal ready 20 4
RI Ring indicator 22 9

Figura 279.6. La parte posteriore di un modem esterno tipico. Si può osservare il connettore seriale sulla parte sinistra.

modem-fax esterno

279.3   Controllo del flusso o handshaking

Il controllo del flusso dei dati, tra la porta seriale e l'unità periferica a essa connessa, può essere di due tipi:

Il controllo di flusso hardware prevede l'utilizzo dei segnali RTS e CTS per la sincronizzazione tra la porta seriale e la periferica. Si tratta anche del metodo che garantisce la maggiore velocità. Il controllo di flusso software ignora i segnali hardware e utilizza invece i codici XON e XOFF.

279.4   Cavi RS-232C

Si tratta dei cavi utilizzati per connettere un'unità periferica a una porta seriale. A seconda dei componenti da connettere tra loro, si parla di DTE (Data terminal equipment) e DCE (Data communications equipment). L'elaboratore è sempre un DTE, il modem è un'unità DCE, mentre una stampante o un terminale può essere un DTE.

Quando si connettono due unità eterogenee, come un elaboratore con un modem, si utilizza un cavo seriale composto da un connettore DB-25 maschio, da collegare all'unità periferica DCE, e da un connettore DB-25 o DB-9 femmina, da collegare alla porta seriale dell'elaboratore (DTE). Con questo tipo di cavo, tutti i segnali di un capo sono connessi con gli stessi segnali dell'altro.

Tabella 279.7. Cavo seriale RS-232C standard (DTE-DCE)

Segnale DTE (elaboratore) DTE (elaboratore) DCE (modem)
DB-25 DB-9 DB-25
TD Transmit data 2 3 2
RD Receive data 3 2 3
RTS Request to send 4 7 4
CTS Clear to send 5 8 5
DSR Data set ready 6 6 6
Massa dei segnali 7 5 7
DCD Data carrier detect 8 1 8
DTR Data terminal ready 20 4 20
RI Ring indicator 22 9 22

Un cavo Null-modem, per la connessione tra due elaboratori (o comunque due unità DTE) attraverso la porta seriale, può essere realizzato utilizzando due connettori DB-25 femmina, oppure DB-9 femmina, oppure un DB-25 e un DB-9 femmina. Se si intende utilizzare un controllo di flusso software, ovvero XON/XOFF, sono sufficienti tre fili, mentre per un controllo di flusso hardware, ovvero RTS/CTS, sono necessari sette fili. Se il cavo ha una schermatura metallica, questa può essere connessa alla parte metallica di uno solo dei due connettori.

Tabella 279.8. Cavo seriale a tre fili, per collegamenti tra DTE e DTE.

DB-25 DB-25    DB-25 DB-9    DB-9 DB-9
femmina femmina femmina femmina femmina femmina
2 3 2 2 2 3
3 2 3 3 3 2
7 7 7 5 5 5

Tabella 279.9. Cavo seriale a sette fili, per collegamenti tra DTE e DTE.

DB-25 DB-25    DB-25 DB-9    DB-9 DB-9
femmina femmina femmina femmina femmina femmina
2 3 2 2 3 2
3 2 3 3 2 3
4 5 4 8 7 8
5 4 5 7 8 7
6+8 20 6+8 4 6+1 4
20 6+8 20 6+1 4 6+1
7 7 7 5 5 5

279.5   Modem

La tabella 279.10 elenca alcune sigle utilizzate per identificare le caratteristiche dei modem, in particolare quelle dell'ITU (International telecommunications union).

Tabella 279.10. Standard sulle caratteristiche dei modem.

Standard Caratteristiche
V.21 (Bell 103) 300 bit/s
V.22 (Bell 212A) 1 200 bit/s
V.23 trasmissione/ricezione 1 200 / 75 bit/s
V.22 bis 2 400 bit/s
V.27 fax
V.29 fax
V.32 4 800 bit/s, 9 600 bit/s
V.32 bis 4 800 bit/s 7 200 bit/s, 9 600 bit/s, 12 000 bit/s, 14 400 bit/s
V.34 28 800 bit/s
V.34+ 33 600 bit/s
V.42 correzione errori (include LAP-M)
V.42 bis compressione dati
MNP4 correzione errori
MNP5 compressione dati
V.90 trasmissione/ricezione 31 200 / 56 000 bit/s

Quando si utilizza il modem si distinguono due situazioni: la modalità di comando e la modalità dati. Quando si accende il modem, questo si trova nella modalità di comando, con la quale accetta una serie di comandi dall'elaboratore o dall'unità a cui è collegato, rispondendo di conseguenza. Quando si stabilisce una connessione, si passa alla modalità dati e il modem non accetta più comandi (tranne uno speciale), perché tutto il traffico viene considerato parte della comunicazione.

279.5.1   Insieme esteso di comandi Hayes

I comandi dei modem compatibili Hayes iniziano quasi sempre per «AT» seguito da una serie eventuale di codici di comando alfanumerici e quindi da un codice di ritorno a carrello (<CR>).

AT[comando...]

Per esempio:

I comandi di base iniziano con una lettera alfabetica; a questi sono stati aggiunti nel tempo dei comandi estesi che possono iniziare con una e-commerciale (&), un simbolo di percentuale (%), una barra obliqua inversa (\) e altri simboli ancora. Quando si fa riferimento a comandi estesi, è difficile stabilire quale sia lo standard; qui si vogliono elencare solo i comandi di base e quelli estesi più comuni e quindi più importanti.

Alcuni comandi speciali non fanno uso del solito prefisso di comando AT. Sono pochi e piuttosto importanti.

Tabella 279.11. Comandi senza il prefisso AT.

Comando Descrizione
A/
Ripete l'ultimo comando (si usa da solo, senza il prefisso AT e senza <CR> alla fine).
pausa+++pausa
Sequenza di escape, preceduta e seguita da una pausa di almeno un secondo. Si può usare quando il modem è nella modalità dati e lo si vuole riportare a quella di comando. Generalmente, dopo la pausa finale, viene inviato al modem un comando AT nullo:
pausa+++pausaAT<CR>.
Dopo aver riportato il modem alla modalità di comando, è possibile rimetterlo subito nella modalità dati attraverso il comando ATO.

I comandi seguenti richiedono il prefisso AT e sono seguiti dal carattere di ritorno a carrello (<CR>). I comandi prefissati da AT possono essere più o meno complessi e lunghi di conseguenza; questa lunghezza ha un limite che varia da modem a modem. In generale, quando possibile, è opportuno suddividere questi comandi se sono troppo lunghi.(2)

La maggior parte dei casi, i comandi AT sono formati da una sigla iniziale che definisce il tipo di comando e sono seguiti da un parametro numerico. Per esempio, ATH0 serve a chiudere la linea telefonica. Questi comandi possono essere composti senza il parametro finale (cioè senza il numero), quando si vuole fare riferimento allo zero. Quindi, ATH è esattamente uguale a ATH0.

I comandi AT possono contenere spazi, per facilitare la lettura umana. Resta comunque valido il problema del limite massimo alla loro lunghezza, che in tal modo deve tenere conto anche degli spazi aggiuntivi (ammesso che il modem non ne tenga conto esplicitamente).

Tabella 279.12. Comandi AT.

Comando Descrizione
A
Answer. Risposta senza attendere il segnale di chiamata.
DPn
Dial pulse. Compone il numero di telefono n a impulsi.
DTn
Dial tone. Compone il numero di telefono n a toni.
Se all'interno delle cifre del numero telefonico viene utilizzata una virgola (,), questa rappresenta una pausa nella composizione. Solitamente, questa pausa dura due secondi.
Il comando ATD è speciale: dopo il numero telefonico da comporre non è possibile accodare altri comandi.
E0
Echo. Disattiva l'eco dei comandi.
E1
Attiva l'eco dei comandi. È il valore predefinito.
F0
Funzionamento in Half duplex.
F1
Funzionamento in Full duplex.
H0
Hang. Il modem chiude la connessione alla linea telefonica.
H1
Il modem apre la connessione alla linea telefonica.
H2
Il telefono e il modem sono entrambi connessi alla linea telefonica.
L0
Loudness. Il livello sonoro dell'altoparlante interno al modem viene posizionato al livello minimo.
L1
Il livello sonoro dell'altoparlante interno al modem viene posizionato a un livello basso.
L2
Il livello sonoro dell'altoparlante interno al modem viene posizionato a un livello medio. È il valore predefinito.
L3
Il livello sonoro dell'altoparlante interno al modem viene posizionato a un livello alto.
M0
Mode. Altoparlante spento.
M1
Altoparlante acceso durante la chiamata e spento non appena riceve il segnale di portante. È il valore predefinito.
M2
Altoparlante sempre acceso.
M3
Altoparlante spento durante la composizione, quindi acceso, poi spento non appena riceve il segnale di portante.
O0
On-line. Quando per qualche motivo il modem è tornato alla modalità di comando mentre si trovava in quella dati, per esempio perché è stato generato un escape (+++), con il comando O0 si fa in modo che il modem torni alla modalità dati.
O1
Riporta il modem alla modalità dati, forzando però una procedura di equalizzazione, in modo da riadattarsi alle caratteristiche della linea.
Q0
Quiet. Vengono inviati i codici di risultato.
Q1
Non vengono inviati i codici di risultato.
Sn=x
S-register. Attribuisce al registro n il valore x.
Sn?
Visualizza il valore del registro n.
V0
Verbose. Non vengono tradotti i codici di risultato.
V1
Vengono tradotti i codici di risultato in forma verbale. È il valore predefinito.
X0
Extensive. Seleziona i codici di risultato a livello base (300 bit/s).
X1
Esteso senza rilevamento del tono di chiamata (dialtone) o del segnale di occupato (busy).
X2
Esteso con rilevamento del tono di chiamata (dialtone), ma non del segnale di occupato (busy).
X3
Esteso con rilevamento del segnale di occupato (busy), ma non del tono di chiamata (dialtone).
ATX3 è la scelta migliore quando si utilizzano le linee telefoniche italiane. Se si tentano altre modalità si ottiene solo il tipico messaggio di errore: NO DIALTONE.
X4
Esteso con rilevamento del tono di chiamata (dialtone) e del segnale di occupato (busy).
Y0
Disabilita la disconnessione dopo uno space lungo (ovvero dopo un break). È il valore predefinito.
Y1
Abilita la disconnessione dopo uno space lungo (ovvero dopo un break).
Z
Preleva il profilo di configurazione dalla memoria non volatile. Se il modem è provvisto di diverse memorie per la registrazione dei profili di configurazione, si possono utilizzare i comandi ATZ0, ATZ1, ATZ2,... per prelevare il primo profilo, il secondo, il terzo,... In generale, ATZ e ATZ0 sono la stessa cosa.
&C0
Carrier. Il modem mantiene sempre alto il DCD (Data carrier detect).
&C1
Il livello del DCD segue l'andamento della portante rilevata dal modem.
&D0
Il modem ignora il DTR.
&D1
Il modem passa allo stato di comando quando il DTR passa dal livello alto al livello basso.
&D2
Quando il DTR passa dal livello alto al livello basso, il modem interrompe la comunicazione (aggancia) e disabilita la risposta automatica (ammesso che questa sia stata abilitata). Infine, torna alla modalità di comando.
&D3
Quando il DTR passa dal livello alto al livello basso, il modem si reinizializza.
&F
Firmware. Preleva il profilo di configurazione preimpostato dal fabbricante della ROM (praticamente una reinizializzazione del modem).
&L0
Line. Linea commutata.
&L1
Linea dedicata.
&S0
Set. Il modem mantiene sempre alto il DSR (Data set ready).
&S1
Il DSR funziona in base alle specifiche EIA.
&V
View. Consente di visualizzare il profilo memorizzato nella memoria non volatile.
Se il modem è provvisto di diverse memorie per la registrazione dei profili di configurazione, si possono utilizzare i comandi AT&V0, AT&V1, AT&V2,... per visualizzare il primo profilo, il secondo, il terzo,... In generale, AT&V e AT&V0 sono la stessa cosa.
&W
Write. Scrive nella memoria non volatile il profilo attivo di configurazione.
Se il modem è provvisto di diverse memorie per la registrazione dei profili di configurazione, si possono utilizzare i comandi AT&W0, AT&W1, AT&W2,... per registrare nel primo profilo, nel secondo, nel terzo,... In generale, AT&W e AT&W0 sono la stessa cosa.

Tabella 279.13. Sintesi dei comandi AT.

Comando Descrizione
A
Risposta.
DP
Composizione a impulsi.
DT
Composizione a toni.
E
Eco dei comandi.
F
Duplex.
H
Aggancio.
L
Livello sonoro.
M
Altoparlante.
Q
Codici di risultato.
Sn=x
Attribuzione del valore x al registro n.
Sn?
Interrogazione del contenuto del registro n.
V
Traduzione dei codici di risultato numerici.
X
Estensione.
Y
Disconnessione automatica.
Z
Prelievo del profilo di configurazione dalla memoria non volatile.
&F
Prelievo del profilo di configurazione dalla ROM.
&L
Linea dedicata o commutata.
&V
Visualizza il profilo di configurazione della memoria non volatile.
&W
Registra il profilo di configurazione nella memoria non volatile.

I registri sono delle caselle di memoria che permettono di ridefinire determinati valori riferiti al comportamento del modem. Per modificare un registro si utilizza il comando ATSn=x, dove n è il numero del registro e x è il valore che gli si vuole assegnare.

Tabella 279.14. Registri «S» principali.

Registro Descrizione
S0
Numero di squilli prima della risposta. Zero equivale a inibire la risposta automatica ed è il valore predefinito.
S1
Contatore degli squilli. Il modem utilizza questo registro come variabile per il conteggio degli squilli: quando il valore di questo registro raggiunge quello di S0, il modem risponde.
S2
Il codice di escape. Il valore predefinito corrisponde a 43, ovvero al simbolo +. Per passare dalla modalità on line a quella dei comandi, si preme per tre volte si seguito in rapida successione questo tasto: [+] [+] [+].
S3
Il codice utilizzato come carriage return. Il valore predefinito è 13, corrispondente a <CR>.
S4
Il codice utilizzato come linefeed. Il valore predefinito è 10, corrispondente a <LF>.
S5
Il codice utilizzato come backspace. Il valore predefinito è 8, corrispondente a <BS>.
S6
Tempo di attesa per il segnale di centrale espresso in secondi. Si tratta del tempo che il modem attende prima di iniziare a comporre il numero telefonico. Il valore predefinito è due.
S7
Tempo di attesa per la portante espresso in secondi. Si tratta del tempo entro il quale il modem si aspetta di ricevere la portante. Se ciò non avviene, il modem restituisce il messaggio di errore NO CARRIER. Solitamente, il valore predefinito è 30.
S8
Durata della pausa espressa in secondi. Quando all'interno del numero telefonico da comporre appare una virgola, questa viene interpretata come pausa di composizione. La durata predefinita della pausa è di due secondi.
S9
Tempo per il rilevamento della portante espresso in decimi di secondo. La quantità di tempo necessario, durante il quale la portante deve essere presente per poter essere rilevata dal modem. Il valore predefinito è sei, corrispondente a 0,6 secondi.
S10
Tempo massimo di perdita della portante espresso in decimi di secondo. La durata massima della perdita della portante. Se la portante viene a mancare per un tempo maggiore, il modem riaggancia, ovvero chiude la comunicazione. Solitamente il valore predefinito è sette, corrispondente a 0,7 secondi. In presenza di linee disturbate, può essere necessario aumentare questo valore.
S11
Intervallo di tono espresso in millisecondi. Quando si utilizza la composizione a toni o DTMF, i toni che rappresentano le cifre numeriche devono essere spaziati l'uno dall'altro da una breve pausa. Questo registro esprime il valore della pausa. Il valore predefinito si aggira tra i 50 ms e i 100 ms (millisecondi). La scelta della durata della pausa dipende dalle capacità della propria centrale: un valore di 50 è considerato il minimo possibile in assoluto.
S12
Tempo morto della sequenza di escape espresso in cinquantesimi di secondo. È il tempo che deve trascorrere prima e dopo una sequenza di escape (+++). Il valore predefinito è 50, corrispondente a un secondo.

Tabella 279.15. Sintesi dei registri «S» principali.

Registro Descrizione
S0
Numero di squilli prima della risposta automatica.
S1
Contatore degli squilli.
S2
Codice di escape.
S3
Codice di ritorno a carrello.
S4
Codice per l'avanzamento di riga.
S5
Codice per il backspace.
S6
Secondi di attesa per il segnale di centrale.
S7
Secondi di attesa per la portante.
S8
Secondi di durata della pausa (virgola).
S9
Decimi di secondo per il rilevamento della portante.
S10
Decimi di secondo consentiti per la perdita della portante.
S11
Millisecondi di spaziatura tra i toni di composizione.
S12
Cinquantesimi di secondo per i tempi morti delle sequenze di escape.

279.5.2   Indicatori luminosi dei modem esterni

I modem esterni hanno una serie di indicatori luminosi, più o meno standard, che danno un'indicazione istantanea sullo stato di questo. Queste indicazioni sono abbastanza importanti, ed è utile conoscerne il significato.

Figura 279.16. Indicatori luminosi dei modem esterni.

indicatori luminosi dei modem esterni

Segue la descrizione del significato di questi indicatori luminosi:

Sigla Descrizione
MR, Modem ready quando l'indicatore MR è acceso, il modem è alimentato elettricamente;
HS, High speed quando l'indicatore HS è acceso, la comunicazione tra DTE e modem avviene a una velocità «elevata» (può trattarsi di un valore che supera i 2 400 bit/s);
AA, Auto answer quando l'indicatore AA è acceso, il modem è configurato per rispondere alle chiamate, oppure ha ricevuto uno o più squilli del telefono;
CD, Carrier detect quando l'indicatore CD è acceso, il modem sta ricevendo, dal modem remoto, un segnale di portante valido;
OH, Off hook quando l'indicatore OH è acceso, il modem sta utilizzando la linea telefonica;
SD, Send data quando l'indicatore SD è acceso, il modem sta trasmettendo dati (ovvero sta ricevendo dati dall'elaboratore, o da altra unità, da trasmettere nella linea);
RD, Receive data quando l'indicatore RD è acceso, il modem sta ricevendo dati (ovvero sta inviando i dati ricevuti dalla linea, verso l'elaboratore o altra unità);
TR, Terminal ready di solito viene utilizzato per visualizzare la condizione del segnale DTR (Data terminal ready).

279.5.3   Codici di risposta

Quando il modem è configurato in modo da restituire i codici di risposta, questi vengono restituiti in forma verbale o numerica: ATQ0 abilita l'emissione delle risposte, ATV1 visualizza i messaggi in inglese invece che in forma numerica.

Tabella 279.18. Codici di risposta standard dei modem.

codice numerico codice verbale descrizione
0 OK Comando eseguito senza errori
1 CONNECT Connessione stabilita (a 300 bit/s)
2 RING Il telefono sta suonando
3 NO CARRIER Perdita della portante o mancato rilevamento
4 ERROR Errore nel comando o riga troppo lunga
5 CONNECT 1200 Connessione stabilita a 1 200 bit/s
6 NO DIALTONE Assenza del tono di chiamata
7 BUSY Rilevamento del segnale di occupato
8 NO ANSWER
9/10 CONNECT 2400 Connessione stabilita a 2 400 bit/s
13 CONNECT 9600 Connessione stabilita a 9 600 bit/s
18 CONNECT 4800 Connessione stabilita a 4 800 bit/s
20 CONNECT 7200 Connessione stabilita a 7 200 bit/s
21 CONNECT 12000 Connessione stabilita a 12 000 bit/s
25 CONNECT 14400 Connessione stabilita a 14 400 bit/s
43 CONNECT 16800 Connessione stabilita a 16 800 bit/s
85 CONNECT 19200 Connessione stabilita a 19 200 bit/s
91 CONNECT 21600 Connessione stabilita a 21 600 bit/s
99 CONNECT 24000 Connessione stabilita a 24 000 bit/s
103 CONNECT 26400 Connessione stabilita a 26 400 bit/s
107 CONNECT 28800 Connessione stabilita a 28 800 bit/s
151 CONNECT 31200 Connessione stabilita a 31 200 bit/s
155 CONNECT 33600 Connessione stabilita a 33 600 bit/s
180 CONNECT 33333 Connessione stabilita a 33 333 bit/s
184 CONNECT 37333 Connessione stabilita a 37 333 bit/s
188 CONNECT 41333 Connessione stabilita a 41 333 bit/s
192 CONNECT 42666 Connessione stabilita a 42 666 bit/s
196 CONNECT 44000 Connessione stabilita a 44 000 bit/s
200 CONNECT 45333 Connessione stabilita a 45 333 bit/s
204 CONNECT 46666 Connessione stabilita a 46 666 bit/s
208 CONNECT 48000 Connessione stabilita a 48 000 bit/s
212 CONNECT 49333 Connessione stabilita a 49 333 bit/s
216 CONNECT 50666 Connessione stabilita a 50 666 bit/s
220 CONNECT 52000 Connessione stabilita a 52 000 bit/s
224 CONNECT 53333 Connessione stabilita a 53 333 bit/s
228 CONNECT 54666 Connessione stabilita a 54 666 bit/s
232 CONNECT 56000 Connessione stabilita a 56 000 bit/s
256 CONNECT 28000 Connessione stabilita a 28 000 bit/s
260 CONNECT 29333 Connessione stabilita a 29 333 bit/s
264 CONNECT 30666 Connessione stabilita a 30 666 bit/s
268 CONNECT 32000 Connessione stabilita a 32 000 bit/s
272 CONNECT 34666 Connessione stabilita a 34 666 bit/s
276 CONNECT 36000 Connessione stabilita a 36 000 bit/s
280 CONNECT 38666 Connessione stabilita a 38 666 bit/s
284 CONNECT 40000 Connessione stabilita a 40 000 bit/s

Figura 279.19. La parte anteriore di un modem esterno tipico. In questo caso sono visibili solo alcuni degli indicatori tipici.

modem-fax esterno

279.5.4   Sequenze di escape

Quando si utilizza un programma per interagire con un modem e si devono indicare dei comandi AT di qualche tipo, capita spesso la necessità di indicare dei simboli speciali, come il ritorno a carrello, o delle pause nel flusso di questi. Spesso sono validi i codici di escape che si vedono nella tabella 279.20.

Tabella 279.20. Codici di escape tipici per i programmi che interagiscono con il modem.

Codice Significato
\d
Pausa di un secondo.
\p
Pausa di 0,1 s.
\n
<LF> (line feed).
\r
<CR> (carriage return).
\N
<NUL>.
\s
<SP> (spazio normale).
\t
<HT> (tabulazione).
\\
Una barra obliqua inversa singola.

279.6   File di dispositivo e collegamenti

I file di dispositivo relativi alle porte seriali di un sistema GNU/Linux hanno un nome del tipo /dev/ttyS*. Dal momento che, almeno in teoria, è possibile gestire un massimo di 32 porte, i numeri utilizzati vanno da 0 a 31 (/dev/ttyS0, /dev/ttyS1, ..., /dev/ttyS31).

Quando si utilizzano programmi che accedono alle porte seriali, occorre prendersi cura dei permessi associati a questi file di dispositivo, altrimenti sono utilizzabili solo dall'utente root.

ls -l /dev/ttyS[0-3][Invio]

crw-r--r--   4 root     root       4,  64 dic 16 17:30 /dev/ttyS0
crw-r--r--   4 root     root       4,  65 dic 16 17:37 /dev/ttyS1
crw-r--r--   4 root     root       4,  66 mag  5  1998 /dev/ttyS2
crw-r--r--   4 root     root       4,  67 mag  5  1998 /dev/ttyS3

Per esempio, se si vuole rendere disponibile l'utilizzo da parte di tutti gli utenti del modem connesso alla seconda porta seriale, occorre agire come segue:

chmod a+rw /dev/ttyS1[Invio]

ls -l /dev/ttyS[0-3][Invio]

crw-r--r--   4 root     root       4,  64 dic 16 17:30 /dev/ttyS0
crw-rw-rw-   4 root     root       4,  65 dic 16 17:37 /dev/ttyS1
crw-r--r--   4 root     root       4,  66 mag  5  1998 /dev/ttyS2
crw-r--r--   4 root     root       4,  67 mag  5  1998 /dev/ttyS3

Quando si ha a disposizione un modem soltanto, può essere opportuno predisporre un collegamento simbolico corrispondente a /dev/modem, che punti al file di dispositivo corrispondente alla porta seriale a cui è connesso effettivamente il modem stesso. Così facendo, se i programmi che lo utilizzano fanno riferimento a questo collegamento, non occorre più cambiare la loro configurazione quando si sposta il modem: basta cambiare il collegamento.

lrwxrwxrwx   1 root     root           65 dic 16 17:37 /dev/modem -> ttyS1

Ci sono pro e contro sull'utilità di questo collegamento. L'argomento più importante da tenere in considerazione contro la presenza di questo collegamento è il fatto che i programmi che lo utilizzano potrebbero creare dei file lucchetto (lock file) che segnalano il suo utilizzo, mentre può sembrare che il dispositivo che viene utilizzato effettivamente sia libero.

Per comodità, negli esempi che appaiono in questo e anche in altri capitoli, si utilizza la convenzione del collegamento /dev/modem, ma ciò non deve essere inteso come un invito a seguire questa strada in modo generalizzato.

279.6.1   Gestione oculata dei permessi

La gestione dei permessi per l'accesso al dispositivo della porta seriale cui è connesso il modem, può essere fatta in modo più proficuo assegnando a questi l'appartenenza a un gruppo diverso da root, per esempio dialout, abbinando poi questo gruppo agli utenti cui si vuole concedere l'accesso.

Supponendo di voler utilizzare il gruppo dialout, si potrebbe modificare il file /etc/group in modo che al gruppo dialout facciano parte anche gli utenti che devono accedere alle porte seriali in uscita. Per esempio, la riga seguente rappresenta il record del file /etc/group in cui si dichiara il gruppo dialout.

dialout::14:dialout,root,daniele,tizio,caio

Qui, oltre all'utente fittizio dialout (ammesso che esista) e all'amministratore root, viene concesso agli utenti daniele, tizio e caio di partecipare a questo gruppo.

279.7   Programmi di comunicazione

Un programma di emulazione di terminale è l'ideale per verificare il funzionamento del modem e soprattutto per poter memorizzare il profilo di configurazione preferito in modo che il comando ATZ lo imposti istantaneamente secondo la proprie necessità. Oltre a tali esigenze, attraverso questo tipo di programma si può effettuare una connessione fittizia al proprio fornitore di accesso a Internet in modo da conoscere precisamente la procedura di connessione e da poter realizzare uno script adeguato.

279.7.1   Accesso brutale al modem

Anche senza un programma di emulazione di terminale si può accedere al modem, utilizzando gli strumenti elementari offerti dal sistema operativo. È sufficiente il programma cat utilizzato nel modo seguente (si suppone che il collegamento /dev/modem corrisponda al dispositivo seriale abbinato al modem).

cat < /dev/modem &[Invio]

cat > /dev/modem[Invio]

Con questi due comandi, si ottiene di emettere quanto generato dal modem attraverso lo standard output e di dirigere lo standard input (ottenuto dalla tastiera) verso il modem.

AT[Invio]

AT


OK

In questo modo si può fare (quasi) tutto quello che si potrebbe con un programma di emulazione di terminale. Si può anche simulare la connessione con un ISP, ma forse qualche messaggio potrebbe non essere visualizzato nel momento giusto.

279.7.2   Utilizzo sommario di Minicom

Prima di poter utilizzare Minicom (3) occorre che sia stato predisposto il file /etc/minirc.dfl attraverso la procedura di configurazione cui si accede attraverso Minicom quando viene avviato con l'opzione -s. Per gli scopi degli esempi riportati in queste sezioni, è sufficiente salvare la configurazione predefinita, in pratica basta che il file /etc/minirc.dfl esista e sia vuoto.

Oltre al file di configurazione, occorre aggiungere all'interno del file /etc/minicom.users i nomi degli utenti abilitati al suo utilizzo.

Per avviare Minicom (l'eseguibile minicom) è sufficiente il nome senza argomenti.

minicom[Invio]

Segue un breve esempio nel quale in particolare si interroga il modem per conoscere il profilo di configurazione memorizzato nella memoria non volatile (AT&V).

Minicom 1.71 Copyright (c) Miquel van Smoorenburg

Press CTRL-A Z for help on special keys

AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
OK

AT&V[Invio]

ACTIVE PROFILE:
B1 E1 L1 M1 Q0 V1 W0 X4  &B1 &C1 &D2 &G0 &L0 &P0 &Q0 &R0 &S0 &X0 &Y0
%A013 %C1 %G1  \A3 \C0 \G0 \J0 \K5 \N3 \Q3 \T000 \V0 \X0  -J1 "H3 "O032
S00:000 S01:000 S02:043 S03:013 S04:010 S05:008 S06:002 S07:045 S08:002
S09:006 S10:014 S11:095 S12:050 S18:000 S25:005 S26:001 S37:000 S72:000

STORED PROFILE 0:
B1 E1 L2 M1 Q0 V1 W0 X3  &B1 &C1 &D2 &G0 &L0 &P0 &Q0 &R0 &S0 &X0
%A013 %C1 %G1  \A3 \C0 \G0 \J0 \K5 \N3 \Q3 \T000 \V0 \X0  -J1 "H3 "O032
S00:000 S02:043 S03:013 S04:010 S05:008 S06:002 S07:060 S08:002
S09:006 S10:014 S11:095 S12:050 S18:000 S25:005 S26:001 S37:000 S72:000

TELEPHONE NUMBERS:
&Z0=
&Z1=
&Z2=
&Z3=

OK

[Ctrl a][x]

Nell'esempio, è stato trascurato il fatto che la configurazione predefinita non sia adatta alla situazione normale delle linee telefoniche italiane. Infatti, la stringa di inizializzazione inviata automaticamente da Minicom al modem contiene il comando ATX4 che in Italia non è appropriato.

279.7.3   Utilizzo sommario di Seyon

Seyon (4) è un programma di emulazione di terminale che utilizza l'interfaccia grafica X. Se si utilizza il collegamento /dev/modem per riferirsi alla porta seriale alla quale è connesso il modem si può avviare l'eseguibile seyon nel modo seguente:

seyon -modems /dev/modem[Invio]

Figura 279.28. Avvio del programma di comunicazione Seyon.

seyon-avvio

La finestra {Seyon Command Center} permette di accedere alla configurazione dei parametri di comunicazione attraverso il pulsante <Set>.

Figura 279.29. Configurazione della velocità massima di comunicazione attraverso il pannello di comando di Seyon.

seyon-set-baud

La figura 279.30 è un esempio di connessione attraverso comandi scritti direttamente senza l'aiuto del programma di comunicazione.

Figura 279.30. Esempio di connessione con Seyon.

seyon-connessione

279.8   Configurazione del modem

Nelle sezioni precedenti sono stati visti una serie di comandi e registri utili a definire il comportamento del modem. I programmi che utilizzano il modem, come i programmi di comunicazione e i fax, hanno la necessità di predisporre il modem nel modo ottimale per ciò che da loro deve essere fatto.

I programmi più sofisticati guidano l'utente alla configurazione del modem senza la necessità di indicare esplicitamente alcun comando AT. Questi programmi trasformano poi la configurazione in una stringa di inizializzazione che viene inviata al modem prima di qualunque attività.

I programmi meno sofisticati prevedono la possibilità per l'utente di inserire una stringa di inizializzazione che vada a sommarsi alla configurazione già gestita dal programma.

Esiste tuttavia la possibilità di inserire una configurazione di massima già nel modem, come viene descritto nella prossima sezione.

279.8.1   Profilo di configurazione del modem

I modem standard contengono una configurazione di fabbrica registrata su ROM e almeno un profilo di configurazione registrato in una memoria non volatile, modificabile da parte dell'utilizzatore.

La predisposizione di una buona configurazione in questa memoria non volatile, permette di utilizzare il comando ATZ per richiamare tutto ciò che in essa è stato definito, semplificando la configurazione attraverso i programmi che utilizzano il modem. La sequenza di operazioni seguente mostra il modo normale di predisporre una tale configurazione.

La prima cosa da fare è utilizzare un programma di comunicazione come Minicom per poter colloquiare con il modem.

minicom[Invio]

...
OK

Quasi tutti i programmi del genere, subito dopo l'avvio, inizializzano il modem in qualche modo. Prima di proseguire si carica il profilo di configurazione memorizzato precedentemente nella memoria non volatile.

ATZ[Invio]

OK

Si procede quindi con una serie di comandi che servono a cambiare la modalità di funzionamento del modem. In questo caso si cambia il tipo di responso in modo che sia compatibile con il tipo di linee telefoniche utilizzate in Italia, quindi si modifica il registro S11 in modo che la pausa tra i toni di composizione sia di 100 ms.

ATX3[Invio]

OK

ATS11=100[Invio]

OK

Per verificare l'esito, basta utilizzare il comando AT&V.

AT&V[Invio]

ACTIVE PROFILE:
B1 E1 L2 M1 Q0 V1 W0 X3  &B1 &C1 &D2 &G0 &L0 &P0 &Q0 &R0 &S0 &X0
%A013 %C1 %G1  \A3 \C0 \G0 \J0 \K5 \N3 \Q3 \T000 \V0 \X0  -J1 "H3 "O032
S00:000 S02:043 S03:013 S04:010 S05:008 S06:002 S07:060 S08:002
S09:006 S10:014 S11:100 S12:050 S18:000 S25:005 S26:001 S37:000 S72:000

STORED PROFILE 0:
B1 E1 L2 M1 Q0 V1 W0 X4  &B1 &C1 &D2 &G0 &L0 &P0 &Q0 &R0 &S0 &X0
%A013 %C1 %G1  \A3 \C0 \G0 \J0 \K5 \N3 \Q3 \T000 \V0 \X0  -J1 "H3 "O032
S00:000 S02:043 S03:013 S04:010 S05:008 S06:002 S07:060 S08:002
S09:006 S10:014 S11:095 S12:050 S18:000 S25:005 S26:001 S37:000 S72:000

TELEPHONE NUMBERS:
&Z0=
&Z1=
&Z2=
&Z3=

OK

Si può osservare la differenza tra il profilo attivo (il primo) e quello contenuto nella memoria non volatile (il secondo). Evidentemente può trattarsi soltanto delle due cose che sono state modificate. Se si desidera modificare altro si continua, altrimenti si memorizza il nuovo profilo di configurazione.

AT&W[Invio]

OK

Se si utilizza nuovamente il comando AT&V si può verificare che il profilo attivo è stato copiato nella memoria non volatile.

AT&V[Invio]

ACTIVE PROFILE:
B1 E1 L2 M1 Q0 V1 W0 X3  &B1 &C1 &D2 &G0 &L0 &P0 &Q0 &R0 &S0 &X0
%A013 %C1 %G1  \A3 \C0 \G0 \J0 \K5 \N3 \Q3 \T000 \V0 \X0  -J1 "H3 "O032
S00:000 S02:043 S03:013 S04:010 S05:008 S06:002 S07:060 S08:002
S09:006 S10:014 S11:100 S12:050 S18:000 S25:005 S26:001 S37:000 S72:000

STORED PROFILE 0:
B1 E1 L2 M1 Q0 V1 W0 X3  &B1 &C1 &D2 &G0 &L0 &P0 &Q0 &R0 &S0 &X0
%A013 %C1 %G1  \A3 \C0 \G0 \J0 \K5 \N3 \Q3 \T000 \V0 \X0  -J1 "H3 "O032
S00:000 S02:043 S03:013 S04:010 S05:008 S06:002 S07:060 S08:002
S09:006 S10:014 S11:100 S12:050 S18:000 S25:005 S26:001 S37:000 S72:000

TELEPHONE NUMBERS:
&Z0=
&Z1=
&Z2=
&Z3=

OK

Al termine basta concludere il funzionamento del modem. In questo caso con la sequenza [Ctrl a][x].

279.9   Rapidità di modulazione e velocità di trasmissione

Quando si utilizzano le porte seriali e i modem, è importante chiarire i concetti legati alla velocità di trasmissione. Per prima cosa è bene distinguere due situazioni: la comunicazione attraverso porte seriali, che per esempio può avvenire tra la porta seriale di un elaboratore e la porta corrispondente di un modem, rispetto a quella tra due modem, attraverso un doppino telefonico. Nel primo caso, i dati sono trasmessi solo in forma di segnale elettrico, in base alla tensione che questo assume. Ciò, tra le altre cose, implica una limitazione nella lunghezza del cavo. Nel secondo caso, invece, la distanza da raggiungere impone che le informazioni siano trasmesse attraverso una o più portanti di frequenza adatte al mezzo.

Quando si parla di velocità di trasmissione attraverso un cavo seriale, l'unica indicazione possibile si riferisce al numero di bit che possono transitare nell'intervallo di un secondo, cosa espressa dall'unità di misura bit/s, conosciuta volgarmente come bps (Bit per second).

Quando si pensa alla trasmissione attraverso una portante modulata, oltre al concetto di velocità espresso in bit per secondo, si può aggiungere un parametro aggiuntivo che rappresenta la rapidità di modulazione della portante. Si parla in questo caso di baud.

In origine, i tipi di modulazione utilizzati permettevano di trasmettere dati a una velocità massima pari allo stesso valore baud, contribuendo a confondere le due cose. Attualmente, i modem più recenti possono operare a un massimo di 2 400 baud, mentre riescono a comunicare a una velocità in bit/s ben superiore (33 600 bit/s sono diventati una cosa normale). Questo significa, evidentemente, che le tecniche di modulazione attuali permettono di trasmettere più bit per ogni baud.

In conclusione:

279.10   Impostazione della velocità

La velocità di comunicazione della porta seriale deve essere scelta opportunamente, in funzione della velocità con cui il modem è in grado di ricevere e trasmettere dati. Generalmente, la velocità della porta deve essere quattro volte superiore a quella della comunicazione del modem, perché potrebbe intervenire l'effetto della compressione dati ad aumentare il volume effettivo di informazioni scambiate.

Il problema si pone particolarmente quando si utilizzano modem con velocità di trasmissione superiore a 9 600 bit/s.

In pratica, quando si usano modem da 9 600 bit/s in su, si configura il programma di comunicazione per una velocità di 57 600 bit/s, o superiore (purché la porta seriale dell'elaboratore e quella del modem lo consentono); se però il programma di comunicazione non consente di impostare velocità superiori a 38 400 bit/s, si deve richiedere questa velocità massima, utilizzando setserial per impostare le modalità spd_*.

La tabelle seguenti riassumono le impostazioni necessarie in funzione della velocità del modem utilizzato:

Velocità del modem Velocità del programma Opzioni di setserial
300 300 spd_normal
1 200 1 200 spd_normal
2 400 2 400 spd_normal
9 600 57 600 spd_normal
14 400 57 600 spd_normal
28 800 115 200 spd_normal
33 600 115 200 spd_normal
56 000 230 400 spd_normal
Velocità del modem Velocità del programma Opzioni di setserial
300 300 spd_normal
1 200 1 200 spd_normal
2 400 2 400 spd_normal
9 600 38 400 spd_normal
14 400 38 400 spd_hi
28 800 38 400 spd_vhi
33 600 38 400 spd_vhi
56 000 38 400 spd_shi
56 000 38 400 spd_shi

279.11   Riferimenti

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


1) Setserial   GNU GPL

2) AT sta per Attention.

3) Minicom   GNU GPL

4) Seyon   GNU GPL


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome modem_e_porte_seriali.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!