SpeedTouch & Debian

Cet article est obsolète.

Cette page explique comment installer le modem ADSL Alcatel Speed Touch USB sous Linux avec une distribution Debian. En effet, ayant eu à réaliser cette installation, j’ai perdu quelques heures à essayer d’utiliser, par exemple, le package kernel-patch-2.4-speedtouch, ou encore à chercher quoi mettre dans mon /etc/network/interfaces.

Pas besoin ici de patcher le kernel : on va juste recompiler le noyau, installer un ou deux packages, récupérer un fichier et éditer quelques fichiers de configuration.

Les noyaux 2.6 à partir du 2.6.10 intègrent un mécanisme de chargement de firmware plus rapide et plus fiable que _modem_run_ : plus la peine d’installer le package speedtouch, il faut séparer le fichier mgmt.o en 2 (le chargeur et le firmware) grâce à l’utilitaire firmware-extractor (cf. Google), placer les fichiers sous /usr/local/lib/firmware/, et enfin comme on fait du pppoatm, créer un fichier /etc/modprobe.d/speedtouch contenant la ligne suivante :

install speedtch modprobe pppoatm; modprobe --ignore-install speedtch

Cela a pour effet de remplacer le chargement du module speedtouch par la ligne voulue (il faudra bien sûr avoir compilé le module Speedtouch avec le noyau).

La configuration de l’interface ppp0 devient alors simplement :

iface ppp0 inet ppp
    provider    adsl

Il faut également modifier le fichier peers/adsl pour supprimer la ligne pty ... et à la place rajouter à la fin du fichier :

plugin  pppoatm.so
8.35

Il semble que le seul moyen pour rouvrir la session PPP après la coupure qui a lieu toutes les 24h soit de mettre un pon adsl dans la crontab (j’ai essayé un pon sur le post-down de ppp0, ainsi que les paramètres holdoff et lcp- restart du fichier de peer, mais plouf).

Enfin le paramétrage en auto de l’interface pour la monter au démarrage ne fonctionne pas (il intervient sans doute trop tôt par rapport au chargement du firmware) ; à la place on peut modifier /etc/init.d/ppp (voici mon fichier).

Configuration du noyau

Il est possible que j’oublie ici quelques fonctions déjà activées chez moi et dont je n’ai donc pas ressenti le manque.

Dans le répertoire où l’on a décompressé les sources d’un noyau 2.4, faire un make xconfig et choisir les options suivantes.

Support USB

Autres fonctions à activer

Cela fait, compiler le noyau et les modules, et les installer (make dep clean bzImage, puis make modules et make modules_install).

Rajouter usb-uhci (ou usb-ohci si c’est celui-ci que vous avez choisi, voire les deux si vous ne savez pas) dans /etc/modules.

Pour achever l’installation du support USB, rajouter la ligne suivante dans /etc/fstab :

none            /proc/bus/usb   usbdevfs        default         0       0

Avec mon 2.4.19, le module n_hdlc n’était pas correctement installé : rajouter alias tty-ldisc-13 n_hdlc dans /etc/modutils/ppp puis faire update-modules pour proprement mettre à jour /etc/modules.conf.

Rebootez avec votre beau noyau tout neuf ; /proc/bus/usb doit contenir un fichier virtuel devices, sur lequel vous pouvez faire un cat. Si votre SpeedTouch est branché, il y a une ligne S: Product=Speed Touch USB.

Installation des pilotes du modem et du microcode

Là il faut d’une part les pilotes, d’autre part le microcode (firmware) du modem. J’imagine que le microcode sert d’interface entre le matériel et les pilotes. Pour ces derniers, il existe d’une part les pilotes propriétaires Alcatel (c’est à leur utilisation qu’est destiné le package kernel- patch-2.4-spedtouch), d’autre part les pilotes OpenSource (leur page est ici) initialement développés par Benoît Papillault, censément plus performants, plus stables, et forcément plus évolutifs.

Pilotes

Ce sont donc ces derniers que nous allons utiliser, d’autant qu’en attendant le package debian de la dernière version, celui de l’avant-dernière fonctionne sans problème : speedtouch_1.0-1.1rc2-1_i386.deb. Télécharger et installer ce package (dpkg --install speedtouch_1.0-1.1rc2-1_i386.deb).

Microcode

Si vous avez déjà installé le modem sous Windows, vous avez un fichier [Partition Windows]/windows/system/alcaudsl.sys. Copiez-le sous le nom mgmt.o dans le répertoire /usr/local/share/speedtouch/ que vous aurez créé (vous pouvez aussi le laisser en place, mais vous devrez adapter la suite de la configuration).

Si vous n’avez rien installé mais que vous avez les pilotes sous la main, vous devez pouvoir y trouver ce fichier, par exemple sur le CD du pack Wanadoo Extense : [CD]/Datas/drivers/SpeedTouch/Driver/alcaudsl.sys. Copiez-le comme au paragraphe précédent.

Sinon, allez sur le site d’Alcatel ici, choisissez Driver Upgrade for Linux, fournissez les infos demandées, puis Continue, téléchargez la Binary release (speedmgmt.tar.gz), décompressez le fichier, et copiez mgmt.o dans le répertoire /usr/local/share/speedtouch/ que vous aurez créé.

Configuration

PPP

Si ce n’est pas déjà fait installez le package ppp. Puis créez un fichier /etc/ppp/peers/adsl ainsi fait, où vous remplacerez xxxxxxx par votre identifiant de connexion et, si vous n’êtes pas chez Wanadoo (France Télécom Interactive = fti), fti/xxxxxxx@fti par xxxxxxx@clubadsl1 pour Club-Internet, xxxxxxx@nerim.fsa pour Nerim, etc. :

# See pppd(8) for details

debug
kdebug 1
noipdefault
defaultroute
pty "/usr/sbin/pppoa3 -m 1 -c -vpi 8 -vci 35"
sync
user "fti/xxxxxxx@fti"
noauth
noaccomp
nopcomp
noccp
novj
holdoff 4
persist
maxfail 25
usepeerdns

Ensuite, stockez votre mot de passe dans /etc/ppp/chap-secrets (CHAP est le protocole utilisé par Wanadoo ; si vous avez un autre FAI dont vous ignorez le protocole éditez de même /etc/ppp/pap-secrets, pour le protocole PAP utilisé par exemple par Club-Internet), qui doit ressembler à ceci (remplacez fti/xxxxxxx@fti par la même chose que ci-dessus et yyyyyyy par votre mot de passe de connexion) :

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
fti/xxxxxxx@fti *       yyyyyyy                 *

Réseau

Le usepeerdns de la config de ppp ci-dessus fait qu’à la connexion /etc/resolv.conf est renommé en /etc/resolv.conf.ppp.bak et remplacé par un fichier récupéré chez l’hébergeur, qui contient les IP des serveurs DNS.

En cas de problème de DNS (messages _Hôte inconnu à répétition), effacer le /etc/resolv.conf existant éventuellement, puis créer un lien vers le fichier /etc/ppp/resolv.conf :

ln -s /etc/ppp/resolv.conf /etc/resolv.conf

(ne pas oublier de donner les droits de passage –x à tous les utilisateurs sur /etc/ppp/)_

Autre fichier important, /etc/network/interfaces. Vous n’avez pas de carte réseau, donc pas d’interface eth0 (à la place vous avez ppp0, configuré ailleurs), mais il faut toujours une interface de loopback. Bref utilisez ce fichier :

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback

Connexion et automatisation

Voilà, tout est prêt. Commencez par télécharger le microcode sur le modem :

modem_run -f /usr/local/share/speedtouch/mgmt.o

La lampe de gauche est verte et fixe ; celle de droite est verte et clignote. Ne vous inquiétez pas si un message du genre usb_control/bulk_msg: timeout / usbdevfs: USBDEVFS_BULK failed etc. apparaît. Au bout d’une trentaine de secondes la lampe de droite doit  être verte et fixe également. Sinon vérifiez que votre ligne téléphonique fonctionne (en décrochant le téléphone) puis que votre ligne ADSL a bien été ouverte (en appelant FT).

Ensuite, connectez-vous :

pppd call adsl

Pour voir ce qui se passe, n’hésitez pas à surveiller votre syslog (tail -f /var/log/syslog) ; si vous recevez des paquets (ça doit prendre 2 secondes) c’est bon, vous pouvez surfer (ifconfig ppp0 vous fournit des infos sur la connexion). Sinon le syslog doit justement vous indiquer où est le problème.

Il reste simplement à automatiser le démarrage au boot en rajoutant dans /etc/network/interfaces (on peut ajuster le sleep 20, le tout étant qu’après un ifdown ppp0; ifup ppp0, la connexion soit encore établie) :

# Connexion ADSL
auto ppp0
iface ppp0 inet ppp
    provider    adsl
    pre-up      ps -e | grep -q modem_run || modem_run -i 3 -n 3 -f /usr/local/share/speedtouch/mgmt.o
    post-down   sleep 20; ifup ppp0 &
Cet article publié en août 2002 a été mis à jour.

En lire plus sur : linux