# SpeedTouch USB HOWTO
avec les drivers GPL de Benoît Papillault

Auteurs :
Sylvain Trias bozo@nobodix.org
Edouard Gomez ed.gomez@free.fr
Bernard Brandl brandl@tuxfamily.org
Benoît PAPILLAULT benoit.papillault@free.fr
Dernières modifications : 12 Mai 2004

## Sommaire

1. Introduction
2. Prérequis
   1. Installation/Configuration
   2. Le noyau
   3. Les drivers de Benoît
   4. pppd
3. Lancement de la connexion
4. Trouver de l'aide (supplémentaire)

## Introduction

Ce document va vous guider dans l'installation des drivers GPL de Benoît Papillault pour les modems SpeedTouch USB et SpeedTouch 330 fabriqués par Thomson (précédemment Alcatel) sur un système GNU/Linux.

### Prérequis:

- Les drivers de Benoît
- Le microcode du modem fourni par Thomson
- Un noyau assez recent (2.4.x de préférence mais les 2.2.x fonctionnent aussi)
- Une version de pppd récente (>= 2.3.11)

##### Télécharger les drivers GPL de Benoît

Récupérez la version la plus récente des drivers sur le site du projet »» SourceForge ««

##### Télécharger le microcode du modem SpeedTouch USB

Ce que vous voulez récupérer, c'est le microcode qui est fourni avec les drivers de Thomson. Vous avez deux possibilités :

Il se présente sous la forme :

- D'un fichier mgmt.o dans le package GNU/Linux
- D'un fichier alcaudsl.sys dans le package WindowsTM

(si votre modem marche sous windows, pas besoin d'aller chercher l'archive linux, prenez le dans c:\windows\system).

Attention:

Contentez vous de télécharger les drivers Thomson et de les décompresser. Ne suivez surtout pas la procédure d'installation de ces drivers. En effet ces drivers nous sont uniquement nécessaires pour récupérer le microcode du modem (cad un programme qui est chargé dans le modem lors de son initialisation, et qui est responsable de son fonctionnement)

##### Note sur les versions des noyaux

Les drivers de Benoît marchent avec la série 2.4.x du noyau linux, il est possible d'utiliser les drivers avec les 2.2.18 et supérieurs car le code USB provient de la serie 2.4.x.

Si vous n'êtes pas familier avec la compilation d'un noyau Linux, ne vous inquietez pas trop il est fort probable que votre distribution soit installé avec un kernel opérationnel (c'est le cas du noyau distribué avec la Linux Mandrake 8.x, RH 7.x, Debian Potato/Woody/Sid). Il est toutefois conseillé de compiler son propre noyau pour des raisons que je ne peux expliquer dans ce guide, donc dès que vous vous sentez suffisament à l'aise avec votre système GNU/Linux n'hésitez à compiler un noyau personalisé. De plus cette compilation permettra de réparer un bug dans un module du noyau Linux qui empêche une reconnection automatique en cas de coupure.

Pour Resumer :

> Si vous installez un nouveau noyau, prenez de préférence le plus récent. En effet, le support usb va en s'ameliorant.

NB : essayez d'éviter le noyau 2.4.5 qui a une fâcheuse tendance à swapper continuellement

##### Version de pppd

> Les drivers fonctionnent a partir de la version 2.3.11 de pppd (la version la plus vieille a notre disposition pour les tests)

NB : Si vous utilisez un noyau 2.4.x vous devez utiliser un pppd 2.4.x. Les noyaux 2.2.x quant à eux fonctionnent avec des pppd 2.3.x et pppd 2.4.x sans problemes connus.

## Installation/Configuration :

Vous procederez en 2 temps :

- Votre noyau
- pppd

### Configuration du noyau

Pour faire fonctionner les drivers , votre noyau doit avoir au moins un certain nombre de modules. Procédez donc à sa configuration en faisant attention de respecter ce qui est indiqué ci dessous en plus de vos propres besoins habituels.

#### Support de l'usb

Il faut que votre kernel supporte bien évidemment l'USB pour pouvoir profiter du modem SpeedTouch USB.

Selon votre controlleur USB, il faudra choisir entre 2 types de modules: UHCI ou OHCI.
Sans rentrer dans des détails techniques trop poussés, sachez qu'il s'agit de 2 normes USB incompatibles entre elles.
C'est pourquoi il est obligatoire de savoir quel type de bus USB vous utilisez.

Pour connaitre le chipset USB sur votre carte mère, tapez :

`# lspci -v | grep USB`

Vous obtiendrez une ligne du genre :

`usb-ohci : CMD technologies Inc|USB0670
usb-uhci : USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 01) (prog-if 00 [UHCI])`

Si votre controleur utilise le norme OHCI, Linux ne vous permettra d'utiliser votre matériel USB qu'à travers le module usb-ohci.
Par contre s'il utilise la norme UHCI, Linux vous propose 2 choix, à savoir : usb-uhci ou uhci. Si par un malheureux hasard votre controleur USB fonctionne mal avec l'un des modules UHCI, tentez d'utiliser le second ; on ne sait jamais !

##### Options a valider pour intégrer le support USB dans le noyau :

> `
> <M>/<*> Support for USB (CONFIG_USB)
> <*> Preliminary USB device filesystem (CONFIG_USB_DEVICEFS)
> <M> UHCI (Intel PIIX4, VIA, ...) support (CONFIG_USB_UHCI)
> <M> UHCI Alternate Driver (JE) support (CONFIG_USB_UHCI_ALT)
> <M> OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support (CONFIG_USB_OHCI)`

#### Support ppp

Vous avez besoin du support ppp au sein de votre kernel. Si besoin, compiler ces drivers:

> `
> <M> PPP (point-to-point protocol) support (CONFIG_PPP)
> <M> PPP support for sync tty ports (CONFIG_PPP_SYNC_TTY)`

#### Support HDLC

Cette partie est un peu plus délicate, en effet pour permettre la reconnection, il faut patcher ce module.
Pas d'inquiètude cependant. Au sein de l'archive des drivers, vous trouverez de quoi appliquer le patch, faites :

`# cd /usr/src/linux
# patch -p1 --dry-run < /repertoire des drivers/n_hdlc.c.diff ( il y a 2 tirets avant dry-run )`

Si aucun message d'erreur n'est renvoyé par le programme patch, tapez cette commande pour effectuer le patch du source :

`#patch -p1 < /repertoire des drivers/n_hdlc.c.diff`

NB : Ce patch a été intégré dans le noyau 2.4.18, il n'est donc pas nécessaire de patcher un noyau dont la version est supérieure (ou egale).

Voila, compilez ensuite ces modules pour votre kernel :

> `Character devices --->
> [*] Non-standard serial port support
> <M> HDLC line discipline support
> [*]Unix98 PTY support`

### Mise en place des drivers

La mise en place des drivers est très simple. Décompressez l'archive des drivers grâce à la commande :

`# tar xvzf speedtouch-xxx.tar.gz`

Placez vous dans le repertoire nouvellement crée et tapez les commandes suivantes :

`# ./configure && make`

Si tout s'est bien passé, logguez vous sous root et procédez a l'installation en tapant :

`# make install`

Félicitations les drivers doivent maintenant être installés sur votre systeme.

### Création des devices PPP

Placez vous dans le repertoire /dev :

`# cd /dev`

Vérifiez la présence des devices ppp :

`# ls *ppp*`

Si vous avez une liste de fichiers passez a la suite, sinon tapez cette commande :

`# ./MAKEDEV ppp`

### Configuration de pppd

Verifiez la version de pppd installé sur votre systeme en tapant :

`# pppd --version.`

Les drivers ont été testé avec pppd 2.4.0 et 2.4.1. Les drivers fonctionnent aussi avec des versions plus anciennes, par exemple la 2.3.11 fournie avec la Debian Potato GNU/Linux.

Pour configurer pppd, vous devez éditer 4 fichiers.

#### 1er fichier

Vous possédez normalement un fichier /etc/ppp/options, ouvrez le pour l'éditer et ne gardez que ces 4 lignes dans ce fichier (commentez avec un # les lignes superflues).

`-----------------Debut du fichier /etc/ppp/options-----------------
usepeerdns
noauth
lock
noipdefault
-----------------Fin du fichier /etc/ppp/options-------------------`

#### 2eme fichier :

Créez un fichier /etc/ppp/peers/adsl :

`# mkdir /etc/ppp/peers
# touch /etc/ppp/peers/adsl`

Copier/coller ce qui suit sans les marquages de début et de fin de fichier

`-------------------Debut du fichier /etc/ppp/peers/adsl--------------
#
#
# This file could be rename but its place is under /etc/ppp/peers
# To connect to Internet using this configuration file
# pppd call adsl updetach, where "adsl" stands for the name of this file
#
debug
kdebug 1
noipdefault
defaultroute
pty "/usr/local/sbin/pppoa3 -m 1 -c -vpi 8 -vci 35"
sync
user "votre_login_ici"
noauth
noaccomp
nopcomp
noccp
novj
holdoff 4
persist
maxfail 25
usepeerdns
------------------Fin du fichier /etc/ppp/peers/adsl------------------`

Si pour des raisons inconnues, pppoa3 echouait, vous pouvez toujours vous rabattre sur l'ancienne version du daemon pppoa2. Il suffit de changer la ligne pty "/usr/local/sbin/pppoa3 -m 1 -c -vpi 8 -vci 35" par pty "/usr/local/sbin/pppoa2 -vpi 8 -vci 35"
Pour plus d'informations sur pppoa3/2, tapez "man pppoa3/2".

En france, nous disposons du VCI 35 et duVPI 8 mais il se peut que vous deviez changer leur valeur, c'est dans ce fichier que vous devez le faire.
Pour cela, modifiez les parametres dans la ligne pty "/usr/local/sbin/pppoa3 -m 1 -c -vpi 8 -vci 35"

##### Notes sur le VCI/VPI [juste pour info, passez a la suite si vous etes presses ;^) ] :

Vu que la connexion passe par ATM, 2 parametres de connexions nouveaux apparaissent :

> - le VPI : Virtual Path ID
> - le VCI : Virtual Circuit ID

A quoi ca sert ?
Bonne question; ca sert a identifier votre connexion de chemin virtuel (VP)et votre connexion de circuit virtuel (VC). C'est pour la commutation des cellules que ces parametres servent a l'operateur.
Cela permet (entre autre) de simplifier la gestion du reseau, de minimiser les delais d'ouverture des connexions et les topologies.
En Gros, on peut voir ca comme cela:

    VC--------|----|-------------|----|--------
    VC--------| VP |             | VP |--------
    VC--------|----| Transmition |----|--------
                   |    Path     |
    VC--------|----|             |----|--------
    VC--------| VP |             | VP |--------
    VC--------|----|-------------|----|--------

#### 3eme fichier :

Sur internet 2 protocoles sont utilisés par les fournisseurs d'accès pour identifier ses utilisateurs : CHAP ou PAP.
Selon le protocole utilisé par votre fournisseur, éditez /etc/ppp/chap-secrets ou /etc/ppp/pap-secrets.

Le fichier se presente comme suit :

`-------------------Debut du fichier /etc/ppp/chap-secrets-----------------
# client server secret IP addresses
"votre_login_ici" "*" "votre_password_ici" "*"
-------------------Fin du fichier /etc/ppp/chap-secrets-------------------`

> Sachez que Wanadoo utilises le protocole CHAP.

#### 4eme fichier :

Ouvrez /etc/modules.conf (ou selon l'ancienneté de votre système /etc/conf.modules) et rajouter les lignes suivantes :

`alias char-major-108 ppp_generic
alias /dev/ppp ppp_generic
alias tty-ldisc-3 ppp_async
alias tty-ldisc-13 n_hdlc
alias tty-ldisc-14 ppp_synctty
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate`

Certaines de ces entrées sont inutiles mais mieux vaut les avoir au cas où ...

### Lancement de la connection

Pour lancer la connection, il faut:

- Charger le microcode du modem
- lancer pppd

`
Sachez que pour lancer la connection il faut être loggué sous le user "root", c'est obligatoire (enfin presque).`

#### Verifications

Assurez vous que tous les modules prenant en compte l'usb soient chargés (s'ils ne sont pas en dur dans le noyau) :

`
# modprobe ppp_generic
# modprobe ppp_synctty
# modprobe n_hdlc`

Ensuite, verifier que le usbdevfs soit monté :

`
# modprobe usbcore
# mount -t usbdevfs none /proc/bus/usb
# modprobe usb-uhci ou usb-ohci ou uhci`

##### Charger le microcode

Pour charger le microcode il suffit de taper :

`# modem_run -f /le_bon_chemin/vers/mgmt.o
ou
# modem_run -f /le_bon_chemin/vers/alcaudsl.sys`

##### Lancer pppd

Ccommande avant d'être connecté :

`# pppd call adsl updetach`

Attendez quelques secondes (~ 20 secondes maximum) et vérifions en tapant :

`# ifconfig ppp0`

Si ifconfig vous détaille la l'interface réseau ppp0, bravo vous venez de vous connecter pour la première fois au net grâce à ces drivers. Si vous n'êtes vraiment pas chanceux et que ifconfig vous donne un message d'erreur, consultez donc la section suivante pour trouver une aide suplementaire.

## Ou trouver de l'aide ?

### Les MAN pages

N'hesitez pas a vous servir des man pages, les developpeurs ne les ecrivent pas pour rien :-)
man pppoa2, man pppoa3, man modem_run peuvent vous apporter les informations qui vous manquent.

### Mailing-list

Si vous cherchez de l'aide de la part d'autres utilisateurs comme vous (l'auteur des drivers est aussi inscrit sur cette liste). Cette liste de difussion est pour vous, vous pouvez discuter de tous les sujets autour du modem SpeedTouch USB (hors sujet : Windows, partage de la connexion, configuration du DNS, ...). Les messages en Français et en Anglais sont acceptés, mais pas en HTML.

Tout d'abord, lisez l'archive de cette liste de diffusion avant de vous inscrire. Votre probléme a peut-être déjà une solution. Pour vous inscrire à la liste de diffusion, envoyez un message à speedtouch-request@ml.free.fr avec subscribe comme sujet.

### IRC

Si vous préférez une aide directe ou souhaitez discuter du design du driver, il y a un channel pour vous. Les discussions sont parfois trés actives ou parfois tout le monde dort. Attention, le français et l'anglais sont mélangés.

`Serveur : irc.freenode.net
Channel : #speedtouch
Les nicks connus:
benoit : Benoît PAPILLAULT
francois : François ROGLER
GomGom : Edouard GOMEZ`

La page de Benoît PAPILLAUT