Linux Driver
per Conexant AccessRunner adsl USB modem
 
GUIDA ALLA CONFIGURAZIONE

 
Sito realizzato da Andrea Storto il 20 marzo 2003
 
Home | Modem | Download | Riferimenti

Utilizzo su Linux di modem adsl USB basati sul chipset Conexant AccessRunner

Andrea Storto

8 Marzo 2003

Questo documento è una traduzione con alcune aggiunte della guida fornita dallo sviluppatore Josep Comas insieme al software per connettere in rete i modem adsl con chipset Conexant AccessRunner USB


1. Introduzione

2. Premesse

3. Installazione

4. Conclusioni


1. Introduzione

Questa mini-guida si riferisce a un progetto portato avanti da uno sviluppatore spagnolo che ha programmato un driver utilizzabile con tutti i modem adsl ad interfaccia USB Conexant AccessRunner, e che supporta i protocolli PPP over ATM e PPP over Ethernet. Alla versione originale in spagnolo (che si trova nella directory /doc del pacchetto cxacru) ho aggiunto qualcosina in funzione delle difficoltà che ho trovato nell'eseguire la configurazione sul mio modem.

Per ogni esigenza di approfondimento rimando ad altre pagine, visto che questa non è e non vuole essere completa ed esaustiva dell'argomento, ma solo una guida per linee generali alla configurazione pratica del proprio modem.

2. Premesse

2.1 Sul modem in questione

Il Conexant AccessRunner USB è un chipset montato da diversi modem adsl che si collegano al pc attraverso porta USB. Conexant fabbrica questo modem per le altre case produttrici che costruiscono il modem in tutte le sue parti. Nella sezione modem potete trovare una lista, anche se parziale e in continuo aggiornamento, dei modem basati su questo chipset. Personalmente il modem su cui ho provato il driver è un Atlantis I-Storm USB.

2.2 Considerazioni preliminari sul software

Le versioni del software messe a punto finora sono versioni alpha e come tali se ne sconsiglia l'utilizzo in ambienti di produzione; sono state pensate per sviluppatori e beta-testers, ma visto che personalmente non appartengo a nessuna delle due fasce e tuttavia non volevo essere costretto ad utilizzare Windows ogni volta che mi volevo connettere, ho provato a utilizzare questo software che in effetti mi consente la connessione. Le release son disponibili sono due: una del 24/01/2003 consigliata per il protocollo RFC1483/2684 e un'altra del 12/02/2003, consigliata negli altri casi.

2.3 Requisiti Hardware

Ovviamente avete bisogno di un modem adsl USB basato sul chipset Conexant AccessRunner. Tutto il software e la documentazione presente in questo sito si riferiscono a modem esterni (non PCI) ad interfaccia USB (e non ethernet). In questi altri due casi l'installazione è in genere più semplice, e si rimanda a:

2.4 Connessione

Innazitutto avete bisogno della connessione adsl! I protocolli supportati sono, come già detto:

Inoltre dovete conoscere gli indirizzi DNS del provider, l'username e la password, i valori degli indirizzi VPI e VCI per l'instradamento della connessione: vi serviranno nella successiva configurazione. Il vostro Internet Service Provider potrà fornirvi tutte queste informazioni.

2.5 Requisiti software

Ecco tutto quello di cui avete bisogno:

Software per il Conexant AccessRunner USB

Potete trovare il pacchetto in questi diversi siti:

Il nome del pacchetto, disponibile come tgz o rpm per distribuzioni RedHat, è rilasciato nel formato cxacru-aaaa-mm-gg-src.tgz dove aaaa mm gg si riferiscono rispettivamente all'anno al mese e al giorno di rilascio della versione in questione del pacchetto.

Distribuzione e kernel

Vanno bene tutte le distribuzioni che abbiano un kernel 2.4.1 o superiore. Sarebbe preferibile una versione molto recente del kernel (come la 2.4.18 o la 2.4.20) che non ha problemi nel supportare i diversi protocolli ppp e nel contempo non necessita di particolari configurazioni aggiuntive (come precedenti kernel) per il funzionamento dei dispositivi USB. La versione del proprio kernel può essere individuata tramite il comando:

$ uname -r

Compilatore

Bisogna inoltre avere installato una versione stabile del compilatore GCC (per esempio gcc-2.96-110) e il comando make.

Ancora sul kernel

Per la compilazione del driver bisogna avere il codice sorgente del kernel relativo alla propria versione. Questo, che comunque non dovrà essere compilato, è fondamentale per la configurazione e la compilazione del driver stesso, e può essere scaricato dal sito www.kernel.org.

ppp

L'applicazione ppp deve essere correttamente installata nella versione ppp-2.4.0b2 o 2.4.1, ricordando che per il protocollo PPP over ATM va necessariamente usata la versione 2.4.0b2 perchè soltanto essa include il plugin pppoatm.so. La versione può essere individuata tramite il comando

# pppd --version
Per installare la versione 2.4.0b2 è necessario preliminarmente disinstallare la versione presente nel sistema (p.e. se si ha una distribuzione redhat o mandrake si può procedere cosė:
# rpm -e --nodeps ppp-2.4.xy.rpm
# tar xvfz ppp-2.4.0b2.tar.gz
# cd ppp-2.4.0b2
# ./configure
# make
# make install
leggete comunque le istruzioni!)

3. Installazione

3.1 Panoramica

Le operazioni che si devono fare sono in ordine:

3.2 Download

Per scaricare i files necessari vedi la precedente sezione sui Requisiti Software oppure vai alla pagina Download del mio sito.

3.3 Configurazione del kernel

Il codice sorgente relativo al proprio kernel va decompresso e spacchettato nella directory /usr/src. La directory che si crea dovrebbe essere /usr/src/linux; nel caso in cui lo spacchettamento crea una directory /usr/src/linux-2.x.yy dove 2.x.yy è il numero della versione, si dovrà fare un link simbolico

# ln -s /usr/src/linux-2.x.yy /usr/src/linux
Sarà  poi necessario azzerare la configurazione del kernel e le eventuali dipendenze attraverso il comando
# make mrproper
A questo punto si può iniziare la configurazione del kernel attraverso
# make menuconfig
(o eventualmente
# make xconfig
per la modalità grafica); ricordando preliminarmente che:
[*] = "attivo" (si deve digitare "y")
[ ] = "disattivo" (si deve digitare "n")
[M] = "caricato attraverso moduli" (si deve digitare "m") 
si devono ritoccare le seguenti voci:
        Code maturity level options
                [*] Prompt for development and/or incomplete code/drivers
        Loadable module support
                [*] Enable loadable module support
                        [*] Set version information on all module symbols
                        [*] Kernel module loader  
        Networking options
                <*> Packet socket
                <*> Unix domain sockets
                [*] TCP/IP networking
                [*] Asynchronous Transfer Mode (ATM)
        USB support
                <*> Support for USB
                [*] Preliminary USB device filesystem 
                <M> UHCI 
                <M> OHCI
L'ultima parte della configurazione dipende dal protocollo utilizzato nella propria connessione: Ultimata la configurazione del kernel, si deve salvare ed uscire (ricordo ancora che non c'è bisogno di ricompilare il kernel, la configurazione serve solo per la corretta compilazione del driver)

3.4 Compilazione e installazione del driver

Scaricato cxacru-aaaa-mm-gg-src.tgz si copia, si decomprime il pacchetto nella directory /usr/src:

# mv DIRECTORY_DOVE_STA_IL_PACCHETTO /usr/src
# cd /usr/src
# tar xvfz cxacru-aaaa-mm-gg-src.tgz
Si è così creata la cartella cxacru, nella quale ci spostiamo per la compilazione:
# cd cxacru
# make
I programmi e gli scripts dovrebbero essere pronti per l'utilizzo; si può eventualmente verificare la corretta installazione andando in /usr/sbin dove ci saranno i seguenti binari e scripts:
cxinit.bin               
cxioctl                    
cxload                     
cxload.sh              
cxnet2down.sh             
cxnet2up.sh               
cxnet3down.sh             
cxnet3up.sh               
cxnet4down.sh            
cxnet4up.sh               
cxnetdown.sh              
cxnetup.sh                
cxstart.sh                
cxstop.sh                 
cxunload.sh 

3.5 Configurazioni

USB

Se il kernel non supporta l'inizializzazione automatica dei dispositivi USB, la si può imporre aggiungendo al file /etc/fstab la riga

none            /proc/bus/usb           usbdevfs                defaults                0 0
ed eseguendo momentaneamente il relativo comando mount
$ mount -t usbdevfs /proc/bus/usb
(Se tale operazione è stata inutile, al successivo avvio di linux apparirà  un messaggio sul fallimento del caricamento dei filesystem di /etc/fstab proprio perchè i dispositivi USB sono già  montati in automatico; basterà  allora cancellare la riga aggiunta a fstab). Si aggiunge poi una riga contenente la parola "usbcam" nel file /etc/hotplug/blacklist, che perciò avrà questa forma:
...
# Syntax:  driver name alone (without any spaces) on a line. Other
# lines are ignored.
#
usbcam
# uhci ... usb-uhci handles the same pci class
usb-uhci
...
Il corretto riconoscimento del modem USB può essere verificato leggendo il seguente file:
# less /proc/bus/usb/devices
nel quale ci deve essere una parte relativa al modem adsl:
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0572 ProdID=cafe Rev= 0.01
S:  Manufacturer=-
S:  Product=ADSL USB MODEM
S:  SerialNumber=????????
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 7 Cls=00(>ifc ) Sub=00 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=84(I) Atr=03(Int.) MxPS=   8 Ivl=200ms
(dopo l'installazione del driver al posto di (none) alla voce Driver dovrebbe apparire Conexant AccessRunner)

Indirizzi DNS

Gli indirizzi DNS forniti dall'ISP devono essere aggiunti nel file /etc/resolv.conf. Nel caso esemplificativo della connessione con Tiscali si avrà:

nameserver 195.130.224.18
nameserver 195.130.225.129

Cxacru

Si deve editare il file /etc/cxacru in questo modo (il simbolo # al solito inizia un commento ignorato dal programma):

Come esempio si riporta una configurazione per protocollo PPP over ATM con Tiscali (VPI=8, VCI=35)
#
# Config file for Conexant AccessRunner
#
 
# Driver mode
DRIVER_MODE=1  # 1 = normal, 2 = debug
 
# Protocol
PROTOCOL_MODE=2  # 1 = RFC1483/2684 routed, 2 = PPP over ATM (pppoa), 3 = RFC1483/2684 bridged, 4 = PPP over Ethernet (pppoe)
 
# Paths
BINARY_PATH="/usr/sbin"
ATM_PATH=""
 
# ATM
VPI=8
VCI=35
 
# Specific for RFC1483/2684 routed/bridged
IP_ADDRESS=
NETMASK=255.255.255.0
GATEWAY=

PPP

Procedendo alla configurazione di ppp (che deve essere la versione 2.4.0b2 nel caso di protocollo PPP over ATM) si edita il file /etc/ppp/options, aggiungendo le seguenti righe a quella di default "lock":

lock 
defaultroute
noipdefault
noauthsync
noaccomp
nopcomp
noccp
novj
holdoff 4
persist
maxfail 25
usepeerdns
passive
asyncmap 0
lcp-echo-interval 2
lcp-echo-failure 7
name USERNAME_DI_CONNESSIONE
user USERNAME_DI_CONNESSIONE
plugin /usr/lib/pppd/plugins/pppoatm.so
8.35
Avendo sostituito "USERNAME_DI_CONNESSIONE" con il proprio username, la dir /usr/lib/pppd/plugins/pppoatm.so con quella dove sta il plugin pppoatm.so (che di default è quella indicata) e la riga 8.35 con i propri valori VPI.VCI. Per trovare la directory del plugin si può procedere così
$ locate pppoatm.so
Vanno poi cambiati i file /etc/ppp/pap-secrets e /etc/ppp/chap-secrets relativi all'autenticazione della propria connessione, inserendo
# Secrets for authentication using PAP
# client        server  secret                  IP addresses
USERNAME        *       PASSWORD        *
Avendo sostituito "USERNAME" con il proprio username e "PASSWORD" con la propria password di connessione. Bisogna fare attenzione a inserire un "*" (simbolo di asterisco) tra username e password, e dopo password, separando tutti questi elementi da un TAB. Alcuni ISP prevedono che l'USERNAME sia seguito dal simbolo di "chiocciola" (@) e dal dominio dell'ISP stesso (informatevi!)

3.6 Comandi per la connessione

La connessione si realizza con il comando cxstart.sh; alla fine della connessione o prima di spegnere e/o riavviare il pc si deve dare invece il comando cxstop.sh (altrimenti si verifica un KERNEL PANIC). Per evitare di dover ripetere ogni volta queste operazioni, si può entrare nella directory /usr/src/cxacru ed eseguire il comando

# make add_service
(eventualmente # make remove_service per la disintallazione) attraverso cui si ha automaticamente il caricamento dei moduli, del driver e degli scripts di connessione all'avvio di linux e la sua interruzione allo spegnimento. Ovviamente si consiglia di operare tale impostazione solo dopo aver verificato il corretto funzionamento del driver.

4. Conclusioni

4.1 Problemi riscontrati

I problemi riscontrati riguardano principalmente l'inizializzazione del modem all'avvio da linux, tanto più se "in uscita" da Windows: a volte l'allineamento del modem sulla linea adsl deve essere ripetuto manualmente comandando prima l'interruzione della connessione (cxstop.sh) e poi ripetendo cxstart.sh.

4.2 Collaborazioni

Sono più che gradite tutte le collaborazioni a livello di sviluppo del software (visitate il sito spagnolo) e a livello di ampliamento e messa a punto della documentazione e del sito (contattatemi)

4.3 Licenza

Tutto il software e la documentazione sono distribuiti sotto licenza GPL. Per maggiori informazioni visitate i siti:
www.gnu.org
www.softwarelibero.it