I modem ADSL che fanno uso della tecnologia USB per connettersi al computer sono da tempo uno scoglio per l’utente del sistema operativo Linux: questo per mancanza di supporto da parte dei providers e dei produttori.
Fortunatamente sembra che pian piano la situazione stia cambiando in meglio, ma ancora molti chipset risultano problematici.
Riporto dunque qui sotto la mia esperienza con il modem Fastrate USB 100, fornito da Telecom Italia, sperando possa essere utile ad altri utenti.
Innanzitutto devo specificare che la seguente procedura è stata da me testata con tre sistemi, con risultati esattamente identici: Ubuntu 5.10 “Breezy Badger”, Ubuntu 6.06 “Dapper Drake” e Slackware 10.2.
In tutti e tre i casi, il kernel è stato compilato a partire dalle sorgenti del kernel 2.6.16.5 da kernel.org. Questo tutorial non si occuperà di versioni anteriori.
Passiamo dunque alla procedura:
Innanzitutto ricompiliamo il kernel: scaricate i sorgenti del kernel 2.6.16.5 da kernel.org, e installateli correttamente:
#mv /linux-2.6.X.tar.gz /usr/src (oppure /linux-2.6.X.tar.bz2, a seconda del formato che avete scelto) #tar xvzf linux-2.6.X.tar.gz (oppure tar xvjf per il .bz2) #rm linux (se esiste il link simbolico) #ln -s /usr/src/linux-2.6.X/ /usr/src/linux
A questo punto siete pronti per ricompilare il kernel. Per maggiore precisione potete spulciare nelle sezioni USB e NET del mio file di configurazione del kernel: questo è il file /usr/src/linux/.config che contiene tutte le impostazioni del kernel relative a cosa compilare e come (ossia tutte le decisioni che prenderete con make menuconfig). Nelle sezioni Networking Options/Networking Options e Device drivers/Network drivers, abilitate le normali voci relative ai supporti ppp e IP: da quanto risulta dai miei test, le opzioni fondamentali sono:
A questo punto si può compilare e installare il nuovo kernel:
#make && make modules_install #cp ./arch/i386/boot/bzImage /boot/bzImage-2.6.16.5 (o dove diavolo volete, poi impostate il vostro bootloader per poter caricare quella immagine) #cp System.map /boot/System.map-2.6.16.5 #cp .config /boot/config-2.6.16.5
A questo punto potete scaricare i drivers del modem: questo ha un chipset compatibile (o forse è proprio lo stesso) con quello dei Bewan: scaricate dunque la versione Bewan driver 0.9.3.
#mkdir /lib/modules/adslmodem (ho le mie manie) #cp /A1012-A1006..etcetc...0.9.3.tgz /lib/modules/adslmodem && cd /lib/modules/adslmodem #tar xvf /A1012-A1006-A988-..etc...0.9.3.tgz #cd unicorn/ #make #make install
Molte delle guide che si trovano in rete (una per tutte la guida di Felipe) consigliano modifiche al driver e di eseguire manualmente l’installazione (senza eseguire make install. Tali guide tuttavia partono da versioni del driver antidiluviane (0.9.0), e eseguire le patches consigliate sui nuovi drivers porta ad un rallentamento notevole della velocità della connession.
Analogamente, con i nuovi drivers si può tranquillamente impostare il caricamento del modulo all’avvio del sistema, mediante /etc/modules
#echo "unicorn_usb_atm ActivationMode=4 DebugLevel=0" >> /etc/modules #DebugLevel=50 fa sì che la vostra partizione /var si riempia in fretta con tre files da 1.6 GB ciascuno... Usatelo solo per il debugging mentre per chi volesse caricare manualmente il driver: #modprobe unicorn_usb_atm ActivationMode=4 DebugLevel=0
L’opzione fornita al modulo in caricamento imposta il modem per l’inizializzazione in modalità g.dmt: tale modalità è quella adottata in Italia (per esempio, in Francia si usa se non sbaglio ActivationMode=3).
Se il modprobe del modulo vi restituisce un messaggio di errore riguardo a simboli non risolti (unresolved symbols), girate
unicorn_pci_atm: Unknown symbol set_cpus_allowed
Questo succede con i kernels SMP (kernels con il Symmetric Multi Processing abilitato): se avete una sola CPU, ricompilate il kernel disabilitando la opzione SMP, altrimenti editate il file unicorn_usbdrv.c nella directory unicorn_usb/ .
Cercate la stringa
Attendete una ventina di secondi che il modem si inizializzi e vada in showtime, cosa che potete verificare guardando la lucetta rossa accesa stabile (può variare a seconda del modem), o con il comando
#unicorn_status
Successivamente, potete eseguire infine l’agognato
#pppd call adsl
Questo comando attiva il demone pppd usando le opzioni che imposterete nel file /etc/ppp/peers/adsl, il quale deve contenere solo le seguenti righe:
user "username" lock ipparam ppp0 noipdefault noauth default-asyncmap defaultroute hide-password noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp lcp-echo-interval 20 lcp-echo-failure 3 sync persist logfile /var/log/pppd.log plugin /usr/lib/pppd/#.#.#/pppoatm.so 8.35 (ove #.#.# รจ la versione del vostro pppd (o pppoatm, non mi ricordo mai)
Gli unici comandi di questa lista che devono essere presenti sembrano essere user, plugin, noauth, persist, usepeerdns, defaultroute, mentre gli altri si possono omettere senza che cambi nulla.
mtu e mru sono già impostati di default a 1500, ma ho riscontrato che forzarli includendoli nel /etc/ppp/peers/adsl rende la connessione instabile. Si possono provare altri valori: un utile tool che testa i parametri del modem conferma che 1500 è il valore ottimale.
Bene, il modem funziona e si collega ad una ottima velocità.
Ricordatevi di aggiungere una riga contenente
username * password
ai vostri /etc/ppp/pap-secrets e /etc/ppp/chap-secrets
Rimangono solo due parametri che andrebbero settati meglio, per i quali ho aperto un apposito thread aperto a tutti nel forum di questo sito:
ATM IntInComplete ATM Operation Error Interrupt (ripetuto N volte con N circa 20) HandleAtmError: Reset ATM FIFO
Il modem dovrebbere risultare funzionante. Il mio funziona. Se così non fosse, non esitate a scrivere sul forum di supporto!