Ci si dovrebbe assicurare che il proprio modem sia impostato
correttamente e conoscere a quale porta seriale è connesso.
Si ricorda:
- DOS com1: = Linux /dev/cua0 (e /dev/ttyS0)
- DOS com2: = Linux /dev/cua1 (e /dev/ttyS1)
eccetera
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.
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.
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.
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:
- Controllo di flusso hardware (RTS/CTS) (&K3 in
molti modem Hayes)
Altre impostazioni (in comandi standard Hayes) che si dovrebbero
controllare sono:
- E1 Echo ON (richiesto per il funzionamento di chat)
- Q0 Report result codes (richiesto per il funzionamento di chat)
- S0=0 Auto Answer OFF (a meno che non si voglia che il proprio
modem risponda al telefono)
- &C1 Carrier Detect ON solo dopo la connessione
- &S0 Data Set Ready (DSR) sempre ON
- (forse) Data Terminal Ready
Esiste un sito che offre le impostazioni per un modem per una varietà
in continua crescita di costruttori e modelli di modem a http://www.in.net/info/modems/index.htmlModem 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 permette 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).
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:
- Usando segnali hardware (Clear To Send/Request to Send - CTS/RTS)
- Usando segnali software (control S e control Q, noti anche come
XON/XOFF).
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.
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:
- alcuni server sono abbastanza intelligenti: si può fare il login
usando nome/password in modo testo oppure usando PAP. Quindi se il
proprio ISP o server aziendale usa PAP ma non si vede la spazzatura
partire immediatamente, ciò non vuol dire che si è fatto qualcosa in
modo errato;
- alcuni server richiedono che inizialmente si immetta un po' di
testo e poi avviano una sequanza PAP standard;
- alcuni server PPP sono passivi, ovvero stanno lì semplicemente
non spedendo niente finché il client che sta facendo il dialing non
gli spedisce un pacchetto lcp valido. Se il server PPP a cui ci si sta
connettendo opera in modo passivo, non si vedrà mai la spazzatura!
- alcuni server non avviano il PPP finché non si preme ENTER,
quindi non è una cattiva idea provare a farlo se ci si è connessi
correttamente ma non si vede la spazzatura!
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:
- il prompt che richiede di inserire il proprio nome utente;
- il prompt che richiede di inserire la propria password.
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}
(NdT: è 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 configurato 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.