Avanti Indietro Indice

9. Configurare il proprio modem e la porta seriale

Ci si dovrebbe assicurare che il proprio modem sia impostato correttamente e conoscere a quale porta seriale è connesso.

Si ricorda:

Non è male ricordare che se si hanno 4 porte seriali, la configurazione predefinita dei PC è di avere la com1 e la com3 che condividono IRQ4 e la com2 e la com4 che condividono IRQ3.

Se si hanno dispositivi su una porta seriale standard che condivide un IRQ con il proprio modem, probabilmente si avranno dei problemi. Ci si deve assicurare che la porta seriale a cui è connesso il modem abbia un IRQ di sua proprietà e non condiviso. Molte schede seriali moderne (e le porte seriali sulle schede madri di buona qualità) permettono di spostare l'IRQ delle porte seriali.

Se si usa un kernel versione 2 di Linux, si possono vedere quali IRQ sono in uso con cat /proc/interrupts, che produrrà un output simile a:


 0:    6766283   timer
 1:      91545   keyboard
 2:          0   cascade
 4:     156944 + serial
 7:     101764   WD8013
10:     134365 + BusLogic BT-958
13:          1   math error
15:    3671702 + serial

Qui è mostrata una porta seriale sull'IRQ4 (un mouse) ed una porta seriale sull'IRQ15 (la connessione PPP permanente via modem ad Internet). Ci sono anche le porte seriali com2 su IRQ3, e la com4 su IRQ14, ma non sono utilizzate e perciò non vengono mostrate.

Attenzione - bisogna sapere quello che si fa quando si gioca con gli IRQ! Non solo si deve aprire il proprio computer, tirare fuori le schede e giocare con i jumper, ma si deve pure sapere cosa c'è su un determinato IRQ. Nel mio caso ho un PC totalmente basato su SCSI. e così ho disabilitato l'interfaccia IDE sulla scheda madre che normalmente usano gli IRQ14 e 15!

Si dovrebbe tener presente che se il proprio PC si avvia anche con altri sistemi operativi, lo spostamento degli IRQ può far sì che tali sistemi operativi non si avviino correttamente, o che non si avviino affatto.

Se si spostano le porte seriali su IRQ non standard, allora bisogna dire a Linux qual è IRQ che ogni porta usa. Ciò è fatto usando setserial ed è meglio farlo durante la sequenza di avvio del sistema in rc.local o rc.serial che viene chiamato da rc.local oppure come parte dell'inizializzazione SysV. Per la macchina descritta in precendenza, i comandi usati sono:


/bin/setserial -b /dev/ttyS2 IRQ 11
/bin/setserial -b /dev/ttyS3 IRQ 15

Comunque, se si usa il modulo per le seriali e lo si fa caricare dinamicamente quando necessario da kerneld, non si possono impostare gli IRQ ed il resto e poi dimenticarsene una volta avviato il sistema, in quando se il modulo viene scaricato, Linux si dimentica delle impostazioni speciali.

Quindi, se si fa caricare su richiesta il modulo per le seriali, bisogna riconfigurare gli IRQ ed il resto ogni volta che viene caricato il modulo.

9.1 Una nota sulle porte seriali e le loro velocità

Se si usa un modem (esterno) ad alta velocità (14,400 Baud o superiore), la propria porta seriale dev'essere in grado di gestire il flusso di dati che un tale modem è in grado di produrre, in particolare quando il modem comprime i dati.

Ciò richiede che la propria porta seriale usi un UART (Universal Asynchronous Receiver Transmitter - Ricevitore/Trasmettitore Asincrono Universale) moderno come un 16550(A). Se si usa una vecchia macchina (o una vecchia scheda seriale), è abbastanza probabile che la propria porta seriale abbia solamente un UART 8250, che può causere considerevoli problemi quando utilizzata con un modem ad alta velocità.

Si usi il comando

setserial -a /dev/ttySx

per far sì che Linux dica il tipo di UART in proprio possesso. Se non si ha una UART del tipo 16550A, si investa un po' di soldi in una nuova scheda seriale (disponibile a meno di $50). Una volta comperata, ci si assicuri di poterne spostare gli IRQ!

Nota: la prima versione del chip UART 16550 ha un errore. Questo è stato scoperto quasi subito ed è stata rilasciata una revisione del chip - l'UART 16550A. Comunque circolano un numero relativamente basso di chip fallati. Non è facile incappare in uno di questi, ma comunque, almeno per le schede abbastanza pregiate, si dovrebbe ottenere una risposta al comando precedente che dice 16550A.

9.2 Nomi delle Porte Seriali

Storicamente, Linux usava i device cuaX per le chiamate in uscita (dial out) e i device ttySx per quelle in ingresso (dial in).

La porzione del kernel che richiedeva ciò è stata cambiata nella versione 2.0.x del kernel e si dovrebbero usare i ttySx sia per il dial in che per il dial out. Da quel che ho capito i device cuaX potrebbero benissimo scomparire in una versione futura del kernel.

9.3 Configurare il proprio modem

Per usare PPP bisogna configurare correttamente il proprio modem - per far ciò SI LEGGA IL MANULE DEL PROPRIO MODEM! La maggior parte dei modem hanno delle impostazioni predefinite dal costruttore che selezionano le opzioni richieste per il PPP. La configurazione minima richiede:

Altre impostazioni (in comandi standard Hayes) che si dovrebbero controllare sono:

Esiste un sito che offre le impostazioni per un modem per una varietà in continua crescita di costruttori e modelli di modem a Modem setup information che può tornare utile in questa operazione.

Non è male neppure investigare sul funzionamento dell'interfaccia seriale del modem usata per connetterlo al proprio computer. La maggior parte dei modem permettono di far funzionare tale interfaccia a velocità FISSA, mentre lasciano all'interfaccia con la linea telefonica la possibilità di variare la sua velocità in modo da usare quella più alta che sia lei che la corrispondente nel modem remoto riescono a gestire.

Ciò è noto come funzionamento "split speed". Se il proprio modem lo supporta, si blocchi l'interfaccia seriale del modem alla velocità più alta disponibile (generalmente 115200 baud ma più probabilmente 38400 baud per i modem a 14400).

Si usi il proprio software di comunicazione (p.es. minicom o seyon) per scovare la configurazione del proprio modem e per impostare quanto richiesto per il PPP. Molti modem ritornano le loro impostazioni correnti in risposta a AT&V, ma si consulti comunque il manuale del proprio modem.

Se si fa un casotto con le impostazioni, si può ritornare alle impostazioni sane (solitamente) dando il comando AT&F che riporta il modem alle impostazioni del costruttore (comunque per la maggior parte dei modem che ho incontrato, le impostazioni di fabbrica includono tutto quello che serve per il PPP - ma si dovrebbe comunque controllare)

Una volta scoperta la stringa di configurazione richiesta dal modem, la si annoti da qualche parte. Ora ci sono due possibilità: si possono immagazzinare queste impostazioni nella memoria non volatile del modem in modo da poter essere richiamate con un apposito comando AT, oppure si può passare le impostazioni corrette al modem come parte del processo di composizione del numero.

Se si usa il proprio modem solamente da Linux per chiamare il proprio ISP o server aziendale, la cosa più semplice sarà salvare la propria configurazione del modem nella RAM non volatile.

Se d'altra parte, il proprio modem è usato da altre applicazioni e sistemi operativi, è più sicuro passare le informazioni al modem ogni volta che viene fatta la chiamata cosicché è garantito che il modem è sempre nello stato corretto per la chiamata (ciò ha pure il vantaggio aggiuntivo di registrare la stringa di configurazione del modem nel caso il modem perda il contenuto della NV-RAM, che può sempre succedere).

9.4 Note sul Controllo del Flusso Seriale

Quando i dati viaggiano su linee di comunicazione seriale, può capitare che i dati arrivino più velocemente di quanto il computer possa gestire (il computer potrebbe essere occupato a fare qualcos'altro - si ricordi che Linux è un sistema operativo multi-utente e multi-processo). Per poter assicurare che i dati non vengano persi (ovvero che i dati non superino la capacità del buffer d'ingresso e quindi vengano persi), sono necessari alcuni metodi per controllare il flusso di dati.

Nelle linee seriali ci sono due modi per farlo:

Mentre l'ultimo può andare bene per la connessione di un terminale (testo), i dati in un collegamento PPP usano tutti gli 8 bit ed è abbastanza probabile che da qualche parte nei dati ci siano dei byte di dati che corrispondono a control S e control Q. Quindi, se il modem è impostato per il controllo di flusso software, le cose possono rapidamente andare in sfacelo!

Per le connessioni ad alta velocità che usano PPP (che usa dati a 8 bit) il controllo di flusso hardware è vitale ed è per questa ragione che si deve usare questo tipo di controllo di flusso.

9.5 Verificare il proprio modem per la connessione

Ora che si è configurato il proprio modem e la porta seriale, è una buona idea assicurarsi che queste impostazioni facciano realmente il loro lavoro, chiamando il proprio ISP e verificando di potersi connettere.

Usando un pacchetto di comunicazione (come minicom), si imposti la inizializzazione richiesta per il PPP e per chiamare il server PPP al quale ci si vuole connettere in una sessione PPP.

(Nota: a questo punto NON stiamo provando a fare una connessione PPP, ma solo verificando di avere il numero di telefono giusto e di scoprire esattamente cosa il server ci risponde per poter poi fare il login ed avviare il PPP).

Durante questo processo, si catturi (registrandolo su un file) l'intero processo di login oppure si annoti accuratamente (molto accuratamente) esattamente quello che il server risponde per far capire che è il momento di inserire il proprio nome utente e la propria password (e qualsiasi altro comando necessario per stabilire una connessione PPP).

Se il proprio server usa PAP, non si dovrebbe vedere una richiesta di login, ma sul proprio schermo si dovrebbe invece vedere la rappresentazione in modo testo del protocollo di controllo della connessione (che assomiglia tanto a della spazzatura).

Qualche avvertenza:

Non è male connettersi almeno un paio di volte - alcuni server cambiano i loro prompt (p.es. con il passare del tempo!) ogni volta che ci si connette. I due prompt critici che la propria macchina Linux ha necessità di identificare ogni volta che si fa la connessione sono:

Se si deve lanciare un comando per avviare il PPP nel server, è necessario trovare anche il prompt che il server dà una volta che ci è loggati per dire che ora è possibile inserire il comando per lanciare il PPP.

Se il proprio server, una volta loggati, lancia automaticamente il PPP si inizierà a vedere un po' di spazzatura sullo schermo - queste sono le informazioni che il server sta spedendo per avviare e configurare la connessione PPP.

Dovrebbero essere qualcosa di questo tipo:


~y}#.!}!}!} }8}!}$}%U}"}&} } } } }%}& ...}'}"}(}"} .~~y}

(N.d.T.: è questa la "spazzatura" a cui si faceva e si farà riferimento.)

Su alcuni sistemi il PPP deve essere esplicitamente avviato sul server. Questo di solito è perché il server è stato configurate per permettere sia il login in PPP che il login con una shell usando la stessa coppia nome utente/password. Se questo è il proprio caso, si inserisca il comando una volta effettuato il login. Anche in questo caso, si vedrà della spazzatura non appena viene avviato il lato server della connessione PPP.

Se non si vede la spazzatura immediatamente dopo la connessione (e nemmeno dopo il login e l'avvio manuale del server PPP, se richiesti) si prema Enter per vedere se almeno questo avvia il server PPP...

A questo punto, si può "riattaccare" (N.d.T.: nel senso della cornetta del telefono) il proprio modem (solitamente, battendo velocemente +++ e poi dando il comando ATHO una volta che il modem ha risposto con OK).

Se non si riesce a far andare il proprio modem, si legga il suo manuale, le pagine man del software di comunicazione e il Serial HOWTO! Una volta fatto questo, si rifaccia (per bene) quanto spiegato in precedenza.


Avanti Indietro Indice