Capitolo successivo Capitolo precedente Indice

61. Modem e porte seriali

In un computer PC, si hanno generalmente a disposizione due porte seriali, eventualmente estensibili fino a quattro, denominate COM1, COM2, ... La tabella tabella-porte-seriali-indirizzi mostra la corrispondenza tra indirizzi e nomi di dispositivo. In particolare, a seconda dell'uso della porta seriale, cambia il nome a essa attribuita.


Porta IRQ Indirizzo dispositivo dispositivo
sui PC I/O in uscita in ingresso
COM1 4 0x3f8 /dev/cua0 /dev/ttyS0
COM2 3 0x2f8 /dev/cua1 /dev/ttyS1
COM3 4 0x3e8 /dev/cua2 /dev/ttyS2
COM4 3 0x2e8 /dev/cua3 /dev/ttyS3
Indirizzi delle porte seriali.

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, Linux consente l'utilizzo delle schede seriali multiple in cui con un unico IRQ si hanno a disposizione fino a un massimo di 32 porte seriali.

61.1 Connettori

Il connettore di un porta seriale presente su un PC 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 terminali, sui computer PC sono apparse delle semplificazioni a 9 terminali.


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
DTS Data Set Ready 6 6
Massa dei segnali 7 5
CD Carrier Detect 8 1
DTR Data Terminal Ready 20 4
RI Ring Indicator 22 9
Segnali associati ai piedini delle porte seriali.

61.2 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.

61.3 Cavi RS-232C

Si tratta dei cavi utilizzati per connettere una 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). Il PC è sempre un DTE, il modem è una unità DCE, mentre una stampante o un terminale può essere un DTE.

Cavo DTE-DCE

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


Segnale DTE (PC) DTE (PC) 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
DTS Data Set Ready 6 6 6
Massa dei segnali 7 5 7
CD Carrier Detect 8 1 8
DTR Data Terminal Ready 20 4 20
RI Ring Indicator 22 9 22
Cavo seriale RS-232C.

Cavo DTE-DTE o Null Modem

Un cavo Null Modem, per la connessione tra due computer (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 utillizzare un controllo di flusso software, ovvero XON/XOFF, sono sufficienti tre fili, mentre per un controllo di flusso hardware, ovvero RTS/CTS, sono necessari 7 fili. Se il cavo ha una schermatura metallica, questa può essere connessa alla parte metallica di uno solo dei due connettori.

In appendice ( (tabella), (tabella)), sono riportati gli schemi delle connessioni necessarie alla realizzazione di questi cavi.

61.4 Modem

La tabella (seguente) elenca le sigle utilizzate per identificare le caratteristiche dei modem, in particolare quelle dell'ITU (International Telecommunications Union).


Standard Caratteristiche
V.21 (Bell 103) 300 bps
V.22 (Bell 212A) 1200 bps
V.23 trasmissione/ricezione 1200/75 bps
V.22bis 2400 bps
V.27 fax
V.29 fax
V.32 4800 - 9600 bps
V.32bis 7200 - 12000 - 14400 bps
V.34 28800 bps
V.42 correzione errori (include LAP-M)
V.42bis compressione dati
MNP4 correzione errori
MNP5 compressione dati
Standard sulle caratteristiche dei modem.

Set esteso di comandi HAYES

I comandi dei modem Hayes compatibili 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:

Comandi senza prefisso AT

A/

Ripete l'ultimo comando (si usa da solo, senza il prefisso AT e senza <CR> alla fine).

+++

Sequenza di escape. Serve a riportare il modem nella modalità di comando.

Comandi AT principali

I comandi seguenti richiedono il prefisso AT e sono seguiti dal carattere di ritorno a carrello (<CR>). AT sta per Attention.

---------

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 vale 2 secondi.

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, e spento non appena riceve il segnale di portante.

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 bps).

X1

Esteso senza rilevazione del tono di chiamata (dialtone) o del segnale di occupato (busy).

X2

Esteso con rilevazione del tono di chiamata (dialtone), ma non del segnale di occupato (busy).

X3

Esteso con rilevazione del segnale di occupato (busy), ma non del 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 rilevazione 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.

&F

Firmware. Preleva il profilo di configurazione preimpostato dal fabbricante della ROM (praticamente una reinizializzazione del modem).

&L0

Line. Linea commutata.

&L1

Linea dedicata.

&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.

Registri principali

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 è 2.

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 2 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 è 6, pari 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. Il valore predefinito è 7, pari 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 di questa pausa. Il valore predefinito si aggira tra i 50 e i 100 millisecondi. La scelta della durata della pausa dipende dalle capacità della propria centrale, e 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, pari a un secondo.

Indicatori luminosi dei modem esterni

MR Modem Ready. Quando l'indicatore è acceso, il modem è alimentato elettricamente.

HS High Speed. Quando l'indicatore è acceso, il modem opera a una velocità maggiore o uguale a 2400bps.

AA Auto Answer. Quando l'indicatore è acceso, il modem è configurato per rispondere alle chiamate.

CD Carrier Detect. Quando l'indicatore è acceso, il modem sta ricevendo, dal modem remoto, un segnale di portante valido.

OH Off Hook. Quando l'indicatore è acceso, il modem sta utilizzando la linea telefonica.

SD Send Data. Quando l'indicatore è acceso, il modem sta trasmettendo dati (ovvero sta ricevuto dati dal computer, o da altra unità, da trasmettere nella linea).

RD Receive Data. Quando l'indicatore è acceso, il modem sta ricevendo dati (ovvero sta inviando i dati ricevuti dalla linea, verso il computer, o altra unità).

TR Terminal Ready. Di solito viene utilizzato per visualizzare la condizione del segnale DTR (Data Terminal Ready).

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.


codice numerico codice verbale descrizione
0 OK Comando eseguito senza errori
1 CONNECT Connessione stabilita (a 300bps)
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 1200bps
6 NO DIALTONE Assenza del tono di chiamata
7 BUSY Rilevamento del segnale di occupato
8 NO ANSWER
9 CONNECT 2400 Connessione stabilita a 2400bps
Codici di risposta standard dei modem.

61.5 File di dispositivo e link

I file di dispositivo relativi alle porte seriali di Linux hanno due tipi di nome: /dev/cua* per le chiamate in uscita e /dev/ttyS* per le chiamate in arrivo. Dal momento che, almeno in teoria, è possibile gestire un massimo di 32 porte, i numeri utilizzati vanno da 0 a 31.

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

ls -l /dev/cua[0-1] /dev/ttyS[0-1]
crw-rw----   1 root     uucp       5,  64 Apr  1 08:31 /dev/cua0
crw-rw----   1 root     uucp       5,  65 Jul 17  1994 /dev/cua1
crw-rw----   1 root     tty        4,  64 Jul 17  1994 /dev/ttyS0
crw-rw----   1 root     tty        4,  65 Jul 17  1994 /dev/ttyS1

Per esempio, se si vuole rendere disponibile l'utilizzo da parte di tutti del modem connesso alla seconda porta seriale, per le connessioni a un altro sistema, o per l'uso come fax, occorrerà agire come segue.

chmod a+rw /dev/cua1

ls -l /dev/cua[0-1] /dev/ttyS[0-1]
crw-rw----   1 root     uucp       5,  64 Apr  1 08:31 /dev/cua0
crw-rw-rw-   1 root     uucp       5,  65 Jul 17  1994 /dev/cua1
crw-rw----   1 root     tty        4,  64 Jul 17  1994 /dev/ttyS0
crw-rw----   1 root     tty        4,  65 Jul 17  1994 /dev/ttyS1

Quando si utilizza il modem, sarebbe opportuno controllare che il link simbolico /dev/modem punti al file di dispositivo corrispondente alla porta seriale a cui è effettivamente connesso il modem stesso. Così facendo, se i programmi che lo utilizzano fanno riferimento a questo link, non occorre più cambiare la loro configurazione quando si sposta il modem: basta cambiare il contenuto del link.

lrwxrwxrwx   1 root     root            4 Mar  8 16:41 /dev/modem -> cua1

61.6 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 imposti istantaneamente il modem secondo la proprie necessità. Oltre a queste esigenze, attraverso questo tipo di programma si può effettuare una connessione fittizia al proprio ISP (Internet Service Provider) in modo da conoscere precisamente la procedura di connessione e da poter realizzare uno script adeguato.

Utilizzo sommario di minicom

Prima di poter utilizzare minicom occorre copiare il file /var/lib/minicom/minrc.dfl nella directory /etc e lì, eventualmente, modificarne il contenuto. Oltre a questo occorre aggiungere all'interno del file /var/lib/minicom/minicom.users i nomi degli utenti abilitati al suo utilizzo. Per avviarlo è sufficiente il nome senza argomenti.

minicom

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


ERROR
AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
OK
AT&V
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

Utilizzo sommario di seyon

sayon è un programma di emulazione di terminale che utilizza l'interfaccia grafica X Window System. Se si utilizza il link /dev/modem per riferirsi alla porta seriale alla quale è connesso il modem si può avviare seyon nel modo seguente.

$ seyon -modems /dev/modem


Avvio del programma di comunicazione seyon.

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


Configurazione della velocità massima di comunicazione attraverso il pannello di comando di seyon.

Quello che segue è un esempio di connessione attraverso comandi scritti direttamente senza l'aiuto del programma di comunicazione.


Esempio di connessione con seyon.

 

1997.10.26 - Scritto da Daniele Giacomini   daniele@calion.com   (vedi copyright: Appunti Linux).


Capitolo successivo Capitolo precedente Indice