03/08/2008 – Aggiornamento importante:

Testato un nuovo approccio, nato dalla comunità di Ubuntu (ma guarda un po’) che in alcuni casi pare funzionare meglio del vecchio sistema: trattasi di “usb-adsl-modem-manager“, che a giudicare dal nome dovrebbe funzionare anche su altri modem.
L’installazione è veloce, basta scaricarsi prima a mano i pacchetti e le dipendenze, che per un sistema Ubuntu 8.04 a 32bit sono queste:

Installare tutto nell’ordine, lanciare il manager dal menu “internet” (anche se non dovrebbe stare lì…) e seguire le semplici istruzioni. L’unico test che ho fatto finora ha funzionato alla grande.
Fine dell’aggiornamento.


Questa pagina è la traduzione dall’originale in inglese, nello stesso sito si trovano indicazioni anche per altre distribuzioni come Fedora, Mandriva o SuSE.

Quale Firmware?

Diferenti versioni del modem utilizzano differenti firmware. Se non si è sicuri della versione del proprio modem, la si può ottenere con questo comando:

  awk '/4061/ { print $5 }' /proc/bus/usb/devices

che dovrebbe restituire il numero di revisione del modem.

Se si ha già un firmware funzionante per il modem, allora è meglio usare quello. Per una vecchia versione 0 del modem (verde) o una versione 2 (viola), il firmware giusto è il KQD6_3.012 che si trova in questo file zip.
Nello zip c’è anche il firmware ZZZL_3.012 per la revisione 4 del modem (normalmente color argento), quindi la maggior parte degli utenti userà un file da questo zip.
La vecchia versione verde “0” può essere capricciosa; se non dovesse gradire il firmware KQD6_3.012, provare con il mgmt.o da questa tarball.

Altra roba

Il firmware va preparato con una copia del “firmware extractor”.
Se ne può ottenere un binario precompilato oppure scaricarne il sorgente e compilarlo da soli (sarà necessario installare gcc per questo).
E’ utile salvare anche una copia di questa pagina, in modo da poterla consultare anche off-line durante il processo di installazione.Prima di andare off-line è bene informarsi sul tipo di connessione che usa il nostro ISP, se PPPoATM o PPPoE, consultando questa tabella, e sui numeri VPI/VCI che in Italia sono generalmente 8/35.

Se l’ISP utilizza PPPoE sarà necessaria anche una copia dell’utility di bridging br2684ctl.

Salvare tutto in un floppy, una chiavetta USB, un CD o simili e dopo aver riavviato in Ubuntu copiare tutto nella cartella home.

Riavviare su Ubuntu

Installare il firmware

il primo passo è estrarre il firmware dall’archivio e sezionarlo in due parti, speedtch-1.bin e speedtch-2.bin, tramite l’applicazione “firmware extractor”
Nel caso di un modem versione 4, i comandi sono questi:

unzip SpeedTouch330_firmware_3012.zip &&
chmod +x firmware-extractor &&
./firmware-extractor ZZZL_3.012

Per le altre versioni, cambia solo il nome del file del firmware.
Se tutto è andato bene, adesso dovrebbero esserci nella home i due file speedtch-1.bin e speedtch-2.bin, che vanno spostati nel posto giusto per farli utilizzare dal kernel.
Nelle vecchie release questo posto era /lib/hotplug/firmware, ma con la Dapper Drake, Ubuntu si è messa in linea con tutte le altre e adesso tiene i firmware in /lib/firmware.
Quindi, se si usa una versione precedente a Dapper, il comando è:

sudo cp speedtch* /lib/hotplug/firmware

Mentre con Dapper:

sudo cp speedtch* /lib/firmware

Secrets

Adesso bisogna creare un file chiamato chap-secrets o pap-secrets, secondo il tipo di autenticazione utilizzato dall’ISP.
Se non si sa quale sia il tipo, si possono creare entrambi i file, non è dannoso.
In un editor di testo scrivere una sola riga simile a questa:

"username@isp" "*" "password"

cambiando username@isp con il nome utente assegnato dal provider, e password con la password dell’account.
Non mancate gli spazi tra ” “*” ” .
Per Alice, per esempio, molto probabilmente la riga sarà questa:

"aliceadsl" "*" "aliceadsl"

Salvare il file nella home con il nome “secrets” e poi copiarlo in /etc/ppp:

sudo install -m 600 secrets /etc/ppp/chap-secrets
sudo install -m 600 secrets /etc/ppp/pap-secrets

Se l’ISP utilizza PPPoE si può saltare direttamente alla sezione PPPoE.

PPP over ATM

se l’ISP utilizza PPPoA, si può utilizzare l’esempio sottostante per creare il proprio file di configurazione per il demone pppd.
Copiare e incollare l’esempio in un editor di testo, modificando username@isp e sostituendo 0.00 con i numeri VPN/VCN (8.35 per l’Italia) come nel passo precedente. (spesso l’username ha una parte @isp, ma non sempre).
Salvare poi il file come speedtch.

noipdefault
defaultroute
user 'username@isp'
noauth
updetach
usepeerdns
plugin pppoatm.so
0.00

### se il firmware viene caricato ma pppd non
### si connette, decommenta questa opzione
### per rendere pppd più prolisso

# debug

copiare poi il file in /etc/ppp/peers con il comando:

sudo install -m 600 speedtch /etc/ppp/peers

Creare uno script d’avvio

copiare quanto segue in un editor di testo e salvare come dial:

#!/bin/bash
modprobe ppp_generic
modprobe pppoatm
count=0
while [[ $((count++)) -lt 40 ]]
do
sync=$(dmesg | grep 'ADSL line is up')
if [ ! -z "$sync" ]
then
pppd call speedtch
exit 0
fi
sleep 1
done
echo "Il firmware di SpeedTouch non è stato caricato"

-Update: Giovanna nei commenti riporta che per far funzionare lo script ha dovuto aggiungere la riga:

 count=$((1+$count))

tra “sleep 1” e “done”.
una volta salvato il file nella home si procede a:

  • installarlo in /etc/init.d
  • creare un link simbolico in /etc/rc2.d in modo che venga lanciato all’avvio
  • aggiustare /etc/resolv.conf in modo che risolva i server DNS
sudo install -m 744 dial /etc/init.d &&
sudo ln -s ../init.d/dial /etc/rc2.d/S95dial &&
sudo ln -sf ppp/resolv.conf /etc/resolv.conf

Questo è tutto, riavviando si dovrebbe essere on-line.

In caso contrario, il firmware viene caricato? Una volta che il kernel ha caricato il modulo speedtouch, il led di sinistra del modem dovrebbe essere acceso fisso, mantre quello di sinistra dovrebbe lampeggiare per una decina di volte e poi rimanere verde fisso anch’esso.

Una volta che tutto funziona, i vari file creati nella cartella home possono (anzi, devono!) essere cancellati.

PPP over Ethernet

Se il provider usa PPPoE le cose sono leggermente più complicate, perchè è necessario creare un bridging con br2684ctl per eseguire PPPoE sopra ATM.
Si installa il tool br2684ctl:

sudo install -m 755 br2684ctl /usr/sbin

Copiare e incollare l’esempio in un editor di testo, modificando username@isp come nel passo precedente. (spesso l’username ha una parte @isp, ma non sempre).
Salvare poi il file come speedtch.

noipdefault
defaultroute
user 'username@isp'
noauth
updetach
usepeerdns
plugin rp-pppoe.so
nas0
### se il firmware viene caricato ma pppd non
### si connette, decommenta questa opzione
### per rendere pppd più prolisso

# debug

Installare il file in /etc/ppp/peers con il comando:

sudo install -m 600 speedtch /etc/ppp/peers

Creare uno script di avvio

Copiare ed incollare quanto segue in un editor di testo, cambiando 00.0 con i valori VPI/VCI adatti all’ISP; in Italia in genere sono 8.35
Salvare il file con il nome dial

#!/bin/bash
modprobe ppp_generic
modprobe pppoatm
modprobe br2684
count=0
while [[ $((count++)) -lt 40 ]]
do
sync=$(dmesg | grep 'ADSL line is up')
if [ ! -z "$sync" ]
then
br2684ctl -b -c 0 -a 00.0
sleep 3
ifconfig nas0 192.168.0.1 netmask 255.255.255.0 up
sleep 10
pppd call speedtch
exit 0
fi
sleep 1
done
echo "The SpeedTouch firmware did not load"

Poi, con questi comandi si eseguono le seguenti operazioni:

  • installarlo in /etc/init.d
  • creare un link simbolico in /etc/rc2.d in modo che venga lanciato all’avvio
  • aggiustare /etc/resolv.conf in modo che risolva i server DNS
sudo install -m 744 dial /etc/init.d &&
sudo ln -s ../init.d/dial /etc/rc2.d/S95dial &&
sudo ln -sf ppp/resolv.conf /etc/resolv.conf

Riavviando si dovrebbe essere on line.

In caso contrario, il firmware viene caricato? Una volta che il kernel ha caricato il modulo speedtouch, il led di sinistra del modem dovrebbe essere acceso fisso, mantre quello di sinistra dovrebbe lampeggiare per una decina di volte e poi rimanere verde fisso anch’esso.

Una volta che tutto funziona, i vari file creati nella cartella home possono (anzi, devono!) essere cancellati.

Nota

nel caso il contratto con il provider preveda un costo orario anzichè una tariffa flat, è forse opportuno saltare la parte dell’installazione dello script dial in modo che venga lanciato all’avvio, copiandolo invece nella cartella /usr/local/bin per poi lanciarlo a mano solo quando serve.
Il comando per installarlo è il seguente:

sudo install -m 744 dial /usr/local/bin

Per avviare la connessione si utilizzerà il comando:

sudo dial

mentre per arrestarla:

sudo killall pppd

Per qualsiasi chiarimento o suggerimento rivolgersi direttamente al sito di origine.