[PLUTO-Journal] PJ Nr. 41

fiblan fiblan a yahoo.it
Gio 29 Gen 2004 18:21:29 CET


On Thu, 22 Jan 2004 17:41:59 +0100
Claudio Cattazzo <claudio a pluto.it> wrote:

> (Con questa mail rispondo anche a te, Tom)
> 
> Ho appena creato il modulo cvs pjn41 che conterrą gli articoli da pubblicare
> nel prossimo numero del PLUTO Journal.

Segue a fine email uno 0.1 dell'articolo su modem usb adsl conexant. 

Se qualcuno puo' dare una lettura veloce... :)

Claudio e' possibile fare delle modifiche sull'articolo del PJ Nr 40 
(alcune rettifiche)?





>----------------------------------cut--------------------------------------------
modem usb adsl conexant
------------------------------------------------
Una delle piu' grandi difficolta' che un utente linux deve affrontare e' la 
compatibilita' hardware. L'atteggiamento piu' furbo e' quello
di verificare prima dell'acquisto, se esiste il supporto per linux. [qualche link]

In questo articolo di Hardware in liberta', vi parlero' della mia esperienza
riguardo la ricerca di un driver per un modem Adsl (USB) con chipset Conexant.

-- la mia avventura --
Il modem a cui faccio riferimento e' distribuito dall' Aethra, modello StarModem. 
Ma e' valido per qualsiasi modem adsl Access Runner.

Nemmeno a dirlo e' perfettamente funzionante con SO Microsoft, i driver sono 
forniti nel CD allegato al modem ma, per linux, niente!

Lo StarModem era stato "regalato" ad 1 euro dal mio provider al momento dell'attivazione 
del contratto adsl, ed io preventivamente mi ero informato per verificare la compatibilita'
con linux. Cerco Aethra starmodem e vedo che e' perfettamente funzionante con gli eciadsl 
(v. http://www.pluto.it/journal/pj0308/adsl_mini2.html), contento me lo faccio inviare!  
Amara sorpresa... il mio Starmodem non monta chipset Globespan bensi' un conexant quindi 
niente da fare gli eciadsl non sono funzionanti! Stesso nome ma modello diverso!

Non sto qui a raccontarvi quanto tempo abbia passato su google, gruppi, irc..
Potete immaginare. Dopo tante ricerche sono riuscito a trovare la soluzione anzi,
le soluzioni. 

-ACCESS RUNNER SOLUZIONI-
La prima e' Cxacru (http://sourceforge.net/projects/accessrunner/), un progetto spagnolo OpenSource
 sul chipset AccessRunner della Conexant, solo da qualche mese, e' stato aggiunto il supporto per il modem
dell'Aethra. Il secondo e' un "arrangiamento" di driver esistenti della
Conexant stessa. Per quanto riguarda la prima soluzione , in rete si trovano parecchi
tutorial (installazioni e funzionamento) per questo ho deciso di non entrare nei
dettagli, rimandando gli interessati a qualche links alla fine dell'articolo.
Voglio, invece soffermarmi sulla seconda soluzione, che tra le altre cose e' la
piu' veloce e semplice da utilizzare.

Prima di iniziare e' chiaro che si suppone il nostro sistema sia configurato per il
supporto di periferiche usb (v. 
http://www.pluto.linux.it/journal/pj0301/adsl_mini.html) e siano installate le librerie usbutils
( per il comando lsusb)

Montiamo il filesystem USB, colleghiamo il modem e verifichiamo che il nostro
modem abbia un chipset conexant (leggendo il product id ed il vendor id)

# monta il file system usb
mount -t usbfs none /proc/bus/usb

Il comando lsusb (delle usbutils) legge le possibili corrispondenze (vendor id - vendor
name) dal file /usr/share/usb.ids, se il modem e' un conexant apparira' quindi
una scritta del tipo:

#lsusb
Bus 001 Device 001: ID 0000:0000 Virtual Hub
Bus 001 Device 002: ID 0572:cb06 Conexant Systems (Rockwell), Inc.


Nel mio caso 0572 e cb06 sono rispettivamente il vendor id ed il product id
dell'Aethra Starmodem con chipset conexant.

(v. anche http://dsl.linux.it/ChipsetConexantUsb)

Fatta questa verifica occorre procurarsi i sorgenti del driver.
Su un sito di un azienda telematica francese troviamo i sorgenti 
(http://www.olitec.com/adsl-linux.html) e inoltre dal cd del nostro modem 
possiamo scaricare il firmware (il file CnxE2Fw.bin) per non utilizzare 
quello di un altra azienda distributrice.
Quest'ultimo dobbiamo copiarlo nella cartella /etc/.

//preleviamo dal cd del nostro modem il file CnxFwE2.bin e lo copiamno in /etc
#mount /mnt/cdrom
#cp `find /mnt/cdrom -name CnxE2Fw.bin` /etc/

//scarichiamo i sorgenti dal sito della olitec e scompattiamo:
#cd /tmp
#wget http://www.olitec.com/pub/USBADSLV151-1008fr.tar.gz
#tar xfz USBADSLV151-1008fr.tar.gz
#cd USBADSL
A questo punto dobbiamo semplicemente modificare i valori VID e PID nelle due define del file customer.h
dovrai inserire i valori ritornati da lsusb ossia

#define HSB_USB_CUSTOMER_VID    0x0572
#define HSB_USB_CUSTOMER_PID    0xcb06

salviamo il file con le modifiche e invochiamo make, sara' cosi' creato il modulo e2.o. 
Per la compilazione del modulo e' necessario aver installato nel sistema
gli header del kernel.

Possiamo copiare e2.o nella cartella dei moduli del nostro kernel.

#cp e2.0 /lib/modules/`uname r`/misc/
nella mia slack ho prima gzippato il file..
#gzip e2.0 
#cp e2.o.gz /lib/modules/`uname r`/misc/


Per attivare il modem occorre, da root, caricare il modulo e2
#modprobe e2
attendere un tempo di circa 60 secondi
#sleep 60
caricare l'interfaccia hsb0
#ifconfig hsb0 up
allineare la connessione con la richiesta di assegnazione del numero ip
#dhcpcd -n hsb0 

In realta' questa procedura non sempre funziona, forse a causa di un bug 
nella comunicazione tra i moduli del controller usb e il modulo e2,
A volte e' necessario rimuovere il modulo del controller usb e ricaricarlo,
nel mio caso, uso la seguente sequenza di comandi:

#modprobe e2
#sleep 10
#rmmod usb-ohci
#sleep 5
#modprobe usb-ohci

//bisogna attendere altrimenti si becca un messaggio di errore.
#sleep 75
#ifconfig hsb0 up

#dhcpcd -n hsb0

//a volte e' necessario una doppia chiamata a dhcpcd
#sleep 10
#dhcpcd -n hsb0

A questo punto possiamo verificare con un ifconfig se l'interfaccia hsb0 e' stata corretamente caricata.
#ifconfig 

Per la prima volta i parametri di configurazione della connessione possono essere immessi attraverso 
il vostro browser web preferito [Firebird :) ]
allo stesso modo di windows, ossia puntando  alla pagina http://10.0.0.2

Per cadute di connessione a volte basta da linea di comando un semplice 
#dhcpcd -n hsb0

-- Curiosita' --
Curiosando sul nostro modem con uno scanning delle porte (su 10.0.0.3)
notiamo oltre alla porta 80 [http] anche altre porte aperte tipo l'ftp ... ma questo lo lascio
alla curiosita' dei lettori!


--------------------------------------------------
picccolo schif-Di-Script di avvio automatico da inserire per esempio
in crontab.

#!/bin/sh
######################
# 
# avvio STarmodem 
# automatico v 0.1 fiblan
# verifica se esiste una connessione
# `$0 resume` esegue semplicemente 
#             una semplice richiesta di ip 
# `$0`        sequenza completa di comandi 
#	      per avviare il modem
#########################

# 'if' di controllo connessione internet 
# attraverso un ping
if ping -qnw1 -c1 google.com 2>&1  >/dev/null
then
  echo `date +"%D-%T  ok!"`
else
 echo `date +"%D-%T-  NO"`
 if [ "$1" = "resume" ];
 then
  echo "- request dhcp"
  dhcpcd -n hsb0 2>&1 >/dev/null
  $0
 else
  echo Tentativo Nuova Connessione
    echo "****Attivazione Adsl****"
    modprobe e2
    sleep 10
    rmmod usb-ohci
    sleep 5
    modprobe usb-ohci
    sleep 75
    echo "... Attendo sincronizizzazione modem"
    ifconfig hsb0 up
    dhcpcd -n hsb0
  fi
 fi
fi

##links:
http://sourceforge.net/projects/accessrunner/
Forum
http://sourceforge.net/forum/?group_id=47406

http://www.aethra.com

http://cxacru.altervista.org/
http://www.conexant.com


Maggiori informazioni sulla lista pluto-journal