223
contributi
(Inizio lavori) |
Nessun oggetto della modifica |
||
Riga 1: | Riga 1: | ||
==Introduzione== | |||
Questa guida � dedicata all'installazione dei modem USB contenenti il chipset Conexant su Debian Sarge, ma pu� essere utile anche per l'installazione in release diverse (o, con opportune modifiche di configurazione, in distribuzioni diverse). | |||
I driver utilizzti provengono dal progetto [http://accessrunner.sourceforge.net/ Accessrunner], sono stati rilasciati con licenza GPL e recentemente inclusi nell'albero principale del kernel Linux (dalla versione 2.6.13). | |||
I modem con questo chipset necessitano per funzionare di un modulo del kernel (prima chiamato driver) di nome cxacru che � stato scritto per versioni del kernel Linux dalla 2.6.10 in poi. | |||
Esistono versioni precedenti dello stesso progetto funzionanti per kernel della serie 2.4 e anche qualche adattamento per kernel della serie 2.6 precedenti al 2.6.10, ma non sono pi� mantenuti e pertanto se ne consiglia l'utilizzo solo ad utenti esperti o molto coraggiosi. | |||
[[ | Oltre al driver, questi modem necessitano per funzionare anche di un firmware, che in questo caso non � altro che un sistema operativo real-time (si, potrebbe funzionare anche linux, esiste un progetto a riguardo, ma al momento nessuno ha avuto successo con esso. Trovate qualche riferimento alla homepage gi� citata). | ||
A complicare il tutto c'� il fatto che sono state rilasciate, sotto forma di binari gi� compilati, due versioni differenti di questo firmware: una usa "celle ATM impacchettate in frame USB" mentre l'altra usa "frame ethernet su USB". Il progetto Accessrunner supporta solo il primo di questi protocolli. | |||
Se vi capitasse di avere un modem che viene equipaggiato solo con il firmware del secondo tipo (di solito nei CD di installazione ci sono tutti e due), allora per usare il driver accessrunner dovete procurarvi un firmware del primo tipo da qualche parte in rete (eventualmente provate a postare nel forum). | |||
==Verificare se il modem � supportato== | |||
Prima di iniziare l'installazione � necessario verificare che il modem in possesso sia supportato dal progetto. Per fare questo � necessario collegare il modem ad una porta usb. In un terminale digitiamo | |||
<pre>$ less /proc/bus/usb/devices </pre> | |||
si otterr� una serie di informazioni su tutte le periferiche usb che avete nel pc. | |||
La parte che ci interessa � questa: | |||
<pre> | |||
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=cb00 Rev= 0.01 | |||
S: Manufacturer=- | |||
S: Product=ADSL USB MODEM | |||
S: SerialNumber=55473201 | |||
C:* #Ifs= 1 Cfg#= 1 Atr=80 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 | |||
</pre> | |||
Prendiamo nota dalla riga <tt>P:</tt> dei campi <tt>Vendor</tt> e <tt>ProdID</tt> che identificano il chipset del modem e notiamo che alla voce <tt>Driver</tt> c'� scritto <tt>none</tt>, segno che in effetti state seguendo questa guida per qualcosa ;-). | |||
Controllate se Vendor e Product ID del vostro modem corrispondono ad uno dei [http://accessrunner.sourceforge.net/modems.shtml modem supportati]. | |||
Se corrispondono ad un modem non supportato, provate a fare una ricerca nella [http://sourceforge.net/mailarchive/forum.php?forum_id=43894 mailing list del progetto] per vedere se (ed eventualmente come) qualcun altro � riuscito a risolvere il vostro problema. | |||
==L'occorrente per l'installazione== | |||
Se il � modem supportato possiamo procedere, ma saranno necessarie ancora alcune cose: | |||
*Il compilatore gcc funzionante. Se non l'avete installatelo (� presente nel primo cd di installazione, non vi serve internet): | |||
<pre> | |||
aptitude install gcc | |||
</pre> | |||
*Il driver per Wi.. (mi spiace non riesco a scriverlo ;-)) che dovreste avere in dotazione al modem. Se non l'avete cercate in rete un firmware compatibile per esempio alla Hamlet e saltate il prossimo punto. | |||
*L'utility per estrarre il firmware dal driver Wi... (� pi� forte di me :-D). Se avete una connessione ad internet funzionante potete mettervi in una directory in cui avete diritto di scrittura e digitate | |||
<pre> | |||
$ cvs -z3 -d:server:anonymous@cvs.sourceforge.net:/cvsroot/accessrunner co -P utils | |||
</pre> | |||
altrimenti dovrete usare un'altro computer connesso ad internet, aprire [http://cvs.sourceforge.net/viewcvs.py/accessrunner/ questa pagina] (che � la simulazione web del cvs) e scaricare i quattro file contenuti nella cartella utils. | |||
Ad ogni modo dopo esserci procurati le utils dobbiamo compilarle: | |||
<pre> | |||
$ cd utils # o dovunque avete messo i file | |||
$ make | |||
</pre> | |||
*Nel caso in cui il modem si identifichi con il'ID <tt>0xcafe</tt> (<tt>0x</tt> sta per esadecimale), vi serve anche la ROM di boot che scaricate ad esempio cos� | |||
<pre> | |||
$ wget http://www.olitec.com/pub/USBADSLV151-1008fr.tar.gz | |||
</pre> | |||
ora estraete il file WBoot.hex | |||
<pre> | |||
$ tar xvfz USBADSLV151-1008fr.tar.gz && cp USBADSL/WBoot.hex . | |||
</pre> | |||
e poi create un programmino C per convertire il file esadecimale in binario cos�: | |||
<pre> | |||
$ echo "int main(int argc, char ** argv) | |||
{ | |||
unsigned int bp[] = { | |||
#include "WBoot.hex" | |||
}; | |||
write(1, bp, sizeof(bp)); | |||
} | |||
" > programmino.c | |||
</pre> | |||
compilatelo e rendetelo eseguibile: | |||
<pre> | |||
$ gcc programmino.c -o programmino | |||
$ chmod +x programmino | |||
</pre> | |||
ed eseguitelo in questo modo: | |||
<pre> | |||
./programmino > cxacru-bp.bin | |||
</pre> | |||
*Purtroppo nella attuale stable (sarge) trovate il kernel 2.6.8 quindi, a meno che non abbiate gi� installato un kernel 2.6.13 o superiore dovrete usare un PC connesso ad internet per scaricare uno dei seguenti pacchetti: | |||
**il sorgente di un kernel >=2.6.10 nella forma di un pacchetto kernel-source (o linux-source, nella nomenclatura pi� recente) | |||
**un pacchetto linux-image >=2.6.13 da installare direttamente | |||
*Nel caso si decida per la compilazione di un kernel <2.6.13 (ma, ribadisco, sempre >=2.6.10) � necessario scaricare la patch usbatm che trovate [http://sourceforge.net/project/showfiles.php?group_id=47406 qui]. Conviene sempre prendere l'ultima versione disponibile, che al momento � il file usbatm-20050216.tar.bz2. | |||
Da questo punto in avanti supporremo di aver messo tutti i file necessari all'installazione in una directory di lavoro all'interno della vostra home: ~/work/ | |||
==Installazione di linux-image== | |||
Nel caso abbiate optato per l'installazione di un pacchetto linux-image non vi resta altro da fare che installarlo (da root): | |||
<pre> | |||
# dpkg -i ~/work/linux-image-2.6.x-xx-xxx.deb | |||
</pre> | |||
Verificate che il bootloader, lilo o grub, punti alle giuste immagine del kernel e dell'initrd (vedi [[Debian_Kernel_Howto#Installazione_nuovo_kernel | installazione nuovo kernel]]) e fate un reboot con il nuovo kernel. | |||
Se tutto � andato bene potete saltare il paragrafo sulla compilazione e passare all'installazione del firmware. | |||
==Compilazione e installazione del kernel== | |||
Nel caso abbiate deciso di compilare un nuovo kernel installate il pacchetto <tt>kernel-source</tt> (<tt>linux-source</tt>). | |||
Qui supporremo che un utente non privilegiato non abbia diritto di scrittura nella directory <tt>/usr/src</tt> (come imho dovrebbe essere), quindi tutti i comandi successivi devono essere dati da root oppure usando un programma che vi dia pari diritti per queste azioni (per es. <tt>sudo</tt>). | |||
<pre> | |||
# dpkg -i ~/work/linux-source-2.6.x-xx-xxx.deb | |||
</pre> | |||
questo installer� un archivio compresso contenente il kernel nella directory <tt>/usr/src/</tt>. Andiamo a scompattarlo e applichiamo la patch: | |||
<pre> | |||
# cd /usr/src | |||
# tar xvfj linux-source-2.6.x-xx-xxx.tar.bz2 | |||
# cd linux-source-2.6.x-xx-xxx | |||
# tar xvfj ~/work/usbatm-20050216.tar.bz2 | |||
</pre> | |||
'''nota bene''': mentre sperimentate con la compilazione del kernel <u>non usate mai</u> la directory <tt>/usr/src/linux</tt> che dovrebbe essere un link simbolico (<tt>man ln</tt>) ai sorgenti del kernel attualmente in uso. Se tutto il nostro procedimento funzioner�, alla fine cambierete il link in modo che punti ai sorgenti giusti. Per approfondimenti sull'argomento vedere il [[Debian_Kernel_Howto | debian kernel howto]] | |||
Invece di compilare un kernel da zero (impresa a dir poco titanica) conviene recuperare il config relativo al kernel che state usando, che dovrebbe essere presente nella directory <tt>/boot</tt>, e dovrebbe chiamarsi <tt>config-<versione del kernel></tt> o simili: sempre dalla directory principale dei sorgenti del kernel digitate | |||
<pre> | |||
# cp /boot/config<qualcosa> .config | |||
</pre> | |||
in questo modo avrete un albero dei sorgenti configurato esattamente come il vostro attuale kernel, e da qui potete fare solo le modifiche che vi servono. | |||
A questo punto prima di compilare dobbiamo abilitare alcune opzioni del kernel. Digitate | |||
<pre> | |||
# make menuconfig | |||
</pre> | |||
Andate alla voce <tt>Device Drivers -> USB support -> USB DSL modem support</tt> ed attivate <tt>USB DSL modem support</tt> e <tt>Conexant AccessRunner USB support</tt>. | |||
'''Nota''': il driver cxacru deve essere compilato come modulo perch�, probabilmente a causa di un bug, se compilato nel kernel in molti casi viene inizializzato prima che il firmware sia disponibile, e restituisce l'errore "<tt>firmware not found</tt>" anche se in realt� l'avete messo nel posto giusto. Il fatto � che non potendo fare "<tt>rmmod cxacru && modprobe cxacru</tt>", per farlo reinizializzare non vi resterebbe che staccare fisicamente il modem dalla porta usb e riattaccarlo, dopo ogni reboot, e questo pu� essere parecchio seccante! | |||
Il resto della configurazione dovrebbe essere gi� a posto, ma controllate per sicurezza. | |||
Alla voce <tt>Device Drivers -> Networking support </tt> | |||
<pre> | |||
<M> PPP support | |||
<M> PPP support for async serial ports | |||
<M> PPP support for sync tty ports | |||
<M> PPP deflate compression | |||
<M> PPP BSD-Compress compression | |||
<M> PPP over ATM | |||
</pre> | |||
Ala voce <tt>Networking options</tt> | |||
<pre> | |||
<M> Asyncronous Transfer Mode | |||
<M> Classical IP over ATM | |||
[*] Do NOT send ICMP if no neighbour | |||
</pre> | |||
A questo punto uscite salvando la configurazione attuale e costruite il pacchetto <tt>linux-source-2.6.x-xx-xxx-Custom.deb</tt> (per approfondimenti vedere [[Debian_Kernel_Howto#Compilazione_del_kernel | Compilazione del kernel]] nel Debian kernel howto): | |||
<pre> | |||
# make-kpkg clean | |||
# make-kpkg --initrd kernel-image | |||
</pre> | |||
e installate il pacchetto ottenuto: | |||
<pre> | |||
# dpkg -i ../kernel-image-2.6.x.xx.xxx-Custom.deb | |||
</pre> | |||
Ora verificate che il bootloader (lilo o grub) punti alle immagini giuste di kernel e initrd e poi riavviate. | |||
==Installazione del firmware== | |||
Qualunque metodo abbiate seguito, dopo il reboot dovreste trovare disponibile il modulo <tt>cxacru</tt>, verificate con | |||
<pre> | |||
# modprobe -l |grep cxacru | |||
</pre> | |||
il comando dovrebbe restituire un output simile a: | |||
<pre> | |||
/lib/modules/2.6.x/kernel/drivers/usb/atm/cxacru.ko | |||
</pre> | |||
se non restituisce nulla significa che c'� stato un errore nei precedenti passaggi. | |||
Se tutto � andato per il meglio proseguiamo andando a recuperare il CD dei driver per w... ehm, quell'altro S.O. | |||
Cercate nel CD il file <tt>CnxEtU.sys</tt> e copiatelo nella Cartella di lavoro. Ora estraete il firmware e copiatelo nella directory dove hotplug (o udev se usate un sistema pi� recente) si aspetta di trovarlo: | |||
<pre> | |||
# cd ~/work | |||
# ./utils/cxacru-fw CnxEtU.sys cxacru-fw.bin | |||
# cp ~/work/cxacru-fw.bin /usr/lib/hotplug/firmware | |||
</pre> | |||
Se il vostro modem ha il chipset <tt>0xcafe</tt> copiate nella stessa directory anche la ROM di boot, cio� il file <tt>cxacru-bp.bin</tt>. | |||
A questo punto togliete il modulo <tt>cxacru</tt>, nel caso sia caricato: | |||
<pre> | |||
# rmmod cxacru | |||
</pre> | |||
staccate il modem dalla porta USB nel caso sia attaccato, e poi riattaccate il modem alla porta usb e ricaricate il driver. Tutto questo perche � sempre megio togliere il modulo dal kernel prima di staccare il modem. | |||
Ora controllate che sia stato trovato il firmware: | |||
<pre> | |||
$ dmesg | tail | |||
</pre> | |||
il comando dovrebbe restituire qualcosa di simile a | |||
<pre> | |||
usbcore: registered new driver cxacru | |||
cxacru 1-1:1.0: found firmware cxacru-fw.bin | |||
</pre> | |||
Nel caso, una volta caricato il firmware, riceviate, sempre in dmesg il messaggio: | |||
<pre> | |||
cxacru 1-1:1.0: poll status: error -5 | |||
</pre> | |||
significa che occorre una versione pi� recente del vostro firmware. In effetti non � assolutamente detto che i driver forniti dal produttore del modem siano aggiornati, ma potete senz'altro trovare un firmware aggiornato in rete (o eventualmente postando nel forum). | |||
Ora il driver del modem dovrebbe gi� essere in funzione e il led relativo alla linea ADSL dovrebbe lampeggiare, segno che sta cercando la sincronizzazione con la linea. Mentre il led lampeggia avrete che: | |||
<pre> | |||
$ cat /proc/net/atm/cxacru\:0 | |||
ADSL USB MODEM (usb-0000:00:07.2-1) | |||
MAC: xx:yy:zz:bla bla bla | |||
AAL5: tx 9363 ( 0 err ), rx 14299 ( 0 err, 0 drop ) | |||
Line down | |||
</pre> | |||
e anche: | |||
<pre> | |||
$ tail /var/log/messages | |||
Oct 5 08:06:00 muretto kernel: ATM dev 0: ADSL line: attempting to activate | |||
Oct 5 08:06:10 muretto kernel: ATM dev 0: ADSL line: down | |||
Oct 5 08:06:15 muretto kernel: ATM dev 0: ADSL line: attempting to activate | |||
Oct 5 08:06:35 muretto kernel: ATM dev 0: ADSL line: down | |||
Oct 5 08:06:40 muretto kernel: ATM dev 0: ADSL line: attempting to activate | |||
Oct 5 08:08:00 muretto kernel: ATM dev 0: ADSL line: channel analysis | |||
Oct 5 08:08:05 muretto kernel: ATM dev 0: ADSL line: up (4832 kb/s down | 320 kb/s up) | |||
</pre> | |||
qui alle 8.08.00 il modem si � sincronizzato con il segnale ADSL . | |||
Una volta agganciato il segnale ADSL si avr�: | |||
<pre> | |||
$ cat /proc/net/atm/cxacru\:0 | |||
appariranno di seguito queste informazioni | |||
ADSL USB MODEM (usb-0000:00:07.2-1) | |||
MAC: xx:yy:zz:bla bla bla | |||
AAL5: tx 9363 ( 0 err ), rx 14299 ( 0 err, 0 drop ) | |||
Line up | |||
</pre> | |||
Ci siamo: il driver del modem � perfettamente funzionante. | |||
==Impostazione della connessione== | |||
Prima di iniziare dovete sapere: | |||
*userid e password forniti dal provider (di solito per Telecom Alice l'userid e la password sono entrambi uguali a <tt>aliceadsl</tt>) | |||
*VPI e VCI del provider (nel caso di Telecom Alice sono 8 e 35). | |||
*IP e DNS del nostro provider nel caso di una connessione con IP statico. | |||
Iniziamo con la configurazione. | |||
Create il file <tt>/etc/ppp/peers/adsl</tt> in questo modo: | |||
<pre> | |||
# echo "lock | |||
debug | |||
kdebug 1 | |||
noauth | |||
maxfail 3 | |||
ipparam ppp0 | |||
noipdefault | |||
usepeerdns | |||
defaultroute | |||
noaccomp | |||
noccp | |||
nobsdcomp | |||
nodeflate | |||
nopcomp | |||
novj | |||
novjccomp | |||
persist | |||
plugin /usr/lib/pppd/2.4.2/pppoatm.so 8.35 | |||
user aliceadsl | |||
" > /etc/ppp/peers/adsl | |||
</pre> | |||
Inserite userid e password nei file <tt>/etc/ppp/pap-secrets</tt> e <tt>/etc/ppp/chap-secrets</tt>: | |||
<pre> | |||
# echo "userid * password" >> /etc/ppp/pap-secrets | |||
# echo "userid * password" >> /etc/ppp/chap-secrets | |||
</pre> | |||
A questo punto fate partire la connessione con il comando | |||
<pre> | |||
# pppd call adsl | |||
</pre> | |||
ed il gioco � fatto. | |||
Controllate in <tt>/var/log/messagges</tt> se tutto funziona regolarmente: | |||
<pre> | |||
# tail /var/log/messagges | |||
Jun 3 00:07:40 localhost pppd[5101]: Plugin /usr/lib/pppd/2.4.2/pppoatm.so loaded. | |||
Jun 3 00:07:40 localhost kernel: PPP generic driver version 2.4.2 | |||
Jun 3 00:07:40 localhost pppd[5101]: PPPoATM plugin_init | |||
Jun 3 00:07:40 localhost pppd[5101]: PPPoATM setdevname_pppoatm - SUCCESS:8.35 | |||
Jun 3 00:07:40 localhost pppd[5126]: pppd 2.4.2 started by root, uid 0 | |||
Jun 3 00:07:40 localhost pppd[5126]: Using interface ppp0 | |||
Jun 3 00:07:40 localhost pppd[5126]: Connect: ppp0 <--> 8.35 | |||
Jun 3 00:07:43 localhost pppd[5126]: PAP authentication succeeded | |||
Jun 3 00:07:43 localhost pppd[5126]: local IP address 82.59.0.222 | |||
Jun 3 00:07:43 localhost pppd[5126]: remote IP address 192.168.100.1 | |||
Jun 3 00:07:43 localhost pppd[5126]: primary DNS address 80.17.212.208 | |||
Jun 3 00:07:43 localhost pppd[5126]: secondary DNS address 151.99.125.1 | |||
</pre> | |||
Controllate in <tt>/etc/resolv.conf</tt> se i DNS sono corretti altrimenti li dovrete inserire a mano. Per esempio un <tt>/etc/resolv.conf</tt> con i DNS di libero sarebbe: | |||
<pre> | |||
$ cat /etc/resolv.conf | |||
search libero.it | |||
nameserver 193.70.192.25 | |||
nameserver 193.70.152.25 | |||
</pre> | |||
Buona navigazione! | |||
---- | ---- | ||
: [[Utente:Tindal|Tindal]] |
contributi