The Linux Modem-HOWTO
 David S.Lawyer
  <mailto:[email protected]>
 v0.10, Maggio 2000

 Aiuto per selezionare, connettere, configurare, risolvere problemi e
 comprendere i modem in un PC. Vedere il Serial-HOWTO per dispositivi
 seriali multiporta.

 1.  Introduzione

 1.1.  Modem DSL, cable e ISDN in altri HOWTO

 Questo documento riguarda i modem convenzionali per PC, principalmente
 modem per il bus ISA. In ogni caso, ad ogni nuova versione sono
 aggiunte nuove informazioni sui modem per il bus PCI.

 �  modem DSL: vedere il mini-howto ADSL

 �  Cable-Modems-HOWTO (un tempo un mini-Howto di LDP)
    <http://www.cs.unm.edu/~vuksan/linux/Cable-Modem.html>

 �  ISDN Howto (non � un HOWTO di LDP)
    <http://sdb.suse.de/sdb/en/html/isdn.html>: driver per "Modem"
    ISDN. La maggior parte delle informazioni correlate sono in
    tedesco. Per un tutorial su ISDN vedere
    <http://public.swbell.net/ISDN/overview.html>.

 Vedere anche ``Appendice D:  Altri tipi di Modem''


 1.2.  Non compresi: modem PCMCIA, PPP

 Per i modem sul bus PCMCIA vedere il PCMCIA-HOWTO: dispositivi PCMCIA
 seriali e modem. Questo HOWTO non tratta PPP (usato per connettersi ad
 Internet via modem) o programmi di comunicazione. Mostra per� come
 usare programmi di comunicazione per verificare che il vostro modem
 funzioni bene e possa eseguire delle chiamate telefoniche. Se volete
 usare un modem per connettervi ad Internet allora dovete impostare
 PPP. C'� parecchia documentazione per PPP (incluso un PPP-HOWTO) ma
 potrebbe essere obsoleta o non applicabile alla vostra situazione.
 Parte di questa potrebbe essere trovata in /usr/doc/ppp o simile.


 1.3.  Copyright, liberatoria, marchi registrati e crediti

 1.3.1.  Copyright (in lingua originale)

 Copyright (c) 1998-2000 di David S. Lawyer  <mailto:[email protected]>
 Please freely copy and distribute (sell or give away) this document in
 any format.  Forward any corrections and comments to the document
 maintainer.  You may create a derivative work and distribute it
 provided that you:


 1. Send your derivative work (in the most suitable format such as
    sgml) to the LDP (Linux Documentation Project) or the like for
    posting on the Internet.  If not the LDP, then let the LDP know
    where it is available.  Except for a translation, send a copy to
    the previous maintainer's url as shown in the latest version.

 2. License the derivative work in the spirit of this license or use
    GPL.  Include a copyright notice and at least a pointer to the
    license used.


 3. Give due credit to previous authors and major contributors.

    Se state considerando l'idea di derivare da questo un lavoro
    diverso da una traduzione, Vi � richiesto di discutere i vostri
    piani con l'attuale revisore(?)


 1.3.2.  Liberatoria


 Sebbene non ho l'intenzione di mettervi fuori strada, probabilmente ci
 sono parecchi errori in questo documento.  Vi invito a farmeli notare.
 poich� questa � documentazione libera, dovrebbe essere ovvio che io
 non posso essere ritenuto legalmente responsabile per qualsiasi
 errore.



 1.3.3.  Marchi registrati

 Qualsiasi nome di marca (che inizia con lettera maiuscola) dovrebbe
 essere considerato come marchio registrato. Detti marchi registrati
 appartengono ai rispettivi proprietari.

 "Hayes" � un marchio registrato dalla Microcomputer Products Inc.  Uso
 "winmodem" per indicare qualsiasi modem che richiede MS-Windows e non
 nel senso di un marchio.


 1.3.4.  Crediti


 Quanto segue � solamente una rozza approssimazione di come � stata
 creato (fino al 2000) questo documento: circa 1/4 del materiale qui
 presente � stato preso tale quale dal Serial HOWTO versione 1.11 di
 Greg Hankins  <mailto:[email protected]> (con il suo permesso).
 Circa un altro quarto � stato preso sempre dal Serial HOWTO e
 revisionato.  La restante met� � stata creata ex-novo dall'autore
 David S. Lawyer  <mailto:[email protected]>.


 1.4.  Contattare l'autore

 Per favore non mandatemi e-mail chiedendomi quale modem acquistare o
 se un certo modem funzioner� sotto Linux. Cercate nella vasta lista in
 ``Evitare: Software (interni) Modem''. Inoltre, per favore non
 chiedetemi come configurare un modem a meno che abbiate gi� scorso
 questo HOWTO e non ci siate ancora riusciti.

 Per favore fatemi sapere circa qualsiasi errore in fatti, opinioni,
 logica, grammatica, chiarezza, link, ecc. Ma per prima cosa, se la
 data � pi� vecchia di un mese, controllate di avere l'ultima versione.
 Per cortesia inviatemi qualsiasi altra informazione che pensate possa
 appartenere a questo documento.


 1.5.  Nuove versioni di questo HOWTO

 Nuove versioni del Modem-HOWTO escono ogni mese o quasi visto che la
 situazione dei modem va rapidamente cambiando (e visto che sto ancora
 imparando).  I vostri problemi potrebbero essere risolti nell'ultima
 versione. Sar� disponibile da consultare e/o scaricare nei siti mirror
 di LDP. Per una lista di tali siti vedere
 <http://sunsite.unc.edu/LDP/mirrors.html>.  Se volete solo controllare
 velocemente la data dell'ultima versione andate a
 <http://metalab.unc.edu/LDP/HOWTO/Modem-HOWTO.html> e confrontatelo
 con la versione che state attualmente leggendo: v0.10, Maggio 2000.


 1.6.  Novit� in questa versione

 Modem-Sharing (condivisione di modem) mini-howto, modem digitali,
 modem Newcom, in pi� "no response to AT" (nessuna risposta ad AT) e
 "can't find modem" (non posso trovare il modem).


 1.7.  Cos'� un modem ?

 Un modem � un dispositivo che consente di inviare segnali digitali
 attraverso una normale linea telefonica non predisposta per segnali
 digitali.  Se le linee telefoniche fossero tutte digitali un modem non
 sarebbe necessario. Esso consente al proprio computer di connettersi e
 comunicare con il resto del mondo. Quando si usa un modem, in genere
 si usa un programma di comunicazione, un browser web (che include un
 programma di comunicazione) per utilizzare il modem ed immettersi
 nella linea telefonica. Utenti esperti possono fare in modo che altri
 utenti siano in grado di connettersi tramite linea telefonica al loro
 computer ed usarlo. Questa procedura si chiama "dial-in".

 Ci sono due tipi principali di modem per un PC: esterni ed interni.

 Quelli esterni si collocano all'esterno del PC mentre quelli interni
 sono inseriti all'interno e non si vedono. I modem esterni si
 collegano al PC tramite una "porta seriale" situata nel retro del PC.
 Il modem interno � una scheda che si inserisce dentro al computer ed
 ha una "invisibile" porta seriale incorporata. Per un confronto pi�
 dettagliato vedere ``Esterno contro Interno''.  Quindi quando si
 dispone di un modem interno, si dispone anche di una porta seriale
 dedicata (detta porta pu� quindi essere usata solo con il modem e non
 con qualsiasi altro dispositivo tipo un altro modem od una stampante).
 In Linux, le porte seriali sono chiamate ttyS0, ttyS1, etc. (e
 corrispondono in genere rispettivamente a COM1, COM2, etc. in
 Dos/Windows).

 Non si deve confondere la porta seriale con l'"Universal Serial Bus"
 (USB) che usa uno speciale connettore modulare e potrebbe essere usato
 con i modem in futuro. Vedere ``Modem e Porte seriali: Nozioni di
 base'' per ulteriori dettagli sui modem e le porte seriali.

 I modem spesso includono la capacit� di inviare fax (Fax Modem).
 Vedere ``Fax'' per una lista di software per i fax. I "Voice" modem
 possono funzionare come una segreteria telefonica e gestire voicemail.
 Vedere ``Voicemail''.



 1.8.  Installazione rapida

 1.8.1.  Installazione di modem esterni

 Con un cavo passante o modem, connettere il modem ad una porta seriale
 del PC. Assicurarsi di conoscere il nome della porta seriale: nella
 maggior parte dei casi COM1 � ttyS0, COM2 � ttyS1 ecc.  Potrebbe
 essere necessario consultare il men� delle impostazioni del BIOS per
 determinarlo. Collegare il cavo di alimentazione per dare corrente al
 modem.  Vedere ``Per tutti i modem'' per successive istruzioni.


 1.8.2.  Modem interni (su bus ISA )

 (Per il bus PCI vedere ``Supporto al bus PCI in fase di
 completamento'' e ``Modem PCI''.)  Se il modem dice che funzioner�
 solo sotto MS Windows, siete sfortunati.  Se avete gi� due porte
 seriali, rendete il modem quale terza porta seriale (ttyS2 = COM3).
 Cercare un numero di IRQ libero da usare. Nel passato IRQ5 era spesso
 non usato ma oggi IRQ 5 � usato anche dalle schede audio.  Poi
 impostare i ponticelli ("jumper") (o simili) del modem interno all'IRQ
 libero e ad un indirizzo di IO tipo 3E8 (ttyS2).

 "O simili" (nella frase precedente) pu� essere un poco pi� difficile.
 Se il modem ha un Plug and Play (PNP) per il bus ISA, possiamo ovviare
 usando il programma "isapnp" che � incluso negli "isapnptools". Vedere
 "man isapnp" o la FAQ per esso.  Vedere anche "Plug-and-play HOWTO".
 Con un BIOS PnP, dovreste essere in grado di dire al men� di
 impostazione del CMOS che non avete un sistema operativo PNP e
 successivamente il BIOS potrebbe impostare un corretto IRQ e indirizzo
 di I/O nella scheda del modem. Se volete "forzare" il BIOS in modo che
 imposti un determinato IRQ e/o indirizzo IO, allora dovreste essere in
 grado di farlo usando Windows9x sullo stesso PC. Potrebbe impostare
 gli indirizzi nella memoria flash del BIOS PnP dove potranno essere
 usati per la configurazione con Linux cos� come con Windows.
 Consultate il "Plug-and-play HOWTO" e cercate "forced" (forzato), che
 ricorre in diversi punti. Per Windows3.x potreste fare la stessa cosa
 usando ICU sotto Windows 3.x. Potrebbe anche esserci il modo di
 disabilitare il PnP usando il software (sotto Windows) fornito con il
 modem.


 Infine si deve anche cercare il file dove viene lanciato "setserial"
 ed aggiungere una riga che potrebbe essere qualcosa come: "setserial
 /dev/ttyS2 irq5".  Eccetto che per setserial v2.15 e successivi
 potreste (se la vostra distribuzione ve lo consente) semplicemente
 lanciare "setserial" da riga di comando ed il risultato sar� salvato
 in un file di configurazione. Vedere ``Cos'� setserial'' per maggiori
 informazioni. Vedere la successiva sottosezione ``Per tutti i Modem''
 per ulteriori istruzioni per una veloce installazione


 1.8.3.  Per tutti i modem

 Collegare il modem alla linea telefonica. Poi lanciare un programma di
 comunicazione tipo minicom ed aprire il menu di configurazione per la
 porta seriale. Assegnare una velocit� di trasmissione (baud rate)
 alcune volte maggiore del bit rate del proprio modem. Vedere ``Tabella
 delle velocit�'' per la velocit� ideale da usare. Fornire il nome
 completo della porta seriale tipo /dev/ttyS1.  Impostare il controllo
 di flusso hardware (RTS/CTS). Ora occorre salvare le impostazioni ed
 uscire da minicom. Poi rilanciare minicom, digitare AT per vedere se
 il vostro modem � l� e risponde con OK. Poi portarsi nell'elenco dei
 numeri da selezionare (dial directory) (o menu) e comporre un numero.


 2.  Modem per un PC con Linux

 2.1.  Esterni contro Interni

 Un modem per un PC pu� essere sia interno che esterno. Quello interno
 � installato all'interno del vostro PC (dovete rimuovere viti etc, per
 installarlo) e quello esterno si collega semplicemente ad un
 connettore di porta seriale sul PC. I modem interni sono meno costosi,
 � meno probabile che subiscano perdite di dati a causa del
 sovraccarico del buffer, in genere consumano meno elettricit�, e non
 occupano spazio sulla vostra scrivania.

 I modem esterni sono molto pi� semplici da installare e richiedono
 minore configurazione. Hanno delle luci che possono fornire un indizio
 circa quello che sta accadendo, ed aiutare a risolvere i problemi.
 Anche il fatto che la porta seriale ed il modem possano essere
 fisicamente separati aiuta nella risoluzione di problemi. I modem
 esterni sono facilmente spostabili su un altro computer.

 Sfortunatamente la maggior parte dei modem esterni non hanno degli
 interruttori per spegnere l'alimentazione di corrente e probabilmente
 consumano un poco di corrente anche quando sono spenti (a meno di
 staccare la spina dal muro). Ogni watt che usano vi costa circa $1 per
 anno. Un altro possibile svantaggio di un modem esterno � che sarete
 forzati ad usare una porta seriale esistente che potrebbe anche non
 supportare una velocit� di oltre 115.200k (sebbene fino al tardo 1998
 anche la maggior parte dei modem interni non la supportavano -ma
 alcuni s�). Se un nuovo modem interno avesse una UART 16550 potrebbe
 mettere meno carico sulla CPU (ma quasi nessuno lo fa al tardo 1998).

 I modem interni presentano un particolare problema per Linux, ma
 funzioneranno bene come i modem esterni a patto che voi evitiate
 quell'alta percentuale di essi che funzionano solo sotto MS Windows,
 ed anche a patto che spendiate un poco di tempo (a volte molto tempo)
 per configurarli correttamente.  Alcuni dei modem che funzionano solo
 sotto MS Windows sono, sfortunatamente, non espressamente descritti
 come tali. Se ne comprate uno nuovo, assicuratevi di poterlo rendere e
 che possiate essere rimborsati se non funzioner� sotto Linux.

 Visto che la maggior parte dei nuovi modem sono plug-and-play avete
 diversi modi per gestirli:

 �  Usare il programma "isapnp"

 �  Lasciare che la configurazione venga fatta dal BIOS PnP

 �  Modificare il kernel per creare un Linux PnP (attualmente non
    disponibile)

    Ciascuno dei metodi sopracitati ha degli svantaggi. La
    documentazione di isapnp � difficile da comprendere sebbene leggere
    il Plug-and-Play HOWTO (allo stato attuale incompleto) aiuti a
    comprendere. Se volete che sia il BIOS PnP ad eseguire la
    configurazione, tutto quello che dovete fare � assicurarvi che esso
    sappia che non avete un sistema operativo PnP. Ma potrebbe non
    eseguirla correttamente. Per scoprire quello che � stato fatto
    vedere ``Cos'� impostato nell'hardware della mia porta  seriale?''.
    Modificare il kernel ha funzionato in passato, ma nessuna modifica
    sembra attualmente disponibile. Controllate il sito web per questo.

 Ci sono molti utenti di Linux che dicono che � molto pi� semplice
 prendere un modem esterno e collegarlo.  Ma visto che le nuove
 periferiche oggi sono per la maggior parte PnP, potreste aver bisogno
 di gestirle, cos� perch� rimandare l'inevitabile? Comunque la
 soluzione pi� vantaggiosa (e pi� costosa) � quella di un modem esterno
 (se avete una porta seriale libera).


 2.2.  Modem esterni

 2.2.1.  Modem esterni PnP

 Molti modem esterni sono etichettati "Plug and Play" (PnP), ma
 dovrebbero funzionare bene anche come modem non PnP. Visto che in
 genere si collega il modem ad una porta seriale che ha i suoi propri
 numeri di IRQ ed indirizzi di IO, il modem non necessita di capacit�
 PnP per impostarli. Comunque, la porta seriale stessa potrebbe
 necessitare di una configurazione (numero IRQ e indirizzo IO) a meno
 che la configurazione di default vada bene.

 Come pu� un modem esterno essere chiamato PnP visto che non pu� essere
 configurato tramite PnP? B�, esso ha una speciale identificazione PnP
 costruita al suo interno che pu� essere letta (attraverso la porta
 seriale) da un sistema operativo PnP. Sistemi operativi di questo tipo
 dovrebbero quindi sapere che voi avete un modem in una certa porta e
 dovrebbero anche conoscerne il numero di modello. Quindi potreste non
 avere bisogno di configurare i programmi applicativi dicendogli su
 quale porta sia il modem (tipo /dev/ttyS2 o COM3). Ma visto che non
 avete un sistema operativo PnP dovrete configurare il vostro programma
 applicativo manualmente fornendogli l'identificativo del /dev (tipo
 /dev/ttyS2).


 2.2.2.  Connessione ed installazione

 Connettere un modem esterno � facile, confrontato con la connessione
 della maggior parte degli altri disposivi ad una porta seriale che
 richiedono diversi tipi di cavi "null modem". I modem usano cavi
 diretti, senza pin incrociati. La maggior parte dei negozi di computer
 dovrebbero averne. Assicuratevi di avere il corretto genere. Se state
 il vostro computer usa una porta seriale B09 o B25, sar� sempre
 maschio, ovvero il connettore sul cavo dovr� essere femmina. Attaccate
 il vostro modem ad una delle vostre porte seriali. Se vi va bene
 accettare l'IRQ e l'indirizzo IO di default della porta alla quale lo
 state connettendo, dovreste essere pronti per lanciare il vostro
 programma di configurazione e configurare il modem stesso.


 2.2.3.  Cosa significano le luci (LED)


 �  TM Test del Modem

 �  AA (Auto Answer) Autorisposta (se attivata, il vostro modem
    risponder� ad una chiamata in arrivo)

 �  RD  (Receive Data) linea di Ricezione Dati = RxD

 �  SD  (Send Data) linea di invio dati = TxB

 �  TR  (Terminal Ready) terminale pronto = DTR (impostato dal vostro
    PC)

 �  RI  (Ring indicator) indicatore di squillo (se attivo, qualcuno sta
    chiamando il vostro modem)

 �  OH (Off Hook) (se disattivo, il vostro modem ha appeso la
    comunicazione)

 �  MR (Modem Ready) modem pronto = DSR ??

 �  EC  (Error Correction) correzione di errore

 �  DC  (Data Compression) compressione dati

 �  HS  (High Speed) alta velocit� (per questo modem)


 2.3.  Modem interni

 Un modem interno � installato in un PC rimuovendo il coperchio ed
 inserendo la scheda modem in un alloggiamento libero della scheda
 madre. Ci sono modem per alloggiamenti ISA ed altri per quelli PCI.
 Mentre i modem esterni si connettono alla porta seriale (tramite un
 corto cavo), i modem interni hanno la porta seriale costruita
 all'interno del modem. In altre parole, la scheda modem � sia una
 porta seriale che un modem.

 L'impostazione degli indirizzi IO ed IRQ per una porta seriale era un
 tempo effettuata dai "jumper" sulla scheda. Questi piccoli "cubetti"
 neri rettangolari di circa 5x4x2 mm si spingevano sopra i pin della
 scheda. I modem Plug-and-Play (in realt� la parte porta seriale del
 modem) non usano i "jumper" per impostare gli indirizzi, ma invece
 sono configurati inviando comandi di configurazione ad essi (tramite
 lo spazio di indirizzo IO sul bus ISA all'interno del computer). Detti
 comandi di configurazione possono essere inviati da un BIOS PnP, dal
 programma isapnp (solo per il bus ISA) o da un sistema operativo PnP.
 La loro configurazione � parte del sistema operativo Window 95/98.
 Sotto Linux si ha una scelta di modi (nessuno dei quali � sempre
 facile) per configurare gli io-irq.


 1. Usare "isapnp" che potrebbe essere lanciato automaticamente ad ogni
    avvio

 2. Usare un BIOS PnP a s� stante (che viene eseguito ad ogni avvio)

 3. Modificare Linux per renderlo un sistema operativo PnP


 2.4.  Software Modem (interni - la maggior parte winmodem)

 I software modem demandano la maggior parte (o quasi tutto) il lavoro
 del modem al chip del processore principale (CPU) del vostro computer
 (tipo un chip Pentium). Complessi programmi software proprietari
 (driver) svolgono questo compito sulla CPU. Vasta parte dei modem
 interni costruiti dopo la seconda met� del 1998 non funzionano con
 Linux visto che sono software modem che funzionano solo sotto Windows
 e sono spesso chiamati "winmodem". Sebbene alcuni volontari fossero
 disponibili per cercare di scrivere driver Linux per questi modem, le
 specifiche non sono ancora state rese disponibili quindi questo non
 pu� essere fatto. Prima del 2000 circa, nessun software modem poteva
 essere usato con Linux a causa della mancanza di driver per essi sotto
 Linux.

 Poi, finalmente, verso la fine del 1999, sembrava che due software
 modem  potessero funzionare sotto Linux, la Lucent Technologies
 forniva in via non ufficiale un codice binario Linux per supportare i
 suoi software modem PCI, ma  sono stati riportati dei bug nelle prime
 versioni.  PC-TEL introduceva un nuovo software modem per Linux. Ci
 saranno altre ditte che seguiranno questa strada per andare a creare
 dei "linmodem"? Per un elenco di modem che funzionano/non funzionano
 sotto Linux vedere elenco modem
 <http://www.o2.net/~gromitkc/winmodem.html>. Un progetto per far
 funzionare i winmodem sotto Linux si trova in  <http://linmodems.org>
 C'� anche a disposizione una mailing list.  Ci sono altri tentativi in
 corso di reverse-engineering con almeno un'evidenza di un winmodem che
 sia stato fatto funzionare sotto Linux (ma non a piena funzionalit�).
 Cos� mentre state leggendo questo documento potrebbero esserci
 ulteriori linmodem.

 Se viene reso disponibile del codice per far lavorare un "winmodem"
 sotto Linux, allora si potrebbe chiamare "linumodem". � ancora un
 "winmodem"?. Forse s� visto che funziona anche sotto MS Windows.  Il
 termine "Winmodem" � il marchio di fabbrica di un certo tipo di
 "winmodem".

 Ecco un'ulteriore pi� precisa terminologia riguardante i software
 modem. HSP (Host Signal Processor) significa che il processore
 ospitante (il vostro chip CPU) crea il codice necessario per produrre
 il segnale elettrico sulla linea telefonica. Il modem in s� crea
 semplicemente una qualsivoglia onda elettrica che la CPU gli dice di
 creare. Di contro, un modem "controllerless" pu� creare le onde di sua
 iniziativa (ma non pu� controllare il modem). Non contiene
 l'attrezzatura per gestire i byte che sono inviati o ricevuti Non pu�
 comprimere stringhe di byte; non pu� verificare errori; non pu�
 comporre i pacchetti. In altre parole non pu� controllare il modem ma
 invece deve essere la CPU a svolgere tutto questo lavoro usando il
 software. I Rockwell HCF (Host Controlled Family) fanno questo. Se il
 software che fa tutto questo potesse essere portato sotto Linux, dopo
 non ci sarebbe questo problema. A parte quanto sopra, un modem che non
 simula una porta seriale non funzioner� sotto Linux.

 Come determinare se un modem interno funzioner� sotto Linux?  Per
 prima cosa vedete se il nome o la descrizione di esso indica che
 trattasi di software modem: HSP, HCF, HSF, controllerless, host-
 controlled, host-based, e soft-... modem. Se � un software modem
 funzioner� solo nei rari (fino ad ora) casi in cui sia disponibile un
 driver Linux. Se non conoscete il modello del modem ad avete anche
 Windows sul vostro Linux PC, cliccate sull'icona "Modem" del "Pannello
 di Controllo". Poi controllate l'elenco dei modem all'indirizzo web
 citato 4 paragrafi sopra. Se anche questo non funziona (o non �
 possibile fare), potete controllare la confezione (o il manuale) e
 cercare la sezione che dice qualcosa tipo "Minimum System
 Requirements" (Sistema minimo richiesto) o semplicemente "System
 Requirements" (Requisiti di sistema). Potrebbe essere stampato molto
 in piccolo.  Leggete attentamente. Se viene elencato Windows oppure
 una CPU Pentium come uno dei requisiti, allora probabilmente non
 funzioner� sotto Linux.

 Altrimenti potrebbe funzionare sotto Linux se non viene esplicitamente
 indicato che dovete avere Windows. La scritta "designed for Windows"
 (progettato per Windows) potrebbe semplicemente voler dire che
 supporta interamente il plug-and-play Microsoft, il che va bene visto
 che Linux usa le stesse specifiche plug-and-play (ma � pi� difficile
 configurarlo sotto Linux). L'essere "progettato per Windows" quindi
 non d� indizi sul fatto che funzioni o meno sotto Linux. Potreste
 verificare il sito Web del produttore oppure chiedere informazioni
 tramite posta elettronica. Una volta ho visto una pagina web che
 dichiarava specificamente che un modello funzionava sotto Linux
 implicitamente dicendo che un altro modello non funzionava.

 A parte il problema di ottenere un driver, quali sono i pro e i contro
 di un software modem? Visto che il software modem usa la CPU per
 svolgere la maggior parte del suo lavoro, esso richiede meno parti
 elettroniche sulla scheda e quindi costa meno. Allo stesso tempo, la
 CPU � pesantemente impegnata dal modem, quindi il funzionamento
 generale potrebbe rallentare. Questo � particolamente vero se altri
 processi che impegnano la CPU intensamente sono in esecuzione allo
 stesso tempo.  Naturalmente se non state usando il software modem non
 c'� alcun degrado di prestazioni. Vale la pena risparmiare sul prezzo
 per questo inconveniente? In alcuni casi s�, specialmente se il modem
 viene usato raramente o non si hanno in esecuzione altri processi
 impegnativi per la CPU mentre si usa il modem. Questi sono quindi i
 casi in cui l'uso del software modem � economicamente giustificato.
 Quanto risparmiato sul costo del modem potrebbere essere usato per una
 migliore CPU che sar� in grado di velocizzare un poco tutto l'insieme.
 Per� i circuiti elettronici sulla scheda del modem possono svolgere il
 lavoro con pi� efficacia rispetto ad una CPU. Cos� se usate molto il
 modem � probabilmente meglio evitare i software modem (e quindi
 potreste usare una CPU meno potente :-).


 2.5.  Modem PCI

 Una scheda modem PCI � una di quelle che si inseriscono in un
 alloggiamento del bus PCI sulla scheda madre di un PC.
 Sfortunatamente, sembra che la maggior parte dei modem PCI non
 funzioni sotto Linux ma sono in atto dei tentativi di supportare
 alcuni di essi. Vedere ``Supporto del bus PCI in fase di
 completamento''


 2.6.  Quali modem interni potrebbero non funzionare sotto Linux


 �  ``Software Modem (interni)'' funzionano solo nei rari casi dove sia
    disponibile un driver Linux.

 �  ``Modem PCI'' la maggior parte non funziona sotto Linux

 �  ``Modem MWave e DSP'' potrebbero funzionare, ma solo se prima fate
    partire Windows/Dos ogniqualvolta accendete il PC.

 �  I modem con driver ``RPI (Rockwell)'' funzionano ma con prestazioni
    ridotte.


 2.6.1.  Modem MWave e DSP

 Questi modem usano i DSP (Digital Signal Processors) che sono
 programmati tramite algoritmi che devono essere scaricati dall'hard
 disk verso la memoria DSP appena prima di usare il modem.
 Sfortunatamente lo scaricamento viene spesso fatto da programmi
 Dos/Windows cos� la cosa non si pu� fare da Linux. I modem comuni che
 funzionano sotto Linux hanno spesso anche un DSP (e la cosa potrebbe
 essere menzionata nella confezione), ma il programma che lo lancia �
 situato all'interno del modem. Questo non � un modem DSP nel senso
 inteso da questa sezione e dovrebbe funzionare bene sotto Linux. Un
 esempio di modem DSP � l'Aptiva MWave dell'IBM.

 Se un modem DSP simula una porta seriale, allora � usabile da Linux
 che comunica con i modem attraverso la porta seriale. Se avete anche
 Dos/Windows sullo stesso PC potreste essere in grado di usare il
 modem: prima installate i driver sotto DOS (usando i driver DOS e non
 quelli Windows). Poi lanciate  Dos/Windows e caricate il driver per il
 modem in modo da programmare il DSP. Poi senza spegnere il computer,
 passate a Linux.

 Potreste scrivere un file "batch" (a dire il vero uno script) per fare
 questo. Ecco un esempio, ma dovete modificarlo per adattarlo alla
 vostra situazione.




      rem mwave � un file batch fornito dal costruttore del modem
      call c:\mww\dll\mwave start
      rem loadlin.exe � un programma DOS che carica Linux da DOS (Vedere Config-HOWTO).
      c:\linux\loadlin f:\vmlinuz root=/dev/hda3 ro





 Si potrebbe creare un icona sul desktop di Windows che punti a questo
 file batch, quindi impostare la propriet� dell'icona su "Esegui in
 modalit� MSDOS". Poi cliccando su questa icona si imposta il modem,
 quindi si passa a Linux.  Un altro modo possibile per caricare Linux
 dal DOS � premere CTL-ALT-CANC dicendo al sistema operativo di fare un
 reboot (a patto che abbiate impostato le cose in modo che possiate
 caricare direttamente Linux alla ripartenza del PC). Il modem rimane
 sulla stessa porta com (stesso indirizzo IO) che � stato usato sotto
 DOS.


 Il modem Newcom ifx necessita di una piccola modifica al kernel per
 farlo funzionare correttamente visto che la sua simulazione della
 porta seriale non � standard. La modifica ed altre informazioni per
 usare questo modem con Linux si trova in
 <http://maalox.pharmacy.ohio-state.edu/~ejolson/linux/newcom.html>.


 2.6.2.  Driver Rockwell (RPI)

 I modem che richiedono i driver Rockwell RPI (Protocollo di
 Interfaccia Rockwell) possono essere usati con linux anche il software
 driver funziona solo sotto Windows. Questo accade perch� il software
 Windows di cui non si dispone, esegue solo compressione e correzione
 di errori. Se vi va bene usare un modem senza compressione dati e
 correzione errori, allora lo potete usare con Linux. Per fare questo
 dovete disabilitare il RPI inviando al modem (tramite stringa di
 inizializzazione) un comando "disabilita RPI" ogni volta che accendete
 il modem. Sul mio modem il comando � +HO. Non avere a disposizione la
 compressione dati potrebbe non essere poi quel gran svantaggio visto
 che la maggior parte dei grossi file che scaricate da Internet sono
 gi� compressi ed ulteriori tentativi di compressione potrebbero
 tramutarsi in un piccolo rallentamento.


 3.  Modem Pool (Gruppi di modem), Modem digitali

 Un modem pool � un gruppo di modem sulla stessa scheda (come le schede
 modem multiporta) oppure molti modem su di un chassis esterno
 (qualcosa come un modem esterno). I modem possono essere analogici
 simili a quelli usati dai PC di casa o ufficio (non possono inviare a
 56k anche se sono "Modem a 56k"). Potrebbero anche essere "modem
 digitali" che possono inviare dati a 56k. Per 56k in realt� intendo
 tutte le velocit� sopra i 33,6k, visto che i modem a 56k non possono
 avere una vera velocit� di 56k. I modem digitali richiedono una
 connessione digitale alla linea telefonica e non usano alcuna porta
 seriale. Tutti questi modem pools esigono l'installazione di driver
 speciali per loro.


 3.1.  Modem pool analogici, schede modem multiporta

 Essi sono parecchi modem analogici (quelli comuni da casa/ufficio)
 forniti sia su di una scheda plug-in che su di uno chassis esterno.
 Ogni come ha una porta seriale al suo interno.  C'� in genere un
 sistema di condivisione di interrupt o di gestione di interrupt nella
 loro circuteria, quindi parecchio carico viene levato alla CPU. Notate
 che questi modem non sono modem digitali e quindi non saranno capaci
 di usare 56k quando vengono chiamati.

 Ecco un elenco di alcune ditte che costruiscono schede modem
 multiporta. In genere ci sono 8 modem per scheda. Le schede
 sottoelencate funzionano sotto Linux ed i siti web dovrebbero guidarvi
 ad un driver per esse.

 Schede modem multiporta:

 �  MultiModemISI di Multi-Tech Systems.  56K o 33.6K, PCI o ISA, 4 od
    8 porte.  ibridi ISDN/56K.
    <http://www.multitech.com/products/>

 �  RAStel di Moreton Bay Products. 56K PCI o ISA, 4 o 8 porte.  Anche
    2 modem + 2 porte seriali libere (?).
    <http://www.moretonbay.com.au/MBWEB/product/rastel/rastel.htm>

 �  RocketModem di Comtrol.  ISA 33.6K, 4 od 8 porte.
    <http://www.comtrol.com/SALES/SPECS/Rmodem.htm>
 �  AccelePort (RAS Family) di Digi.
    <http:/www.dgii.com/digi.cfm?p=940564.pi.prd.00000046>


 3.2.  Modem digitali

 I modem digitali sono molti diversi da quelli analogici che la maggior
 parte delle persone usano sui propri PC. Esse richiedono una
 connessione digitale alla linea telefonica e non usano porte seriali
 per interfacciarsi al computer. Invece, si interfacciano direttamente
 al PC tramite una scheda speciale (che potrebbe anche contenere il
 modem digitale). Essi sono in grado di inviare a 56k, cosa che i modem
 analogici non sono in grado di fare. Essi rappresentano spesso una
 componente dei "remote access servers" (server di accesso remoto) o
 "digital modem pools" (gruppi di modem digitali).

 I cavi che portano i segnali digitali dalla compagnia telefonica sono
 stati concepiti per alte larghezze di banda cos� che gli stessi cavi
 possono portare diverse chiamate telefoniche. Questo viene fatto
 tramite il "time-division multiplexing". Cos� il primo compito da
 eseguire � quello di separare le chiamate telefoniche ed inviare
 ciascuna di esse al proprio modem digitale. C'� anche il compito da
 svolgere nella direzione opposta combinando tutte le singole chiamate
 in un'unica linea. Questi compiti sono svolti da qualcosa che �
 talvolta chiamata ".. concentrator"

 Il modem digitale trasporta il segnale digitale dalla compagnia
 telefonica e, dopo averlo elaborato, lo mette sul bus del PC
 (presumibilmente inviandolo in un buffer in memoria).  Allo stesso
 modo, gestisce l'invio di segnali digitali nella direzione opposta
 verso una linea telefonica digitale. Quindi esegue solomente una
 conversione digitale a digitale e non tratta dati analogici in alcun
 modo. Quindi non � veramente un modem visto che non modula nessuna
 portante analogica. Quindi il nome modem digitale � improprio ma esso
 svolge un compito che in precedenza spettava ai modem. Cos� alcuni
 modem seriali definiscono se stessi come "digital signal processors"
 (processori di segnale digitale"), "remote access server" (server di
 accesso remoto) ecc. e potrebbero anche non menzionare mai la parola
 "modem". Questa � una terminologia tecnicamente corretta.

 Detti sistemi possono esser un server proprietario a se stante, uno
 chassis che contiene modem digitali che si connettono ad un PC tramite
 una speciale scheda di interfaccia, o semplicemente essere una scheda
 essi stessi. Digi definisce detta scheda un "remote access server
 concentrator adapter" (adattatore per concentratore di server di
 accesso remoto). Una descrizione non completa di quello che serve per
 diventare un ISP (Internet Service Provider) �: Vedere Cosa mi serve
 per essere un ISP?.  an ISP?">. Cyclades promuove i propri prodotti
 quindi � consigliabile fare qualche confronto sui prezzi prima di
 comprare qualsiasi cosa.


 Prima di leggere questo


 4.  Nozioni di base Modem e porte seriali

 Non occorre capire le fondamenta per usare ed installare un modem. Ma
 esserne a conoscenza pu� aiutare a capire cosa c'� che non va quando
 sorgono dei problemi. Dopo avere letto questa sezione, se si vuole
 approfondire, conviene consultare la sezione ``Come funzionano i
 modem'' in questo documento (ancora incompleta). Maggiori dettagli
 sulla porta seriale (inclusa la maggior parte di questa sezione) potr�
 essere trovata in Serial-HOWTO.


 4.1.  Il modem converte da digitale ad analogico (e viceversa)

 La maggior parte delle principali linee telefoniche sono gi� digitali
 ma le linee che portano presso la vostra abitazione (o posto di
 lavoro) sono generalmente analogiche, il che vuol dire che sono state
 predisposte per trasmettere un'onda elettrica che � l'esatta replica
 dell'onda sonora generata dalla vostra voce. Un'onda elettrica di
 questo tipo � chiamata "analogica".  Se vista in un oscilloscopio
 sembra una curva sinusoidale di varia frequenza ed ampiezza.  Un
 segnale digitale assume invece una forma squadrata. Ad esempio 3 v
 (volt) potrebbe essere un bit con valore 1, e 0 v potrebbe
 corrispondere ad un bit di valore 0. Per la maggior parte delle porte
 seriali (usate dai modem esterni) +12 v equivale ad un bit 0, e -12 v
 ad un bit 1 (alcune porte hanno valori di + o - 5 v).

 Per inviare dati dal proprio computer attraverso la linea telefonica,
 il modem acquisisce il segnale digitale dal computer e lo converte in
 "analogico". Lo fa prima creando un'onda sinusoidale analogica, quindi
 "MODulandola". Visto che il risultato rappresenta comunque un dato
 digitale, potrebbe anche chiamarsi segnale digitale invece che
 analogico. Ma assomiglia ad un segnale analogico e quasi tutti lo
 chiamano analogico. Dall'altro capo della linea telefonica un altro
 modem "DEModula" questo segnale recuperando il segnale puro digitale
 originale. Mettete insieme l'inizio delle due parole sopracitate:
 "mod" e "dem" ed ecco l'origine della parola "modem" (ovviamente
 dovete togliere una delle due "d"). Un "modem" � quindi un MODulatore-
 DEModulatore.  Per sapere cos'� la modulazione occorre consultare la
 sezione ``La modulazione in dettaglio''.


 4.2.  Cos'� una porta seriale?

 4.2.1.  Introduzione alla seriale

 La porta seriale � un dispositivo di I/O (Input/Output).


 Visto che i modem hanno una porta seriale frapposta tra loro ed il
 computer, � necessario conoscere la porta seriale cos� come il modem.

 La porta seriale � un dispositivo di IO (Inupt/Output). La maggior
 parte dei PC hanno due porte seriali. Ciascuna ha un connettore a 9
 pin (talvolta a 25 pin) sul retro del computer. I programmi per
 computer possono inviare dati (byte) al pin di trasmissione (output) e
 ricevere dati dal pin di ricezione (input). Gli altri pin servono per
 controlli e per la messa a terra.

 La porta seriale � molto di pi� che un semplice connettore. Essa
 converte i dati da paralleli a seriali e cambia la rappresentazione
 elettrica dei dati.  All'interno del computer, i bit di dati scorrono
 parallelamente (usando diversi cavi allo stesso tempo). Il flusso
 seriale � uno scorrere di dati attraverso un solo cavo (cos� come sul
 pin di trasmissione e ricezione del connettore seriale). Perch� la
 porta seriale possa creare un flusso di questo tipo, deve convertire i
 dati da paralleli (all'interno del PC) a seriali (e viceversa).

 La maggior parte dell'elettronica della porta seriale si trova in un
 chip del computer (o in una sezione di un chip) conosciuto come UART.
 Per maggiori dettagli sugli UART consultare la sezione ``Cosa sono gli
 UART?  In che modo influenzano le prestazioni?''  Ma potreste volere
 prima finire questa sezione, cos� da poter meglio capire come l'UART
 si pone all'interno dello schema globale delle cose.




 4.2.2.  Pin e cavi

 I vecchi PC usavano connettori a 25 pin ma in realt� se ne usano circa
 9, per cui la maggior parte dei connettori attuali sono di soli 9 pin.
 Ognuno dei quali � generalmente connesso ad un cavo. Oltre ai due cavi
 usati per ricevere e trasmettere i dati, un altro pin (cavo) � la
 messa a terra. Il voltaggio di ogni cavo � misurato in relazione al
 cavo di terra. Quindi il numero minimo di cavi da usare per una
 trasmissione bilaterale di dati � 3. � possibile anche fare a meno del
 segnale di terra ma con degradate prestazioni e talvolta con errori.

 Ci sono altri cavi che servono per effettuare solo dei controlli
 (invio di segnali) e non per inviare byte. Tutti questi segnali
 potrebbero essere condivisi da un unico cavo, ma, al contrario, esiste
 un cavo separato dedicato ad ogni tipo di segnale.  Alcuni (o tutti)
 questi cavi di controllo sono chiamati "linee di controllo del modem".
 Questi cavi di controllo sono impostati (on) a +12 volt oppure nello
 stato negativo (off) a -12 v. Uno di questi cavi segnala al computer
 di interrompere l'invio di dati attraverso la porta seriale. Al
 contrario, un altro cavo segnala al dispositivo connesso alla porta
 seriale di interrompere l'invio di dati al computer.  Se il
 dispositivo connesso � un modem, altri cavi possono segnalare al modem
 di appendere la comunicazione o dire al computer che la connessione
 alla linea telefonica � stata effettuata o che il telefono sta
 squillando (cio� qualcuno sta tentando di connettersi). Vedere il
 Serial-HOWTO: Pinout and Signals per ulteriori dettagli


 4.2.3.  Il modem interno contiene una porta seriale

 Per un modem interno non si sono connettori a 9 pin, ma il
 comportamento � quasi esattamente come se i cavi summenzionati
 esistessero. Invece di un segnale a 12 volt attraverso un cavo che
 porta lo stato di una linea di controllo del modem, il modem interno
 usa semplicemente un bit di stato nella propria memoria (un registro)
 per determinare lo stato di questo cavo "virtuale".  La porta seriale
 dei modem interno � vista dal computer proprio come una porta seriale
 reale. Ivi inclusi anche i limiti di velocit� che si possono impostare
 nelle porte seriali ordinarie come ad esempio 115200 bit per secondo.
 Sfortunatamente per Linux molti modem interni attuali non funzionano
 esattamente in questo modo ma invece usano un software (eseguito dalla
 CPU) per svolgere la maggior parte del lavoro del modem.
 Sfortunatamente, questo software � disponibile solo per i sistemi
 operativi MS Windows (non sono stati portati su Linux).  Quindi non
 potete usare la maggior parte di questi modem con Linux. Vedere
 ``Software Modem (interni)''.


 4.3.  Indirizzi IO & IRQ

 Poich� il computer deve comunicare con ciascuna porta seriale, il
 sistema operativo deve sapere che ciascuna porta seriale esiste e dove
 essa si trovi (il suo indirizzo di I/O). Esso deve anche conoscere
 quale cavo (numero di IRQ) deve usare la porta seriale per richiedere
 i servizi della CPU del PC. Quindi ogni dispositivo di porta seriale
 deve immagazzinare nella propria memoria non volatile sia l'indirizzo
 di I/O che il suo Interrupt reQuest Number: IRQ. Vedere ``Interrupt''.
 Il bus PCI non funziona esattamente in questo modo visto che il bus
 PCI ha il suo proprio sistema di interrupt. Ma, visto che il BIOS che
 riconosce il PCI imposta i chip per mappare questi interrupt PCI come
 IRQ, praticamente si comporta proprio come descritto qui sopra ad
 eccezione del fatto che la condivisione degli interrupt � concessa (2
 o pi� dispositivi possono usare lo stesso numero di IRQ).

 Gli indirizzi I/O non sono uguali agli indirizzi di memoria. Quando un
 indirizzo I/O viene immesso nel bus indirizzi (address bus) del
 computer, un altro cavo viene elettrificato.  Questo dice sia alla
 memoria principale di ignorare l'indirizzo, che a tutti i dispositivi
 che hanno indirizzi I/O (come le porte seriali) di controllare
 quell'indirizzo per vedere se combacia con quello del dispositivo. Se
 c'� corrispondenza, allora il dispositivo di I/O legge il dato sul bus
 dati.


 4.4.  Nome: ttyS0, ttyS1, ecc.

 Le porte seriali sono etichettate come ttyS0, ttyS1, ecc.
 (generalmente corrispondenti a COM1, COM2, ecc. in DOS/Windows). La
 directory /dev ha un file speciale per ogni porta. Digitate "ls
 /dev/ttyS*" per vederli. Il fatto che possa esistere (ad esempio) un
 file ttyS3, non significa necessariamente che esista anche una
 corrispondente porta seriale fisica.  Quale di questi nomi (ttyS0,
 ttyS1, ecc.) si riferisca a quale porta seriale viene determinato come
 segue. Il driver seriale (software) mantiene una tabella che mostra
 quale indirizzi I/O corrisponde a quale ttyS. Questa mappatura di nomi
 (tipo ttyS1) riferita a indirizzi I/O (e IRQ) pu� essere sia impostata
 che verificata dal comando "setserial". Vedere ``Cos'� Setserial''.
 Questo non imposta gli indirizzi di IO e di IRQ sull'hardware stesso
 (che � impostato invece dai ponticelli o tramite software plug-and-
 play). Quindi quale porta fisica corrisponda ad esempio a ttyS1
 dipende sia da quello che il driver della seriale pensa (tramite
 setserial) che da quello che � impostato nell'hardware. Se viene fatto
 un errore, la porta fisica potrebbe non corrispondere ad alcun nome
 (tipo ttyS2) e quindi con pu� essere usata. Vedere ``Dispositivi di
 porta seriale /dev/ttyS2, ecc.'' per ulteriori dettagli.


 4.5.  Interrupt

 I byte entrano dalla linea telefonica al modem, sono converiti da
 analogico a digitale dal modem, quindi passati attraverso la porta
 seriale verso la loro destinazione all'interno del vostro computer.
 Quando la porta seriale riceve un certo numero di byte (potrebbe
 essere impostata a 1, 4, 8 o 14) nel suo buffer FIFO, segnala alla CPU
 di recuperarli inviando un segnale elettrico noto come interrupt su di
 certo cavo generalmente usato solo da quella porta. Quindi il FIFO
 attende un certo numero di byte quindi genera un interrupt.

 Comunque questo interrupt potrebbe anche essere inviato se c'� un
 inaspettato ritardo mentre si attende l'arrivo del prossimo byte
 (conosciuto come timeout).  Quindi se i byte sono ricevuti lentamente
 (come ad esempio se qualcuno digita su una tastiera di terminale)
 potrebbe essere generato un interrupt per ogni byte ricevuto.  Per
 alcuni chip UART la regola � questa: se si possono ricevere 4 byte di
 seguito, ma nessuno di questi 4 arriva, allora la porta smette di
 aspettare altri byte ed invia un interrupt per recuperare i byte
 attualmente nel FIFO. Naturalmente, se il FIFO � vuoto, non verr�
 inviato nessun interrupt.

 Ogni interrupt (all'interno del computer) � contraddistinto da un
 numero (IRQ) e la porta seriale deve sapere quale conduttore usare per
 inviare il segnale.  Ad esempio, ttyS0 normalmente usa l'IRQ n. 4
 conosciuto come IRQ4 (o IRQ 4).  Una lista di questi interrupt ed
 altro pu� essere trovata in "man setserial" (cercare "Configuring
 Serial Ports"). Gli interrupt sono inviati ogniqualvolta la porta
 seriale necessiti di ricevere l'attenzione della CPU.  � importante
 fare questo periodicamente poich� il buffer all'interno della porta
 seriale pu� trattenere solo 16 (1 nelle vecchie porte seriali) byte in
 arrivo. Se la CPU non riesce a rimuovere prontamente i byte ricevuti,
 poi non esiste pi� spazio libero per gli altri che stanno arrivando ed
 il piccolo buffer potrebbe sovraccaricarsi generando una perdita di
 byte di dati.
 Per un modem esterno non c'� nessun modo (tipo controllo di flusso)
 per interrompere il flusso abbastanza rapidamente da prevenire questo.
 Per un modem interno il buffer FIFO a 16 byte si trova sulla stessa
 scheda ed un buon modem non ci andr� a scrivere se questo � pieno.
 Quindi un buon modem interno non sovraccaricher� il buffer da 16 byte
 ma potrebbe avere bisogno di usare ``Controllo di flusso da modem a
 modem'' per evitare che il modem stesso vada in sovraccarico. Questo
 rappresenta un vantaggio del modem interno rispetto ad un esterno.

 Gli interrupt sono inviati anche quando la porta seriale ha appena
 mandato 16 dei suoi byte dal piccolo buffer di trasmissione verso il
 cavo esterno.  In questo modo si fa spazio per 16 successivi byte da
 inviare all'esterno. L'interrupt notifica alla CPU il fatto cos� che
 si possano immettere ulteriori byte nel piccolo buffer di trasmissione
 per essere inviati.  Ancora, quando una linea di controllo del modem
 cambia il proprio stato, viene inviato un interrupt.  I buffer sopra
 menzionati sono tutti buffer hardware. La porta seriale ha anche degli
 ampi buffer nella memoria principale. Questo verr� spiegato pi� tardi.

 Gli interrupt veicolano molte informazioni ma solo indirettamente.
 L'interrupt propriamente detto semplicemente dice ad un chip chiamato
 interrupt controller che una certa porta seriale necessita attenzione.
 L'interrupt controller poi invia il segnale alla CPU. La CPU attiva
 uno speciale programma per servire la porta seriale. Il programma
 viene chiamato routine di servizio di interrupt (interrupt service
 routine) che � parte del software del dispositivo seriale. Esso cerca
 di scoprire cosa � successo alla porta seriale, quindi svolge il
 compito come ad esempio il trasferimento di byte da (per) il buffer
 hardware della porta.  Questo programma pu� facilmente scoprire cosa �
 accaduto poich� la porta seriale ha dei registri che puntano indirizzi
 di I/O conosciuti dal software del driver seriale. Questi registri
 contengono informazioni sullo stato della porta seriale. Il software
 legge questi registri e ispezionandone il contenuto, scopre cosa �
 accaduto, quindi esegue l'azione appropriata.


 4.6.  Compressione di dati (da parte del Modem)

 Prima di continuare con le nozioni di base sulla porta seriale,
 occorre capire una certa cosa fatta dal modem: la compressione dei
 dati. In alcuni casi questo compito � in realt� svolto dal software
 gestito dalla CPU del computer ma, sfortunatamente, al momento attuale
 questo software funzione solamente in ambiente MS Windows. Ci
 occuperemo quindi del caso in cui il modem stesso esegue la
 compressione poich� questo � quello che accade cos� che il modem possa
 funzionare in ambiente Linux.

 Per inviare dati pi� velocemente attraverso le linee telefoniche uno
 potrebbero comprimere (codificare) i dati usando uno schema di
 codifica personalizzato, che esso stesso dipende dai dati. Il dato
 codificato � pi� piccolo dell'originale (meno byte) e pu� essere
 inviato attraverso Internet in minore tempo.  Questo processo �
 chiamato "compressione di dati".

 Se scaricate file da Internet, essi sono probabilmente gi� compressi e
 non � possibile per il modem tentare di comprimerli ulteriormente. Il
 vostro modem pu� riconoscere che quelli che stanno transitando sono
 dati gi� compressi ed astenersi dal tentare di comprimerli ancora. Se
 state ricevendo dati che sono stati gi� compressi dall'altro modem, il
 vostro modem li decomprimer� e creer� molti pi� byte di quelli che
 sono stati spediti attraverso la linea telefonica. Quindi il flusso di
 dati dal vostro modem all'interno del vostro computer sar� maggiore di
 quello dalla linea telefonica verso di voi. Il rapporto di questo
 flusso viene chiamato rapporto di compressione. Rapporti di
 compressione superiori a 4 sono possibili, ma non molto probabili.

 4.7.  Correzione d'errore

 Analogamente alla compressione dati, i modem potrebbero essere
 impostati per eseguire una correzione d'errore. Sebbene questo
 comporti un abbassamento del flusso di byte/secondo, il fatto che
 questa correzione d'errore tolga i bit di inizio e fine in realt�
 accresce il flusso di bit/secondo.

 Per l'interfaccia della porta seriale con il mondo esterno, ogni byte
 composto da 8 bit ha 2 ulteriori bit aggiunti ad esso: un bit di
 inizio e un bit di stop.  Senza la correzione di errore, questi bit di
 inizio e stop extra generalmente passano attraverso il modem verso la
 linea telefonica. Ma quando la correzione d'errore � attivata, questi
 bit extra sono eliminati e i byte di 8 bit sono composti in pacchetti.
 Questo � pi� efficiente e genera un flusso di bit/secondo pi� alto a
 dispetto del fatto che c'� qualche ulteriore byte aggiunto per
 l'intestazione dei pacchetti e per la correzione degli errori


 4.8.  Flusso di dati (velocit�)

 I dati (byte che rappresentano caratteri, immagini, ecc.) passano dal
 vostro computer al vostro modem, quindi all'esterno verso la linea
 telefonica (e viceversa). I rapporti di flusso (come ad esempio 56k
 (56000) bit/secondo) sono chiamati (non correttamente) "velocit�". Ma
 quasi tutti dicono "velocit�" al posto di "rapporto di flusso". Se non
 c'� compressione di dati il rapporto di flusso dal computer al modem
 dovrebbe essere circa lo stesso di quello che passa attraverso la
 linea telefonica.

 In realt� ci sono due differenti velocit� da considerare al vostro
 capo della linea telefonica.


 �  La velocit� della linea telefonica stessa (velocit� DCE) da modem-
    a-modem

 �  La velocit� dalla porta seriale del vostro computer al vostro modem
    (velocit� DTE)

 Quando si compone un numero per connettersi ad un altro modem
 all'altro capo della linea telefonica, il vostro modem spesso
 visualizza un messaggio tipo "CONNECT 28800" oppure "CONNECT 115200".
 Cosa significa?. B�, potrebbe essere sia la velocit� DCE che quella
 DTE. Se essa � maggiore di quella delle specifiche del modem, allora
 deve trattarsi della velocit� da-modem-a-computer (DTE). Questo �
 l'esempio di "CONNECT 115200" mostrato in precedenza. 28800 deve
 trattarsi invece della  velocit� da-modem-a-modem (DCE) visto che la
 porta seriale non ha questa velocit�. Si potrebbe configurare il modem
 perch� possa visualizzare entrambe le velocit�. Alcuni modem
 visualizzano entrambe le velocit� e visualizzano la velocit� da modem-
 a-modem come (ad esempio): CARRIER 28800

 Se avete un modem interno non vi aspettereste che ci sia un limite di
 velocit� DTE dal vostro modem al vostro computer visto che il modem
 risiede all'interno del computer ed � praticamente una parte di esso.
 Ma questo limite c'� visto che il modem contiene al suo interno una
 porta seriale dedicata.

 � importante capire che la velocit� media � spesso minore di quella
 specificata, specialmente nella corta linea DTE (dal computer a
 modem). Attese (o tempi morti) generano una minore velocit� media.
 Queste attese possono essere lunghe attese di forse un secondo a causa
 del ``Controllo  di flusso''. Di contro le attese possono anche essere
 molto brevi (tempi morti) corrispondenti a diversi micro-secondi che
 separano la fine di un byte e l'inizio dell'altro. In pi�, i modem
 passano a velocit� inferiori se le condizioni della linea telefonica
 sono meno che perfette.  Per una discussione riguardo quale sia la
 migliore velocit� DTE vedere la sezione ``Quale velocit� dovrei
 usare''.



 4.9.  Controllo di flusso

 Il controllo di flusso � la capacit� di fermare il flusso dei byte in
 un cavo. Deve anche provvedere a fare ripartire il flusso senza
 perdere byte. Il controllo di flusso � necessario ai modem per
 consentire un salto nei rapporti di velocit�.


 4.9.1.  Esempio di controllo di flusso

 Ad esempio, consideriamo il caso in cui voi connettiate il vostro
 modem esterno a 36.6k tramite un corto cavo alla vostra porta seriale.
 Il modem invia e riceve byte attraverso la linea telefononica e 36.6k
 bit per secondo (bps). Non esegue nessuna compressione dati o
 correzione di errore. Voi avete impostato la velocit� della porta
 seriale a 115,200 bit/secondo (bps) e state inviando dati dal vostro
 computer alla linea telefonica. Quindi il flusso dal vostro computer
 al vostro modem attraverso il corto cavo � di 115.2k bps. In ogni caso
 il flusso da modem verso la linea telefonica � solo di 33.6k. Visto
 che il flusso di dati (115.2k) sta entrando nel modem pi� velocemente
 del flusso di dati in uscita, il modem deve conservare il flusso in
 eccesso (115.2k -33.6k = 81.6k) in uno dei suoi buffer.  Questo buffer
 andrebbe fatalmente in sovraccarico (esaurirebbe lo spazio a
 disposizione) a meno che il flusso a 115.2k venga interrotto.

 Ecco che il controllo di flusso viene in soccorso. Quando il buffer
 del modem � quasi pieno, il modem invia un segnale di stop alla porta
 seriale. La porta seriale passa il segnale di stop al device driver ed
 il flusso a 115.2k bps viene fermato. Intanto il modem continua ad
 inviare dati a 33.6k bps recuperando i dati precedentemente accumulati
 nei suoi buffer.  Visto che ora non sta arrivando niente nel buffer,
 il livello di byte inizia a diminuire.  Quando non sono rimasti che
 pochi byte nel buffer, il modem invia un segnale di partenza alla
 porta seriale ed il flusso a 115.2k dal computer al modem riprende. In
 effetti, il controllo di flusso crea un rapporto di flusso medio (in
 questo caso 33.6k) che � significativamente inferiore a quello in
 entrata di 115.2k bps. Questo � il controllo di flusso "start-stop".

 Quello di cui sopra � un semplice esempio di flusso di controllo per
 il flusso da computer al modem, ma esiste anche il controllo di flusso
 usato nella direzione opposta: dal modem (od altro dispositivo) al
 computer. Ogni direzione di flusso coinvolge 3 buffer: 1. quello nel
 modem 2. quello nel chip UART (detto FIFO) 3. nella memoria
 principale, gestito dal driver seriale. Il controllo di flusso
 protegge alcuni buffer dal rischio di sovraccarico.  I piccoli buffer
 UART FIFO non sono protetti in questo modo ma dipendono invece da una
 veloce risposta agli interrupt che essi generano. FIFO significa
 "First In First Out" (il primo che entra � il primo che esce) e
 rappresenta quindi il modo in cui vengono gestiti i byte. Tutti e 3 i
 buffer usano la regola FIFO ma solo uno di essi si identifica anche
 con questo nome. Questa � l'essenza del controllo di flusso ma ci sono
 ancora ulteriori dettagli.

 Non dovreste averne bisogno spesso del controllo di flusso nella
 direzione modem - PC.  Per un complesso esempio di un caso dove �
 richiesto vedere "Complex Flow Control Example" nel Serial-HOWTO.  Ma
 se non avete una velocit� impostata tra il modem ed il computer
 (velocit� della porta seriale) sufficientemente alta, allora dovrete
 rallentare il flusso dal modem al PC. Per fare questo dovete fermare
 l'incombente flusso di byte dalla linea telefonica. Il vostro modem
 deve dire all'altro modem di interrompere l'invio.  Vedere ``Controllo
 di flusso da-modem-a-modem''


 4.9.2.  Controllo di flusso hardware contro il controllo di flusso
 software

 Se possibile, � meglio usare il flusso di controllo "hardware" che usa
 due linee dedicate di controllo del modem per inviare i segnali di
 "stop" e "start".  I modem moderni usano quasi sempre il controllo di
 flusso hardware tra il modem e la porta seriale

 Il controllo di flusso software usa le linee principali di ricezione e
 trasmissione per inviare i segnali di start e stop. Usa i caratteri di
 controllo ASCII DC1 (start) e DC3 (stop) a questo scopo. Essi sono
 semplicemente inseriti nel regolare flusso di dati. Il controllo di
 flusso software � non solo pi� lento nel reagire ma anche non consente
 l'invio di dati binari a meno di prendere speciali preacauzioni. Visto
 che � probabile che dati binari possano contenere DC1 e DC3,
 particolari accorgimenti devono essere presi per distinguere tra un
 DC3 che significa uno stop del controllo di flusso ed un DC3 che �
 parte del codice binario. La stessa cosa per DC1.  Per far funzionare
 il controllo di flusso software con i dati binari occorre il supporto
 sia del modem (hardware) che del software.


 4.9.3.  Sintomi della mancanza di un controllo di flusso

 Conoscere la teoria del controllo di flusso pu� essere di uso pratico.
 Per esempio usavo il mio modem per accedere ad Internet e tutto
 sembrava funzionare bene.  Ma dopo alcuni mesi ho provato ad inviare
 un grosso file dal mio PC al ISP ottenenendo un grande numero di
 errori e ritrasmissioni (ma alla fine con Kermit sono riuscito a
 spedire un grosso file dopo parecchi tentativi).  La ricezione
 nell'altra direzione (dal ISP a me) funzionava bene. Il problema
 risult� essere nella disabilitazione del controllo di flusso. Il
 buffer del mio modem si sovraccaricava durante l'invio di grossi file
 visto che nessun segnale di "stop" era mai inviato al computer per
 interrompere l'invio di dati al modem. Non c'erano problemi nella
 direzione dal modem al mio computer visto che la capacit� (diciamo
 115.2k) era sempre superiore del flusso attraverso la linea
 telefonica. La risoluzione consistette nell'abilitare il controllo di
 flusso inserendo un comando di attivazione del controllo di flusso
 nella stringa di inizializzazione del modem (avrebbe dovuto essere
 abilitato per default ma qualcosa era andato storto).


 4.9.4.  Controllo di flusso da-modem-a-modem

 Questo � il controllo di flusso dei dati inviati attraverso le linee
 telefoniche tra due modem. In pratica, esso esiste solo quando �
 attivata la correzione di errori. In verit�, anche senza correzione di
 errore � possibile attivare il controllo di flusso software tra modem,
 ma esso potrebbe interferire con l'invio di dati binari cos� non viene
 usato spesso.


 4.10.  Il percorso del flusso di dati; Buffer

 Sebbene sia stato detto molto in proposito, tra cui il controllo di
 flusso, un paio di buffer FIFO a 16 byte nelle porte seriali
 (nell'hardware) ed un paio di buffer pi� ampi all'interno del modem,
 esistono ancora un altro paio di buffer. Essi sono degli ampi buffer
 (forse di 8k) nella memoria principale conosciuti anche come buffer di
 porta seriale. Quando un programma applicativo invia byte alla porta
 seriale (e al modem), essi vengono posti prima nel buffer di
 trasmissione della porta seriale nella memoria principale. La coppia
 consiste in questo buffer di trasmissione ed in quello di ricezione
 per il flusso di byte dalla parte opposta.


 Il device driver seriale estrae diciamo 16 byte dal buffer di
 trasmissione, un byte alla volta e li mette nel buffer di trasmissione
 da 16 byte della porta seriale per la trasmissione. Una volta in
 questo buffer, non c'� modo di impedire che essi vengano trasmessi.
 Essi sono poi inviati al modem che dispone anch'esso di un buffer di
 dimensioni adeguate (diciamo 1k). Quando il device driver (che riceve
 ordini dal controllo di flusso) interrompe il flusso dei byte in
 uscita dal computer, interrompe in realt� il flusso di byte in uscita
 dall'ampio buffer di trasmissione della memoria principale. Anche dopo
 che questo � accaduto ed il flusso verso il modem � stato fermato, un
 programma applicativo pu� continuare a spedire i byte presenti nel
 buffer da 8k fino a che esso non si riempie.

 Quando � pieno, il programma applicativo non pu� inviargli ulteriori
 byte (un istruzione di scrittura "write" in un blocco di programma in
 C) e l'applicazione si interrompe temporaneamente ed attende fino a
 che si libera un poco di spazio nel buffer.  Quindi uno stop
 esercitato dal controllo di flusso � in definitiva capace di fermare
 il programma che sta inviando i byte. Anche se questo programma si
 interrompe il computer non smette necessariamente di elaborare.
 Potrebbe passare ad eseguire altri processi mentre sta aspettando
 causa lo stop del controllo di flusso. Quello suindicato era un
 esempio ultrasemplificato visto che un'altra alternativa � quella di
 fare s� che il programma applicativo stesso faccia qualcosa d'altro
 mentre sta attendendo di "scrivere"


 4.11.  I comandi del modem

 I comandi al modem sono inviati ad esso dal programma di comunicazione
 attraverso lo stesso conduttore usato per inviare dati. I comandi sono
 delle brevi stringhe ASCII. Esempi sono "AT&K3" per abilitare il
 controllo di flusso hardware (RTS/CTS) tra il computer ed il modem; e
 "ATDT5393401" serve per comporre il numero 5393401. Notate che tutti i
 comandi sono prefissati da "AT". Alcuni comandi come l'attivazione del
 controllo di flusso aiutano a configurare il modem. Altri comandi come
 il comporre un numero fanno veramente qualcosa. Ci sono circa un
 centinaio di differenti possibili comandi. Quando il vostro software
 di comunicazione parte, lancia una stringa di inizializzazione "init
 string" composta da comandi al modem per configurarlo. Tutti i comandi
 sono inviati sulla linea ordinaria dei dati prima che il modem
 componga un numero (o riceva una chiamata).


 Una volta che il modem � connesso ad un altro modem (modo on-line),
 tutto quello che il vostro computer manda al vostro modem va
 direttamente verso l'altro modem e non � interpretato dal modem come
 un comando. C'� un modo per "fuggire" da questo modo operativo e
 tornare al modo comandi dove tutto quello che viene inviato al modem
 viene interpretato come un comando. Il computer invia semplicemente
 "+++" con un determinato periodo di tempo prima e dopo questo "+++".
 Se lo spazio temporale � corretto, il modem si pone in modo comandi.
 Un altro modo di fare questo � tramite un segnale ad una certa linea
 di controllo del modem.

 Ci sono svariate liste dei comandi modem su Internet. La sezione
 ``Siti Web'' ha dei collegamenti ad un paio di questi siti. Diversi
 modelli e marche di modem non usano esattemente lo stesso gruppo di
 comandi. Cos� quello che va bene per un modem potrebbe non andare bene
 per un altro.  Alcuni comandi comuni (non si garantisce che funzionino
 su tutti i modem) sono elencati in questo HOWTO nella sezione ``Altri
 comandi modem''


 4.12.  Software seriale: il modulo del device driver

 Il device driver per la porta seriale � il software che fa funzionare
 la porta seriale. Viene ora fornito come modulo seriale. Questo modulo
 viene generalmente caricato automaticamente se necessario.  Il kernel
 2.2+ far� questo. Nei kernel precedenti, dovete avere kerneld in
 esecuzione per far s� che i moduli si autocaricano su richiesta.
 Altrimenti il modulo seriale necessita di essere esplicitamente
 elencato in etc/modules.  Prima che i moduli divenissero popolari con
 Linux, il driver seriale era generalmente costruito all'interno del
 kernel. Se esso � ancora incorporato nel kernel (potreste avere
 selezionato questa opzione quando avete compilato il kernel) non
 lasciate che il modulo seriale venga caricato. Se lo fate finirete con
 avere due driver seriali, viene rilevato che non potete usare le porte
 seriali ed otterrete un errore "I/O error" se tentate di aprirle.

 Quando il modulo seriale � caricato, visualizza un messaggio sullo
 schemo circa l'esistenza di porte seriali (spesso mostrando un IRQ
 errato). Ma una volta che il modulo � usato da setserial per dire al
 device driver qual'� l'IRQ corretto, allora dovreste vedere una
 seconda schermata simile alla prima ma con il corretto IRQ, ecc.
 Vedere ``Cos'� Setserial'' per ulteriori informazioni su setserial.

 Si potrebbe modificare il driver modificando il codice sorgente del
 kernel. La maggior parte del driver seriale si trova nel file
 serial.c. Per dettagli inerenti la scrittura di programmi per la porta
 seriale vedere Serial-Programming-HOWTO (attualmente in fase di
 revisione da parte di Vern Hoxie).




 5.  Configurazione: introduzione

 Se volete usare il modem solo in ambiente MS Windows/Dos, allora
 potete installare praticamente qualsiasi modem e tutto andr� bene. In
 un ambiente Linux non � in genere cos� facile a meno di usare un modem
 esterno. Tutti i modem esterni dovrebbero funzionare bene (anche se
 sono etichettati come "Plug and Play"), Ma anche la maggior parte dei
 nuovi modem interni sono Plug-and-Play (PnP) ed hanno porte seriali
 PnP. Se � un modem ISA potreste avere bisogno di usare il programma
 Linux "isapnp" per configurarle. Vedere il Plug-and-Play HOWTO per
 ulteriori informazioni.

 Visto che ogni modem ha una porta seriale associata la configurazione
 del modem si svolge in due parti:


 �  Configurazione del modem stesso: eseguita dal programma di
    comunicazione

 �  Configurazione della porta seriale del modem: eseguita solo
    "parzialmente" dal programma di comunicazione

 La maggior parte delle configurazioni di cui sopra (ma non
 necessariamente la maggior parte dello sforzo) sono svolte dal
 programma di cumunicazione che si usa con il modem come ad esempio
 minicom o seyon, wvdial (per PPP).  Se usate il modem per rendere
 disponibile il vostro computer dall'esterno, allora il programma getty
 che usate per presentare a chi si collega il prompt di login, sar� di
 aiuto nella configurazione.  Vale a dire che per configurare il modem
 (e la maggior parte della porta seriale) dovete configurare il
 programma di comunicazione (tipo il PPP dialer o getty).

 Sfortunatamente la configurazione di cui sopra non esegue la
 configurazione a basso livello della porta seriale: l'impostazione dei
 suoi indirizzi IO ed IRQ sia nell'harware che nel driver. Se siete
 fortunati, la cosa potrebbe accadere automaticamente quando caricate
 Linux. L'impostazione nell'hardware veniva in precedenza svolta dai
 "jumper" ma oggi � fatta dal software Plug-and-Play.

 Ma c'� un serio problema: Linux (almeno fino al tardo 1999) non � un
 sistema operativo plug-and-play ma dispone di strumenti Plug-and-Play
 che potreste usare per impostare la configuzione sebbene essi non
 siamo molto facili da usare.  Questo pu� essere un difficile problema
 per voi. La prossima sezione elaborer� pi� approfonditamente questo
 aspetto.



 6.  Configurare la porta seriale

 6.1.  Supporto per il bus PCI in fase di completamento

 Il driver seriale del kernel 2.2 non contiene un supporto per il bus
 PCI. Ma i kernel 2.3 e 2.4 finalmente supporteranno alcune schede
 seriali PCI (e schede modem).  La maggior parte delle schede PCI
 necessitano di uno speciale supporto nel driver. Il driver legge il
 numero identificativo memorizzato nella scheda per determinare come (o
 se) supportare la scheda. Se avete una scheda PCI che siete convinti
 non sia un winmodem ma non funziona comunque, allora potreste essere
 d'aiuto per tentare di creare un driver per essa. Per fare questo
 dovrete contattare il curatore del serial driver, Theodeore (Ted) Y.
 Ts'o. Ma per prima cosa controllate l'elenco dei modem al sito
 <http://www.o2.net/~gromitkc/winmodem.html> per le ultime informazioni
 sui modem PCI e relativi argomenti.

 Inviategli tramite posta elettronica una copia dell'output di "lspci
 -vv" con complete informazioni circa il modello ed il costruttore del
 modem PCI (o della porta seriale). Egli cercher� di approntarvi un
 driver di prova che potrebbe fare al caso vostro.  Dovrete
 recuperarlo, compilarlo e possibilmente ricompilare il vostro kernel.
 Poi dovrete testare il driver per vedere se funziona bene e fare una
 relazione dei risultati a Ted Ts'o. Se siete disposti a fare tutto
 quanto sopradescritto (e questa � l'ultima versione di questo HOW-TO)
 allora inviategli quanto richiesto a:  <mailto:[email protected]>.

 I modem PCI sono ben standardizzati. Alcuni usano la memoria
 principale per comunicare con il PC. Se vedete indirizzi esadecimali a
 8 cifre probabilmente non funzioneranno sotto Linux.  Alcuni
 richiedono particolari abilitazioni dell'IRQ. L'output di "lspci" pu�
 aiutare a determinare se pu� essere supportato. Se vedete una porta IO
 a 4 cifre e nessun indirizzo di memoria lungo, il modem potrebbe
 funzionare semplicemente dicendo a "setserial" l'IO della porta e
 l'IRQ. Alcune persono hanno fatto funzionare un modem PCI 3COM 3CP5610
 in questo modo



 6.2.  Introduzione alla configurazione

 Nella maggior parte dei casi, la configurazione viene eseguita
 automaticamente e voi non dovete fare nulla. Ma talvolta dovete
 configurare (o semplicemente volete controllare la configurazione). Se
 � questo il caso, dovete per prima cosa sapere qualcosa circa le due
 parti necessarie per configurare la porta seriale sotto Linux.


 La prima parte (configurazione a basso livello) � assegnare un
 indirizzo IO, un IRQ ed un nome (tipo ttyS2). Questa coppia IO-IRQ
 deve essere impostata nell'hardware e deve anche essere passata al
 driver seriale. Potremo chiamare questa parte in breve come
 configurazione di "io-irq". setserial viene usato per informare il
 driver.  I metodi PnP, i jumper, ecc, sono usati per impostare
 l'hardware. Dettagli saranno forniti successivamente. Se dovete
 configurare ma non comprendete alcuni dettagli � poi facile avere dei
 guai.

 La seconda parte (configurazione ad alto livello) consiste
 nell'assegnare una velocit� (tipo 38.4K bit/secondo), selezionare il
 controllo di flusso, ecc. Questo viene spesso fatto dai programmi di
 comunicazione come PPP, minicom, o da getty (che potreste lanciare
 sulla porta cos� che altri possano collegarsi attraverso di essa). In
 ogni caso dovrete dire a questi programmi quale velocit� volete, ecc.,
 usando un menu od un file di configurazione.  Questa configurazione di
 alto livello pu� essere fatta anche con il programma stty. stty �
 anche utile per vedere lo stato corrente se avete dei problemi.
 Vedere anche la sezione "Stty" del Serial-HOWTO.

 Quando Linux parte, viene compiuto un tentativo per rilevare e
 configurare (a basso livello) alcune porte seriali. Quello che accade
 esattamente dipende dal vostro BIOS, hardware, distribuzione di Linux,
 ecc. Se le porte seriali funzionano bene, potrebbe non esserci bisogno
 di effettuare ulteriori configurazioni. I programmi applicativi
 tendono spesso ad eseguire una configurazione di alto livello, ma
 potrebbere richiedere informazioni che voi gli dovreste fornire. Con
 le porte seriali Plug-and-Play (spesso inserite in un modem interno),
 la situazione � diventata pi� complessa. Ecco i casi in cui occorre
 eseguire una configurazione a basso livello (impostare gli indirizzi
 IRQ e IO):


 �  Volete usare pi� di due porte seriali

 �  Installazione di una nuova porta seriale (come nel caso di un modem
    interno)

 �  Avete problemi con la porta seriale(i)

 Per i kernel 2.2+ dovreste essere capaci di usare pi� di due porte
 seriali senza configurare a basso livello, condividendo gi interrupt.
 La cosa funziona solo se l'hardware seriale lo supporta e potrebbe
 essere altrettanto difficile che configurare a basso livello.  Vedere
 ``Condivisione di interrupt e i Kernel 2.2+''

 La configurazione a basso livello (impostare gli indirizzi IRQ e IO)
 sembra causare pi� problemi (rispetto a quella ad alto livello),
 sebbene per la maggioranza sia completamente automatica e nessuna
 configurazione si debba effettuare. Quindi la quasi totalit� di questa
 sezione verte su questo argomento. A meno che il driver seriale sappia
 il corretto indirizzo IRQ e IO la porta non funzioner� per niente.
 Probabilmente non sar� neanche individuata da Linux. Anche se essa
 fosse trovata, potrebbe lavorare in modo estremamente lento se l'IRQ �
 sbagliato. Vedere ``Estremamente lento: il testo appare sullo schermo
 lentamente e dopo lunghi ritardi''.

 Nel mondo Wintel, l'indirizzo IO ed IRQ sono chiamati "risorse" e
 quindi siamo configurando certe risorse. Ma ci sono molti altri tipi
 di "risorse" cos� che il termine potrebbe avere molti altri
 significati. Ricapitolando, la configurazione a basso livello consiste
 nell'impostare due valori (un numero di IRQ e un indirizzo IO) in due
 posti:


 1. nei registri di memoria dell'hardware della porta seriale stessa

 2. nel device driver (spesso lanciando "setserial" in fase di boot)

 Potreste dare un occhiata ai messaggi di avvio (fase di boot). Essi
 sono in genere corretti. Ma se state avendo problemi, c'� una buona
 probabilit� che alcuni di questi messaggi non mostrino la corretta
 configurazione dell'hardware (e d'altronde non sono deputati a farlo).
 Vedere ``Indirizzi I/O e IRQ: Messaggi in fase di boot''.


 6.3.  Errori comuni commessi nel riconfigurare a basso livello

 Ecco alcuni degli errori pi� comuni che possono compiere:

 �  comando setserial: Viene lanciato (senza l'opzione "autoconfig") e
    si pensa che abbia controllato l'hardware (non l'ha fatto).

 �  messaggi di setserial: Essi vengono visualizzati sullo schermo in
    fase di boot ed erroneamente si crede che il risultato mostri come
    l'hardware sia veramente configurato.

 �  /proc/interrupts: Quando il loro dispositivo seriale non � in uso
    essi non vedono l� i suoi interrupt ed erroneamente concludono che
    la porta seriale non pu� essere trovata (o che non abbia un
    interrupt impostato).

 �  /proc/ioports: Si pensa che questa mostri la configurazione
    dell'hardware mentre mostra solo gli stessi dati (che possono anche
    essere errati) di setserial.


 6.4.  Indirizzi I/O e IRQ: messaggi in fase di boot

 In molti casi le vostre porte verranno automaticamente configurate a
 basso livello in fase di boot (ma non sempre correttamente). Per
 vedere cosa sta succedendo, guardate i messaggi di avvio sullo
 schermo. Non trascurate di controllare i messaggi del BIOS prima che
 Linux venga caricato (nessun esempio mostrato qui). Questi messaggi
 BIOS possono essere arrestati premendo il tasto Pause. Usate Shift-
 PagSu per scorrere i messaggi dopo che sono passati sullo schermo.
 Shift-PagGi� li scorrer� nel senso opposto.  Il comando dmesg potrebbe
 esser usato ogniqualvolta si voglia vedere alcuni messaggi ma spesso
 ne mancano di importanti. Ecco un esempio di messaggi in fase di boot
 (cos� come nel tardo 1999). Notate che ttyS00 � lo stesso di
 /dev/ttyS0.



      Per prima cosa vedete quello che � stato rilevato (ma l'irq � solo un
      ipotesi):

      Serial driver version 4.27 with no serial options enabled
      ttyS00 at 0x03f8 (irq = 4) is a 16550A
      ttyS01 at 0x02f8 (irq = 3) is a 16550A
      ttyS02 at 0x03e8 (irq = 4) is a 16550A

      Pi� tardi potete vedere quello che era stato salvato, ma anche questo
      non � necessariamente corretto:

      Loading the saved-state of the serial devices...
      /dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
      /dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A
      /dev/ttyS2 at 0x03e8 (irq = 5) is a 16550A


 Notate che qui vi � un leggero disallineamento: il primo messaggio
 mostra ttyS2 a irq=4 mentre il secondo lo mostra a irq=5. Potreste
 anche avere solo il primo messaggio.  In molti casi l'ultimo messaggio
 � quello corretto.  Ma se state avendo problemi il messaggio potrebbe
 fuorviarvi. Prima di leggere la spiegazione di tutta questa
 complessit� nel resto di questa sezione, potreste semplicemente
 provare ad usare la vostra porta seriale e vedere se tutto va bene. Se
 � il caso, potrebbe non essere essenziale leggere oltre.

 Il secondo messaggio deriva dal programma setserial che viene lanciato
 in fase di boot. Mostra quella che il device driver pensa sia la
 corretta configurazione. Ma questo potrebbe essere sbagliato. Ad
 esempio l'irq potrabbe essere in realt� impostato a irq=8
 nell'hardware (entrambi i messaggi sono sbagliati). irq=5 potrebbere
 esistere  perch� qualcuno ha incorrettamente impostato questo valore
 nel file di configurazione (o simile).  Il fatto che Linux talvolta
 prenda degli IRQ sbagliati dipende dal fatto che non verifica gli IRQ.
 Semplicemente assume quelli "standard" (primo messaggio) o accetta
 quello che gli si dice quando viene configurato (secondo messaggio).
 Nessuno di questi � necessariamente corretto. Se il driver seriale ha
 l'IRQ sbagliato, la porta seriale � molto lenta o non funziona per
 niente.

 Il primo messaggio � il risultato di Linux che verifica le porte
 seriali ma non verifica gli IRQ.  Se una porta viene mostrata in
 questa fase essa esiste ma il suo irq potrebbe essere sbagliato. Linux
 non controlla gli IRQ perch� il farlo non � a prova di errore. Esso
 assume che gli IRQ sono come mostrato perch� questi sono i valori
 "standard". Potreste controllare manualmente con setserial usando le
 opzioni autoconfig e auto_irq  ma non si garantisce che sia esatto.

 I dati mostrati nei messaggi del BIOS (che vedete per primi) � quello
 che � impostato nell'hardware. Se la porta seriale � Plug-and-Play PnP
 allora � possibile che isapnp venga lanciato e modifichi queste
 impostazioni.  Cercate dei messaggi in questo senso dopo che Linux �
 partito. L'ultimo messaggio relativo alla porta seriale mostrato
 nell'esempio di cui sopra dovrebbe coincidere con i messaggi del BIOS
 (che � possibile siano stati modificati da isapnp). Se sono diversi
 allora dovreste aver bisogno di cambiare le impostazioni nell'hardware
 della porta od usare setserial per dire al driver quello che �
 attualmente impostato nell'hardware.

 Inoltre, se avete porte seriali Plug-and-Play (PnP), Linux non le
 trover� a meno che l'IRQ e l'IO siano stati impostati all'interno
 dell'hardware dal software PnP. Questa � una comune ragione per la
 quale i messaggi di avvio non mostrano una porta seriale che
 fisicamente esiste. L'harware del PC (un BIOS PnP) potrebbe
 automaticamente configurare a basso livello questo. La configurazione
 PnP sar� spiegata pi� avanti.


 6.5.  Quali sono l'indirizzo IO e l'IRQ correnti della mia porta seri�
 ale?

 La sezione precedente indica come tentare di fare questo guardando i
 messaggi di avvio.  Se essi vi forniscono sufficienti informazioni,
 allra potreste anche saltare la lettura di questa sezione.  Se no
 allora ci sono alcuni altri modi per scoprirli.

 Ci sono davvero due risposte alla domanda "Quali sono i miei IRQ e
 IO?" 1. Quello che il device driver pensa che sia impostato (questo �
 quello che setserial in genere imposta e mostra). 2. Quello che in
 realt� � impostato nell'hardware. Potrebbe essere gli stessi. Se non
 losono avrete problemi visto che il driver ha informazioni sbagliate
 circa la porta seriale fisica.  Se il driver ha l'IO sbagliato tenter�
 di inviare dati ad una porta seriale inesistente o, ancora peggio, ad
 un dispositivo esistente che non � una porta seriale. Se ha l'IRQ
 sbagliato il driver non ricever� le richieste di interrupt dalla porta
 seriale, causando una risposta molto lenta o mancante. Vedere
 ``Estremamente lento: il testo appare sullo schermo lentamente e dopo
 lunghi ritardi''.  Se ha il tipo sbagliato di UART potrebbero esserci
 problemi. Per determinare se entrambe le coppie di IRQ-IO sono
 identiche dovreste scoprire come sono impostati sia nel driver che
 nell'hardware.


 6.5.1.  Cosa pensa il device driver?

 Questo � facile da scoprire. Basta guardare ai messaggi di avvio o
 digitare "setserial -g /dev/ttyS*". Se tutto � a posto, allora quello
 che vedrete sar� impostato anche nell'hardware. Ci sono alcuni
 ulteriori modi di trovare queste informazioni guardando dei "file"
 nella directory /proc. Una ragione importante per comprendere questi
 ulteriori modi � per avvisarvi che essi mostrano solo quello che il
 device driver pensa che sia. Alcuni vedono certi "file" nella
 directory /proc ed erroneamente pensano che quello che vedono sia
 quello che � impostato nell'hardware ma non � necessariamente cos�.

 /proc/ioports mostrer� gli indirizzi di IO che i driver stanno usando.
 /proc/interrupts mostra gli IRQ che sono stati usati dai driver dei
 processi attualmente in esecuzione (che hanno dispositivi aperti).
 Notate che in entrambi i casi di cui sopra potete solo vedere quello
 il driver pensa che sia e non necessariamente quello che � veramente
 impostato nell'hardware. /proc/interrupts mostra anche quanti
 interrupt sono stati invocati (spesso migliaia) per ogni dispositivo).
 Potete ricavare un indizio da questo perch� se vedete un gran numero
 di interrupt invocati significa che c'� un qualche hardware da qualche
 parte che sta usando quell'interrupt. Talvolta il vedere solo pochi
 interrupt non significa che quell'interrupt sia stato fisicamente
 generato da una qualche porta seriale.  Quindi se non vedete quasi
 interrupt per una porta che state cercando di usare, quell'interrupt
 potrebbe non essere stato impostato dall'hardware ad questo implica
 che il driver sta usando l'interrupt sbagliato. Per vedere
 /proc/interrupt per controllare su di un programma che state
 attualmente eseguendo (tipo "minicom") dovete mantenere il programma
 in esecuzione mentre controllate. Per fare questo cercate di saltare
 in una shell senza uscire dal programma.


 6.5.2.  Cos'� impostato nell'hardware della mia porta seriale?

 Come scoprire quali indirizzi IO e IRQ sono realmente impostati nel
 dispositivo hardware? Forse i messaggi del BIOS vi danno alcune
 informazioni prima che Linux inizi il caricamento. Usate il tasto
 shift-PagSu per risalire attraverso i messaggi di avvio e cercate i
 primissimi che provengono dal BIOS. Questa era la situazione prima che
 Linux partisse. Setserial non pu� modificarla ma isapnp o pciutils s�.

 Un metodo brutale � cercare la rilevazione con setserial usando
 l'opzione "autoconfig".  Avrete bisogno di indovinare gli indirizzi
 per poterli poi verificare. Vedere ``Cos'� setserial''. Per una porta
 seriale PCI, usate il comando "lspci" (per i kernel <2.2 guardate in
 /proc/pci). Se la vostra porta seriale � Plug-and-Play leggete le
 successive due sottosezioni.

 Per una porta impostata tramite jumper, ecco come essi sono impostati.
 Se la porta non � Plug-and-Play (PnP) ma � stata impostata usando un
 programma DOS, allora � impostata secondo quanto deciso da chi ha
 lanciato quel programma.



 6.5.3.  Cosa � impostato nell'hardware della mia porta seriale?

 Le porte PnP non mantengono la loro configurazione nell'hardware
 quando viene spento il PC. Questo � in contrasto con i jumper (non-
 PnP) che restano immutati anche quando si spegne la corrente. Se avete
 una porta ISA PnP, potrebbe raggiungere lo stato nella quale non abbia
 alcun indirizzo IRQ e IO e sia effettivamente disabilitata. Dovrebbe
 essere ancora possibile trovare la porta usando il programma pnpdump.

 Per il Plug-and-Play (PnP) sul bus ISA si potrebbe tentare con il
 programma pnpdump (che � parte di isapnptools). Se usate l'opzione
 --dumpregs dovrebbe informarvi circa gli effettivi indirizzi IO e IRQ
 impostati nella porta.

 Riguardo alle porte PnP controllarne la configurazione sotto
 DOS/Windows potrebbe non essere di molto aiuto. Windows mantiene le
 sue informazioni di configurazione nel suo Registro che non viene
 usato da Linux. Potrebbe fornire la memoria non volatile del BIOS di
 alcune informazioni ma potrebbe non essere in sicrono con quelle della
 configurazione corrente di Windows nel Registro ??. Se lasciate che un
 BIOS PnP faccia una configurazione automatica quando lanciate Linux
 (ed avete detto al BIOS che non avete un sistema operativo PnP quando
 fate partire Linux), allora Linux dovrebbe usare una qualsivoglia
 configurazione si trovi nella memoria non volatile del BIOS.


 6.6.  Scegliere gli IRQ seriali

 Se avete un vero Plug-and-Play impostato dove sia il sistema operativo
 che il BIOS PnP configurano tutti i vostri dispositivi, non
 sceglierete i vostri IRQ.  PnP determina quello che pensa sia meglio e
 li assegna. Ma se usate gli strumenti di Linux per il Plug-and-Play
 (isapnp e pcitools) allora dovete essere voi a sceglierli. Se gi�
 conoscete quale IRQ volete usate potete saltare questa sezione a meno
 che non vogliate sapere che l'IRQ O ha un uso speciale (vedere il
 paragrafo seguente).


 6.6.1.  L'IRQ 0 non � un IRQ

 Sebbene IRQ 0 sia in realt� il timer (nell'hardware), esso ha uno
 speciale significato nell'impostare una porta seriale con setserial.
 Esso dice al driver che non c'� un interrupt per quella porta ed il
 driver allora user� metodi di polling. � piuttosto inefficiente ma pu�
 essere tentato se c'� un conflitto di interrupt o degli interrupt sono
 male impostati. Il vantaggio di assegnarlo � che non avete bisogno di
 sapere quale interrupt � impostato nell'hardware. Dovrebbe essere
 usato solo come espediente temporaneo fino a che non siate in grado di
 trovare un vero interrupt da usare.


 6.6.2.  Condivisione di interrupt e i Kernel 2.2+

 La regola generale � che ogni dispositivo dovrebbe usare un IRQ unico
 e non condividerlo.  Ma ci sono situazioni dove la condivisione �
 permessa come nella maggior parte delle schede multi-porta. Anche
 quando � permesso, potrebbe essere non molto efficiente visto che ogni
 volta che viene invocato un interrupt condiviso, occorre effettuare un
 controllo per determinare da dove proviene. Sebbene quindi sia
 possibile, � meglio attribuire ad ogni dispositivo il proprio
 interrupt.

 Per i kernel precedenti il 2.2, gli IRQ seriali potevano essere
 condivisi tra di loro solo per la maggioranza delle schede multiporta.
 A partire dal kernel 2.2 gli IRQ seriali possono talvolta essere
 condivisi tra tutte le porte seriali. Per far s� che la condivisione
 funzioni nel kernel 2.2 esso deve essere compilato con
 CONFIG_SERIAL_SHARE_IRQ e l'hardware della porta seriale deve
 supportare la condivisione (cos� che se due seriali mettono due
 diversi voltaggi nello stesso cavo di interrupt, solo il voltaggio che
 significa "questo � un interrupt" prevarr�). Quindi anche se avete il
 2.2, � meglio evitare la condivisione.


 6.6.3.  Quale IRQ scegliere?

 L'hardware seriale spesso ha solamente un numero limitato di IRQ che
 possono essere impostati. Inoltre voi non volete dei conflitti di IRQ.
 Cos� non � che ci sia molta scelta. Il vostro PC di norma dovrebbe
 avere impostato ttyS0 e ttyS2 all'IRQ 4 e ttyS1 e ttyS3 all'IRQ 3.
 /proc/interrupts mostrer� quali IRQ sono usati da programmi
 attualmente in esecuzione. � meglio non usare uno di questi. Prima che
 l'IRQ 5 venisse usato per le schede audio, era spesso usato per una
 porta seriale.

 Ecco come Greg (l'autore originale di Serial-HOWTO) ha impostato i
 suoi in /etc/rc.d/rc.serial. rc.serial � un file (uno script di shell)
 che viene lanciato in avvio (potrebbe avere un percorso diverso). Per
 versioni di "setserial" superiori a 2.15 non � pi� fatto in questo
 modo, ma questo esempio mostra la scelta di IRQ.



       /sbin/setserial /dev/ttyS0 irq 3       # il mio mouse seriale
       /sbin/setserial /dev/ttyS1 irq 4       # il terminale dumb Wyse
       /sbin/setserial /dev/ttyS2 irq 5       # il mio modem Zoom
       /sbin/setserial /dev/ttyS3 irq 9       # il mio modem USR






 Assegnazioni di IRQ standard:

         IRQ  0    Timer channel 0 (Potrebbe significare "no interrupt".
                   Vedi sotto)
         IRQ  1    Tastiera
         IRQ  2    Cascade per il controller 2
         IRQ  3    porta seriale 2
         IRQ  4    porta seriale 1
         IRQ  5    porta parallela 2, scheda audio
         IRQ  6    Floppy
         IRQ  7    porta parallela 1
         IRQ  8    Real-time clock
         IRQ  9    Rediretto a IRQ2
         IRQ 10    non assegnato
         IRQ 11    non assegnato
         IRQ 12    non assegnato
         IRQ 13    coprocessore matematico
         IRQ 14    controller 1 di dischi fissi
         IRQ 15    controller 2 di dischi fissi





 Non esiste la "Cosa Giusta" da fare quando si scelgono gli interrupt.
 Semplicemente assicuratevi che esso non sia usato dalla scheda madre,
 o da qualsiasi altra scheda.  2, 3, 4, 5, 7, 10, 11, 12 o 15 sono
 scelte possibili. Notate che IRQ 2 � la stessa cosa di IRQ 9. Potete
 invocare sia 2 che 9, il driver seriale � molto comprensivo. Se avete
 una scheda seriale molto vecchia potrebbe essere incapace di usare gli
 IRQ 8 e superiori.

 Accertatevi di non usare gli IRQ 1, 6, 8, 13 o 14!. Questi sono usati
 dalla vostra scheda madre. La farete molto scontenta se gli "rubate" i
 suoi IRQ.  Quando avete finito, ricontrollate /proc/interrupts mentre
 i programmi che usano gli interrupt sono in esecuzione ed assicuratevi
 che non vi siano conflitti.


 6.7.  Scegliere gli indirizzi -- Conflitti della scheda video con
 ttyS3

 L'indirizzo IO delle schede video IBM 8514 (ed altre simili) � 0x?2e8
 dove ? � 2, 4, 8 o 9. Questo pu� causare conflitto (ma non dovrebbe se
 la porta seriale � ben concepita) con l'indirizzo IO di ttyS3 in
 0x02e8 se la porta seriale ignora lo 0 esadecimale iniziale (molte lo
 fanno). Queste sono cattive notizie se tentate di usare ttys3 a
 quell'indirizzo di IO.

 Nella maggioranza dei casi dovreste usare l'indirizzo predefinito se
 possibile.  Gli indirizzi mostrati rappresentano il primo indirizzo in
 un intervallo di 8 byte. Ad esempio 3f8 comprende in realt� 3f8-3ff.
 Ogni dispositivo seriale (cos� come altri tipi di dispositivi che
 usano indirizzi IO) abbisogna del proprio univoco intervallo di
 indirizzi.  Non dovrebbero esserci confilitti. Ecco gli indirizzi
 predefiniti per le porte seriali:



       ttyS0 indirizzo 0x3f8
       ttyS1 indirizzo 0x2f8
       ttyS2 indirizzo 0x3e8
       ttyS3 indirizzo 0x2e8






 6.8.  Impostare gli indirizzi IO e IRQ nell'hardware (per lo pi� per
 PnP)

 Dopo che � impostato nell'hardware non dimenticate di assicurarvi che
 sia anche impostato nel driver usando setserial. Per porte seriali
 non-PnP essi sono impostati sia nell'hardware da jumper o facendo
 girare un programma DOS ("senza jumper") per impostarli (questo
 potrebbe disabilitare PnP). Il resto di questa sottosezione riguarda
 solo le porte seriali PnP. Ecco una lista dei possibili metodi per
 configurare una porta seriale:


 �  Usando un men� di impostazioni CMOS per un BIOS PnP (in genere solo
    per i modem esterni su ttyS0 (Com1) e ttyS1 (Com2))

 �  Lasciando che un BIOS PnP configuri automaticamente una porta
    seriale PnP Vedere ``Usare un BIOS PnP per configurare I0-IRQ''

 �  Non facendo nulla se avete sia una porta seriale PnP ed un sistema
    operativo Linux PnP (vedere Plug-and-Play-HOWTO).

 �  Usando isapnp per una porta seriale PnP non-PCI

 �  Usando pciutils (pcitools) per il bus PCI


 Gli indirizzi di IO e IRQ devono essere impostati (da PnP) nei propri
 registri ogni volta che il sistema viene acceso visto che l'hardware
 PnP non tiene memoria di cosa era stato impostato prima che venisse
 spento il PC. Un semplice modo di fare questo � lasciare che il BIOS
 PnP sappia che voi non avete un sistema operativo PnP ed il BIOS
 automaticamente lo far� ogni volta che si fa partire. Questo potrebbe
 causare problemi sotto Windows (che � un sistema operativo PnP) se voi
 lanciate Windows mentre il BIOS pensa che Windows non sia un sistema
 operativo PnP. Vedere il Plug-and-Play HOWTO.

 Il Plug-and-Play era concepito per automatizzare la configurazione io-
 irq, ma per Linux, allo stato attuale, ha reso la vita pi� complicata,
 I kernel standard per Linux non supportano il plug-and-play molto
 bene. Se usate una patch al kernel di Linux per convertirlo a sistema
 operativo plug-and-play, allora tutto quanto di cui sopra dovrebbe
 essere gestito dal sistema operativo automaticamente. Ma quando volete
 usare questo per automatizzare la configurazione di dispositivi
 diversi dalla porta seriale, potreste scoprire che dovete comunque
 configurare i driver manualmente visto che molti driver Linux non sono
 scritti per supportare un sistema operativo Linux PnP. Se usate
 isapnptools od il BIOS per configurare plug-and-play questi metteranno
 semplicemente i due valori nei registri della sezione della porta
 seriale della scheda del modem e probabilmente dovrete comunque
 impostare setserial. Nulla di tutto questo � facile o � molto ben
 documentato all'inizio del '99. Vedere il Plug-and-Play-HOWTO e la FAQ
 di isapnptools.


 6.8.1.  Usare un BIOS PnP per configurare IO e IRQ

 Mentre la spiegazione su come usare un sistema operativo PnP o isapnp
 per configurare l'io-irq dovrebbe essere di corredo al relativo
 software, questo non � il caso se volete lasciare al BIOS PnP
 l'esecuzione di questa configurazione. Non tutti i BIOS PnP possono
 farlo. Il BIOS ha in genere un men� CMOS per impostare le prime due
 porte seriali.  Questo men� potrebbe essere difficile da trovare e per
 un BIOS "Award" si trova sotto "chipset feautures setup".  C'� spesso
 ben poco tra cui scegliere. A meno di indicazioni diverse nei men�,
 queste prime due porte vengono impostate agli indirizzi IO e IRQ
 standard.  Vedere ``Nomi e numeri dei dispositivi di porte seriali''.

 Che vi piaccia o no, quando accendete un PC, un BIOS PnP inizia ad
 eseguire la configurazione PnP (io-irq) dei dispositivi hardware.
 Potrebbe eseguire il lavoro parzialmente e lasciare il resto al
 sistema operativo PnP (che voi probabilmente non avete) o, se pensa
 che voi non abbiate il sistema operativo PnP, potrebbe configurare
 tutti i dispositivi PnP ma non configurare i device driver. Questo �
 quello che volete ma non � sempre facile scoprire cosa ha fatto
 esattamente il BIOS PnP.

 Se dite al BIOS che non avete un sistema operativo PnP, allora il BIOS
 PnP dovrebbe configurare tutte le porte seriali PnP, non solo le prime
 due. Un modo indiretto per controllare quello che fa il BIOS (se avete
 Windows 9x sullo stesso PC) � "forzare" una configurazione sotto
 Windows. Vedere il Plug-and-Play-HOWTO e cercare "forced".  � pi�
 facile usare il men� CMOS BIOS che potrebbe ignorare quello che avete
 "forzato" sotto Windows. Potrebbe esserci un'opzione nel BIOS che pu�
 impostare o disabilitare questa capacit� di ignorare.

 Se aggiungete un nuovo dispositivo PnP, il BIOS dovrebbe cambiare la
 sua configurazione PnP per accoglierlo. Potrebbe anche cambiare gli
 io-irq di dispositivi esistenti, se necessario, per evitare qualsiasi
 conflitto. A questo scopo, tiene una lista dei dispositivi non PnP a
 patto che abbiate detto al BIOS che questo dispositivi non PnP sono
 configurati con io-irq. Un modo di dire questo al BIOS consiste nel
 lanciare un programma sotto DOS/Windows chiamato ICU.
 Ma come scoprire cosa ha fatto il BIOS cos� che possiate impostare i
 device driver con queste informazioni? Il BIOS stesso pu� fornire
 alcune informazioni, sia nei suoi men� di setup o tramite messaggi
 sullo schermo quando accendete il computer. Vedere ``Cos'� impostato
 nell'hardware della mia porta seriale ? ''

 6.9.  Passare gli indirizzi IRQ e IO a setserial

 Una volta che avete impostato gli indirizzi IO e IRQ nell'hardware (o
 fatto in modo che questo venga fatto dal PnP) avete bisogno anche di
 assicurarvi che il comando "setserial" venga lanciato ogni volta che
 viene lanciato Linux. Vedere la sottosezione ``Configurazione in fase
 di avvio''




 6.10.  Altre configurazioni

 6.10.1.  Configurare il flusso di controllo hardware (RTS/CTS)

 Vedere ``Controllo di flusso'' per una spiegazione. Si dovrebbe sempre
 usare il controllo di flusso hardware (ad eccezione di modem obsoleti
 che non l'hanno). Il vostro programma di comunicazione o "getty"
 dovrebbe avere una opzione per impostarlo (e se siete fortunati
 potrebbe gi� essere stato abilitato per default). Occorre che sia
 impostato sia all'interno del modem (tramite la stringa di
 inizializzazione o per default) che nel device driver. Il vostro
 programma di comunicazione dovrebbe mettere a posto entrambi (se lo
 configurate correttamente).

 Se nessuna delle manovre sopradescritte consente l'attivazione del
 controllo di flusso hardware, dovete provvedere voi. Per il modem
 assicuratevi che esso sia impostato tramite stringa di
 inizializzazione o per default. Se dovete dire al device driver di
 farlo � meglio agire alla partenza mettendo un un file che viene
 lanciato in fase di avvio. Vedere la sottosezione ``Configurazione in
 fase di avvio''.  Dovete anche aggiungere quanto segue a tale file per
 ogni porta seriale (l'esempio � ttyS2) per la quale volete abilitare
 il flusso di controllo hardware:




      stty crtscts < /dev/ttyS2





 Se volete vedere se il controllo di flusso � abilitato eseguite quanto
 segue: in minicom (o simile) digitate AT&V per vedere come �
 configurato il modem e cercate &K3 che vuol dire controllo di flusso
 hardware. Poi controllate se il device driver lo rileva digitando stty
 -a < /dev/ttyS2.  Cercate "crtscts" (senza il segno meno che lo
 disabilita).


 7.  Configurazione del modem (esclusa la porta seriale)

 7.1.  Trovare il vostro modem

 Prima di usare molto tempo per configurare il vostro modem, dovete
 assicurarvi che esso possa essere trovato e che i comandi AT o simili
 possano essere ad esso inviati. Quindi suggerisco che voi prima
 eseguiate una semplice configurazione usando il programma di
 comunicazione che userete sulla porta per vedere se funziona. In caso
 affermativo, il modem � stato trovato. Altrimenti vedere ``Il modem �
 fisicamente presente ma non pu� essere rilevato''.  Un winmodem
 potrebbe essere difficile da rilevare e non funzioner� sotto Linux


 7.2.  Comandi AT

 Cos� come per la porta seriale nella quale risiede un modem, anche il
 modem stesso richiede di essere configurato. Il modem si configura
 inviandogli dei comandi AT (o simili) sulla stessa linea seriale usata
 per inviare dati.  Essi sono brevi e criptici comandi ASCII, tutte le
 stringhe di comando sono prefissate dalle lettere AT. Ad esempio:
 ATZ&K3. Qui ci sono due comandi: Z e &K3.  Sfortunatamente ci sono
 molte diverse variazioni nel gruppo di comandi AT, cos� che quello che
 funziona per un modem potrebbe non funzionare per un altro. Quindi non
 vi � garanzia che i comandi AT dati in questa sezione funzioneranno
 per tutti i modem.  Altro punto � che per far s� che il modem reagisca
 alla stringa di comando AT, deve essere inviato un carattere di
 ritorno a capo alla fine della stringa.

 Dette stringhe di comando vengono automaticamente inviate al modem dai
 programmi di comunicazione o sono inviate direttamente da voi. La
 maggior parte dei programmi di comunicazione forniscono una schermata
 nella quale potete digitare i comandi direttamente al vostro modem.
 Questo � comodo per impostare il modem com'� prima di spegnerlo senza
 dover ricordare ogni volta come lo si era impostato.

 Se avete un manuale per il vostro modem potrete probabilmente dare una
 scorsa al gruppo di comandi AT ivi indicati. Altrimenti potrete
 cercate di trovarli su Internet.  Potreste usare un motore di ricerca
 ed includere alcuni reali comandi nella stringa di ricerca per evitare
 di cercare siti che parlano semplicemente di questi comandi ma dei
 quali non offrono una lista. Potreste anche provare alcuni dei siti
 riportati nella sottosezione ``Siti Web''



 7.3.  Stringhe di inizializzazione: salvarle e richiamarle

 Gli esempi dati in questa sottosezione sono tratti dal gruppo di
 comandi AT Hayes.  Tutte le stringhe di comando devono essere
 prefissate dalle due lettere AT (ad esempio: AT&C1&D3). Quando un
 modem viene acceso, si autoconfigura automaticamente con una delle
 configurazioni che ha salvate nella sua memoria non volatile. Se la
 configurazione � soddisfacente, non c'� altro da fare.

 Se non risulta soddisfacente, si potrebbe sia alterare la
 configurazione memorizzata o configurare il modem ogniqualvolta venga
 usato inviandogli un stringa di comandi nota come "init string"
 (stringa di inizializzazione). Generalmente un programma di
 comunicazione fa questo.  Quello che invia dipende da come avete
 configurato il programma di comunicazione o quale script avete scritto
 per esso se usate Kermit. Potete in genere modificare la init string
 che il vostro programma di comunicazione usa e cambiarla come vi pare.
 Talvolta il programma di comunicazione vi consente di selezionare il
 modello del vostro modem, quindi user� una init string che pensa sia
 la pi� adatta per quel modem.

 La configurazione che il modem usa quando viene acceso per la prima
 volta potrebbe essere rappresentata da una init string. Potreste
 pensare a questa come una stringa di default (chiamata profilo). Se il
 vostro programma di comunicazione invia al modem un'altra stringa
 (l'init string), allora questa stringa modificher� la configurazione
 predefinita. Ad esempio se la init string contiene solo due comandi,
 allora solo queste due voci verranno cambiate.  Comunque, alcuni
 comandi richiamano un profilo memorizzato all'interno del modem cos�
 che un singolo comando di questo tipo nella init string pu� di
 conseguenza cambiare tutta quanta la configurazione.

 I modem moderni hanno alcuni profili diversi memorizzati tra i quali
 scegliere che si trovano nella memoria non-volatile (rimangono l�
 anche quando spegnete il modem). Nel mio modem ci sono due profili
 impostati dalla ditta costruttrice (0 ed 1, nessuno dei quali pu�
 essere cambiato) e due profili definiti dall'utente (0 ed 1) che
 l'utente pu� impostare e memorizzare.  Il vostro modem potrebbe averne
 di pi�. Quale di questi profili definiti dall'utente venga usato
 all'accensione depende da un altro valore memorizzato nel profilo. Se
 viene impartito il comando &Y0 allora verr� usato il profilo 0 alla
 prossima accensione. Se invece troviamo un 1 invece che uno 0 allora
 il profilo 1 sar� usato all'accensione.

 Ci sono anche comandi per richiamare (riusare) ciascuno dei 4 profili
 memorizzati.  Uno potrebbe mettere un comando di questo tipo nella
 init string. Naturalmente se verr� richiamato lo stesso profilo cos�
 come � stato automaticamente caricato all'accensione, non cambia nulla
 a meno che il profilo attivo sia stato modificato dopo l'accensione.
 Visto che potrebbe essere stato modificato, � una buona idea usare una
 specie di init string anche se non fa null'altro che richiamare un
 profilo memorizzato.

 Per richiamare un profilo salvato (usate 1 invece che 0 per il profilo
 1):
 Z0 recupera il profilo utente 0 e reimposta il modem (riappende, ecc.)
 &F0 recupera il profilo impostato dalla ditta costruttrice 0

 Una volta inviati i comandi al modem per configurarlo nel modo che
 volete (incluso richiamare il profilo della casa costruttrice per poi
 modificarlo un poco), potreste volere salvare questo come profilo
 definito dall'utente:
 &W0 salva la configurazione corrente nel profilo utente

 La maggior parte della gente non si preoccupa di salvare una buona
 configurazione nei propri modem ma, invece, inviano al modem una
 stringa pi� lunga ogni volta che il modem viene usato. Un altro metodo
 consiste nel riprisitinare la configurazione di default della casa
 costruttrice all'inizio della stringa di inizializzazione, quindi
 modificarla leggermente aggiungendo qualche altro comando alla fine
 della init string. Agendo in questo modo, non c'� pericolo di
 modificare il profilo definito dall'utente che viene caricato
 all'accensione

 Si pu� anche scegliere una stringa di inizializzazione fornita da
 qualcun altro che sostenga che sia buona per il vostro modem ecc.
 Alcuni programmi di comunicazione hanno una libreria di stringhe di
 inizializzazione dalla quale scegliere. Il metodo pi� difficile (e
 quello che vi insegner� di pi� riguardo ai modem) � studiare il
 manuale del modem e scrivere una stringa da soli.  Potrete poi salvare
 questa configurazione all'interno del modem cos� che una stringa di
 inizializzazione non sar� necessaria.  Una terza alternativa �
 iniziare con una stringa di inizializzazione che qualcun altro ha
 scritto, poi modificarla per adattarla alle vostre esigenze.

 Ora se guardate le init string usate dai programmi di comunicazione
 potreste vedere simboli che non sono comandi modem validi. Questi
 simboli sono comandi al programma di comunicazione stesso (tipo ~ che
 significa effettuare una breve pausa) e non sono inviati al modem





 7.4.  Altri comandi modem

 Una prossima edizione di questo HOWTO potrebbe contenere anche
 qualcosa di pi� su questo ma il resto di questa sezione � per la
 maggior parte quello che si trova nel vecchio Serial-HOWTO. Tutte le
 stringhe devono iniziare con AT. Ecco alcuni codici AT Heyes che
 dovrebbero essere nella stringa (se non sono stati impostati usando le
 impostazioni predefinite del costruttore o da una configurazione
 salvata)



      E1       eco comandi ON
      Q0       riporta i codici di risposta
      V1       verbose ON
      S0=0     non rispondere mai (uugetty fa questo con l'opzione WAITFOR)




 Ecco alcuni altri codici riguardanti il controllo delle linee DCD e
 DSR del modem:


      &C1 DCD attivato solo dopo la connessione
      &S0 DSR sempre attivato




 Questi riguardano quello che fa il vostro modem quando inizia o
 finisce una comunicazione. Si potrebbe impostare anche quallo che fa
 DTR ma � pi� complicato.


 Se il vostro modem non supporta un profilo salvato, lo potete
 impostare attraverso una stringa INIT in un file di configurazione (o
 simile).  Alcuni vecchi modem hanno degli interruttori DIP che variano
 le impostazioni dei registri. Assicuratevi che siano impostati
 anch'essi correttamente.


 Greg Hankins ha una libreria di impostazioni modem per diversi tipi.
 Se volete inviargli la vostra configurazione di lavoro fatelo a:
 <mailto:[email protected]>. Potete recuperare queste impostazioni a
 ftp://ftp.cc.gatech.edu/pub/people/gregh/modem-configs.


 Note: perch� il suo USR Courier V.34 si reinizializzi correttamente
 dopo che cade DTR, Greg Hankins ha dovuto impostare &D2 and S13=1
 (questo imposta il bit 0 del registro S13). � confermato che la cosa
 vale anche per gli USR Sportster V.34.


 Nota: alcuni Supra trattano DCD in modo diverso rispetto agli altri
 modem.  Se state usando un Supra, provate ad impostare &C0 e not &C1.
 Dovrete anche impostare &D2 per gestire DTR correttamente



 8.  Dispositivi di porta seriale /dev/ttyS2, ecc.

 Per creare dispositivi nella directory dei dispositivi vedere il
 Serial-HOWTO: "Creating Devices In the /dev directory".


 8.1.  Nomi e numeri dei dispositivi di porta seriali

 I dispositivi in Linux hanno numeri primari e secondari. Ogni porta
 seriale pu� avere due possibili nomi, nella directory /dev: ttyS e
 cua. I loro driver si comportano in modo leggermente differente. Il
 dispositivo cua � disapprovato e potrebbe non essere pi� usato in
 futuro. Vedere ``Il device cua''.


 Dos/Windows usano il nome COM mentre il programma setserial usa tty00,
 tty01 ecc. Non confondete questi con dev/tty0, /dev/tty1, ecc.  che
 sono usati per le console (il monitor del vostro PC) ma non sono porte
 seriali.  La tavola seguente � per il caso "standard" (ma il vostro
 potrebbe essere diverso"



                                                      indirizzo
      dos             prim. sec.          prim. sec.     IO
      COM1  /dev/ttyS0  4,  64;  /dev/cua0  5,  64      3F8
      COM2  /dev/ttyS1  4,  65;  /dev/cua1  5,  65      2F8
      COM3  /dev/ttyS2  4,  66;  /dev/cua2  5,  66      3E8
      COM4  /dev/ttyS3  4,  67;  /dev/cua3  5,  67      2E8




 Notate che tutte le distribuzioni dovrebbero avere dei dispositivi
 ttyS (e molte distribuzioni hanno anche l'obsoleto cua ). Potreste
 verificarlo digitando (non preoccupatevi se non trovate alcun obsoleto
 dispositivo cua):



      linux% ls -l /dev/cua*
      linux% ls -l /dev/ttyS*





 8.2.  Collegare con link ttySN a /dev/modem ?

 In alcune installazioni, saranno creati due dispositivi extra,
 /dev/modem per il vostro modem e /dev/mouse per il vostro mouse.
 Entrambi sono dei link simbolici agli appropriati dispositivi in /dev
 che avete specificato durante l'installazione (a meno che non abbiate
 un bus mouse, allora /dev/mouse punter� al dispositivo del bus mouse).

 Ci sono state alcune discussioni riguardo a /dev/mouse  e /dev/modem.
 L'uso di questi link � sconsigliato. In particolare, se state pensando
 di usare il vostro modem per ricevere chiamate potreste avere problemi
 perch� i file di lock potrebbero non funzionare correttamente se usate
 /dev/modem. Comunque, se cambiate o eliminate questi link, alcune
 applicazioni potrebbero necessitare di una riconfigurazione.



 8.3.  Il dispositivo cua

 Ad ogni dispositivo ttyS corrisponde un dispositivo cua. Ma il
 dispositivo cua � disapprovato, cos� � meglio usare ttyS (a meno che
 cua sia richiesto).  C'� differenza tra cua e ttyS ma un programmatore
 previdente pu� fare s� che una porta ttyS si comporti esattamente come
 una porta cua, cos� non c'� pi� realmente bisogno di cua. A meno che
 alcuni vecchi programmi non richiedano l'uso di cua.
 Qual'� la differenza? La differenza principale tra cua e ttyS si
 riferisce a quanto succede in un programma C quando un normale comando
 "open" cerca di aprire la porta. Se una porta cua � stata impostata
 per controllare i segnali di controllo del modem, la porta potrebbe
 essere aperta anche se il segnale di controllo DCD del modem dice che
 non � vero. Una astuta programmazione (aggiungendo lineee addizionali
 al programma) pu� forzare una porta ttyS a comportarsi anch'essa in
 questo modo. Ma una porta cua pu� essere ancora pi� facilmente
 programmata per aprirsi per comporre una chiamata in uscita anche
 quando il modem non riesce ad identificare DCD (visto che nessuno ci
 ha chiamato e non c'� portante). Ecco perch� cua era una volta usata
 per chiamate in uscita e ttyS era usata per chiamate in entrata.

 A partire dal kernel 2.2, un messaggio di avvertimento verr� immesso
 nel log del kernel quando si usa cua. Questo � il presagio che cua fra
 un poco sparir�.


 9.  Degli interessanti programmi di cui dovreste essere a conoscenza

 9.1.  Cos'� setserial ?

 Questa parte si trova in 3 HOWTO: Modem, Serial e Text-Terminal. Ci
 sono lievi differenze, in relatizione a quale HOWTO appaiono.


 9.1.1.  Introduzione

 Non usate mai setserial con i Laptop (PCMCIA).  setserial � un
 programma che vi permette di comunicare al software del device driver
 l'indirizzio IO della porta seriale, quale interrupt (IRQ) � impostato
 nell'hardware della porta quale tipo di UART avete, ecc. Pu� anche
 mostrare come il driver sia attualmente impostato. In pi� pu� rilevare
 l'hardware per cercare di determinare il tipo di UART e l'IRQ. Ma ci
 sono seri limiti. Vedere ``Probing''. Notate che non si possono
 impostare l'IRQ, ecc. nell'hardware delle porte seriali PnP.

 Se avete solo una o due porte seriali, generalmente esse si
 imposteranno correttamente senza usare setserial. Altrimenti (o se ci
 sono problemi con la porta seriale) dovrete probabilmente avere a che
 fare con setserial. A parte la pagina di manuale di setserial, leggete
 anche le informazioni in /usr/doc/setserial.../ o
 /usr/share/doc/setserial.  Dovrebbero dirvi come setserial sia gestito
 nella vostra distribuzione di Linux.

 Setserial � spesso lanciato automaticamente in fase di avvio da uno
 script di shell allo scopo di assegnare IRQ, ecc. al driver. Setserial
 funziona solo se il modulo seriale � caricato (o se l'equivalente era
 compilato nel vostro kernel). Se doveste (per qualche ragione)
 scaricare il modulo seriale pi� tardi, i cambiamenti precedentemente
 effettuati da setserial saranno persi dal kernel (ma non da
 /etc/serial.conf). Quindi setserial deve essere lanciato di nuovo per
 reimpostarli.  Oltre ad essere lanciato da uno script di avvio,
 qualcosa di simile a setserial viene lanciato quando il modulo seriale
 viene caricato. Quindi quando osservate i messaggi di avvio sullo
 schermo potrebbe sembrare che sia stato lanciato due volte ed in
 effetti si � verificato questo.

 Setserial pu� impostare il tempo nel quale la porta continua ad
 operare dopo essere stata chiusa (per fare uscire qualsiasi carattere
 rimasto ancora nel suo buffer nella RAM principale).  Questo �
 necessario a basse velocit� di baud (1200 o inferiori). � anche
 necessario a velocit� pi� alte se ci sono molte attese causate dal
 controllo di flusso. Vedere "closing wait" nella pagina di manuale.


 Setserial non imposta n� l'IRQ n� gli indirizzi IO nella porta seriale
 da solo. Questo compito viene svolto da "jumper" o dal plug-and-play.
 Dovete passare a setserial gli identici valori che sono stati
 impostati nell'hardware.  Non inventatevi dei valori che pensate
 possano andare bene da passare a setserial. Comunque, se sapete
 l'indirizzo I/O ma non conoscete l'IRQ potere ordinare a setserial di
 tentare di determinarlo.

 Potete vedere una lista di possibili comandi da usare digitando
 setserial senza parametri. Non verranno mostrati le opzioni a una
 lettera tipo -v per verboso (?), che dovreste in genere usare quando
 dovete risolvere dei problemi.  Notate che setserial chiama un
 indirizzo IO "porta". Se digitate

 setserial -g /dev/ttyS*


 vedrete alcune informazioni circa il modo in cui il device driver �
 configurato per le vostre porte. Aggiungete una "-v" all'opzione "-g"
 per saperne di pi� sebbene poche persone avranno a che fare (o com�
 prendere) queste informazioni aggiuntive visto che i valori pre�
 definiti in genere funzionano bene. In casi normali l'hardware �
 impostato nello stesso modo in  cui "setserial" lo riporta, ma se
 avete problemi allore esiste una buona probabilit� che "setserial" si
 stia sbagliando.  Infatti, potete lanciare setserial assegnando un
 indirizzo IO puramente fittizio, un qualsiasi IRQ e qualsiasi tipo di
 UART vi pare. Poi la prossima volta che digitate "setserial ... " ver�
 ranno visualizzati questi falsi valori senza nessuna protesta. Natu�
 ralmente il driver della porta seriale non funzioner� correttamente (o
 non funzioner� del tutto) con questi valori inventati.

 Mentre gli assegnamenti fatti da setserial sono persi quando il PC
 viene spento, un file di configurazione potrebbe reimpostarli (oppure
 una configurazione precedente) quando il PC viene acceso di nuovo.
 Nelle versioni pi� recenti, quello che voi cambiate tramite setserial
 viene salvato automaticamente in un file di configurazione. Nelle
 versioni pi� vecchie, il file di configurazione viene modificato solo
 se lo editate manualmente, quindi la configurazione rimane la stessa
 ad ogni avvio.  Vedere ``Script/file di configurazione''.



 9.1.2.  Rilevazione (probing)

 Con le opzioni appropriate, setserial pu� rilevare (ad un dato
 indirizzo I/O) una porta seriale, ma dovete indovinare l'indirizzo di
 I/O. Se gli chiedete di rilevare /dev/ttyS2 per esempio, tenter� di
 rilevarlo solo all'indirizzo nel quale pensa sia ttyS2 (2F8). Se dite
 a setserial che ttyS2 si trova ad un indirizzo diverso, allora dovrete
 rilevare a quell'indirizzo, etc. Vedere ``Rilevazione''.

 Lo scopo di questo � vedere se l� c'� una uart, e se s�, quale IRQ
 abbia. Usate "setserial" come ultima risorsa visto che ci sono metodi
 pi� veloci per farlo tipo wvdialconf per rilevare i modem, guardare i
 messaggi che compaiono per primi all'avvio, o usando pnpdump
 --dumpregs.  Per cercare di identificare l'hardware fisico usate i
 parametri -v (verbose) e il comando autoconfig per setserial. Se il
 messaggio che ne risulta mostra un tipo di uart come 16550A, allora
 tutto � a posto. Se invece mostra "unknown" (sconosciuto) per il tipo
 di uart, allora potrebbe non esserci una porta seriale a
 quell'indirizzo I/O. Alcune porte seriali a buon mercato non si
 identificano correttamente cosi se vedete "unknown" potreste comunque
 avere una porta seriale a quell'indirizzo.

 A parte l'auto-rilevazione per il tipo di uart, setserial pu� anche
 auto-rilevare gli IRQ ma questo non sempre funziona correttamente. In
 versioni di setserial 2.15 e superiori, i risultati della vostra
 ultima prova di rilevazione possono essere salvati nel file di
 configurazione /etc/serial.conf che verr� usato al prossimo avvio di
 Linux.  In fase di avvio, quando il modulo di serial si carica, una
 rilevazione per le UART viene fatta automaticamente ed i risultati
 visualizzati sullo schermo. Ma l'IRQ che mostra potrebbe essere
 errato. La seconda visualizzazione dello stesso � il risultato di uno
 script che in genere non esegue alcuna rilevazione e quindi non d�
 informazioni attendibili riguardo a come l'harware sia effettivamente
 impostato. Mostra sono dati di configurazione che qualcuno ha scritto
 all'interno dello script o dati che sono stati salvati in
 /etc/serial.conf.

 Potrebbe essere che due porte seriali abbiano entrambe lo stesso
 indirizzo di IO impostato nell'hardware. Naturalmente ci� non �
 consentito, ma talvolta accade comunque. La rilevazione identifica una
 porta seriale quando in realt� ce ne sono due. Comunque, se hanno
 diversi IRQ, alla la rilevazione dell'IRQ potrebbe mostrare IRQ = 0.
 Per me accade questo solo se prima uso setserial per attribuire
 all'IRQ un valore fittizio.



 9.1.3.  Pu� Linux configurare i dispositivi seriali "automagicamente"?

 S�, ma ... La vostra distribuzione potrebbe gi� avere fatto questo in
 fase di avvio.  Ma potreste volerli personalizzare. � facile da fare
 per setserial precedenti al 2.15. Semplicemente aggiungete alcune
 righe al file che lancia setserial all'avvio.  Vedere ``Vecchi metodi
 di configurazione: modificare uno script'' Ad esempio, per ttyS3
 dovreste aggiungere:



       /sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig



 al file che lancia setserial all'avvio.  Fate questo per ogni porta
 seriale che volete autoconfigurare. Assicuratevi di passare un nome di
 dispositivo che effettivamente esiste sulla vostra macchina.  In
 alcuni casi, questo non funzioner� bene a causa dell'hardware, cos�
 potreste volere assegnarli un irq e/o un tipo di uart ad esempio


 9.1.4.  Configurazione in fase di avvio

 Quando il kernel carica il modulo seriale (o se l'"equivalente modulo"
 � incorporato al kernel) allora solo ttyS{0-3} sono auto-rilevate ed
 il driver viene impostato ad IRQ 4 e 3 (a prescindere dalle reali
 impostazioni dell'hardware). Potete vedere questo nei messaggi di
 avvio proprio come se setserial fosse stato lanciato. Se usate 3 o pi�
 porte, questo potrebbe generare un conflitto di IRQ.

 Per risolvere detti conflitti passando a setserial i veri IRQ (o per
 altre ragioni) potrebbe esserci un file da qualche parte che lancia
 setserial di nuovo.  Questo accade all'inizio della fase di avvio
 prima che qualsiasi processo usi la porta seriale. In effetti, la
 vostra distribuzione potrebbe avere impostato le cose in modo che il
 programma setserial venga lanciato automaticamente da uno script di
 avvio in fase di boot. Ulteriori informazioni su come gestire questa
 situazione dovrebbero trovarsi in file chiamati "setserial.." o simile
 nella directory /usr/doc/ o /usr/share/doc/.



 9.1.5.  Script/file di configurazione

 Il vostro obbiettivo � modificare (o creare) uno script nel ramo /etc
 che lanci setserial in fase di avvio. La maggior parte delle
 distribuzioni forniscono un file di questo tipo (ma inizialmente
 potrebbe non risiedere nel ramo /etc). In pi�, setserial 2.15 e
 superiore spesso hanno un file /etc/serial.conf che viene usato dallo
 script di cui sopra cos� che non dovrete modificare direttamente lo
 script che lancia setserial. Inoltre semplicemente usando setserial da
 riga comandi (2.15 e superiore) potrebbe alterare questo file di
 configurazione.

 Quindi prima della versione 2.15 di setserial tutto quello che
 dovevate fare era modificare uno script. Dopo la 2.15 potreste avere
 bisogno di fare una delle seguenti cose: 1. modificare uno script. 2.
 modificare /etc/serial.conf. o 3. lanciare "setserial" da riga comandi
 il cui risultato sar� l'immediata modifica di /etc/setserial.conf.
 Quali di queste cose dobbiate fare dipende sia dalla vostra specifica
 distribuzione, e da come l'avete impostata.

 Per di pi� neppure serial.conf viene mai modificato. Invece si usa
 semplicemente setserial da riga comandi.


 9.1.6.  Modificare uno script (dopo la versione 2.15: forse no)

 Prima di setserial 2.15 (1999) non c'era un file /etc/serial.conf per
 configurare setserial.  Quindi dovrete scoprire il file che lancia
 "setserial" in fase di avvio e modificarlo.  Se non esiste dovrete
 crearne uno (o mettere i comandi in un file che viene lanciato nelle
 prime fasi di avvio). Se detto file viene correntemente usato,
 probabilmente si trova da qualche parte nel ramo /etc. Ma Redhat <6.0
 lo ha fornito in /usr/doc/setserial ma dovrete spostarlo nel ramo /etc
 prima di usarlo. Potreste usare "locate" per cercare di trovare un
 file di questo tipo. Ad esempio potreste digitare: locate "serial*".

 Lo script /etc/rc.d/rc.serial era comunemente usato in passato.

 Se un file di questo tipo viene fornito, dovrebbe contenere una serie
 di esempi "commentati".  Rendendo attivi e/o modificando alcuni di
 questi esempi, dovreste essere in grado di impostare tutto quanto
 correttamente. Assicuratevi di usare un percorso valido per setserial
 ed un valido nome di dispositivo. Potreste eseguire un test mandando
 in esecuzione questo file manualmente (basta digitare il suo nome da
 superuser) per vedere se funziona bene.  Testare in questo modo �
 molto pi� veloce che eseguire ripetuti riavvii. Naturalmente potete
 anche testare un singolo comando di setserial semplicemente
 digitandolo sulla riga comandi.

 Se volete che setserial determini automaticamente la uart e l'IRQ per
 ttyS3 dovreste aggiungere qualcosa tipo:



      /sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig





 Fate ci� per ogni porta seriale che volete auto configurare.
 Assicuratevi di fornire un nome di device che esiste veramente sulla
 vostra macchina.  In alcuni casi questo non funzioner� correttamente a
 causa dell'hardware cos� se sapete quali siano la uart e l'irq,
 potreste volerli assegnare esplicitamente con "setserial". Ad esempio:

      /sbin/setserial /dev/ttyS3 irq 5 uart 16550A  skip_test





 Per versioni 2.15 e superiori (a patto che la vostra distribuzione
 implementi la modifica, Redhat non l'ha fatto) potrebbe essere pi�
 complicato da fare visto che il file che lancia setserial all'avvio,
 /etc/init.d/setserial o simile non era previsto che fosse modificato
 dall'utente. Vedere ``Nuovi metodi di configurazione usando
 /etc/serial.conf''.


 9.1.7.  Nuovi metodi di configurazione usando /etc/serial.conf

 Prima della versione 2.15 di setserial, il modo di configurare
 setserial era di modificare manualmente lo script di shell che
 lanciava setserial in fase di avvio, Vedere ``Modificare uno script
 (dopo la versione 2.15: forse no)''.  A partire dalla versione 2.15
 (1999) di setserial quest script di shell non viene modificato ma
 piuttosto prende i suoi dati da un file di configurazione:
 /etc/serial.conf. In pi� non dovrete pi� avere bisogno di modificare
 serial.conf poich� usando il comando "setserial" da riga comandi
 potrebbe automaticamente fare s� che serial.conf sia modificato in
 modo appropriato.

 Si intendeva agire in questo modo cos� che voi non avete bisogno di
 modificare alcun file per impostare (o cambiare) setserial, cos� che
 possa fare la cosa giusta ogni volta che Linux viene avviato. Ma ci
 sono delle trappole pericolose perch� non � veramente "setserial" che
 modifica serial.conf. La confusione � moltiplicata poich� diverse
 distribuzioni gestiscono la cosa in modo differente. In pi�, voi
 potreste modficarlo cos� da farlo lavorare in modo diverso.

 Quello che spesso accade � questo: Quando spegnete il vostro PC lo
 script che lancia "setserial" in fase di avvio viene di nuovo
 lanciato, ma questa volta esegue solo la parte che la situazione di
 "stop" dice di fare: Esso usa "setserial" per trovare qual � lo stato
 attuale di "setserial" e mette questo informazioni nel file
 serial.conf. Cos� quando lanciate setserial per cambiare il file
 serial.conf, il cambiamento non avviene immediatamente, ma solo quando
 eseguite un normale spegnimento del PC.

 Ora potreste forse indovinare quale problema potrebbe sopraggiungere.
 Supponiamo che voi non spegniate normalmente (usando l'interruttore,
 ecc.) e che i cambiamenti non vengano salvati. Supponiamo che state
 sperimentando con "setserial" e dimentichiate di lanciarlo un'ultima
 volta per ripristinare lo stato originale (o fare in modo che gli
 errori vengano riportati al loro stato originale). In questo caso
 saranno salvate le vostre impostazioni "sperimentali".

 Se modificate manualmente serial.conf, allora la vostra modifica viene
 cancellata quando spegnete visto che viene ripristinato lo stato di
 setserial allo spegnimento. C'� un modo di disabilitare il cambiamento
 di setserial in fase di spegnimento ed � quello di rimuovere
 "###AUTOSAVE###" o simile dalla prima riga di serial.conf. In almeno
 una distribuzione, la rimozione di "###AUTOSAVE###" dalla prima riga
 viene fatto automaticamente dopo la prima volta che si spegne il PC
 appena dopo l'installazione. Il file serial.conf dovrebbe contenere
 degli esempi "commentati" per aiutarvi.

 Il file pi� comunemente usato per lanciare setserial all'avvio (in
 conformit� con il file di configurazione) � ora /etc/init.d/setserial
 (Debian) o /etc/init.d/serial (Redhta), o ecc., ma normalmente non
 dovrebbe essere modificato. Per la 2.15 Redhat 6.0 ha semplicemente un
 file /usr/doc/setserial-2.15/rc.serial che dovete spostare in
 /etc/init.d/ se volete che setserial venga lanciato in fase di avvio.

 Per disabilitare una porta, usate setserial per impostarla "uart
 none". Il formato di /etc/serial.conf sembra che sia quello dei
 parametri digitati dopo "setserial" da riga comandi con una riga per
 ogni porta. Se non usate autosave, potreste modificare
 /set/serial.conf manualmente.

 BUG: Fino a luglio 1999 c'era un bug/problema visto che con
 ###AUTOSAVE### solo i parametri di setserial visualizzati da
 "setserial -Gg /dev/ttyS*" venivano salvati, ma gli altri parametri
 no.  Usate il flag -a con "setserial" per vedere tutti i parametri.
 Questo bug affligger� solo una piccola minoranza di utenti visto che i
 parametri non salvati sono in genere OK per la maggior parte delle
 situazioni. � stato riportato come bug e potrebbe essere gi� stato
 corretto.  Per fare s� che le impostazioni correnti vengano salvate da
 setserial nel file di configurazione (serial.conf) senza spegnere il
 PC, fate quello che fareste normalmente quando spegnete: Lanciate lo
 script di shell /etc/init.d/{set}serial stop. Il comando "stop"
 salver� la configurazione corrente ma la porta seriale continuer� a
 funzionare bene.

 In alcuni casi potreste avere sia il nuovo che il vecchio metodo di
 configurazione installati ma si spera che solo uno di essi venga
 lanciato in fase di avvio. Debian classificava come obsoleti i file
 con "...pre-2.15".





 9.1.8.  IRQ

 Per default, sia ttyS0 che ttyS2 condividono l'IRQ 4, mentre ttys1 e
 ttyS3 condividono l'IRQ 3. Ma non � permessa la condivisione degli
 interrupt seriali, a meno di: 1. avere un kernel 2.2 o superiore, 2.
 si � compilato il supporto per questa cosa, e 3. il vostro hardware
 seriale lo supporta. Vedere ``Condivisione di interrupt e i Kernel
 2.2+'' Se avete solo due porte seriali ttyS0 e ttyS1, siete comunque a
 posto, visto che non esistono conflitti di condivisione di IRQ per
 dispositivi che non esistono.  Se aggiungete un modem interno e
 conservate ttyS0 e ttyS1, allora dovreste cercare di trovare un IRQ
 inutilizzato per assegnarlo al vostro device driver. Se IRQ 5 non �
 usato da una scheda audio, potrebbe essere adatto da usare per un
 modem. Per impostare l'IRQ nell'hardware potreste avere bisogno di
 usare isapnp, un BIOS PnP o modificare Linux per renderlo PnP. Per
 aiutarvi a determinare quale IRQ di "ricambio" potreste avere,
 digitate "man setserial" e cercate diciamo "IRQ 11".




 9.2.  Cos'� isapnp ?

 isapnp � un programma per configurare i dispositivi Plug-and-Play
 (PnP) sul bus ISA inclusi i modem interni. � incluso in un pacchetto
 chiamato "isapnptools" ed include un altro programma, "pnpdump" che
 trova tutti i vostri dispositivi ISA PnP e vi mostra le opzioni per
 configurarli in un formato che potrebbe essere aggiunto al file di
 configurazione di PnP: /etc/isapnp.conf. Potrebbe anche essere usato
 con l'opzione --dumpregs per mostrare l'indirizzo IO e l'IRQ della
 porta seriale del modem correnti.  Il comando isapnp potrebbe essere
 incluso in un file di avvio cos� che esso sia lanciato ogni volta che
 si accende il computer e quindi configuri i dispositivi ISA PnP. Si
 pu� fare questa anche se il vostro BIOS non supporta il PnP. Vedere il
 Plug-and-Play-HOWTO.


 9.3.  Cos'� wvdialconf?

 wvdialconf cercher� di trovare quale porta seriale (ttyS?) ha un modem
 su di essa.  Crea anche un programma di configurazione per il
 programma wvdial. wvdial � usato per semplificare le chiamate in
 uscita verso un ISP (Internet provider) usando il protocollo PPP. Ma
 non avete bisogno di installare PPP per potere usare wvdialconf. Esso
 rilever� solo modem che non sono in uso. Concepir� anche
 automaticamente una stringa di inizializzazione "adatta" ma talvolta
 la creer� sbagliata. Visto che il comando non ha opzioni, � semplice
 da usare ma dovete passargli il nome di un file nel quale mettere la
 stringa di inizializzazione (ed altri dati).  Ad esempio digitate:
 wvdialconf nome_del_mio_file_di_configurazione.


 9.4.  Cos'� stty?

 stty � come setserial ma imposta il baud rate ed altri parametri della
 porta seriale. Digitando "stty -a < /dev/ttyS2" dovreste visualizzare
 come � configurata ttyS2.  La maggior parte delle impostazioni sono
 per cose che non dovreste mai avere bisogno di usare coi modem (tipo
 cose usate solo per terminali degli anni '70). Il vostro pacchetto di
 comunicazione dovrebbe automaticamente impostare tutta la corretta
 configurazione per i modem. Ma stty � talvolta utile per risolvere dei
 problemi.

 Due valori impostati da stty sono: 1. Flusso di controllo hardware
 tramite "crscts" e 2. Ignorare il segnale DCD da modem: "clocal". Se
 il modem non sta inviando segnali DCD e clocal � disabilitato (stty
 mostra -clocal), allora un programma potrebbe non essere in grado di
 aprire la porta seriale. Se la porta non si pu� aprire il programma
 potrebbe bloccarsi, attendendo (spesso vanamente) per un segnale DCD
 dal modem.

 Minicom imposta clocal automaticamente quando viene lanciato quindi
 non ci sono problemi.  Ma la versione 6.0.192 di Kermit si pianta
 quando imposto -clocal e provo "set line...".  Se -clocal � impostato
 e non c'� segnale DCD allora anche il comando "stty" si pianter� e non
 c'� modo di impostare clocal (a meno di lanciare minicom). Ma minicom
 reimposter� -clocal laddove esista. Un modo di uscire da questo �
 usare minicom per inviare "AT&C" al modem (per ottenere il segnale
 DCD), quindi uscire da minicom senza resettare cos� che il segnale DCD
 rimanga attivo. Poi si pu� riusare stty.X


 10.  Provare il modem (effettuare una chiamata)

 10.1.  Siete pronti per effettuare una chiamata?

 Una volta che avete collegato il vostro modem e sapete quale porta
 seriale � attiva, siete pronti ad usarlo. Prima di provare ad accedere
 ad Internet o consentire che altri si colleghino al vostro computer,
 provate prima qualcosa di pi� semplice come chiamare alcuni numeri per
 vedere se il vostro modem funziona bene. Se non sapete che numero
 chiamare, chiedete nei negozi di computer dei numeri di banche dati,
 ecc. oppure vedete se una libreria locale ha un numero di telefono per
 il suo catalogo in linea.

 Poi assicuratevi di essere pronti a telefonare. Sapete su quale porta
 seriale (tipo ttyS2) si trova il vostro modem? Avreste dovuto
 scoprirlo quando avete configurato l'io-irq della vostra porta
 seriale. Avete deciso quale velocit� userete per questa porta? Vedere
 ``Tabella delle velocit� '' per una scelta rapida oppure ``Che
 velocit� dovrei usare con il mio modem?'' per ulteriori dettagli.  Se
 non avete idea di quale velocit� impostare, impostatela un po'
 superiore a quella certificata del vostro modem. Ricordate anche che
 se vedete un men� dove un opzione � "hardware flow control" (controllo
 di flusso hardware) e/o "RTS/CTS" o simili, selezionatela. � un cavo
 telefonico attivo quello collegato al vostro modem? Potreste
 connettere il cavo ad un vero telefono per controllare che produca il
 segnale di linea.

 Ora dovete selezionare un programma di comunicazione da usare per
 chiamare il numero. Fra questi programmi includiamo minicom, seyon (X-
 windows) e kermit.  Vedere la sezione ``Programmi di comunicazione''
 per notizie circa alcuni programmi di comunicazione. Un paio di esempi
 sono presentati pi� avanti: ``Chiamare con Minicom'' e ``Chiamare con
 Kermit''.


 10.2.  Chiamare con minicom

 Minicom viene incluso nella maggior parte delle distribuzioni di
 Linux. Per configurarlo dovete esser collegati come root. Digitate
 "minicom -s" per configurarlo. Verranno direttamente visualizzati i
 men� di configurazione.  Oppure potete anche digitare "minicom", poi
 digitare ^A per vedere la riga di stato in fondo. Essa invita a
 digitare ^A Z per un aiuto (se avete gi� digitato ^A digitate solo z).
 Dal men� di aiuto (help men�) andate al men� di Configurazione
 (Configuration menu).


 Non occorre impostare la maggior parte delle opzioni se si vuole
 semplicemente effettuare una chiamata. Per la configurazione dovete
 fornire due semplici voci: il nome della porta seriale connessa al
 modem (tipo /dev/ttyS2) e la velocit� (tipo 115200). Questi valori si
 impostano nel men� serial port.  Apritelo ed impostate i valori. Poi
 (se possibile) impostate il controllo di flusso hardware (RTS/CTS).
 Poi salvate. Quando digitate la velocit�, dovreste anche vedere
 qualcosa tipo "8N1" che dovreste lasciare stare. Vuole dire: Byte da 8
 bit, Nessuna parit�, 1 bit di stop aggiunto ad ogni byte. Se non
 trovate la velocit� che desiderate, una velocit� minore funzioner�
 comunque per una prova.  Uscite (digitando return) quando avete finito
 e salvate la configurazione come default (dfl) usando il men�.
 Potreste uscire da minicom e poi rilanciarlo per controllare se adesso
 trova la porta seriale ed inizializza il modem, oppure potete tornare
 all'help e dire a minicom di inizializzare il modem.

 Ora siete pronti per chiamare. Ma prima, dalla videata principale che
 ottenete dopo avere digitato "minicom", assicuratevi che ci sia un
 modem presente digitando AT poi premendo il tasto <enter>. Dovreste
 vedere un "OK". Se questo non accade c'� qualcosa di sbagliato e sar�
 impossibile tentare una chiamata.

 Se ricevete "OK" tornate all'help e selezionate l'elenco telefonico.
 Potete modificarlo e digitare un numero di telefono, ecc.
 nell'elenco, poi scegliete "dial" (componi) per chiamare. In
 alternativa, potete digitare il numero manualmente (selezionando
 "manual" poi digitando il numero sulla tastiera). Se non funziona
 annotate accuratamente ogni messaggio di errore visualizzato e cercate
 di scoprire cosa non va. Per vedere se minicom ha trovato il modem,
 semplicemente lanciatelo e digitate direttamente qualcosa. Tutti i
 comandi al modem devono essere prefissati da "AT". Scrivendo quindi
 semplicemente "AT" dovreste ricevere in risposta un "OK" dal modem.





 10.3.  Effettuare una chiamata con kermit

 Trovate l'ultima versione di kermit in
 http://www.columbia.edu/kermit/.  Ad esempio, diciamo che il vostro
 modem si trova in ttyS3 e la velocit� � 115200 bps. Dovreste fare
 questo:


      linux# kermit
      C-Kermit 6.0.192, 6 Sep 96, for Linux
       Copyright (C) 1985, 1996,
        Trustees of Columbia University in the City of New York.
      Default file-transfer mode is BINARY
      Type ? or HELP for help.
      C-Kermit>set line /dev/ttyS3
      C-Kermit>set carrier-watch off
      C-Kermit>set speed 115200
      /dev/ttyS3, 115200 bps
      C-Kermit>c
      Connecting to /dev/ttyS3, speed 115200.
      The escape character is Ctrl-\ (ASCII 28, FS)
      Type the escape character followed by C to get back,
      or followed by ? to see other options.
      ATE1Q0V1                    ; digitate questo poi Enter
      OK                          ; il modem dovrebbe rispondere cos�




 Se il modem risponde correttamente ai comandi AT allora si deve
 supporre che il vostro modem funziona correttamente per quanto
 riguarda Linux. Ora provate a chiamare un altro modem digitando:


      ATDT7654321




 dove 7654321 � un numero di telefono. Usate ATDP in luogo di ATDT se
 avete una linea ad impulsi. Se la chiamata esce, il modem sta funzio�
 nando.

 Per tornare al prompt di kermit, tenete premuto il tasto Ctrl, premete
 la barra rovesciata, quindi rilasciate il tasto Ctrl, quindi premete
 il tasto C:


      Ctrl-\-C
      (Back at linux)
      C-Kermit>quit
      linux#




 Questo � stata una semplice prova usando un primitivo metodo di
 chiamata "a mano".  Il metodo abituale � lasciare che kermit componga
 il numero per voi con il suo database di modem interno e le sue
 capacit� di composizione automatica, ad esempio usando un modem US
 Robotics (USR)





 linux# kermit
 C-Kermit 6.0.192, 6 Sep 1997, for Linux
  Copyright (C) 1985, 1996,
   Trustees of Columbia University in the City of New York.
 Default file-transfer mode is BINARY
 Type ? or HELP for help
 C-Kermit>set modem type usr        ; Seleziona il tipo di modem
 C-Kermit>set line /dev/ttyS3       ; Seleziona il dispositivo di comunicazione
 C-Kermit>set speed 115200          ; Imposta la velocit... di connessione
 C-Kermit>dial 7654321              ; Compone
  Number: 7654321
  Device=/dev/ttyS3, modem=usr, speed=115200
  Call completed.<BEEP>
 Connecting to /dev/ttyS3, speed 115200
 The escape character is Ctrl-\ (ASCII 28, FS).
 Type the escape character followed by C to get back,
 or followed by ? to see other options.

 Welcome to ...

 login:





 11.  Dial-in - ricevere chiamate

 11.1.  Introduzione

 Il dial-in � quando impostate il vostro PC cos� che altri possano
 chiamare il vostro numero di telefono ed usare il vostro PC. Il "punto
 di vista" � il vostro PC.  Quando componete un numero esterno dal
 vostro PC state nel contempo facendo un dial-in in un altro computer
 (ma non potete fare il dial-in nel vostro proprio computer).

 Il dial-in funziona cos�. Qualcuno con un modem compone il vostro
 numero telefonico. Il vostro modem risponde alla chiamata e si
 connette. Una volta che il chiamante � connesso, il vostro PC (tramite
 il programma getty) invia il processo di login per il  chiamante.  Il
 metodo originale era quello di inviare un prompt di login allo schermo
 del chiamante (login manuale). Ma un metodo pi� moderno (se usate
 mgetty) � lanciare PPP (pppd) e lasciar fare al PPP il login al
 chiamante in modo automatico (non c'� bisogno di digitare manualmente
 un nome o una password). Vedere il PPP-HOWTO (una nuova revisione �
 attesa tra poco) e la documentazione di mgetty per maggiori dettagli.

 Dopo che il chiamante si � collegato, egli usa il vostro PC. Usare il
 vostro PC significa che il chiamante ha un account di shell e pu�
 usare il vostro PC proprio come se si fosse collegato tramite console
 (o terminale di testo).  Potrebbe anche significare che egli si pu�
 connettere ad Internet attraverso il vostro PC (tramite PPP). Il
 programma che usate nel vostro PC per gestire il dial-in � chiamato
 getty o mgetty. Vedere ``A proposito di mgetty''

 Se vi aspettate che qualcuno sia in grado di collegarsi a 56k, non �
 possibile a meno che:

 1. Abbiate una connessione digitale alla compagnia telefonica tipo una
    linea trunkside-T1 o ISDN.

 2. Usiate modem digitali speciali (vedere ``Modem digitali'')

 3. Abbiate un "...concentrator" (concentratore) o simile per
    interfacciare i vostri modem digitali alle linee digitali della
    compagnia telefonica.
    Un "... concentrator" potrebbe essere chiamato anche "modem
    concentrator" oppure "remote access concentrator" (concentratore di
    accesso remoto) o potrebbe essere incluso in un "remote access
    server" (server di accesso remoto) che includa i modem digitali,
    ecc. Questo tipo di impostazioni vengono usate dagli Internet
    Service Provider (ISP).


 11.2.  Getty

 getty � il programma che lanciate per il dial-in. Non ne avete bisogno
 per chiamate verso l'esterno (dialout). Oltre a presentare un prompt
 di login, risponde anche al telefono.  Originariamente getty veniva
 usato per il login verso un computer da un terminale stupido.  �
 attualmente usato per il login verso una console Linux. Ci sono alcuni
 programmi getty differenti con nomi leggermente diversi. Solo alcuni
 funzionano con i modem per il dialin.  Questo programma getty viene in
 genere lanciato in fase di boot. Deve essere chiamato dal file
 /etc/inittab. Potreste trovare un esempio in questo file di una
 chiamata a getty nel quale potreste avere bisogno di fare qualche
 piccola modifica.  Se usate un programma getty diverso da quello
 mostato nell'esempio, allora dovreste apportare delle modifiche
 importanti visto che le opzioni hanno diversi formati.


 Ci sono quattro diversi programmi getty tra cui scegliere che possono
 essere usati coi modem per il dialin: mgetty, uugetty, getty_em e
 agetty. Alcuni dettagli vengono forniti nelle sottosezioni seguenti.
 getty � il pi� semplice (e pi� debole) dei quattro ed alcuni lo
 considerano principalmente da usarsi con terminali di testo collegati
 direttamente. mgetty supporta fax e voice mail, invece uugetty no.
 mgetty si afferma manchi di alcune delle caratteristiche di ugetty.
 getty_em � una versione semplificata di ugetty. Quindi mgetty �
 probabilmente la vostra scelta migliore a meno che abbiate gi�
 familiarit� con ugetty (o troviate difficile reperire mgetty).  La
 sintassi per questi programmi getty differisce, cos� assicuratevi di
 stare usando la sintassi corretta in /etc/inittab per qualsiasi getty
 usiate.



 11.2.1.  Mgetty

 mgetty fu scritto come rimpiazzo di uugetty che esisteva molto prima
 di mgetty. Entrambi si possono usare con i modem. Sebbene mgetty possa
 anche essere usato per terminali direttamente connessi, la
 documentazione per questa cosa � difficile da trovare e mgetty (a met�
 1999) non supporta il controllo di flusso software ( usato da molti
 terminali) senza ricompilarlo. Questo difetto viene classificato come
 un bug.  Oltre a consentire login in dialup, mgetty fornisce supporto
 FAX ed autoriconoscimento del PPP. C'� un programma addizionale
 chiamato vgetty che gestisce le caselle vocali per alcuni modem.  La
 documentazione per mgetty � buona (eccetto per le caselle vocali), e
 non necessita di supplementi. Per cortesia riferitevi ad essa per le
 istruzioni di installazione. Potete trovare le ultime informazioni su
 mgetty a http://www.leo.org/~doering/mgetty/ e
 <http://alpha.greenie.net/mgetty>


 11.2.2.  uugetty

 getty_ps contiene due programmi: getty viene usato per le console ed i
 terminali, e ugetty per i modem. Greg Hankins (gi� autore del Serial-
 HOWTO) usava ugetty cos� le sue considerazioni circa questo sono l�
 incluse. Vedere ``Uugetty''.  Gli altri getty sono ben trattati dalla
 documentazione che li accompagna.
 11.2.3.  getty_em

 Questa � una versione semplificata di "uugetty". Fu scritta da Vern
 Hoxie dopo che fu completamente confuso dai complessi file di supporto
 che occorrono a getty_ps e uugetty.

 Fa parte della raccolta di utilit� ed informazioni di Vern Hoxie
 reperibili tramite ftp da  <scicom.alphacdc.com/pub/linux>.  Il nome
 della raccolta � "serial_suite.tgz". Quando eseguite il login in
 "scicom" come anonimi, dovete usare il vostro indirizzo e-mail
 completo come password. Ad esempio: [email protected]


 11.2.4.  agetty e mingetty

 agetty � una semplice e completamente funzionale implementazione di
 getty che meglio si adatta alle console virtuali od ai terminali
 piuttosto che per i modem. Ma, date determinate condizioni favorevoli,
 funziona bene anche con i modem (a meno che voi non eseguiate una
 chiamata quando agetty � in esecuzione in fase di attesa di chiamate).
 agetty nella distribuzione Debian viene semplicemente chiamata getty.

 mingetty � un piccolo getty che funzioner� solo per le console
 (monitor), quindi non si pu� usare con i modem per il dialin.


 11.3.  Cosa succede quando qualcuno ci chiama? (dial-in)

 Il chiamante lancia un certo programma di configurazione che compone
 il vostro numero di telefono ed il vostro telefono squilla. Ci sono
 due differenti modi nei quali il vostro PC pu� rispondere al telefono.
 Un modo � che il modem risponda automaticamente alla chiamata. L'altro
 modo � che getty rilevi lo squillo ed invii un comando al modem che
 gli imponga di rispondere alla chiamata. Una volta che viene risposto
 alla chiamata, il vostro modem invia dei toni all'altro modem (e
 viceversa). I due modem negoziano il modo con il quale essi
 comunicheranno e quando finiscono il vostro modem invia un messaggio
 di "CONNECT" (connessione) o simile a getty. Quando getty riceve
 questo messaggio invia un prompt di login attraverso la porta seriale.
 Qualche volta getty invoca semplicemente un programma chiamato login
 per gestire il login. getty in genere viene lanciato in fase di boot
 ma deve aspettare fino a quando viene effettuata una connessione prima
 di fare partire il prompt di login.

 Ora ulteriori dettagli sui due modi di rispondere ad una chiamata.
 Impostando il registro S0 del modem a 3, il modem automaticamente
 risponde al terzo squillo. Se � impostato a 0 allora il modem
 risponder� alla chiamata solo se getty gli invia il comando "A"
 (Risposta) mentre il telefono sta squillando. In realt� il comando �
 "ATA" visto che tutti i comandi modem devono essere prefissati da
 "AT". Potreste pensare che sia meglio utilizzare la capacit� del modem
 di rispondere automaticamente alla chiamata, ma in verit� � meglio
 fare s� che sia getty a rispondere. Se il modem non risponde
 automaticamente, si parla di risposta manuale (anche se getty la
 gestisce in modo automatico).

 Per il caso di risposta manuale, getty apre la porta in fase di boot e
 resta in ascolto. Quando il telefono squilla, un messaggio "RING"
 viene inviato a getty che sta ascoltando. Poi se getty vuole
 rispondere allo squillo, invia al modem il comando "ATA". Il modem poi
 esegue la connessione ed invia il messaggio "CONNECT ..." a getty che
 invia un prompt di login al chiamante.

 Nel caso della risposta automatica, viene usata la linea CD "Carrier
 detect" (Portante rilevata) che va dal modem alla porta seriale per
 rilevare quando viene fatta una connessione. Funziona cos�. In fase di
 boot, getty cerca di aprire la porta seriale, ma fallisce visto che in
 genere non c'� segnale CD dal modem. Allora il programma getty si
 ferma all'istruzione di apertura (open) nel programma fino a che il
 segnale CD compare. Quando un segnale CD arriva (forse ore dopo),
 allora la porta viene aperta e getty invia il prompt di login.  Mentre
 getty sta aspettando all'altezza dell'istruzione di apertura, altri
 processi possono essere lanciati visto che Linux � un sistema
 operativo multiprocessing.  Quello che fa "svegliare" getty � un
 interrupt che viene generato quando la linea CD dal modem pone il suo
 stato ad on.

 Potreste chiedervi come getty sia capace di aprire la porta seriale
 nel caso della risposta manuale visto che non vi � segnale CD. Bene,
 si pu� scrivere un programma per forzare l'apertura della porta anche
 se non � presente un segnale CD.


 11.4.  Perch� la risposta manuale � meglio

 La differenza tra i due modi di risposta si palesa quando il computer
 � spento ma il modem sta ancora lavorando.  Nel caso manuale, il
 messaggio "RING" viene inviato a getty ma visto che il computer �
 spento, getty non � pronta, quindi non ci sar� mai risposta al
 telefono.  Non ci sono addebiti telefonici quando non si risponde alla
 chiamata. Nel caso della risposta automatica, c'� risposta alla
 telefonata ma non verr� mai inviato un prompt di login visto che il
 computer � spento. La bolletta cresce mentre l'attesa continua.  Se la
 chiamata � gratuita, non fa molta differenza, sebbene possa essere
 frustrante attendere per un prompt di login che mai arriver�. mgetty
 usa la risposta manuale.  uugetty pu� fare questo tramite uno script
 di configurazione.


 11.5.  Callback

 Si definisce callback quando qualcuno per primo chiama il vostro
 modem. Poi voi ottenete un po' di informazioni dal chiamante e lo
 richiamate. Perch� si vuole fare questo? Una ragione � risparmiare
 sulla bolletta se voi potete telefonare al chiamante con tariffe pi�
 convenienti rispetto alle sue. Un altro � assicurarvi che il chiamante
 sia davvero colui che sostiene di essere. Se un chiamante vi contatta
 e dice di chiamare dal suo abituale numero telefonico, un modo per
 verificarlo � di effettuare una nuova chiamata a quel numero.

 C'� un programma per Linux chiamato "callback" che funziona con
 mgetty.  Si trova in  <ftp://ftp.icce.rug.nl/pub/unix/>. Istruzioni
 passo-passo su come installarlo (e PPP) si trovano a
 <http://www.stokely.com/unix.serial.port.resources/callback.html>


 11.6.  Casella vocale (Voice Mail)

 La casella vocale � come una segreteria telefonica eseguita da un
 computer.  Per fare questo dovete avere un modem con il supporto
 "voice" ed il relativo software.  Invece di incidere i messaggi su
 nastro, essi vengono salvati in forma digitale sul disco.  Quando
 qualcuno vi chiama, ascolter� un messaggio di benvenuto e poi pu�
 lasciare un messaggio per voi. Sistemi pi� avanzati possono avere
 caselle postali selezionabili dal chiamante e messaggi da fare
 ascoltare selezionabili dall'utente. Software gratuito � disponibile
 in Linux per la semplice risposta, ma non sembra essere ancora a
 disposizione per capacit� pi� avanzate.

 So di due diversi pacchetti di voicemail per Linux. Uno � minimale
 (vedere ``Voicemail Software'').  L'altro, pi� avanzato, ma
 attualmente scarsamente documentato, � vgetty. � una aggiunta
 opzionale al ben documentato e largamente distribuito programma
 mgetty.  Supporta i comandi modem vocali tipo ZyXEL. Nella
 distribuzione Debian potete ottenere il pacchetto mgetty-voice in
 aggiunta al pacchetto mgetty e mgetty-doc.  La documentazione obsoleta
 � stata rimossa da mgetty, ma quella messa al suo posto � latitante (a
 meno che voi usiate l'opzione -h (aiuto) quando lanciate certi
 programmi, ecc). Ma si potrebbero consultare i messaggi circa l'uso
 che vengono inviati nel newsgroup di mgetty. Vedere ``A proposito di
 mgetty'' e >.  Sembra che vgetty sia attualmente non molto stabile ma
 che venga usato con successo e che il suo sviluppo continui. Se questa
 � l'ultima versione di questo HOWTO qualcuno che � familiare con
 vgetty mi faccia cortesemente sapere lo stato attuale delle cose.


 12.  Uugetty per dial-in (dal vecchio Serial-HOWTO)

 Sappiate che potreste usare mgetty come (migliore?) alternativa a
 uugetty.  mgetty � pi� nuovo e pi� famoso di uugetty.  Vedere ``Cos'�
 getty?'' per un breve confronto tra questi 2 getty.


 12.1.  Installare getty_ps

 Visto che uugetty � parte di getty_ps dovete prima installare
 getty_ps. Se non lo avete procuratevi l'ultima versione da
 metalab.unc.edu:/pub/Linux/system/serial.  In particolare, se volete
 usare alte velocit� (57600 and 115200 bps), dovete procurarvi la
 versione 2.0.7j o superiore. Dovrete anche avere libc 5.x o superiore.



 Per default, getty_ps sar� configurato come Linux FSSTND (File System
 Standard) compatibile, il che significa che si trover� in /sbin, ed i
 file di configurazione saranno chiamati /etc/conf.{uu}getty.ttySN.
 Questo non � ben chiaro dalla documentazione! Si aspetta che i file di
 lock vadano in /var/lock.  Assicuratevi di avere una directory
 /var/lock.

 Se non volete la compatibilit� FSSTND, i file binari andranno in /etc,
 quelli di configurazione in /etc/default/{uu}getty.ttySN ed i file di
 lock in /usr/spool/uucp. Vi raccomando di agire in questo modo se
 state usando UUCP, visto che UUCP avr� problemi se spostate i file di
 lock in posti dove non sa di doverli cercare.


 getty_ps pu� anche usare syslogd per registrare messaggi.  Vedere le
 pagine di manuale per syslogd(1) e syslog.conf(5) per impostare
 syslogd, se gi� non � in esecuzione.  I messaggi sono registrati con
 priorit� LOG_AUTH, gli errori usano LOG_ERR e per il debugging si usa
 LOG_DEBUG.  Se non volete usare syslogd potete modificare tune.h nei
 file sorgente di getty_ps per usare invece un file di registrazione di
 messaggi, diciamo /var/adm/getty.log per default.


 Decidete se volete la compatibilit� FSSTND e la capacit� di syslog.
 Potrete anche scegliere una combinazione dei due. Modificate Makefile,
 tune.h e config.h per adeguarli alle vostre decisioni. Poi compilate
 ed installate in base alle istruzioni incluse nel pacchetto.

 Da questo punto in poi, tutti i riferimenti a getty faranno capo a
 getty_ps.  I riferimenti a uugetty si riferiranno a uugetty che viene
 incluso nel pacchetto getty_ps.  Queste istruzioni non funzioneranno
 per mgetty o agetty.



 12.2.  Impostare uugetty

 Con uugetty potreste chiamare l'esterno con il vostro modem mentre
 uugetty sta controllando la porta per eventuali login.  uugetty esegue
 degli importanti controlli di file lock.  Aggiornate /etc/gettydefs
 per includere una voce di riferimento al vostro modem. Per un aiuto
 sul significato delle voci che mettete in /etc/gettydef, vedere la
 "serial_suite" raccolta da Vern Hoxie. Come recuperarla � spiegato
 nella sezione ``A proposito di getty_em''. Quando avete finito di
 modificare /etc/gettydefs, potrete verificare l'esattezza della
 sintassi facendo:


      linux# getty -c /etc/gettydefs





 12.2.1.  I modem moderni

 Se avete dei modem con velocit� di 9600 bps e superiori con
 compressione dati potete bloccare la vostra porta seriale con una sola
 velocit�. Ad esempio:


      # 115200 fixed speed
      F115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B
      login: #F115200





 Se avete impostato il modem per un controllo di flusso hardware
 RTS/CTS dovete aggiungere a CRTSCTS alle voci:


      # 115200 fixed speed with hardware flow control
      F115200# B115200 CS8 CRTSCTS # B115200 SANE -ISTRIP HUPCL CRTSCTS
      #@S @L @B login: #F115200





 12.2.2.  Vecchi e lenti modem

 Se avete un modem lento (sotto i 9600 bps), allora invece di una sola
 riga per una singola velocit�, avrete bisogno di parecchie righe per
 tentare velocit� diverse. Notate che queste righe sono legate tra loro
 dalla ultima "parola" della riga come ad esempio #38400. Le righe
 vuote sono richieste dopo ogni voce













 # Voci Modem
 115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #57600

 57600# B57600 CS8 # B57600 SANE -ISTRIP HUPCL #@S @L @B login: #38400

 38400# B38400 CS8 # B38400 SANE -ISTRIP HUPCL #@S @L @B login: #19200

 19200# B19200 CS8 # B19200 SANE -ISTRIP HUPCL #@S @L @B login: #9600

 9600# B9600 CS8 # B9600 SANE -ISTRIP HUPCL #@S @L @B login: #2400

 2400# B2400 CS8 # B2400 SANE -ISTRIP HUPCL #@S @L @B login: #115200






 12.2.3.  Messaggio di login

 Se volete, potete far stampare a uugetty delle cosette interessanti
 nel messaggio di login. Negli esempi di Greg, egli ha il nome del
 sistema, la linea seriale, la velocit� in bps corrente. Potete
 aggiungere altre cose:


             @B    La velocit� in bps corrente (determinato quando viene visto @B)
             @D    La data corrente nel formato MM/GG/AA.
             @L    La linea seriale alla quale uugetty � attaccato
             @S    Il nome del sistema
             @T    L'ora corrente nel formato HH:MM:SS (24 ore).
             @U    Il numero degli utenti attualmente collegati. Si tratta del
                   conteggio del numero di voci nel file /etc/utmp file che
                   hanno un campo ut_name non vuoto
             @V    Il valore di VERSION, cos� come risulta nei file di default
             Per visualizzare un singolo carattere '@' usate '\@' o '@@'.





 12.3.  Personalizzare uugetty

 Ci sono molti parametri da affinare per ogni porta che avete.  Essi
 sono implementati in file di configurazione separati per ogni porta.
 Il file /etc/conf.uugetty verr� usato da tutte per tutti i riferimenti
 a uugetty e /etc/conf.uugetty.ttySN sar� usato solo da quella porta.
 Esempi di file di configurazione possono essere trovati con i file
 sorgente di getty_ps, che sono inclusi in diverse distribuzioni di
 Linux. Per motivi di spazio non sono elencati qui.  Notate che se
 state usando vecchie versioni di uugetty (inferiori a 2.0.7e) o non
 state usando FSSTND, allora il file di default sar�
 /etc/default/uugetty.ttySN. Il /etc/conf.uugetty.ttyS3 di Greg si
 presenta come segue:












 # configurazione di esempio di uugetty per un modem Hayes compatibile
 # per consentire chiamate modem dall'esterno
 #
 # riga da inizializzare
 INITLINE=ttyS3
 # timeout per disconnettere se inattivo ...
 TIMEOUT=60
 # stringa di inizializzazione del modem ...
 # formato: <expect> <send> ... (chat sequence)
 INIT="" AT\r OK\r\n
 WAITFOR=RING
 CONNECT="" ATA\r CONNECT\s\A
 # questa riga imposta il tempo da far trascorrere prima di inviare il
 # messaggio di login
 DELAY=1
 #DEBUG=010




 Aggiungete la seguente riga al vostro /etc/inittab, cos� che uugetty
 sia eseguito sulla vostra porta seriale (sostituendo le informazioni
 corrette per il vostro ambiente - run-level (2345 o 345 ecc.)
 posizione del file di configurazione, porta, velocit� e tipo di
 terminale predefinito)


      S3:2345:respawn:/sbin/uugetty -d /etc/default/uugetty.ttyS3 ttyS3 F115200 vt100




 Rilanciate init:


      linux# init q




 Per i parametri di velocit� in /etc/inittab, usate la pi� alta
 velocit� in bps che il vostro modem pu� supportare.

 Ora Linux controller� la vostra porta seriale per individuare delle
 connessioni.  Componete il numero da un'altra macchina ed entrate nel
 vostro sistema Linux.

 uugetty ha molte altre opzioni, controllate la pagina di manuale per
 uugetty (spesso chiamato semplicemente getty) per una completa
 descrizione. Tra le altre, c'� la capacit� di scheduling ed anche di
 ringback automatica.


 13.  Che velocit� dovrei usare con il mio modem?

 Per velocit� si intende in verit� il rapporto di flusso dei dati
 ("data flow rate") ma quasi tutti lo chiamano velocit�. Per tutti i
 modem moderni non si ha la possibilit� di scegliere la velocit� che il
 modem usa sulla linea telefonica visto che viene scelta
 automaticamente come la pi� alta possibile date le circostanze.  Ma
 voi avete la possibilit� di scegliere che velocit� sar� usata nelle
 comunicazioni tra il modem e il vostro computer. Questa viene chiamata
 velocit� "DTE" che � l'acronimo di Data Terminal Equipment (il vostro
 computer � un DTE). Dovete impostare questa velocit� ad un valore
 abbastanza alto in modo che questa parte del tragitto compiuta dal
 segnale non costituisca un collo di bottiglia. L'impostazione per la
 velocit� DTE � la velocit� massima.  La maggior parte delle volte
 probabilmente operer� ad una velocit� inferiore.

 Per un modem esterno, la velocit� DTE � la velocita (in bit per
 secondo) del flusso che scorre nel cavo tra il modem ed il PC. Per un
 modem interno, � concettualmente lo stesso, visto che il modem emula
 anche una porta seriale. Pu� sembrare ridicolo avere un limite di
 velocit� nella comunicazione tra un computer ed una scheda modem che �
 direttamente collegata all'interno del computer ad bus con una
 velocit� notevolmente superiore. Ma sar� cos� fino a quando i modem
 interni includeranno una porta seriale dedicata che ha limiti di
 velocit� (e velocit� impostabili).


 13.1.  Velocit� e compressione dati

 Che velocit� scegliere? Se non fosse per la compressione dati si
 potrebbe scegliere una velocit� DTE esattamente uguale a quella del
 modem. La compressione dati prende i byte inviati dal computer al
 modem e li codifica in un numero minore di byte. Ad esempio, se il
 flusso (velocit�) dal PC al modem era di 20,000 byte/secondo (bps) ed
 il rapporto di compressione � di 2 a 1, allora solo 10,000
 byte/secondo usciranno verso la linea telefonica. Quindi per un
 rapporto di compressione di 2:1 occorre impostare una velocit� doppia
 rispetto alla velocit� massima del modem sulla linea telefonica. Se il
 rapporto di compressione � di 3 a 1, occorre impostarla tre volte pi�
 veloce.


 13.2.  Dove imposto la velocit�?

 La velocit� DTE � normalmente impostata da un men� nel vostro
 programma di comunicazione o da un'opzione data al comando getty se
 qualcuno vi chiama. Non potete impostare la velocit� DCE modem-a-
 modem.


 13.3.  Non posso impostare una velocit� sufficientemente elevata

 Dovete scoprire la velocit� pi� alta supportata dal vostro hardware.
 Alla fine del 1998 la maggior parte dell'hardware supportava velocit�
 fino a 115.2 bps.  Pochi modem interni a 56K supportano i 230.4K bps.
 Recenti kernel di Linux supportano le alte velocit� (superiori a
 115.2K) ma potreste avere difficolt� nell'usarle per una o entrambe
 delle seguenti ragioni:


 1. Il programma applicativo (o stty) non accetta l'alta velocit�.

 2. Setserial ha una velocit� di default di 115,200 (ma questo default
    si pu� cambiare facilmente)


 13.3.1.  Com'� impostata la velocit� nell'hardware: il divisore e il
 baud_base

 Ecco un'elenco dei divisori pi� comunemente usati e delle loro
 velocit� corrispondenti (assumendo una velocit� massima di 115.200): 1
 (115.2K), 2 (57.6K), 3 (38.4K), 6 (19.2K), 12 (9.6K), 24 (4.8K), 48
 (2.4K), 96 (1.2K), ecc.  Il driver seriale imposta la velocit�
 nell'hardware inviando al medesimo solamente un "divisore" (un numero
 intero positivo). Questo "divisore" divide la velocit� massima
 dell'hardware, la velocit� quindi risulta pi� lenta (eccetto che per
 divisore 1 che ovviamente dice all'hardware di lavorare a velocit�
 massima).

 In genere, se specificate una velocit� di 115.2K (nel vostro programma
 di comunicazione o tramite stty) allora il driver seriale imposta
 l'hardware della porta a divisore 1 che ovviamente imposta la velocit�
 massima. Se disponete di hardware con velocit� massima di diciamo
 230.4K, allora specificando 115.2K risulter� un divisore 1, quindi in
 realt� avrete la velocit� di 230.4K. Che � la velocit� doppia di
 quanto avete impostato. In effetti, per qualsiasi velocit� che
 impostate, la velocit� reale sar� raddoppiata. Se avete hardware che
 potrebbe andare a 460.8K, allora la velocit� reale sarebbe il
 quadruplo di quella impostata.


 13.3.2.  Trucchetti per impostare la velocit�

 Per correggere questi valori (ma non sempre il problema verr� risolto)
 potreste usare "setserial" per modificare il baud_base alla vera
 velocit� massima della vostra porta tipo 230.4K. Quindi se impostate
 la velocit� (tramite la vostra applicazione o da stty) a 230.4K, verr�
 usato un divisore 1 ed otterrete la stessa velocit� di quella da voi
 impostata. PROBLEMA: stty e molti programmi di comunicazione (alla
 met� del 1999) presentano ancora 115.2K quale velocit� massima
 impostabile e non vi lasceranno impostarla a 230.4K, ecc.. Quindi in
 questi casi uno soluzione potrebbe essere non cambiare nulla con
 setserial, ma tenersi in mente che la velocit� reale � sempre il
 doppio di quella che avete impostata.

 C'� un altro trucco che non � molto meglio. Per usarlo impostate il
 baud_base (con setseria) alla velocit� massima del vostro hardware.
 Questo corregge il conteggio cos� che se impostate 115.2K avrete
 effettivamente quella velocit�. Ora dovete per� ancora scoprire come
 impostare una velocit� pi� alta se il vostro programma di
 comunicazione (o simile) non ve lo consente. Fortunatamente, setserial
 ha un modo per farlo: usate il parametro "spd_cust" con "divisor 1".
 Poi quando impostate la velocit� a 38400 nel programma di
 comunicazione, il divisore verr� impostato ad 1 nella porta ed operer�
 alla massima velocit�. Ad esempio:
 setserial /dev/ttyS2 spd_cust baud_base 230400 divisor 1
 Non cercate di usare "divisor" per altri scopi diversi dallo speciale
 uso illustrato qui sopra (con spd_cust).

 Se ci sono due o pi� alte velocit� che volete usare che il vostro
 programma di comunicazione non riesce ad impostare, allora non � cos�
 facile come sopra descritto.  Ma si applicano gli stessi principi.
 Potreste mantenere la baud_base di default e tenere presente che
 quando impostate una velocit� in realt� impostate solo il divisore.
 Cos� la vostra velocit� reale sar� sempre la vostra velocit� massima
 divisa da qualunque divisore sia impostato nel driver seriale. Vedere
 ``Com'� impostata la velocit� nell'hardware: il divisore ed il
 baud_base''


 13.3.3.  La frequenza del cristallo non � il baud_base

 Notate che l'impostazione del baud_base � in genere molto inferiore
 rispetto a quella dell'oscillatore di cristallo nel hardware viste la
 frequenza del cristallo spesso si ottiene dividendo per 16
 nell'hardware per ottenere la vera velocit� massima.  La ragione per
 la quale la frequenza del cristallo deve essere pi� alt� � che pu�
 essere usata per ottenere diversi campioni di ogni bit per determinare
 se � un 1 o uno 0.






 13.4.  Tabella delle velocit�

 Conviene avere almeno una UART 16650 per modem a 56K. ma pochi modem
 la supportano. Un'alternativa � avere una 16550 che � stata "truccata"
 per dare 230400 bps. Ecco alcune velocit� consigliate per impostare la
 vostra linea seriale se la velocit� del vostro modem �:

 �  56K (V.90) usate 115200 bps o 230400 bps (percentualmente di poco
    pi� veloce?)

 �  28.8K (V.34), 33.6K (V.34) usate 115200 bps

 �  14400 bps (V.32bis), con compressione dati V.42bis usate 57600 bps

 �  9600 bps (V.32), con compressione dati V.42bis usate 38400 bps

 �  modem minori di 9600 bps (V.32), impostate la velocit� pi� alta che
    il modem supporta.


 14.  Programmi di comunicazione ed utilit�

 PPP � di gran lunga il pi� usato. � usato per accedere ad Internet.
 Per chiamare librerie pubbliche, BBS, ecc. minicom � il pi� popolare
 seguito da Seyon (solo per X-Windows) e Kermit.


 14.1.  Minicom contro kermit

 Minicom � solo un programma di comunicazione mentre Kermit � sia un
 programma di comunicazione che un protocollo di trasferimento file.
 Qualcuno potrebbe usare il protocollo Kermit in Minicom (a patto che
 si abbia installato Kermit sul PC). Minicom � basato sui men� mentre
 Kermit � basato sulla riga comando (interattiva nello speciale prompt
 di Kermit). Mentre Kermit � un programma libero, la documentazione non
 � tutta libera.  Non c'� un manuale dettagliato fornito e viene
 suggerito di acquistare un libro come manuale. Comunque Kermit ha un
 aiuto in linea interattivo che dice tutto, ma manca di spiegazioni che
 guidino il principiante. I comandi possono essere messi in un file
 script cos� che non si debbano ripetere ogni volta.  Kermit (inteso
 come programma di comunicazione) � pi� potente di Minicom.

 Sebbene tutta la documentazione di Minicom sia libera, non � cos�
 esaustiva come quella di Kermit. Visto che occorre un permesso per
 includere Kermit in una distribuzione commerciale e visto che la
 documentazione non � totalmente libera, alcune distribuzioni non
 includono Kermit. La mia opinione � che � pi� facile impostare Minicom
 e c'� meno da imparare.



 14.2.  Lista di software di comunicazione

 Ecco una lista di alcuni software di comunicazione dalla quale potrete
 scegliere. Se non sono presenti nella vostra distribuzione, dovrebbero
 essere disponibili via FTP. Gradirei commenti che paragonino i
 programmi di comunicazione.  Quelli meno popolari sono obsoleti?


 14.2.1.  I meno popolari


 �  ecu - un programma di comunicazione

 �  pcomm - programma di comunicazione tipo procomm con zmodem

 �  xc - pacchetto di comunicazione xcomm


 14.2.2.  I pi� popolari



 �  programmi per collegarsi ad internet (ppp dialer) chat, wvdial

 �  minicom - programma di comunicazione tipo telix.  Supporta gli
    script, zmodem, kermit

 �  C-Kermit <http://www.columbia.edu/kermit/> - portabile, supporta
    gli script, comunicazioni seriali e TCP/IP incluso il trasferiemnto
    di file, la trascodifica del set di caratteri e supporta zmodem

 �  seyon - programma di comunicazione in ambiente X

 �  xc - programma di comunicazione in ambiente X


 14.2.3.  Fax



 �  efax un piccolo programma fax

 �  hylafax un programma fax basato sul modello client-server

 �  mgetty+fax gestisce quanto concerne il fax e il login per chiamate
    in entrata


 14.2.4.  Software per Voicemail



 �  mvm <http://www-internal.alphanet.ch/~schaefer/mvm/> � un VoiceMail
    minimale for Linux

 �  vgetty � un'estensione di mgetty che gestisce voicemail per alcuni
    modem.  Dovrebbe essere compreso in recenti release di mgetty.



 14.2.5.  Chiamate in entrata (Dial-in) (usa getty)



 �  mgetty+fax � per i modem ed � ben documentato (eccetto che per
    voicemail alla met� del 1999). Gestisce anche i fax e risulta
    un'alternativa a uugetty.  Sta includendo capacit� di voicemail
    (usando vgetty).  Vedere ``mgetty''

 �  uugetty � anch'esso per i modem.  � parte del pacchetto ps_getty.
    Vedere ``getty_ps''


 14.2.6.  Altri



 �  callback voi chiamate un modem remoto, poi quel modem riappende e
    vi richiama (per risparmiare sulla bolletta).


 �  SLiRP e term forniscono un servizio tipo PPP che potete lanciare
    nello spazio utente su di un computer remoto con uno shell account
    Vedere ``term e SLiRP'' per ulteriori dettagli.

 �  ZyXEL � un programma di controllo per i modem ZyXEL U-1496.
    Gestisce chiamate, connessioni, richiamate di sicurezza, FAX e
    funzioni vocali di mailbox

 �  Software SLIP e PPP pu� essere trovato in:
     ftp://metalab.unc.edu/pub/Linux/system/network/serial.

 �  Altre cose si possono trovare in:
    ftp://metalab.unc.edu/pub/Linux/system/serial e
    ftp://metalab.unc.edu/pub/Linux/apps/serialcomm o in uno dei molti
    mirror.  Queste sono le directory dove sono archiviati i programmi.


 14.3.  SLiRP e term

 SLiRP e term sono programmi che servono solo se avete un account shell
 in dial-up su di una macchina tipo Unix e volete avere l'equivalente
 di un account PPP (o simile) senza essere autorizzati ad averlo (forse
 perch� non volete pagare per questo, ecc.).  SLiRP � pi� popolare di
 term che � praticamente obsoleto.

 Per usare SLiRP installatelo nel vostro account nel computer remoto.
 Poi chiamate l'account e lanciate SLiRP sul remoto e PPP sul vostro PC
 locale.  Ora avete una connessione PPP attraverso la quale potete
 lanciare un browser web sul vostro PC tipo Netscape, ecc.  Potrebbero
 esserci alcuni problemi visto che SLiRP non � cos� valido come un vero
 account PPP. Alcuni account potrebbero fornire SLiRP visto che esso fa
 risparmiare sugli indirizzi IP (non avete indirizzo IP mentre usate
 SLiRP).

 term � qualcosa di simile a SLiRP solo che dovete eseguire term sia
 sul computer locale che quello remoto. Non c'� PPP sulla linea
 telefonica visto che term usa il suo proprio protocollo. Per usare
 term dal vostro PC vi occorrer� una versione "term-aware" di ftp per
 eseguire ftp, ecc. Quindi � pi� facile usare SLiRP visto che la
 versione normale di ftp funziona bene con SLiRP.  C'� un Term HOWTO
 non aggiornato.


 15.  Cosa sono le UART?  In che modo influenzano le prestazioni?

 15.1.  Introduzione alle UART

 (Questa sezione � anche nel Serial-HOWTO)

 UART (Universal Asynchronous Receiver Transmitter) -
 ricevitore/trasmettitore asincrono universale - sono chip seriali
 sulla scheda madre del vostro PC (o su una scheda modem interna).  La
 funzione della UART pu� anche essere svolta da un chip che fa anche
 altre cose. Sui computer pi� vecchi come la maggior parte dei 486, i
 chip erano sulla scheda del controller I/O.  Alcuni computer pi�
 vecchi hanno schede seriali dedicate.

 Scopo della UART � convertire i byte dal bus parallelo del PC in un
 flusso seriale di bit. Il cavo che esce dalla porta seriale � seriale
 ed ha solo un cavo per ogni direzione di flusso. La porta seriale
 invia un flusso di bit, un bit alla volta. Al contrario, il flusso di
 bit che entra dalla porta seriale via cavo esterno viene convertito in
 byte paralleli che il computer pu� comprendere. Le UART trattano dati
 divisi in pezzi della dimensione di un byte, che per convenienza �
 anche la dimensione dei caratteri ASCII.

 Diciamo che avete un terminale collegato al vostro PC. Quando digitate
 un carattere, il terminale consegna quel carattere al proprio
 trasmettitore (che � anche una UART). Il trasmettitore invia quel byte
 alla linea seriale, un bit alla volta ad una velocit� specifica. Dalla
 parte del PC, l'UART ricevente prende tutti i bit e ricostruisce
 (parallelizza) il byte e lo mette in un buffer.

 Oltre alla conversione tra seriale e parallelo, la UART esegue alcune
 altre cose come derivazione (effetto collaterale) dei suoi compiti
 primari. Il voltaggio usato per rappresentare i bit viene anch'esso
 convertito (cambiato). I bit extra (chiamati bit di start e stop) sono
 aggiunti ad ogni byte prima che venga trasmesso. Vedere la sezione
 "Voltage Waveshapes" del Serial HOWTO per dettagli. Inoltre, mentre il
 rapporto di flusso (in byte per secondo) sul bus parallelo all'interno
 del computer � molto alto, il rapporto di flusso in uscita dalla UART
 dalla parte della porta seriale � molto pi� basso. L'UART ha un elenco
 fisso di rapporti (velocit�) che pu� usare come interfaccia per la sua
 porta seriale.


 15.2.  Due tipi di UART

 Ci sono due tipi principali di UART: UART "stupide" (dumb) e UART
 FIFO. Le UART "stupide" sono le 8250, 16450, le prime 16550 e le prime
 16650. Esse sono obsolete ma se imparate come lavorano, � poi facile
 comprendere come funzionano le moderne UART FIFO (le ultime 16550,
 16550A, 16c552, le ultime 16650 e 16750 e 16C950).

 Esiste un poco di confusione per quanto riguarda le 16550. I primi
 modelli avevano un bug e lavoravano correttamente solo come 16450 (non
 FIFO). I modelli pi� recenti con questo bug corretto, vennero chiamate
 16550A, ma la maggior parte dei costruttori non fecero proprio il
 cambiamento di nome e continuarono a chiamarle 16550.

 La maggior parte delle 16550 in uso oggi sono come le 16550A. Linux la
 rilever� come 16550A anche se il manuale dell'hardware (o l'etichetta)
 dicono che si tratta di una 16550. Una situazione simile esiste per le
 16650 (solo che � peggio visto che il costruttore sembra che non
 ammetta che c'� qualcosa di sbagliato).  Linux rilever� un'ultima
 16650 come una 16650V2. Se esso la rileva come una 16650 ci sono
 cattive notizio e verr� usata come se avesse un buffer da un byte.


 15.3.  FIFO

 Per comprendere la differenza tra "stupide" (dumb) e FIFO (First In,
 First Out - Il primo che entra � il primo che esce) esaminiamo prima
 cosa succede quando una UART ha inviato o trasmesso un bute.  La UART
 stessa non pu� fare nulla con i dati che passano attraverso di essa,
 semplicemente li riceve e li spedisce. Nella UART "stupide" originali,
 la CPU riceveva un interrupt dal driver seriale ogniqualvolta un byte
 veniva ricevuto o trasmesso. La CPU poi spostava il byte ricevuto dal
 buffer della UART in una qualche parte della memoria, oppure dava alla
 UART un altro byte da spedire.  Le UART 8250 e 16450 hanno un buffer
 di 1 byte. Ci� significa che ogni volta che 1 byte viene inviato o
 ricevuto, la CPU riceveva un interrupt. A basse velocit� di
 trasferimento, questo andava bene.  Ma ad alte velocit� di
 trasferimento la CPU diventava cos� impegnata a gestire la UART, che
 non aveva il tempo per soddisfare adeguatamete gli altri compiti.  In
 alcuni casi, la CPU non era pronta a servire le richieste di interrupt
 in tempo ed il byte era sovrascritto perch� arrivava troppo
 velocemente.  Questo viene chiamato "overrun" o "overflow"
 (sovraccarico).

 Ecco dove le UART FIFO sono utili. I chip delle 16550A (o 16550) hanno
 un buffer FIFO di 16 byte. Questo significa che pu� ricevere fino a 14
 byte (od inviarne 16) prima che debba inviare un interrupt alla CPU.
 Non solo essa pu� attendere ulteriori byte, ma la CPU pu� poi
 trasferirli tutti e 14 (o pi�) in un colpo solo.  Questo � un
 vantaggio significativo rispetto alle altre UART, cha hanno buffer di
 1 solo byte. La CPU riceve meno interrupt ed � libera di fare altre
 cose. I dati non sono sono persi e tutti sono contenti. Notate che la
 soglia di interrupt dei buffer FIFO (livello di attivazione) pu�
 essere impostata a meno di 14. 1, 4 e 8 sono altro possibili scelte.

 Mentre la maggior parte dei PC hanno delle 16550 con 16 byte di
 buffer, le UART migliori hanno buffer ancora pi� grandi. Notate che
 l'interrupt viene inviato leggermente prima che il buffer si riempia
 del tutto (diciamo ad un "trigger level" di 14 byte per un buffer da
 16 byte). Questo consente di fare spazio a qualche alto byte da
 ricevere durante il tempo che trascorre mentre la richiesta di
 interrupt viene esaudita.  Il trigger level pu� essere impostato a
 diversi valori consentiti dal software kernel.  Il trigger level di 1
 sar� quasi come una UART "stupida" (a parte il fatto che comunque ha
 ancora spazio per altri 15 byte prima che venga inviato l'interrupt).

 Se digitate qualcosa mentre state visitando una BBS, i caratteri che
 digitate escono attraverso la porta seriale. I vostri caratteri
 digitati che si vedono sullo schermo sono quelli che sono stati
 riecheggiati dalla linea telefonica attraverso il vostro modem, quindi
 attraverso la vostra porta seriale verso lo schermo. Se si ha un
 buffer a 16 byte sulla porta seriale che trattiene i caratteri fino a
 che ne ha 14, dovrete digitare parecchi caratteri prima di poter
 vedere quello che avete digitato in precedenza.  (prima che essi
 appaiono sullo schermo). Questo pu� creare confusione ma esiste un
 "timeout" per prevenire ci�. Quindi normalmente si vede un carattere
 sullo schermo non appena lo si digita.

 Il "timeout" lavora in questo modo per il buffer della UART che
 riceve: se i caratteri arrivano uno di seguito all'altro, allora una
 richiesta di interrupt viene inviata solo quando il 14� carattere
 raggiunge il buffer. Ma se un carattere arriva ed il successivo non
 arriva subito dopo, viene richiesto un interrupt. Questo succede anche
 se non ci sono 14 caratteri nel buffer (potrebbe anche essercene solo
 uno).  Quindi quando quello che si digita passa attraverso questo
 buffer, esso si comporta come un buffer da 1 byte anche se in realt� �
 un buffer da 16 byte (a meno che la velocit� di battitura non sia
 centinaia di volte superiore al normale). Vi � un timeout anche per il
 buffer di trasmissione.



 15.4.  Numeri di modello di UART

 Ecco un elenco di UART.  TL � il Trigger Level

 �  8250, 16450, prime 16550: Obsolete con buffer da 1 byte

 �  16550, 16550A, 16c552: buffer da 16 byte  TL=1,4,8,14

 �  16650:  buffer da 32-byte. Velocit� fino a 460.8 Kbps

 �  16750:  buffer da 64-byte per trasmissione, 56-byte per ricezione.
    Velocit� fino a 921.6 Kbps

 �  Hayes ESP: buffer da 1K

 Quelle obsolete vanno bene solo per modem non superiori a 14.4.k (DTE
 con velocit� fino a 38400 bps).  Per i modem moderni occorre almeno
 una 16550 (e non una delle prime 16550).  I modem V.90 56k potrebbero
 essere percentualmente di molto piu' veloci con una 16650
 (specialmente se si scaricano file non compressi). Il vantaggio
 principale della 16650 � la maggiore dimensione del suo buffer visto
 che una velocit� extra non � necessaria a meno che il rapporto di
 compressione del modem sia alto. Alcuni modem interni a 56k potrebbero
 essere provvisti di una 16550 ??

 Schede multiporta intelligenti e senza UART usano chip DSP per il
 buffering e il controllo addizionale, liberando la CPU ancora di pi�.
 Ad esempio, le schede Cyclades Cyclom e Stallion EasyIO usano una
 Cirrus Logic CD1400 RISC UART, e molte schede usano CPU 80186 od anche
 CPU RISC speciali per gestire l'IO seriale.

 La maggioranza dei PC pi� nuovi (486, Pentium o superiori) hanno una
 16550A (generalmente chiamata solo 16550). Se avete un qualcosa di
 veramente vecchio il chip pu� essere scollegato in modo che ci si
 possa aggiornare acquistando un chip 16550A rimpiazzando la UART 16450
 esistente. Se le funzionalit� sono state immesse in un altro tipo di
 chip, allora siete sfortunati. Se la UART � agganciata ad incastro,
 allora l'aggiornamento � facile (se siete in grado di trovare un
 rimpiazzo). Le nuove e le vecchie hanno i pin compatibili. Potrebbe
 essere pi� praticabile acquistare semplicemente una nuova scheda
 seriale su Internet (alcuni negozi al dettaglio ne hanno a
 disposizione oggi).


 16.  Risoluzione di problemi

 16.1.  Il mio modem � fisicamente al suo posto ma non pu� essere
 trovato

 I messaggi di errore potrebbero essere qualcosa del tipo "No modem
 detected" (nessun modem rilevato) , "Modem non responding" (il modem
 non risponde), o (strano) "You are already online" (Sei gi� collegato)
 (da minicom). Se avete installato un modem interno (con la porta
 seriale inclusa nel modem) o ne state usando uno esterno e non sapete
 a che porta seriale sia connesso il problema � cercare la porta
 seriale.  Vedere ``La mia porta seriale � fisicamente presente ma non
 pu� essere trovata''.  Questa sezione riguarda come scoprire quale
 porta seriale ha un modem ad essa connesso.

 C'� un programma che cerca i modem sulle porte seriali comunemente
 usate chiamato "wvdialconf". Digitate semplicemente "wvdialconf <un-
 nuovo-nome-file>".  Verr� creato il nuovo file come file di
 configurazione ma non avrete bisogno di esso a meno che non andiate ad
 usare "wvdial" per telefonare.  Vedere ``Cos'� wvdialconf ?''.
 Sfortunatamente, se il vostro modem � in modalit� "online data",
 wvdialconf visualizzer� "No modem detected". Vedere ``Nessuna risposta
 ad AT''.


 Il vostro problema potrebbe essere dovuto ad un winmodem (o simile)
 che non pu� essere usato con Linux.  Vedere ``Evitare la maggior parte
 dei software modem''. Il programma "setserial" potrebbe essere usato
 per identificare le porte seriali ma non rilever� se ci sono modem
 collegati ad esse. Quindi � meglio provare ad usare prima
 "wvdialconf".

 Un altro modo di vedere se c'� un modem su una porta � lanciare
 "minicom" sulla porta (dopo avere precedentemente impostato minicom
 sulla corretta porta seriale -- dovrete salvare le impostazioni,
 quindi uscire da minicom e farlo ripartire).  Poi digitate "AT" e
 dovreste vedere OK (o 0 se � impostato per restituire codici numerici
 di risultato ("digit result codes")).  I risultati potrebbero essere:

 �  Nessuna risposta. Vedere ``Nessuna risposta ad AT''


 �  Se ci vogliono parecchi secondi per ottenere una risposta (incluso
    anche solo il cursore che si sposta di una riga) allora vedere
    ``Estremamente lento: il testo appare sullo schermo lentamente e
    dopo lunghi ritardi''

 �  Alcuni strani caratteri appaiono, ma non in risposta ad AT. Questo
    con ogni probabilit� significa che il vostro modem � ancora
    connesso a qualcosa dall'altra parte della line telefonica che sta
    inviando alcuni criptici pacchetti o simile.


 16.1.1.  Nessuna risposta ad AT

 Il modem dovrebbe inviarvi un "OK" in risposta al vostro "AT", che
 digitate al modem (usando minicom o simile). Se non vedete "OK" (e in
 parecchi casi non vedete neppure "AT" che avete digitato) il modem non
 sta rispondendo (dando per scontato che ci sia davvero un modem verso
 la porta sulla quale state digitando).

 Una ragione per la quale un vero modem non risponde � che si trova in
 modo "online data" dove non pu� accettare alcun comando AT. Potrebbe
 essere in uso con un altro processo. Se detto processo � in esecuzione
 sulla porta, potreste vederlo digitando "ps -t ttyS2" o simile.
 Comunque il processo che sta usando la porta seriale (dove si trova il
 modem) potrebbe essere in esecuzione su di un terminale tipo
 /dev/ttyS1 e non sar� individuato usando il comando sopracitato.

 Potreste stare usando il modem ed improvvisamente siete stati
 bruscamente disconnessi (come ad esempio "uccidendo" il processo con
 segnale 9). In quel caso il vostro modem non viene reimpostato a
 modalit� comandi dove pu� interagire con i comandi AT.  Ecco quindi il
 messaggio di minicom "You are already online, hangup first" (siete gi�
 in linea, interrompete la comunicazione prima).  Bene, sembra che
 siate in linea ma potreste non essere collegati con nessuno attraverso
 la linea telefonica, wvdial visualizzer� "modem not responding" (il
 modem non risponde) nella medesima situazione.

 Per risolvere questo problema come soluzione estrema spegnete e
 riavviate il computer. Un altro modo � inviare +++ al modem per dirgli
 di ritornare a modalit� comandi dalla modalit� in linea.  Da entrambe
 le parti della sequenza +++ deve esserci circa 1 secondo di ritardo
 (nulla inviato durante il "guard time"). Questo potrebbe non
 funzionare se un altro processo sta usando il modem visto che la
 sequenza +++ potrebbe essere attaccata ad altri caratteri inseriti
 prima o dopo il +++ (durante il "guard time"). Ironicamente, anche se
 la linea del modem fosse inattiva, inviandogli un inaspettato +++
 probabilmente si dar� il via ad uno scambio di pacchetti (o simile)
 che violeranno il richiesto "guard time" cos� che +++ non fa quello
 che voi avreste voluto. +++ in genere si trova nella stringa che viene
 chiamata "hangup string" (stringa di interruzione) cos� se dite a
 minicom (o simile di interrompere la comunicazione) potrebbe
 funzionare. Un altro modo di fare questo � semplicemente quello di
 uscire da minicom e poi rilanciarlo.


 16.2.  Non posso avvicinarmi ai 56K dal mio modem a 56K

 Deve esserci un livello di disturbo molto basso sulla linea perch� il
 modem possa solo avvicinarsi ai 56K. Alcune linee telefoniche sono
 cos� cattive che le velocit� ottenibili sono molto pi� lente di 56K
 (tipo 28.8 od anche meno). Alcune volte telefoni supplementari
 connessi alla stessa linea possono causare problemi. Per controllare
 questo potreste cercare di connettere il vostro modem direttamente nel
 punto dove la linea telefonica si immette nell'edificio,
 disconnettendo qualsiasi altra cosa che quella linea alimenti (se
 nessuno ha qualcosa in contrario).
 16.3.  L'invio o lo scarico di file � lento o interrotto.

 Il controllo di flusso (per il PC e/o da modem a modem) potrebbe non
 essere abilitato. Per il caso dell'invio di file: Se avete impostato
 un'altra velocit� DTE (tipo 115.2K) allora il flusso dal vostro modem
 al vostro PC potrebbe funzionare bene ma molto del flusso di invio
 nell'altra direzione non passer� completamente a causa del collo di
 bottiglia della linea telefonica.  Questo risulter� in molti errori e
 nel reinvio dei pacchetti. Potrebbe anche volerci un tempo oltremodo
 lungo per spedire un file. In alcuni casi, i file non arrivano
 neppure.

 Per il caso dello scarico di file: Se state scaricando dei grandi file
 non compressi o delle pagine web, (ed il vostro modem usa la
 compressione dei dati) oppure se avete impostata una bassa velocit�
 DTE, allore lo scarico potrebbe essere interrotto a causa della
 mancanza del controllo di flusso.


 16.4.  Ricevendo una chiamata continuo a ricevere "line NNN of inittab
 invalid"

 Ovvero: riga NNN di inittab non valida

 Assicuratevi di usare la sintassi corretta per la vostra versione di
 init.  I diversi init esistenti usano sintassi differenti nel file
 /etc/inittab.  Assicuratevi di usare la sintassi corretta per la
 vostra versione di getty.



 16.5.  Continuo a ricevere ``Id "S3" respawning too fast: disabled for
 5 minutes''

 Id "S3" � solo un esempio. In questo caso cercate la riga che inizia
 con "S3" in /etc/inittab. Questa � la causa del problema. Assicuratevi
 che la sintassi per questa riga sia corretta, che il dispositivo
 (ttyS3) esista e che possa essere trovato.

 Assicuratevi che il vostro modem sia configurato correttamente.
 Guardate i registri E e Q.  Questo pu� capitare quando il vostro modem
 sta "chiaccherando" con getty.


 Per uugetty, verificate che la sintassi del vostro /etc/gettydefs sia
 corretta eseguendo il seguente comando:


      linux# getty -c /etc/gettydefs





 Questo pu� anche capitare quando l'inizializzazione di uugetty
 fallisce.  Vedere la sezione  ``uugetty non funziona ancora''.


 16.6.  Il mio modem � bloccato dopo che qualcuno ha agganciato, oppure
 uugetty non riparte

 Questo pu� capitare quando il vostro modem non effettua il reset dopo
 che � caduto il DTR.  Greg Hankins ha visto i suoi led RD e SD
 impazzire quando questo � successo.  Dovete fare resettare il vostro
 modem. Molti modem Hayes compatibili fanno questo con &D3, ma sul suo
 USR Courier, ha dovuto impostare &D2 e S13=1.  Controllate il manuale
 del modem (se ne avete uno).


 16.7.  uugetty non funziona ancora

 Esiste un'opzione DEBUG all'interno di getty_ps. Modificate il vostro
 file di configurazione /etc/conf.{uu}getty.ttySN e aggiungete
 DEBUG=NNN.  Dove NNN � una delle seguenti combinazioni di numeri a
 seconda di quello che state cercando di debuggare:



      D_OPT   001            impostazione opzioni
      D_DEF   002            elaborazione file di default
      D_UTMP  004            elaborazione di utmp/wtmp
      D_INIT  010            inizializzazione della linea (INIT)
      D_GTAB  020            elaborazione del file gettytab
      D_RUN   040            altre diagnostiche di runtime
      D_RB    100            ringback debugging
      D_LOCK  200            elaborazione del lockfile di uugetty
      D_SCH   400            elaborazione schedule
      D_ALL   777            tutto




 Impostare DEBUG=010 � un buon punto da cui partire.

 Se avete in esecuzione syslogd, le informazioni di debugging
 appariranno nei vostri file di log.  Se non avete in esecuzione
 syslogd le informazioni appariranno in /tmp/getty:ttySN per il
 debugging getty e /tmp/uugetty:ttySN per uugetty ed in
 /var/adm/getty.log. Controllate la informazioni di debugging e vedete
 cosa sta succedendo. Molto probabilmente, dovrete regolare alcuni
 parametri nel vostro file di configurazione e riconfigurare il modem.

 Potete anche provare mgetty. Alcune persone hanno avuto miglior
 fortuna con quest'ultimo.

 Change log: Apr. 00: 2 porte allo stesso indirizzo

 16.8.  Le seguenti sottosezioni sono sia nel Serial che nel Modem
 HOWTO:

 16.9.  La mia porta seriale � fisicamente l� ma non pu� essere trovata

 Se un dispositivo (tipo un modem) pare funzionare allora la porta
 seriale � stata trovaata.  Se non funziona per niente, allora occorre
 assicurarsi che la vostra porta seriale possa essere trovata.

 Controllate i men� ed i messaggi del BIOS. Per i bus PCI usate lspci
 Se � una porta seriale PnP su bus ISA provate "pnpdump --dumpregs" e/o
 consultate il Plug-and-Play HOWTO. Usando "scanport" otterrete una
 esplorazione di tutte le porte sul bus ISA e potreste scopire una
 porta sconosciuta che potrebbe essere una porta seriale (ma la porta
 non viene verificata). Il PC potrebbe bloccarsi.  Potreste provare a
 rilevarla con setserial. Vedere ``Probing''. Se nulla sembra passare
 attraverso la porta, essa  potrebbe esserci ma avere un interrupt
 sbagliato.  Vedere ``Estremamente lento: il testo appare sullo schermo
 lentamente e dopo lunghi ritardi''

 Se due porta hanno lo stesso indirizzo IO allora la verifica indicher�
 in modo errato solo una porta.  La rilevazione Plug-and-play trover�
 entrambe le porte cos� questo potrebbe essere un problema solo se
 almeno una delle porte non � Plug-and-play. Errori di tutti i tipi
 potrebbero verificarsi per i dispositivi che stanno "condividendo una
 porta" ma il fatto che ci siano due dispositivi sulla stessa porta non
 sembra essere stato rilevato (eccetto, si spera, da voi). Se gli IRQ
 sono diversi la rilevazione dell'IRQ con setserial potrebbe "scopire"
 questa situazione non riuscendo a rilevare un IRQ. Vedere
 ``Rilevamento''.



 16.10.  Estremamente lento: il testo appare sullo schermo lentamente e
 dopo lunghi ritardi

 � probabilmente un conflitto od una errata impostazione di interrupt.
 Ecco alcuni sintomi di quello che potrebbe succedere la prima volta
 che cercate di usare un modem, terminale o stampante. In alcuni casi
 digitate qualcosa ma sullo schermo non appare nulla se non dopo
 parecchi secondi. Solo l'ultimo carattere digitato potrebbe apparire.
 Potrebbe anche essere solo un invisibile carattere di <return> cos�
 tutto quel che noterete sar� che il cursore scende di una riga) In
 altri casi dove dovrebbero comparire molti dati sullo schemo, sono un
 gruppo di circa 16 caratteri compare. Poi c'� un'attesa di parecchi
 secondi per il prossimo gruppo di caratteri. Potreste anche ricevere
 messaggi di errore di "input overrun" (o trovarli nei file di log)

 Per ulteriori dettaglio sui sintomi e perch� questo accade vedere il
 Serial-HOWTO sezione "Interrupt Problems Details".

 Se la cosa coinvolge anche dispositivi Plug-and-Play, vedere anche il
 Plug-and-Play HOWTO.

 Come veloce controllo per vedere se veramente si tratta di un problema
 di interrupt, impostate l'IRQ a zero con "setserial". Questo dice al
 driver di non usare gli interrupt ma il polling. Se sembra che questo
 risolva i problemi di "lentezza", allora si tratta di un problema di
 interrupt.  Dovreste comunque cercare di risolverlo visto che il
 polling usa esagerate risorse del computer.

 Cercare di trovare il conflitto di interrupt potrebbe non essere
 semplice visto che si suppone che Linux non consenta alcun conflitto
 di interrupt e di conseguenza vi invii un errore di ``/dev/ttys?:
 Device or resource busy (Dispositivo o risorsa impegnata)'' se pensa
 che stiate tentando di creare un conflitto. Ma un vero conflitto pu�
 essere creato se "setserial" dispone di informazioni errate. Quindi
 usare "setserial" non far� rilevare alcun conflitto (e neppure
 guardando in /proc/interrupts che basa le suo informazioni su
 "setserial"). Dovete quindi sapere quello che "setserial" pensa cos�
 che possiate evidenziare quello che � sbagliato e cambiarlo quando
 avrete determinato quello che � veramente impostato nell'hardware.

 Quello che dovete fare � verificare come � impostato l'hardware
 controllando i "jumper" od usando software PnP per controllare le vere
 impostazioni dell'hardware. Per il PnP potete lanciare "pnpdump
 --dumpregs" (se � un bus ISA)  o "lspci" (bus PCI). Confrontate i
 risultati con quello che Linux pensa sia impostato nell'hardware.



 16.11.  Abbastanza lento: Mi aspettavo che fosse un poco pi� veloce

 Una ragione potrebbe essere che qualunque cosa sia sulla porta seriale
 (tipo un modem, un terminale, una stampante) non funziona cos� veloce
 come pensate che dovrebbe.  Un modem a 56k raramente funziona a 56k ed
 Internet spesso � congestionata ed ha colli di bottiglia che
 rallentano le cose. Se il modem dall'altra parte non ha una
 connessione digitale alla linea telefonica (ed usa uno speciale "modem
 digitale" non in vendita nella maggior parte dei negozi di computer),
 allora le velocit� oltre i 33,6k non sono possibili.
 Un'altra possibile ragione � che il driver seriale pensa che abbiate
 una porta seriale obsoleta (UART 8250, 16450, o le prime 16550).
 Vedere ``Cosa sono le UART?''.  Usate "setserial -g /dev/ttyS*".  Se
 mostra qualsiasi cosa meno di 16550A, allora � probabilmente proprio
 questo il problema.  Se invece "setserial" lo identifica cos�
 sbagliando, modificatela. Vedere ``Cos'� Serial?'' per maggiori
 informazioni. Naturalmente se avete veramente una porta obsoleta,
 mentire a setserial su questo non far� altro che peggiorare le cose.



 16.12.  La schermata di avvio mostra IRQ sbagliati per le porte seri�
 ali.

 Linux non esegue nessuna identificazione di IRQ in avvio. Quando il
 modulo di setserial si carica esegue semplicemente una rilevazione del
 dispositivo seriale.  Quindi non fate caso a quello che dice circa
 l'IRQ, perch� sta semplicemente assumendo gli IRQ standard. Cos� �
 fatto, perch� l'identificazione degli IRQ � inaffidabile e potrebbe
 essere ingannevole. Ma se e quando setserial viene lanciata da uno
 script di avvio, cambia gli IRQ e visualizza il nuovo (ed
 auspicabilmente corretto) stato nella schermata di partenza. Se l'IRQ
 sbagliato non viene corretto da una seguente visualizzazione sullo
 schermo, allora avete un problema.

 Quindi, anche se ho la mia ttyS2 impostata ad IRQ 5, continuo a vedere


      ttyS02 at 0x03e8 (irq = 4) is a 16550A




 all'inizio quando parte Linux (i vecchi kernel potrebbero mostrare
 "ttyS02" come "tty02") Dovete usare setserial per dire a Linux che IRQ
 state usando.


 16.13.  "Cannot open /dev/ttyS?: Permission denied"

 Ovvero: Impossibile aprire /dev/ttyS?: Permesso negato

 Controllare i permessi su questa porta con "ls -l /dev/ttyS?".  Se
 siete i proprietari di questa ttyS? allora dovete avere i permessi di
 lettura e scrittura: crw con il c (Character device) in colonna 1. Se
 non siete i proprietari dovreste invece vedere rw- nelle colonne 8 e 9
 che significa che tutti hanno diritti di lettura e scrittura su di
 esso. Usate "chmod" per cambiare i permessi. Ci sono modi pi�
 complicati per ottenere accessi tipo appartenere ad un "gruppo" che ha
 permessi di gruppo.


 16.14.  "Operation not supported by device" per ttySx

 Ovvero: Operazione non supportata dal dispositivo

 Questo vuol dire che un operazione richiesta da setserial, stty, ecc.
 non pu� essere effettuata perch� il kernel non la supporta.  In
 precedenza questo era spesso causato dal fatto che il modulo seriale
 non era stato caricato. Ma con l'avvento del PnP, potrebbe pi�
 probabilmente dire che non c'� un modem (od altro dispositivo seriale)
 all'indirizzo dove il driver (e setserial) pensa che sia. Se non c'�
 un modem l�, i comandi inviati a quell'indirizzo ovviamente non
 vengono eseguiti.  Vedere ``Cos'� impostato nell'hardware della mia
 porta seriale?''.

 Se il modulo seriale non era caricato ma "lsmod" mostra che ora �
 caricato potrebbe essere il caso che sia stato caricato adesso ma non
 lo era quando si � ricevuto il mesasggio di errore. In molti casi il
 modulo verr� automaticamente caricato quando necessario (se si riesce
 a trovare). Per forzare il caricamento del modulo seriale si potrebbe
 elencarlo nel file /etc/modules.conf o /etc/modules. Il vero modulo
 dovrebbe risiedere in /lib/modules/.../misc/serial.o.


 16.15.  "Cannot create lockfile. Sorry" (Spiacente, non posso creare
 il file di lock)

 Ovvero: Spiacente, impossibile creare il file di lock.

 Quando viene "aperta" una porta da un programma viene creato un file
 di lock in /var/lock. Errati permessi per la directory lock non
 consentiranno la creazione di un file di lock.  Usare "ls -ld
 /var/lock" per vedere se i permessi sono a posto: in genere rwx per
 tutti (ripetuto 3 volte). Se � sbagliato, usate "chmod" per mettere a
 posto lo cose.  Naturalmente, se non esiste una directory di lock
 nessun file di lock potr� esservi creato.  Vedere la sottosezione del
 Serial-HOWTO: "What Are Lock Files".


 16.16.  "Device /dev/ttyS? is locked." (Il dispositivo /dev/ttyS? �
 bloccato)

 Ovvero: Il dispositivo dev/ttyS? � bloccato./

 Questo vuol dire che qualcun altro (o qualche altro processo) sta
 presumibilmente usando la porta seriale. Ci sono diversi modi per
 cercare di scoprire quale processo la sta usando.  Un modo � dare un
 occhiata al contenuto del file di lock (/var/lock/LCK...). Dovrebbe
 essere l'identificativo del processo. Se l'identificativo � diciamo
 261 digitate "ps 261" per scoprire cosa sia. Poi, se il processo non �
 pi� necessario, potrebbe essere gentilmente eliminato da "kill 261".
 Se si rifiuta di essere eliminato usate "kill -9 261" per forzare
 l'eliminazione, ma in questo caso il file di lock non sar� rimosso, e
 dovrete provvedere manualmente. Naturalmente se non c'� un processo
 261 allora basta che rimuoviate il file di lock, ma nella maggior
 parte dei casi il file di lock dovrebbe esser stato automaticamente
 rimosso se contiene un identificativo di processo chiuso (come 261).


 16.17.  "/dev/ttyS?: Device or resource busy" (Dispositivo o risorsa
 occupati)

 Significa che il dispositivo al quale state tentando di accedere (o
 usare) � presumibilmente occupato (in uso) o che una risorsa di cui
 necessita (tipo un IRQ) � presumibilmente in uso da parte di un altro
 dispositivo. Talvolta � davvero occupato ma in altri casi sembra
 erroneamente in uso.

 "resource busy" (risorsa impegnata) spesso vuol dire (ad esempio per
 ttyS2) "Non puoi usare ttyS2 visto che un altro dispositivo sta usando
 l'interrupt di ttyS2". Il potenziale conflitto di interrupt �
 determinato da quello che pensa "setserial". Un messaggio di errore
 pi� accurato dovrebbe essere "Non posso usare ttyS2 visto che i dati
 di setserial (e quelli del kernel) indicano che un altro dispositivo
 sta usando l'interrupt di ttyS2". Se due dispositivi usano lo stesso
 IRQ e voi fate partire uno solo dei due dispositivi, tutto � a posto
 perch� non c'� ancora conflitto. Ma quando in seguito cercate di
 lanciare il secondo dispositivo (senza chiudere il primo) otterrete il
 messaggio di errore "... resource busy". Questo perch� il kernel tiene
 traccia solamente di quale IRQ � realmente in suo e i conflitti non
 capitano a meno che i dispositivi siano in uso (aperti)
 Ci sono due casi: Potrebbe esserci un vero conflitto di interrupt che
 si sta evitando.  Ma se setserial ha sbagliato, allora non dovrebbe
 esserci alcuna ragione perch� ttyS2 non possa essere usata, eccetto
 che setserial ha erroneamente previsto un conflitto. Quello che
 occorre fare � scoprire quale interrupt setserial pensa che stia
 usando ttyS2. Pi� facile a dirsi che a farsi visto che non potete
 usare il comando "setserial" per ttyS2 visto che l'IRQ per ttyS2 �
 presumibilmente occupato ed otterreste lo stesso messaggio di errore
 "... busy". Per risolvere o eseguite un riavvio oppure: uscite od
 eliminate tutti i processi che potrebbero cauasre il conflitto. Se
 riavviate: 1.  osservate i messaggi in fase di avvio relativi alle
 porte seriali. 2. Sperate che il file che lancia "setserial" all'avvia
 non sia esso stesso a creare ancora lo stesso conflitto.

 Se pensate di sapere quale IRQ stia usando ttyS2 allora potreste dare
 uno sguardo a /proc/interrupts per scoprire chi altro sta attualmente
 usando questo IRQ.  Potreste anche voler fare un doppio controllo
 perch� qualsiasi IRQ mostrato qui (e da "setserial") sia corretto (lo
 stesso di quello impostato nell'hardware). Un modo per provare se c'�
 o meno un conflitto di interrupt � impostare l'IR1 a 0 (polling)
 usando "setserial". Se il messaggio di risorsa occupata (busy)
 scompare, probabilmente c'� un potenziale conflitto di interrupt. Non
 � una buona idea lasciarlo permanentemente impostato a 0 visto
 verranno usate pi� risorse della CPU.

 Questo paragrafo � principalmente per il caso in cui un modem � usato
 sia per chiamare che per ricevere chiamate. Se il segnale DSD �
 inviato alla porta, quello porta penser� che sia occupata.  Questo
 problema pu� sorgere quando state cercando di chiamare con un modem
 quando DTC o DTR non sono implememntati correttamente. DCD dovrebbe
 essere attivo quando c'� una effettiva connessione (ad esempio
 qualcuno ci ha chiamati), non quando getty sta guardando la porta.
 Assicuratevi che il vostro modem sia configurato per attivare DCD solo
 quando c'� una connessione.  DTR dovrebbe essere attivo ogniqualvolta
 qualcuno sta usando o guardando la linea, tipo getty, kermit, o
 qualche altro programma di comunicazione.



 16.18.  Strumenti per la risoluzione dei problemi

 Questi sono alcuni dei programmi che potreste aver bisogno di usare
 per la risoluzione dei problemi:

 �  "lsof /dev/ttySx" far� un elenco delle porte seriali che sono
    aperte.

 �  "setserial" mostra ed imposta la configurazione hardware a basso
    livello di una porta (quella che il driver pensa che sia). Vedere
    ``Cos'� setserial''.

 �  "stty" mostra ed imposta la configurazione di una porta (ad
    eccezione di quanto gestito da "setserial").  Vedere la sezione del
    Serial-HOWTO: "Stty",

 �  "modemstat" o "statserial" che mostrano lo stato corrente dei vari
    segnali di linea (tipo DTR, CTS, ecc.)  di segnale (tipo DTR, CTS,
    ecc)

 �  "irqtune" dar� agli interrupt della porta seriale una priorit�
    maggiore per migliorare le prestazioni.

 �  "hdparm" per la messa a punto dell'hard-disk potrebbe fornire un
    ulteriore aiuto


 �  "lspci" mostra gli effettivi IRQ, ecc, dell'hardware del bus PCI.

 �  "pnpdump --dumpregs" mostra gli effettivi IRQ, ecc., dell'hardware
    per i dispositivi PnP sul bus ISA.

 �  Alcuni "file" nella directory /proc (tipo ioports e interupts).



 17.  Aggiornamenti delle memorie Flash

 Molti modem possono essere aggiornati riprogrammando la loro memoria
 flash tramite un programma di aggiornamento che si ottiene da
 Internet.  Inviando questo "programma" dal PC tramite la porta seriale
 al modem, il modem immagazziner� il programma nella sua memoria non
 volatile (quella che rimane anche quando il modem viene spento).  Le
 istruzioni di installazione vertono generalmente su quanto occorre
 fare sotto Windows cos� dovrete scoprire come fare l'equivalente sotto
 Linux (a meno che si voglia installare l'aggiornamento sotto Windows).
 L'invio di un programma al modem viene spesso chiamato "download".

 Se l'ultima versione di questo HOWTO contiene ancora questa richiesta
 (vedere ``Nuove versioni di questo HOWTO'') per favore illustratemi la
 vostra esperienza installando questi aggiornamenti, che potrebbe
 essere utile ad altri.

 Ecco l'idea di base per eseguire un aggiornamento (upgrade). Per prima
 cosa, potrebbe esserci un comando che dovete inviare al vostro modem
 per dirgli che quello che segue � un aggiornamento della flash ROM.
 In un caso questo comando era AT**. Per fare questo lanciano un
 programma di comunicazione (tipo minicom) e digitare. Prima digitate
 AT <enter> per vedere se vostro modem � l� e risponde "OK".

 Poi, dovete inviare un file (talvolta due file) direttamente al modem.
 I programmi di comunicazione (come minicom) spesso usano zmodem o
 kermit per inviare file al modem (e oltre) ma essi mettono il file
 dentro dei pacchetti ai quali aggiungono delle intestazioni, mentre
 voi volete che sia inviato il file esatto, non uno modificato.  Ma il
 programma kermit ha un comando "transmit" che invier� il file
 direttamente (senza usare i pacchetti kermit), cos� questo � un modo
 di inviare un file direttamente.  Minicom al 1998 non ha questa
 capacit�.

 Un altro modo di inviare il(i) file potrebbe essere uscire dal
 programma di comunicazione aprendo una shell (in minicom si usa ^AJ)
 poi: cat nome_file_aggiornamento > /dev/ttyS2  (se la vostra porta
 seriale � ttyS2).  Poi tornare al programma di comunicazione
 (digitando fg al prompt della riga comandi in minicom) per vedere cosa
 � successo.

 Ecco una sessione di esempio per un determinato modem Rockwell (C-a �
 ^A):

 - Lanciare minicom
 - Digitare AT** : vedere "Download initiated .."
 - C-a J
 - cat FLASH.S37 > /dev/modem
 - fg : vedere "Download flash code .."
 - C-a J
 - cat 283P1722.S37 > /dev/modem
 - fg : vedere "Device successfully programmed"





 18.  Altre fonti di informazione

 18.1.  Varie


 �  pagine di manuale per: agetty(8), getty(1m), gettydefs(5),

    init(1), isapnp(8), login(1), mgetty(8), setserial(8)

 �  Il vostro manuale del modem (se esiste). Alcuni modem vengono
    rilasciati senza manuale.

 �  Serial  Suite <ftp://scicom.alphacdc.com/pub/linux> di Vern Hoxie �
    una collezione di trucchi sulla cura e l'alimentazione delle porte
    seriali in Linux pi� alcuni semplici programmi.

 �  La Linux serial mailing list. Per essere inclusi, inviate una email
    a [email protected], con  ``subscribe linux-serial'' nel
    corpo del messaggio. Se inviate '`help'' nel corpo del messaggio,
    riceverete un messaggio di aiuto. Il server gestisce anche molte
    altre liste di Linux. Inviate il comando ``lists'' per un elenco
    delle mailing list.


 18.2.  Libri

 Non stato capace di trovare un buon libro aggiornato sui modem.

 �  The Complete Modem Reference by Gilbert Held, 1997.  Contiene
    troppe informazioni che riguardano argomenti superati.  Maggiori
    informazioni aggiornate possono essere trovate su Internet.

 �  Modems For Dummies by Tina Rathbone, 1996.  (Non l'ho mai visto.)

 �  Ultimate Modem Handbook di Cass R. Lewart, 1998.



 18.3.  HOWTO



 �  Cable-Modem mini-howto

 �  ISDN Howto (non � un Howto di LDP)
    <http://www.suse.de/Support/sdb_e/isdn.html>: drivers per ISDN
    "Modems". La maggior parte delle informazioni � in tedesco

 �  Linux-Modem-Sharing mini-howto. Computer in rete condividono un
    singolo modem che chiamare l'esterno (tipo la condivisione di una
    stampante).

 �  Modems-HOWTO: In Francese (non usato nel creare questo Modem-HOWTO)

 �  NET-3-4-HOWTO: tutto sul networking, incluso SLIP, CSLIP, e PPP

 �  PPP-HOWTO: aiuto sul PPP incluso il set-up del modem.

 �  Serial-HOWTO ha informazioni sulle schede seriali multiporta usate
    sia per terminali che per i banchi di modem. Tratta la porta
    seriale pi� dettagliatamente di questo HOWTO.

 �  Serial-Programming-HOWTO: per certi aspetti della programmazione
    delle porte seriali


 �  Text-Terminal-HOWTO: (incluso la connessione con modem)

 �  UUCP-HOWTO: per informazioni sull'impostazione di UUCP


 18.4.  newsgroup Usenet



 �  comp.os.linux.answers: FAQ, How-To, README, ecc. su Linux.

 �  comp.os.linux.hardware: Compatibilit� hardware con il sistema
    operativo Linux.

 �  comp.os.linux.setup: Installazione di Linux e amministrazione del
    sistema.

 �  comp.dcom.modems: Modem per tutti i sistemi operativi.


 18.5.  Siti Web



 �  Elenco di modem che funzionano/non funzionano sotto Linux
    <http://www.o2.net/~gromitkc/winmodem.html>

 �  Comandi AT per modem Hayes: Technical Reference for Hayes (tm)
    Modem Users <http://www.hayes.com/TechSupport/techref/>

 �  Rockwell-based modem commands
    <http://www.rss.rockwell.com/techinfo/>

 �  Modem FAQ:
    Navas 28800 Modem FAQ
    <http://web.aimnet.com/~jnavas/modem/faq.html>

 �  Curt's High Speed Modem Page
    <http://www.teleport.com/~curt/modems.html>

 �  Molte informazioni sui modem a 56k 56k Modem = v.Unreliable
    <http://808hi.com/56k/>

 �  Links to modem manufacturers
    <http://www.56k.com/links/Modem_Manufacturers/>

 �  Identifying modems by FCC ID
    <http://www.sbsdirect.com/fccenter.html>


 19.  Appendice A: Come funzionano i Modem analogici (tecnica) (non
 finita)

 19.1.  La modulazione nei dettagli

 19.1.1.  Introduzione alla modulazione

 Questa parte descrive i metodi di modulazione usati per i modem
 convenzionali. Non tratta i metodi di alta velocit� (modulus
 conversion), talvolta usati dai ``I modem a 56k (v.90)''. Ma anche i
 modem a 56k usano i metodi di modulazione qui descritti.

 La modulazione � la conversione di un segnale digitale rappresentato
 da valori binary (0 o 1) in un segnale analogico che ricorda un'onda
 sinusoidale.  Il segnale modulato consiste in un segnale di un onda
 sinusoidale pura "portante" che � modificata per veicolare
 informazioni. Un'onda portante sinusoidale pura, non cambiando in
 frequenza e voltaggio, non genera un flusso di informazioni (ad
 eccezione del fatto che sia presente una portante). Per fare
 convogliare le informazioni modifichiamo (o moduliamo) questa
 portante. Ci sono 3 tipi principali di modulazione: frequenza,
 ampiezza e fase. Verranno di seguito spiegate.


 19.1.2.  Modulazione di frequenza

 Il pi� semplice metodo di modulazione � la modulazione di frequenza.
 La frequenza � misurata in cicli per secondo (di un'onda sinusoidale).
 � il conto del numero di volte in cui la forma dell'onda sinusoidale
 ripete se stessa in un secondo. � la stessa cosa del numero di volte
 che raggiunge il valore pi� alto in un secondo. La parola "Hertz"
 (abbreviato Hz) viene usato per intendere "cicli per secondo".

 Un semplice esempio di modulazione di frequenza � dove una frequenza
 significa uno 0 binario ed un'altra significa 1. Ad esempio, per
 alcuni modem obsoleti da 300 baud, 1070 Hz significa uno 0 binario
 mentre 1270 Hz significa un 1 binario.  Questo viene chiamato
 "Frequency shift keying". Invece di solo due possibili frequenze, se
 ne potrebbero usare di pi� per consentire la trasmissione di pi�
 informazioni. Se abbiamo 4 differenti frequenze (che chiameremo A, B,
 C, e D), allora ognuna di queste potrebbe supportare un paio di bit.
 Ad esempio per inviare 00 si dovrebbe usare la frequenza A. Per
 inviare un 01, usiamo la frequenza B, per 10 usiamo C, per 11 usiamo
 D. In questo modo, usando 8 frequenze differenti potremo inviare 3 bit
 per ogni cambiamento di frequenza.  Ogni volta che raddoppiamo il
 numero delle frequenze possibili, incrementiamo il numero di bit che
 possiamo rappresentare di 1.


 19.1.3.  Modulazione di ampiezza

 Una volta capito l'esempio della modulazione di frequenza sopra
 indicato, incluso le possibilit� di rappresentare alcuni bit tramite
 un singolo spostamento nella frequenza, � facile capire sia la
 modulazione di ampiezza e la modulazione di fase. Per modulazione di
 ampiezza basta cambiare l'altezza (voltaggio) dell'onda sinusoidale
 equivalente per cambiare la frequenza dell'onda sinusoidale. Per un
 caso semplice ci potrebbero essere solo 2 livelli di ampiezza
 consentiti, una rappresentato da un bit 0 e l'altro rappresentato da
 un bit 1. Come spiegato per il caso della modulazione di frequenza,
 l'avere diverse possibili ampiezze risulter� in maggiori informazioni
 che si trasmettono per cambiamento in ampiezza.



 19.1.4.  Modulazione di fase

 Per cambiare la modulazione di fase di un onda sinusoidale in un certo
 perido di tempo, dobbiamo smettere di inviare questa vecchia onda
 sinusoidale ed immediatamente iniziare ad inviare una nuova onda
 sinusoidale della stessa frequenza ed ampiezza. Se iniziamo ad inviare
 la nuova onda sinusoidale allo stesso livello di voltaggio (e con la
 stessa pendenza) presente quando abbiamo interrotto l'invio della
 vecchia onda sinusoidale, non ci sar� nessun cambio di fase (e nessun
 cambio identificabile in assoluto). Ma supponiamo di avere iniziato la
 nuova onda sinusoidale ad un differente punto della curva dell'onda
 sinusoidale. Si dovrebbe probabilmente verificare un improvviso sbalzo
 di voltaggio al punto temporale dove la vecchia onda sinusoidale si �
 fermata ed � iniziata la nuova. Questo � uno spostamento di fase ed �
 misurato in gradi (deg.) Uno spostamento di fase di deg 0 (o di deg
 360) significa nessun cambiamento in assoluto, mentre uno spostamento
 di fase di 180 inverte il voltaggio (e pendenza) dell'onda
 sinusoidale. Rendendolo in altri termini, uno spostamento di fase di
 180 deg semplicemente salta in avanti di un mezzo periodo (180 deg) al
 punto di transizione. Naturalmente si potrebbe saltare di, diciamo, 90
 deg o 135 deg. Cos� come nell'esempio della modulazione di frequenza,
 maggiori sono i possibili spostamenti di fase, maggiori bit possono
 essere rappresentati da un singolo spostamento di fase.


 19.1.5.  Modulazione combinata

 Invece di selezionare semplicemente sia la frequenza, l'ampiezza o la
 modulazione di fase, possiamo scegliere di combinare i metodi di
 modulazione.  Supponiamo di avere 256 frequenze possibili, quindi
 possiamo trasmettere un byte (8 bit) per ogni spostamento di frequenza
 (visto che 2 elevato alla 8 equivale a 256). Supponiamo anche di avere
 altre 256 differenti ampiezze cos� che ogni spostamento in ampiezza
 rappresenti un byte. Supponiamo anche che ci siano 256 spostamenti di
 fase possibili. Poi in un certo momento vogliamo fare uno spostamento
 in tutte e 3: frequenza, ampiezza e fase. Questo significherebbe
 spedire 3 byte per ognuna di queste transazioni.

 Nessun metodo di modulazione in uso oggi fa veramente questo. Non �
 pratico a causa del tempo relativamente lungo che occorrerebbe per
 rilevare tutti i 3 tipi di cambiamento. Il problema principale � che
 frequenti cambi di fase possono far sembrare che sia accaduto un
 cambio in frequenza laddove in realt� non � successo.

 Per evitare questi problemi si potrebbe cambiare simultaneamente solo
 la fase e l'ampiezza (senza nessun cambio di frequenza).  Questa viene
 chiamata modulazione di fase-ampiezza (qualche volta chiamata anche
 "quadrature amplitude modulation" = QAM). Questo metodo � usato per le
 comuni velocit� dei modem di 14,4k, 28.8k, e 33.6k. Il solo caso
 significativo dove questo metodo di modulazione non viene oggi usato �
 per i modem a 56k.  Ma anche i modem a 56k usano esclusivamente QAM
 (modulazione di fase-ampiezza) nella direzione dal vostro PC in uscita
 verso la linea telefonica.  Qualche volta anche nell'altra direzione
 si ritorna alla modulazione QAM quando le condizioni della linea non
 sono sufficientemente buone. Quindi QAM (modulazione di fase-ampiezza
 ) rimane ancora il metodo pi� largamente usato nelle ordinarie linee
 telefoniche.


 19.1.6.  I Modem a 56k (v.90)

 Il metodo di modulazione usato sopra i 33.6k � completamente diverso
 dalla comune modulazione fase-ampiezza.  Visto che le chiamate
 telefoniche ordinarie sono convertite in segnali digitali nelle
 centraline locali della compagnia telefonica, la velocit� pi� elevata
 con la quale si possono spedire dati digitali tramite una ordinaria
 chiamata telefonica � la stessa di quella che la compagnia telefonica
 usa lungo la sua porzione digitale della trasmissione della chiamata
 telefonica.  Qual � questa velocit�? Beh, � vicina ai 64Kbps. Dovrebbe
 essere 64k ma talvolta alcuni bit sono "rubati" per scopi di
 segnalazione. Ma se la compagnia telefonica sa che il collegamento non
 � per la voce, i bit potrebbero non essere rubati. Verr� presentato il
 caso dei 64k, quindi verr� spiegato perch� la velocit� reale � pi�
 bassa (56k o meno -- in genere significativamente meno).

 Quindi 64k � la maggiore velocit� possibile per una chiamata
 telefonica ordinaria usando la porzione digitale del circuito che era
 stata concepita per inviare le codifiche digitali della voce umana.
 Per potere usare 64k, il modem deve sapere esattamente come la
 compagnia telefonica faccia la sua codifica digitale del segnale
 analogico. Questo compito � troppo complicato se entrambi gli estremi
 di una chiamata telefonica hanno un'interfaccia analogica alla
 compagnia telefonica. Ma se da una parte si ha una interfaccia
 digitale, allora � possibile (almeno in una direzione). Quindi se il
 vostro ISP ha una interfaccia digitale con la compagnia telefonica,
 l'ISP pu� inviare un certo segnale digitale attraverso la linea
 telefonica verso il vostro PC.  Il segnale digitale dall'ISP viene
 convertito in analogico alla centralina telefonica vicina alla
 locazione fisica del vostro PC (forse vicino a casa vostra).  Poi �
 compito del vostro modem cercare di capire esattamente che cos'era
 quel segnale digitale. Se pu� fare questo, allora la trasmissione a
 64k (la velocit� del segnale digitale della compagnia telefonica) �
 possibile in questa direzione.

 Che metodo usa la compagnia telefonica per decodificare in digitale i
 segnali analogici? Usa il metodo di campionare l'ampiezza del segnale
 analogico alla velocit� di 8000 campioni per secondo. Ogni ampiezza
 campione � codificata come un byte a 8 bit (tipo ASCII). (Notare: 8 x
 8000 = 56k). Questa viene chiamata "Pulse Code Modulation" = PCM.
 Questi byte sono poi inviati digitalmente sui circuiti digitali della
 compagnia telefonica dove diverse chiamate condividono un singolo
 circuito, usando uno schema di time-sharing chiamato "time division
 multiplexing". Poi finalmente nella locale centralina telefonica
 vicina a casa vostra, il segnale digitale viene demultiplexato
 risultando nello stesso segnale digitale cos� come originariamente
 creato da PCM. Questo segnale viene poi riconvertito in analogico ed
 inviato a casa vostra. Ogni byte da 8-bit crea una certa ampiezza del
 segnale analogico. Il vostro modem deve determinare cosa era quel byte
 PCM a 8 bit basandosi sulla ampiezza analogica che rileva.

 Questa � (in un certo senso) una "demodulazione di ampiezza" ma non
 realmente. Non si tratta di "demodulazione di ampiezza" perch� non vi
 � portante. In verit�, viene chiamata "conversione di modulo"
 ("modulus conversion") che � l'inverso di PCM. Per determinare il
 segnale digitale che la compagnia telefonica ha usato per creare il
 segnale analogico, il modem deve campionare questo segnale di ampiezza
 analogica esattamente agli stessi punti temporali che la compagnia
 telefonica ha usato quando ha creato il segnale analogico. Per fare
 questo viene un generato un segnale temporizzato dal segnale residuo
 di 4k Hz sulla linea telefonica analogica. La creazione dei campioni
 di ampiezza che escono dalla vostra casa/ufficio ad 8k campioni/sec
 circa creano un segnale di 4k. Supponete che ogni altra ampiezza fosse
 di polarit� opposta.  Allora dovrebbe essere stata creata un'onda
 simile alla sinusoidale di 4k Hz. Ogni ampiezza � in un certo senso un
 simbolo ad 8 bit e quando si campionano le ampiezze � conosciuto come
 "symbol timing".

 Ora la codifica di queste ampiezze in PCM non � lineare. A basse
 ampiezze un incremento di 1 nel byte PCM rappresenta un incremento
 molto pi� piccolo nell'ampiezza del segnale analogico rispetto a
 quella che sarebbe se l'ampiezza che viene campionata fosse pi� alta.
 Quindi per basse ampiezze � difficile distinguere tra valori di byte
 adiacenti.  Per facilitare le cose, alcuni codici PCM rappresentanti
 ampiezze molto basse non sono usati.  Questo d� un delta pi� ampio tra
 le possibili ampiezze e fa s� che il modem le riconosca correttamente
 con pi� facilit�. Quindi la met� dei livelli di ampiezza non sono
 usati dal v.90. Questo � equivalente ad ogni simbolo (livello di
 ampiezza consentito) che rappresenta 7 bit invece di 8. Ecco da dove
 proviene il 56k: 7 bit/simbolo x 8k simboli/secondo = 56k bps.
 Naturalmente ogni simbolo � in realt� generato da 8 bit ma solo 128
 byte dei possibili 256 sono effettivamente usati. C'� una tavola di
 codici che mappa questo 128 byte a 8 bit con quelli a 7 bit.

 Ma � un poco pi� complicato di questo. Se le condizioni della linea
 non rasentano la perfezione, allora sono usati anche meno livelli
 (simboli), risultando in velocit� sotto i 56k. Negli Stati Uniti,
 anche a causa di regole governative che proibiscono gli alti voltaggi
 sulle linee telefoniche, certi alti livelli di ampiezza non posssono
 essere usati, risultando quindi in soli 53.3k circa al massimo per i
 modem a 56k.

 Notate che la parte digitale della rete telefonica � bi-direzionale.
 Questi due circuiti sono usati per una chiamata telefonica, uno in
 ciascuna direzione. Il segnale a 56k viene usato solamente in una di
 queste direzioni: dal vostro ISP al vostro PC. Nell'altra direzione
 dalla casa/ufficio verso l'ISP � usato lo schema convenzionale di
 modulazione fase-ampiezza con un massimo di 36.6k (e non 53.3K).
 Inoltre grazie a sofisticati metodi di cancellazione (non spiegati
 qui) consente di inviare simultaneamente in entrambe le direzioni.


 19.2.  Full duplex (bidirezionalit�) in un circuito

 I modem moderni sono capaci di ricevere ed inviare segnali
 contemporaneamente. Si potrebbe chiamare questa capacit�
 "bidirezionale" o "full duplex". Una volta la cosa era fatta usando
 una frequenza per inviare ed un'altra per ricevere. Oggi, la stessa
 frequenza viene usata sia per la trasmissione che per la ricezione.
 Come funzioni la cosa non � facile da capire.

 La maggior parte delle linee principali del sistema telefonico sono
 digitali con due canali in uso quando si fa una chiamata telefonica.
 Quello che dite va su un canale digitale e quello che dice l'altra
 persona va sull'altro (inverso) canale digitale. Sfortunatamente, la
 porzione del sistema telefonico che va alle case (e molti uffici) non
 � digitale ma � un singolo canale analogico. Se entrambi i modem
 fossero direttamente connessi con la parte digitale del sistema
 telefonico allora la comunicazione bidirezionale (inviare e ricevere
 allo stesso tempo) non sarebbe un problema visto che sarebbe
 disponibili due canali.

 Ma le porzioni finali del percorso del segnale passano su un solo
 circuito. Come � possibile che ci sia  comunicazione simultanea nei
 due sensi? Funziona grossomodo cos�. Supponete che il vostro modem
 stia ricevendo un segnale dall'altro modem e non stia trasmettendo. In
 questo caso non c'� problema. Ma se si iniziasse a trasmettere (mentre
 l'altro segnale in ricezione sta ancora scorrendo nel modem) il
 segnale in ricezione sarebbe soffocato. Se il segnale in trasmissione
 fosse un'onda di voltaggio "solida" applicata alla fine della linea
 non ci sarebbe alcuna possibilit� che un qualsiasi segnale in
 ricezione possa essere presente a quel punto.

 Ma il trasmettitore ha una "impedenza interna" ed segnale in
 trasmissione applicato alla fine della linea non � solido (o
 abbastanza forte) da eliminare completamente il segnale in ricezione
 che arriva dall'altro capo. Quindi mentre il voltaggio alla fine della
 linea � per la maggior parte il pi� forte segnale in trasmissione, una
 piccola parte di esso � il segnale in ricezione richiesto.  Tutto
 quello che serve � filtrare il segnale in trasmissione, pi� forte, e
 quello che rimane sar� il segnale dall'altro capo che vogliano. Per
 fare questo, basta prendere il puro segnale in trasmissione
 direttamente dal trasmettitore (prima che sia applicato sulla linea),
 amplificarlo per un determinato ammontare, quindi sottrarlo dal
 segnale totale presente alla fine della linea.  Facendo questo nei
 circuiti di ricezione rimane un segnale che per la maggior parte
 proviene dall'altra parte della linea.


 19.3.  Eliminazione dell'eco

 Un segnale che viaggia attraverso una linea in una direzione potrebbe
 incontrare cambiamenti nella linea che far� si che parte del segnale
 venga riecheggiato all'indietro nella direzione opposta.  Visto che
 viene usato lo stesso circuito per il flusso bidirezionale di dati
 detti eco genereranno ricezioni sporche. Un modo di migliorare le cose
 � inviare segnali di prova ogni tanto per determinare le
 caratteristiche di eco della linea. Questo consentir� di predirre gli
 eco che potrebbero essere generati ad ogni segnale. Quindi il metodo
 di predizione � usato per predirre quali eco il segnale in tramissione
 provocher�. Poi questo eco presunto del segnale viene sottratto dal
 segnale ricevuto.  Questo elimina gli eco.


 20.  Appendice B: Digital Modem Signal Processing (non fatta)

 21.  Appendice C: "baud" contro "bps"

 21.1.  Un semplice esempio

 "baud" e "bps" sono forse due dei termini pi� abusati nel campo dei
 computer e delle telecomunicazioni. Molte persone usano questi due
 termini indifferentemente, quando in realt� essi sono diversi! bps �
 semplicemente il numero dei bit trasmessi per secondo. Il baud rate �
 la misura di quante volte per secondo un segnale cambia (o potrebbe
 cambiare). Per una comune porta seriale il bit 1 � -12 volt e il bit 0
 � +12 v (volt). Se 38.400 bps sono una sequenza di 010101 ...
 dovrebbero essere anche 38.400 baud visto che il voltaggio cambia
 avanti e indietro da positivo a positivo a negativo ... e ci sono
 38400 cambiamenti per secondo. Per un'altra sequenza, diciamo
 111000111... ci saranno minori cambiamenti di voltaggio visto che per
 i tre 1 in sequenza il voltaggio rimane a -12 volt, eppure diciamo che
 abbiamo ancora 38.400 baud visto che esiste la possibilit� che il
 numero di cambiamenti per secondo raggiunga quel valore.

 Vista in altro modo, mettiamo un immaginario marcatore che separi ogni
 bit (anche se il voltaggio potrebbe non cambiare). 38.400 baud quindi
 significa 38.400 marcature per secondo. La marcatura scatta
 all'istante del cambiamento permesso e sono in realt� marcati da un
 segnale di un clock sincronizzato generato dall'hardware ma non
 inviato attraverso il cavo esterno.

 Supponiamo che un "cambiamento" possa avere pi� dei 2 possibili
 risultati dell'esempio precedente (di +- 12 volt). Supponiamo che
 abbia 4 possibili risultati, ognuno rappresentato da un diverso
 livello di voltaggio. Ogni livello potrebbe rappresentare un paio di
 bit (come 01). Per esempio, -12 v potrebbe essere 00, -6v 01, +6b 10 e
 +12v 11. Ecco che la velocit� di bit � doppia rispetto alla velocit�
 di baud. Ad esempio, 3000 cambiamenti per secondo genereranno 2 bit
 per ogni cambiamento risultanti in 6000 bit per secondo (bps). In
 altre parole 3000 baud equivalgono a 6000 bps.



 21.2.  Esempi reali

 L'esempio di cui sopra � oltremodo semplice. Esempi reali sono molto
 pi� complicati ma si basano sullo stesso concetto. Questo dimostra
 come un modem che va a 2400 baud possa inviare 14400 bps (o pi�). Il
 modem acquisisce una velocit� di bps maggiore di quella di baud,
 codificando molti bit per ogni cambio di segnale (o transizione).
 Quindi, quando 2 o pi� bit sono codificati per baud, la velocit� in
 bps supera quella in baud. Se la vostra connessione modem-a-modem � di
 14400 bps, si trasmetteranno 6 bit per segnale (o simbolo) di
 transizione a 2400 baud. Una velocit� di 28000 bps � ottenuta da 3200
 baud a 9 bit per baud. Quando la gente usa in modo equivoco il termine
 baud, probabilmente intende la velocit� del modem (tipo 33.6k)

 La velocit� di bps del normali modem erano precedentemente 50, 75,
 110, 300, 1200, 2400, 9600. Esse erano anche le velocit� bps nei cavi
 da porta seriale a modem.  Oggi le velocit� (massime) bps da modem a
 modem sono di 14.4K, 28.8K, 33.6K, and 56K, ma le velocit� dalla porta
 seriale al modem non sono le stesse ma sono: 19.2K, 38.4K, 57.6K,
 115.2K. Usando modem con una compressione V.42bis (massima
 compressione 4:1), le velocit� fino a 115,2K bps sono possibili per
 modem a 33.6K (230.4K possibile per i modem a 56K).

 Eccettuati i modem a 56K, la maggior parte dei modem girano a 2400,
 3000 o 3200 baud.  Anche i modem a 56k usano questi baud per
 trasmettere e talvolta precipitano a questi in ricezione.  A causa
 delle limitazioni di ampiezza di banda nelle linee telefoniche voice-
 grade, velocit� in baud superiori a 2400 sono difficili da raggiungere
 e solo lavorando in buone condizioni di qualit� della linea
 telefoniche.

 Come inizia questa confusione tra bps e baud? Bene, torniamo all'epoca
 nella quale i vecchi modem a bassa velocit� erano considerati modem ad
 alta velocit�, la velocit� bps in effetti era uguale alla velocit�
 baud. Un bit era codificato per ogni cambiamento di fase. La gente
 usava bps e baud intercambiabilmente, visto che rappresentavano lo
 stesso valore. Ad esempio, un modem a 300 bps aveva pure una velocit�
 in baud di 300.  Tutto questo cambia quando i modem pi� veloci
 entrarono in circolazione e la velocit� in bit super� la velocit� in
 baud. ''baud'' deriva da Emile Baudot, l'inventore della stampante
 telegrafica asincrona. Un modo per risolvere questo problema consiste
 nell'usare il termine "symbol rate" invece di "baud", quindi evitando
 di usare il termine "baud".  Comunque quando si parla di "velocit�"
 tra il modem e la porta seriale (velocit� DTE) baud e symbol rate sono
 uguali. Ed anche "velocit�" � improprio visto che in realt� vuol dire
 velocit� di flusso.



 22.  Appendice D: Connessione Terminal Server

 Questa sezione � adattata da Text-Terminal-HOWTO.  Un server di
 terminale � qualcosa come un interruttore intelligente che pu�
 connettere molti modem (o terminali) ad uno o pi� computer. Non � un
 interruttore meccanico cos� esso pu� modificare le velocit� ed i
 protocolli del flusso di dati che gli passano attraverso. Diverse
 compagnie costruiscono terminal server: Xyplex, Cisco, 3Com,
 Computone, Livingston, ecc. Ci sono di diversi tipi e capacit�. �
 necessario un altro HOWTO per confrontarli e descriverli (inclusa la
 possibilit� di crearsi il proprio terminal server con un PC Linux). La
 maggior parte sono usati per connettere modem piuttosto che connettere
 direttamente terminali.

 Un uso per essi � quello di connettere molti modem (o terminali) ad
 una rete ad alta velocit� la quale si connette a dei computer host.
 Naturalmente il terminal server deve avere la potenza di calcolo ed il
 software per far girare protocolli di rete come se fosse per certi
 versi un computer. Il terminal server potrebbe interagire con l'utente
 e chiedergli quale computer connettere a quale altro, ecc. oppure
 potrebbe connettere senza chiedere. Si potrebbe qualche volta inviare
 dei jobs ad una stampante attraverso il terminal server.

 Oggi un PC ha sufficiente potenza di calcolo per agire come un
 terminal server eccetto che ogni porta seriale dovrebbe avere il
 proprio interrupt hardware. I PC hanno solo pochi interrupt di riserva
 per questo scopo e visto che sono hard-wired non potete creare pi� di
 tanto tramite software. Una soluzione � usare un'avanzata scheda
 seriale multiporta che ha il suo proprio sistema di interrupt (sui
 modelli a basso costo, condividono uno degli interrupt del PC tra
 diverse porte). Vedere Serial-HOWTO per maggiori informazioni. Se un
 PC ha Linux e fa girare getty su molte porte seriali, si potrebbe
 pensare ad esso come ad un terminal server. Esso � in effetti un
 terminal server se � collegato ad altri PC attraverso una rete e se il
 suo compito � principalmente quello di far passare dati e gestire gli
 interrutp della porta seriale ogni 14 (circa) byte. Un software
 chiamato "radius" � talvolta usato.

 Oggi i veri terminal server servono pi� che da semplici terminali.
 Essi servono dei PC che emulano terminali e sono talvolta collegati ad
 una batteria di modem connessi alle linee telefoniche. Alcuni hanno
 anche i modem costruiti al loro interno. Se un terminale (o un PC che
 lo emula) � connesso direttamente ad un modem, il modem dall'altro
 capo della linea potrebbe essere connesso ad un terminal server. In
 alcuni casi il terminal server per default si aspetta che i chiamanti
 usino pacchetti PPP, qualcosa che i terminali testuali reali non
 generano.


 23.  Appendice E: Altri tipi di Modem

 Questo HOWTO attualmente tratta dei comuni tipi di modem usati per
 connettere un PC ad una linea telefonica analogica ordinaria. Ci sono
 diversi altri tipi di modem, inclusi quei dispositivi chiamati modem
 ma che non sono veramente modem.


 23.1.  Modem Digitale-a-Digitale

 La definizione standard di un modem � talvolta allargata fino ad
 includere i modem "digitali". Oggi servizi diretti digitali sono
 forniti in diverse case ed uffici cos� che un computer possa inviare
 all'esterno segnali digitali direttamente (beh, quasi) alla linea
 telefonica. Ma un dispositivo � comunque richiesto per convertire il
 segnale digitale del computer in un tipo permesso sui circuiti
 telefonici e questo dispositivo � talvolta chiamato modem. Questo
 HOWTO non tratta detti modem ma alcuni collegamenti a documenti che lo
 fanno potrebbero essere trovati all'inizio di questo HOWTO. Le
 successive 3 sezioni: ISDN, DSL e 56k, trattano dei "modem" digitale-
 a-digitale.


 23.2.  "Modem" ISDN

 Il modem � in realt� un Terminal Adapter (TA). Un pacchetto Debian
 chiamato "isdnutils" � disponibile. C'� un ISDN Howto in tedesco con
 traduzione in inglese: <http://www.suse.de/Support/sdb_e/isdn.html>.
 Si trova nella distribuzione SuSE di Linux e presumibilmente riguarda
 dei driver disponibili in quella distribuzione.  C'� anche un
 pacchetto isdn4Linux ed un newsgroup: de.alt.comm.isdn4linux. Molti
 dei messaggi sono in tedesco. Potreste provare ad uasre un motore di
 ricerca (tipo DejaNews) per cercare "isdn4linux".


 23.3.  Digital Subscriber Line (DSL)

 DSL usa l'esistente doppino telefonico dalla vostra casa (ecc) alla
 locale centralina telefonica. Questo pu� essere usato se la vostra
 linea telefonica pu� accettare velocit� superiori a quelle che un
 modem ordinario (diciamo 56k) invia. Rimpiazza il convertitore
 analogico-digitale nella locale centralina telefonica con un
 convertitore che pu� accettare un flusso di dati molto pi� veloce (in
 un formato differente naturalmente).  Il dispositivo che converte i
 segnali digitali dal vostro computer al segnale usato per
 rappresentare i dati digitale sulla linea telefonica locale �
 anch'esso chiamato modem.





 23.4.  Modem digitali a 56k

 Perch� un qualsiasi modem a 56k possa lavorare effettivamente a 56k
 nella vostra casa o ufficio, l'altro capo deve essere connesso
 direttamente al sistema digitale della compagnia telefonica. Quindi
 gli ISP dall'altro capo della linea devono procurarsi speciali modem
 digitali che forniscano ai propri clienti il servizio a 56k. C'� di
 pi� visto che batterie di molti modem sono multiconnessi ad un cavo
 telefonico ad alta capacit� che trasporta un gran numero di chiamate
 telefoniche simultaneamente (tipo T1, E1, ISDN PRI, o linee migliori).
 Occorre quindi un concentratore o "remote access server" (server di
 accesso remoto). Erano in genere costituiti da unit� a s� stanti (come
 i PC, ma costano molto di pi� ed hanno un sistema operativo
 proprietario). Ora ci sono alcune schede che si possono inserire in un
 bus PCI di un PC per svolgere questo compito.


 23.5.  Modem a linea affittata

 Questi sono analogici e non digitali. Questi modem speciali sono usati
 su linee affittate dalla compagnia telefonica o talvolta da un
 semplice connessione tramite un lungo cavo diretto.  I modem comuni
 che vanno su una linea telefonica in genere non funzionano su questo
 tipo di linee.  Un linea telefonica normale ha circa 40-50 volt
 (conosciuta come la "batteria") su di essa quando non � in uso ed i
 modem convenzionali usano questo voltaggio per la trasmissione.
 Oltretutto, la compagnia telefonica ha segnali speciali che indicano
 uno squillo, linea occupata, ecc. I modem convenzionali si attendono e
 rispondono a questi segnali.  Connettere due modem normali tramite un
 lungo cavo non generer� segnali telefonici lungo il cavo, quindi i
 modem non funzioneranno.

 Una tipica linea affittata usava due coppie di cavi (uno per ciascuna
 direzione) usando una modulazione V.29 a 9600 baud. Alcune marche di
 modem per linee affittate sono incompatibili con altre.


 24.  Appendice F: Pixel (punti) dei fax



      Carta A4:    216mm (orizzontale)  * 297mm (verticale)
      modo normale       8punti/mm      * 3.85punti/mm
      modo fine                         * 7.7punti/mm
      modo extra fine                   *15.4punti/mm




 Ogni punto pu� essere sia bianco che nero e quindi rappresenta 1 bit.
 Un foglio A4 che usa il modo fine �  (216*8) * (297*7.7) = circa 4
 milioni di punti.  Con un rapporto di compressione di 8:1 occorrono
 circa 50 secondi a 9600bps per la trasmissione.


 FINE DEL Modem-HOWTO