<- HiL - Intro - Indice Generale - Copertina - PLUTO News - ILDP ->

Hardware in Libertà


ADSL-USB HOWTO / Parte 2

di Giuseppe Lucente


L'articolo...

Continua la trattazione dell'argomento legato alla tecnologia ADSL e ai sistemi GNU\Linux. In questa puntata parleremo dei dispositivi basati su Chipset Globespan.



Indice


Premessa

Nell'articolo precedente avevamo introdotto il concetto di "ADSL", gli accorgimenti necessari per poterla utilizzare sotto i sistemi GNU\Linux e i dispositivi USB supportati; proprio in riferimento a questi ultimi, chi avesse letto l'articolo precedente ricorderà che si era largamente parlato dell' Alacatel Speedtouch; fino a qualche tempo fa era in assoluto il dispositivo USB più utilizzato. Bene, la cosa non è più vera: la risposta si chiama Globespan e il raggio di azione in termini di periferiche supportate si allarga molto.
In questo articolo vedremo di chiarire di che periferiche si tratti, come sia possibile installarle sotto Linux e, dulcis in fundo, vedremo tre casi reali di installazione e configurazione su tre piattaforme hardware differenti.

Globespan più da vicino

Ma cos'è realmente? Per evitare confusioni è importante sottolineare che quando parliamo di Globespan non facciamo riferimento ad una periferica, bensì ad un chipset, sviluppato e prodotto da una azienda americana (Globespan INC.), che supporta tutti gli standard di comunicazione odierni. Molte delle periferiche oggi in circolazione lo integrano; ovviamente, questo aspetto garantisce una maggiore quantità di dispositivi supportati e quindi utilizzabili... cosa a mio avviso di non poco conto!
E la Linux Community? Visto il suo dinamismo non è certo rimasta a guardare e ha dato vita ad un progetto importantissimo di nome "ECI ADSL", che avanza a ritmi frenetici. L'intento è quello di offrire un supporto agli utenti Linux per l'utilizzo di tali periferiche, e nonostante i driver non siano ancora arrivati nemmeno alle release `1' si presentano comunque molto stabili ed efficienti.

Preparativi: periferiche e driver

Dopo questa introduzione è giunta l'ora di mettersi all'opera. Se tutto andrà per il meglio in breve tempo saremo in grado di gustarci una navigata attraverso la nostra Linux-box. La prima cosa da fare è procurarsi tutto l'occorrente, riportato nella tabella sottostante:

1) Modem USB basato su chipset Globespan supportato.
2) Kernel con supporto USB
3) Driver usermode

Vediamo di commentare i tre punti:

1) Anche se sembra fin troppo logico, per raggiungere il nostro risultato dobbiamo assicurarci che la periferica in nostro possesso sia supportata; non ci sarebbe da stupirsi se qualcuno si domandasse: "Ho un modem Globespan, per quale motivo dovrei controllare?"
Purtroppo non tutti i dispositivi funzionano: quindi, prima di imbattersi nella procedura di installazione, è consigliabile controllare che il nostro modem funzioni. Per un elenco esaustivo di periferiche è possibile fare riferimento al seguente indirizzo:
[http://eciadsl.flashtux.org/modems.php?lang=en]

2) Trattandosi di periferiche USB, un altro importante requisito sarà un kernel con supporto USB abilitato. In questo articolo non scenderemo nei dettagli riguardanti la ricompilazione, argomento già ampiamente trattato; per maggiori dettagli vi rimando all'articolo introduttivo:
[http://www.pluto.linux.it/journal/pj0301/adsl_mini.html]

3) Per completare il tutto, dovremo procurarci i driver usermode (attualmente la release è `UM-0.7`) disponibili al seguente indirizzo:
[http://eciadsl.flashtux.org/download.php?lang=en&view=stable]

Installazione driver

Ora che abbiamo tutto l'occorrente possiamo scendere nei dettagli.
Prima di tutto copiamo i file in una cartella di supporto (es. /usr/local/src), quindi decomprimiamo l'archivio e procediamo con l'installazione:

[root]#: cp eciadsl-usermode-0.7.tar.gz /usr/local/src/
[root]#: tar xvfz eciadsl-usermode-0.7.tar.gz
[root]#: cd eciadsl-usermode-0.7
[root]#: ./configure
[root]#: make && make install

L'operazione di cui sopra posiziona gli eseguibili in `/usr/local/bin` e crea una cartella eciadsl in `/etc` che, come vedremo successivamente, ci tornerà utile in caso di problemi.

Configurazione e connessione

Detto questo non ci rimane altro che configurare la nostra connessione, operazione resa assai semplice grazie a due intuitivi script che troviamo all'interno dei sorgenti:

1) eciconf.sh (versione grafica)
2) eciconftxt.sh (versione testo)

Per i puristi e gli amanti del rischio rimane ovviamente la possibilità di editare direttamente i file di configurazione. Chi volesse cimentarsi in quest'ultima soluzione può fare riferimento al precedente articolo.
Per evitare di ottenere un messaggio di errore durante il caricamento dell'usbdevfs, e comunque per fare le cose a regola d'arte, possiamo inserire la seguente riga nel nostro 'fstab':

usbdevfs        /proc/bus/usb   usbdevfs defaults               0       0

Completata la procedura di configurazione possiamo provare a lanciare la connessione semplicemente attraverso:

[root]#: startmodem
setting up USB support (1/5)..

loading firmware (2/5)..
GlobeSpan USB ADSL WAN Modem compatible modem found (in xxxxms)
ECI load 1: success
firmware loaded successfully

setting up modem (3/5)..
ECI load 2: success
synchronization successful

connecting modem (4/5)..

using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/pts/0
sent [LCP ConfReq ....]
rcvd [LCP ConfAck ....]
sent [PAP AuthReq id=0x1 user="username" password=hidden]
rcvd [LCP ConfAck id=0x2 asyncmap ...]
local IP address 1.2.3.4
remote IP address 10.11.12.13
primary DNS address xxx.xxx.xxx.xxx
secondary DNS address xxx.xxx.xxx.xxx

Connection successful!

setting up route table (5/5)
adding default route

A questo punto la connessione è instaurata: ciò significa che non ci rimane altro che aprire un browser e navigare in rete!
NOTA: l'output di questo comando è decisamente molto dettagliato, il che ci è di grande aiuto in caso di problemi, ma una volta che ci siamo assicurati che tutto funziona per il meglio è possibile agire attraverso le opzioni dei file presenti in `/etc/ppp` per diminuire il livello di dettaglio del debug.

APPENDICI:

a) Dalla teoria alla pratica: 3 casi reali!

Nei paragrafi precedenti abbiamo visto che l'installazione e la configurazione sono nel complesso operazioni abbastanza semplici, che non prevedono punti particolarmente ostici da superare. Problemi di un certo rilievo possono però presentarsi successivamente, nel momento in cui tentiamo il collegamento in rete. In questo paragrafo vedremo assieme tre casi diversi di installazione da me effettuati, i problemi incontrati, e come ho proceduto per la loro risoluzione.
E' bene precisare che questa non vuol essere assolutamente una guida esauriente a tutti i problemi, bensì un rapido sguardo agli ostacoli più probabili in cui si può incappare. Per ogni altro tipo di inconveniente non citato in questa sede, consiglio caldamente di fare riferimento all'ottima documentazione che trovate assieme ai driver.
Detto questo proseguiamo: per semplificare e rendere più chiaro il discorso chiameremo le singole macchine `A` - `B` - `C`; non vedremo l'elenco completo della componentistica hardware, ma ci concentreremo solamente sulla mainboard:

A: basato su chipset intel 845D
B: basato su chipset SIS 962
C: basato su chipset VIA 693A

Per i test condotti ho utilizzato un modem Wisecom ADSL USB; per quanto ininfluente le distribuzioni usate sono state RedHat e Debian.
Una volta prelevati i driver ho provveduto alla loro installazione e successivamente alla configurazione. Tale procedura non ha comportato nessun tipo di problema. Ho proceduto quindi per al collegamento in rete; qui di sotto riporto i risultati:

MACCHINA `A`

Nessun tipo di problema riscontrato. Al termine dell'installazione è stato possibile collegarsi in rete immediatamente.

MACCHINA `B`

Il comando startmodem è stato immediatamente interrotto durante il caricamento del firmware (fase 2), e da un messaggio di errore: "Fatal: MODEM HANGUP". Per localizzare al meglio il problema mi sono servito dell'ottimo script `eci-doctor.sh`, come check-up generale, e degli altrettanto insostituibili log di sistema. Il primo ha confermato in parte l'errore riscontrato durante l'avvio della connessione, ma non solo; tale script si dimostra essere particolarmente interessante perché ci permette di ottenere una panoramica abbastanza completa del funzionamento USB/periferica. Vediamone l'output:

[root]:#./eci-doctor.sh
You are using linux kernel version 2.4.18-bf2.4
Support for USB is OK
Preliminary USB device filesystem is OK
dabusb module is not loaded: OK
ehci-hcd module is not loaded: OK
OHCI support is OK
/dev/ppp is OK
HDLC support is OK
HDLC support is OK (no bug)
I cannot find your ADSL modem: Fatal

A prima vista l'intero sistema USB funziona a dovere, ciò vuol dire che fino ad ora tutto è stato eseguito correttamente. Una conferma ci arriva infatti attraverso i log di sistema:

[root]:# tail -f /var/log/messages
xxx kernel: usb.c: USB device not accepting new address=4 (error=-110)
xxx kernel: usb_control/bulk_msg: timeout
xxx kernel: usb-ohci.c: unlink URB timeout

Si tratta di un conflitto (confermato anche nella documentazione) fra la periferica, il kernel e il BIOS, o più correttamente l' ACPI, un sistema che consente di "governare" in maniera avanzata l'alimentazione nonché la gestione degli IRQ delle periferiche. Approfondire interamente il discorso esula dagli scopi dell'articolo, e soprattutto non sarebbe possibile in questa sede: una breve ricerca in rete potrà aiutare a comprendere maggiormente la cosa.

Le possibili soluzioni a portata di mano sono due:

1) Disabilitare da BIOS l'ACPI
2) Forzare il non-caricamento dell'ACPI da parte del kernel

Per quanto sia sconsigliabile disabilitare totalmente tale funzione, in quanto potrebbe causare conflitti anche maggiori di quello riscontrato, vale la pena provare subito la prima strada, essendo di fatto la più veloce. Nel nostro caso, il problema è stato risolto proprio mediante essa. Al riavvio della macchina, infatti, è stato possibile collegarsi ad Internet.

NOTA: In ogni caso bisogna tener presente che tale scelta va presa in considerazione delle proprie esigenze personali, ecco perché consiglio di documentarsi sull'argomento.

MACCHINA `C`

Come nel caso precedente l'operazione di connessione in rete non è andata a buon fine al primo colpo; il problema in questo caso si è presentato nella fase 3, ovvero durante la sincronizzazione della periferica:

[root]#: startmodem
setting up USB support (1/5)..

loading firmware (2/5)..
GlobeSpan USB ADSL WAN Modem compatible modem found (in xxxxms)
ECI load 1: success
firmware loaded successfully

setting up modem (3/5)..
ECI load 2: timeout
connection failed

Il fatto che si blocchi dopo aver attivato completamente il supporto USB e il firmware della periferica ci permette di tirare un sospiro di sollievo; vuol dire che, in termini di hardware, il nostro "pinguino" ha accettato di buon grado il nuovo ospite ;o) Più semplicemente il problema risiede nel fatto che il nostro modem non va d'accordo con il binario che si occupa della sincronizzazione. La soluzione è assai semplice; ecco cosa ho fatto:

1 - Ho scaricato l'archivio contenente tutti i file '.bin' attualmente disponibili: http://eciadsl.flashtux.org/download/eciadsl-synch_bin.tar.gz
2 - Ho decompresso l'archivio nella directory '/etc/eciadsl' creata durante l'installazione.

A questo punto, è bastato lanciare lo script 'eciconftxt' (è possibile usare anche la modalità grafica), e tramite esso mi è stato possibile caricare il file più corretto in base alle mie necessità. A questo punto, un riavvio immediato di startmodem e la connessione si è instaurata senza alcun indugio.

b) Accorgimenti finali!

Automazione

All'interno dell'archivio dei driver vi sono le istruzioni necessarie per potersi costruire uno script per la gestione totale della connessione.
Tuttavia io ho trovato molto più semplice inserire l'eseguibile all'interno dei file che vengono letti al boot della macchina. Decisamente più sporca come strada ma semplice e funzionale... GARANTITO!
Sotto RedHat è sufficiente includere startmodem in /etc/rc.local. Per Debian la soluzione è altrettanto semplice: inseriamo in un normalissimo file di testo le seguenti righe:
#!/bin/sh
#
echo -n "Avvio della connessione di rete..."

/usr/local/bin/startmodem

Salviamolo in /etc/init.d/adsl e creiamo i file di collegamento necessari per avviarlo al boot:

[root]:# update-rc.d -f adsl defaults 15

Sistemi dual-boot: Linux & Windows

Un dettaglio banale quanto importante per tutti gli utenti che condividono sulla stessa macchina sia Windows che Linux. Il passaggio da un sistema all'altro obbliga a scollegare il cavo USB dal modem per una decina di secondi, pena un bel CONNECTION FAILED. Non è chiaro il motivo; probabilmente la periferica tiene traccia delle connessioni precedentemente effettuate.


L'autore

Giuseppe Lucente alias Beppe è un utente casalingo con tanta passione per tutto quello che ruota attorno al mondo dell'informatica.
E' fuggito appena in tempo nel 1999 da un regime dittatoriale governato da sistemi CloseSource per (e)migrare verso un regime più democratico: Linux, che gli ha concesso di ampliare le proprie capacità.
Amante degli animali, ha deciso di intraprendere una dura lotta per la salvaguardia dei pinguini :)

<- HiL - Intro - Indice Generale - Copertina - PLUTO News - ILDP ->