Alcatel SpeedTouch USB Free degroupe
Connexion à Free ADSL dégroupé avec un modem Alcatel Speedtouch USB
Introduction
Dans le cadre de son offre de connectivité ADSL en zone dégroupée, Free propose un modem Sagem autrefois Fast800, aujourd'hui Fast908 en prêt. Pour assurer cette offre, la société Freetélécom a intérêt à mon avis à livrer des modems d'un coût le plus faible possible puisque, sauf accord spécial, il semble qu'elle doive acheter ces modems avant de les rentabiliser grâce aux abonnements. Autrement dit, les Sagem en question sont des appareils d'entrée de gamme.
L'expérience montre effectivement que la solidité et la fiabilité n'est pas toujours au rendez-vous avec ce matériel.
Par ailleurs, nombreux sont les internautes ADSL de la première heure qui ont souscrit dans le temps un abonnement Wanadoo Xtense conditionné à l'achat d'un modem Alcatel Speedtouch USB en forme de raie manta verte.
Mis à part le coté affectif que peut présenter un appareil payé presque 1000 francs à l'époque et l'aspect sympathique de la petite bête, force est de constater que ce modem est de bonne qualité: solide et fiable. Il est conçu au départ pour faciliter des connexions ADSL en point à point par dessus ATM (PPPoA). Ceci ne pose pas de problème sous Linux: merci monsieur Papillault. Cependant nombreuses sont les personnes qui peuvent vouloir en profiter également dans le cadre d'un abonnement à l'offre Free ADSL dégroupé (guerre des prix et surenchère sur les débits obligent). Ceci est possible sous Linux (uniquement) grâce à l'astuce trouvée par Didier Caillaud et décrite à l'adresse http://mon.adsl.chez.free.fr/modemdegroupe/spedtoucheusb/config.html
Pré-requis
Support du modem et firmware
A l'exception du support PPP, tous ce qui est requis pour un fonctionnement normal en PPPoA tel que décrit [../hardware/pack-xtense.php3 ici] est également requis dans notre cas, à savoir:
- La reconnaissance du modem par le port USB
- Le firmware Alcatel téléchargeable ici
- Le programme de chargement
modem_run
développé par Benoît Papillault (Papillault président!) qui se trouve ici.
ATM pour Linux
A tout ceci il faudra a jouter l'installation des utilitaires ATM pour Linux à l'adresse http://linux-atm.sourceforge.net afin de disposer:
- du démon
atmarpd
de gestion du protocole ATM en accord avec le noyau Linux. - de la commande
atmarp
permettant de discuter avec le démon pour le paramétrage des interfaces ATM
Coté noyau pour ceux qui le compilent maison, le support ATM Asynchronous Transfer Mode
(expérimental) doit être activé. De plus, un "HOWTO" pour l'ATM sous Linux existe à l'adresse http://www.tldp.org/HOWTO/ATM-Linux-HOWTO.
La distribution Mandrake 9.2 de manière certaine et probablement le plupart des autres distributions sont livrées avec un noyau Linux 2.4 incluant le support ATM. Dans le cas de la Mandrake, il est fourni sous forme de module et les utilitaires sont installés par les paquets liblinux-atm1
et linux-atm
.
Pilote du noyau
Pour ceux dont la version du noyau est inférieure à 2.4.22 ou dont le noyau n'inclue pas le support Speedtouch (la Mandrake par exemple), il sera nécessaire de compiler ce support sous forme de module en téléchargeant les sources sur http://www.linux-usb.org/SpeedTouch/download/index.html. L'archive doit se nommer speedtouch-<version>.tar.gz
. Pour installer le module, s'identifier root, vérifier la présence des sources du noyau concerné et:
tar xvzf <répertoire de téléchargement>/speedtouch-<version>.tar.gz
cd speedtouch-<version>
./configure
make
install -c speedtch.o /lib/modules/`uname -r`/kernel/drivers/usb
depmod -a
Etablissement de la connexion
Dans le cadre d'une connexion par le FAI Freetélécom, l'adresse IP sur l'interface correspondant au modem est affecté par un serveur DHCP. Il semble que la découverte des serveurs DHCP par le Speedtouch USB pose un problème mais dans le cas qui nous occupe, à savoir en mode dégroupé, nous avons la chance de disposer chez Free d'une adresse IP fixe et disponible lorsqu'on consulte son compte http://adsl.free.fr/suivi/suivi_tech.html.
Une fois cette adresse relevée, elle devra être reportée dans le script suivant comme valeur de la variable adresse
:
adresse=<adresse IP Free fixe genre 82.224.xxx.xx>
passerelle=`echo $adresse | /bin/sed -e "s/[0-9]*$/254/g"`
case "$1" in
start)
  /sbin/modprobe usb-uhci 2>/dev/null
  if test "`/sbin/lsmod | /bin/grep atm`" = ""
  then
    /sbin/modprobe atm 2>/dev/null
    nouveau=1
  else
    nouveau=0
  fi
  /sbin/insmod speedtch 2>/dev/null
  sleep 10
  /usr/sbin/modem_run -k -v 1 -m -f /usr/share/speedtouch/mgmt.o
  /usr/sbin/atmarpd -b -l syslog
  if test $nouveau -eq 1
  then
    /usr/sbin/atmarp -c atm0
  fi
  /sbin/ifconfig atm0 ${adresse} netmask 255.255.255.0 mtu 1500 up
  /usr/sbin/atmarp -s ${passerelle} 8.36 null
  /sbin/route add default gw ${passerelle}
  ;;
stop)
  /sbin/route del default 2>/dev/null
  /sbin/ifconfig atm0 down 2>/dev/null
  /usr/sbin/atmarp -d ${passerelle}
  /usr/bin/killall atmarpd modem_run 2>/dev/null
  /sbin/rmmod speedtch 2>/dev/null
  /sbin/rmmod usb-uhci 2>/dev/null
  ;;
esac
Ce script se comporte comme un shell d'initialisation et peut être lancé au démarrage, par exemple de la façon suivante pour une Mandrake ou une Redhat:
Ici, la connexion s'établira juste après que l'interface graphique fût lancée par S30dm
.
Il est possible de vérifier que la connexion est active en "pinguant" la passerelle. Cette dernière à pour adresse celle de l'interface avec le dernier octet substitué par 254: pour un compte Free d'adresse IP 82.224.xxx.xx, la passerelle vers internet aura pour adresse 82.224.xxx.254:
PING <adresse de la passerelle> (<adresse de la passerelle>) 56(84) bytes of data.
64 bytes from <adresse de la passerelle>: icmp_seq=1 ttl=64 time=79.2 ms
--- <adresse de la passerelle> ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 79.216/79.216/79.216/0.000 ms
Reprise en cas de coupure
L'expérience montre que la communication se coupe parfois sans que le modem le détecte. La méthode employée pour tester la réussite de la connexion nous servira également à vérifier qu'elle est toujours établie à intervalles réguliers (par l'intermédiaire de la cron par exemple).
Voici le script à exécuter régulièrement:
DEV=atm0
CNX="/usr/local/bin/speedtouchFree start"
DCNX="/usr/local/bin/speedtouchFree stop"
adresse=`/sbin/ifconfig $DEV | grep "inet ad" | cut -d':' -f2 | cut -d' ' -f1`
if test "`/bin/netstat -rn | grep $DEV`" = "" -o `tail -50 /var/log/messages | grep "usb_control/bulk_msg: timeout" | wc -l` -gt 10 -o "$adresse" = ""
then
  echo "`/bin/date` Hoho! Pas de connexion adéèsselle. Reconnexion"
  $DCNX
  $CNX
else
  passerelle=`echo $adresse | sed -e "s/[0-9]*$/254/g"`
  /bin/ping -c 1 -w 10 ${passerelle}
  if test $? -ne 0
  then
    echo "`/bin/date` Hoho! La connexion est tombée. Reconnexion"
    $DCNX
    $CNX
  fi
fi
Dans cet exemple, le script de connexion s'appelle /usr/local/bin/speedtouchFree
. Chez moi ce script est exécuté toutes les minutes par la cron.
Copyright
Copyright © 28/02/2004, Jérôme Trullen
![]() ![]() ![]() ![]() |
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique, Contexte non commercial 2.0 : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ |