Chez Éric Sibert
+ Accueil > Informatique > SME Server

Sagem Fast 800 USB sous SME 6.0

Comment installer le modem Sagem Fast 800 USB sous SME 6.0

Mis en ligne le 5/02/2005

Comment installer le Modem SAGEM Fast 800 sous SME 6.0 et surtout comment avoir une connexion qui marche !
Solution : Suivre la démarche ci dessous !
Remarque : le recours à un modem usb est une source de problème sur un serveur. Fondamentalement, c’est à éviter. Mais pour une utilisation non-critique ...

Auteur : Eric Sibert
Contributeurs : Principalement Le corguillé Jean Michel et son fameux Howto : http://www.chars.dyndns.org/fasthowto.html dont je me suis totalement inspiré : Y-a-il une différence de principe entre le Sagem sur SME 6.0 et 5.6 ? (Certains diront même que j’ai aspiré son How-to les modifs étant très mineures mais quand même vitales dans mon cas.)
Versions supportées : SME 6.0 et peut-être les suivantes. S’applique sans doute partiellement à SME 5.6.

A priori, ne fonctionne pas avec Free dégroupé, qui utilise le protocole DHCP au lieu de pppoa/pppoe. Regarder sur les forums Ixus. Ou en essayant d’adapter en utilisant l’article sur le dégroupage avec la Mandrake.

License : LGPL
Dernière mise à jour : 17/03/2006

Problème

Comment installer le Modem SAGEM Fast 800 sous SME 6.0 et surtout comment avoir une connexion qui marche !
Solution : Suivre la démarche ci dessous !
Remarque : le recours à un modem usb est une source de problème sur un serveur. Fondamentalement, c’est à éviter. Mais pour une utilisation non-critique ...

STEP 0 : Prérequis

SME 6.0 doit être configuré en mode « server and Gateway »
A l’installation, choisir une connexion RTC (ligne commutée) et mettre n’importe quoi comme numéro de téléphone, mais votre login et mot de passe de Free.
Il vous faudra une connexion internet qui fonctionne pour récupérer les fichiers nécessaires et un peu de patience pour ne pas vous arracher les cheveux sur les erreurs que j’aurais pues oublier !

Vous avez intérêt à graver les fichiers des STEP 1 & 2 ainsi que les templates du STEP 5 et les scripts des STEP 7 & 8 sur un CD avant de passer aux choses sérieuses.

Se connecter sous la console n°2 (Alt+F2) en tant que root pour toutes les manipulations.

L’ensemble a été testé sur une SME 6.0 fraîchement installée sur une carte mère Asus P2L97 + Celeron 333. Drivers eagle-usb 1.0.4 et kernel 2.4.20-24.7.

Depuis, j’ai fait la mise à jour vers le driver 1.9.9.1 (normalement identique au 2.0 sorti par la suite). J’indiquerai les modifications entre parenthèses mais ça n’a pas été testé sur une installation fraîche. Si la version 1.0.4 fonctionne, je vous déconseille de faire la mise à jour.

J’ai aussi fait des essais partiels avec les nouvelles versions. Le driver 2.3.2 ne s’installe pas. Le driver 2.1.1 s’installe mais je n’ai pas testé la connexion avec.

STEP 1 : Récupérer les RPMs de développement

On trouve tous les paquets nécessaires pour sme 6.01 à l’adresse : http://contribs.org/contribs/hpe/devtools-6.01/dev-rpms/ Et normalement, ce sont les même que pour sme 6.0.

Récupérez les RPMS suivants et transférez les dans votre répertoire /root/dev sur SME :

autoconf-2.13-17.noarch.rpm
automake-1.4p5-4.noarch.rpm
cpp-2.96-113.i386.rpm
gcc-2.96-113.i386.rpm
gcc-c++-2.96-113.i386.rpm
glibc-devel-2.2.5-44.i386.rpm
glibc-kernheaders-2.4-7.16.i386.rpm
kernel-source-2.4.20-18.7.i386.rpm
libstdc++-devel-2.96-113.i386.rpm
m4-1.4.1-7.i386.rpm
ncurses-devel-5.2-26.i386.rpm
zlib-devel-1.1.4-8.7x.i386.rpm
Les scripts
Les scripts utilisés dans ce howto

J’ai fais un script pour automatiser l’étape précédente.

STEP 2 : Récupérer les sources du Driver/Firmware

Récupérer les sources du driver : eagle-1.0.4.tar.gz sur http://www.eagle-usb.org/ et le placer dans le répertoire /root/fast. (Ou la version 1.9.9.1 : eagle-usb-1.9.9.1.tar.bz2)

STEP 3 : Installer ces RPMS et compiler le noyau

Aller on y va :

On se met dans /root/dev et on installe :

shell> cd /root/dev
shell> [root@sme-test dev]# rpm -Uvh *

On va dans le répertoire /usr/src

shell> cd /usr/src

On vérifie l’existence d’un lien linux, sinon on le crée

shell> ln -s /usr/src/linux-2.4 linux

Normalement, il y déjà un lien de linux-2.4 vers la version courante (linux-2.4.20-18.7)

On va dans le répertoire linux

shell> cd linux

On édite le Makefile pour remplacer custom en fast à la fin du nom du noyau à construire

shell> vi Makefile

On se déplace avec les flèches jusqu’à la ligne :

EXTRAVERSION = -18.7custom

i (appuyer sur la touche i pour passer en insertion)
On modifie la ligne pour avoir :

EXTRAVERSION = -18.7fast

Echap (appuyer sur la touche Echappement pour sortir du mode insertion)
:wq (sauvegarde, quitter)

et on prépare le noyau :

shell> make mrproper
shell> cp configs/kernel-2.4.20-i686.config ./.config

(i586 pour les Pentium, Pentium MMX et les K6
i686 pour Pentum Pro, Pentium II, Pentium III, Pentium 4 et Celeron
athlon pour Athlon et suivant, i386 dans le doute)

shell> make menuconfig

Veillez à inclure les options suivantes :

dans "General setup",
    "Support for hot-pluggable devices" ;

dans "Network device support",
   "PPP(point-to-point protocol) support"
   "PPP support for async serial ports"
   (vous pouvez également inclure "PPP filtering", "PPP support for sync tty ports", "PPP over Ethernet" et "PPP over ATM" si vous voulez jouer avec respectivement les filtres PPP, les connexions synchrones, et la gestion de PPPoE et PPPoA dans le noyau) ;

dans "Character devices"
   "Unix98 PTY support"
   (si vous avez sélectionné "PPP support for sync tty ports" ci-dessus, vous devez également sélectionner "HDLC line discipline support" ici) ;

dans "USB support"
   "Support for USB"
   "Preliminary USB device filesystem"
   un des contrôleurs USB ("UHCI Alternate Driver (JE) support" ou "OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support",
           moi, j'ai pris "UHCI (Intel PIIX4, VIA, ...) support" vu ma carte mère mais le UHCI de base fonctionne aussi )
   -- notez que l'option "USB Modem (CDC ACM) support" n'est pas nécessaire.

La compilation elle-même :

shell> make dep (5 minutes sur Celeron 333)
shell> make clean
shell> make bzImage (30 minutes)
shell> make modules (3h30)
shell> make modules_install
shell> cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.20-18.7fast
shell> mkinitrd /boot/initrd-2.4.20-18.7fast.img 2.4.20-18.7fast
shell> vi /etc/lilo.conf

pour ajouter :

image=/boot/vmlinuz-2.4.20-18.7fast
initrd=/boot/initrd-2.4.20-18.7fast.img
label=Mitel-SME-fast
read-only
root=/dev/hda3 (recopier la même chose que dans les images précédentes du fichier)

shell> /sbin/lilo
shell> reboot

Démarrer sur le nouveau noyau (Mitel-SME-fast). Si tout se passe bien, ça devient le noyau par défaut dans lilo.conf sans rien faire. Reconnectez vous en tant que root (sous Alt+F2).

On peut rencontrer à ce niveau quelques problèmes. A savoir, une disparition de la carte réseau. On le vérifie avec :

shell> ifconfig

Si vous n’avez plus rien en ethX, c’est que vous êtes tombé sur le problème. Dans ce cas, reconnectez vous dans la console admin (Alt+F1) et refaite l’ensemble de la configuration du serveur, simplement en validant l’ensemble des paramètres sans les modifier. Et à la fin, rebootez quand le serveur vous le propose. Puis vérifiez que la carte réseau est de retour.

STEP 4 : Compiler le Driver et l’installer

Driver 1.0.4 :

shell> cd /root/fast
shell> tar xvfz eagle-1.0.4.tar.gz
shell> cd eagle-1.0.4
shell> make clean
shell> make
shell> make install

en répondant non a la connexion au démarrage.

Driver 1.9.9.1 :

shell> cd /root/fast
shell> tar jxvf eagle-usb-1.9.9.1.tar.bz2
shell> cd eagle-usb-1.9.9.1
shell> ./configure
shell> make uninstall
shell> make clean
shell> make
shell> make install
shell> eagleconfig

en répondant non a la connexion au démarrage

STEP 5 : Créer les templates kivonbien pour la connexion

shell> mkdir -p /etc/e-smith/templates-custom/etc/ppp/options (On crée le dossier)
shell> cd /etc/e-smith/templates-custom/etc/ppp/options
shell> vi lcp-echo-options
Les scripts
Les scripts utilisés dans ce howto

et on copie-colle le texte suivant :

#---------Début-----------------
noauth
lock
noipdefault
#---------Fin--------------------

puis :wq pour sauver et quitter

shell> mkdir -p /etc/e-smith/templates-custom/etc/ppp/peers/adsl
shell> cp /etc/ppp/options.adsl /etc/e-smith/templates-custom/etc/ppp/peers/adsl/50adsl (on récupère le fichier d'option généré par le make install du driver Eagle).
shell> cd /etc/e-smith/templates-custom/etc/ppp/peers/adsl
shell> vi 50adsl

Il n’y a qu’à rajouter les quatre premières lignes, les autres doivent déjà être là, peut-être dans le désordre.
persist indique à la liaison qu’elle doit se reconnecter en cas de coupure (en particulier lors de la coupure des 24h)
maxfail 0 indique qu’il faut essayer de se connecter un nombre infini de fois.
holdoff 60 est le temps (en secondes) entre deux tentatives de connexion.

#---------Début-----------------
pty "/usr/sbin/pppoa -I eth1"
persist
maxfail 0
holdoff 60
user "VOTRE_LOGIN@freeadsl" (pour ceux qui sont chez free. Ca sera du style 123456@fti pour Wanadoo)
mru 1492
mtu 1492
noipdefault
defaultroute
usepeerdns
noauth
nobsdcomp
nodeflate
nopcomp
novj
novjccomp
noaccomp -am
#---------Fin--------------------

puis :wq pour sauver et quitter

On prend en compte toutes ces modifs !

shell> /sbin/e-smith/expand-template /etc/ppp/peers/adsl
shell> /sbin/e-smith/expand-template /etc/ppp/options

STEP 6 : Première connexion

On branche la prise usb du modem sur l’ordinateur (deux leds allumées)

shell> mount -t usbdevfs usbdevfs /proc/bus/usb (led pwr allumée)
shell>modprobe adiusbadsl (les deux leds s'éteignent, pwr se rallume puis adsl clignotte avant de s'allumer complètement)
(shell>modprobe eagle-usb pour 1.9.9.1)
shell>showstat
(shell>eaglestat pour 1.9.9.1)
répéter jusqu'à avoir "modem is operational" (durée variable, de quelques secondes à 40 s)
(si à ce niveau, le modem ne devient pas opérationnel, il faut charger manuellement le firmware
shell>adictrl -d
(shell>eaglectrl -d pour 1.9.9.1)
puis repasser par l'étape showstat
ce cas se produit si le modem était déjà branché à l'allumage du PC)
shell>adictrl -i : création d'une interface eth1
(shell>eaglectrl -i : pour 1.9.9.1)
shell>ifconfig eth1 10.0.0.15 up : on monte l'interface.
L'adresse n'a pas d'importance, mais ne doit pas être utilisée par une autre machine du réseau
shell>pppd call adsl : on lance la connexion
shell>route del default
shell>route add default ppp0

Un petit retour sur la console serveur peut permettre de vérifier la connexion :
Alt+F1
3. Testez l’accès à Internet
(N’existe plus avec avec SME 6.0.1, faire un ping sur les DNS de votre FAI)
Normalement, en quelques secondes, vous devez avoir un résultat positif. Sinon, inutile d’aller plus loin. Il faut trouver d’où vient le problème dans les étapes précédentes.
Ctrl+Alt+F2 pour reprendre.

STEP 7 : Automatiser le lancement de la connexion

On intègre le mount usb dans fstab

shell>vi /etc/fstab

On rajoute à la fin la ligne

usbdevfs        /proc/bus/usb        usbdevfs    defaults        0 0

Puis un bout de script (merci à Vincent Bazimon et Timothée Gros) :

Shell> cd /etc/rc.d/init.d/
Shell> vi pppoa
Les scripts
Les scripts utilisés dans ce howto

et on copie-colle le texte suivant :

#!/bin/sh

# description: Starts, stops and restrats an ADSL connection (PPPoA)
# /etc/rc.d/init.d/pppoa
# chkconfig: - 58 02

LOG=/var/log/adsl

. /etc/rc.d/init.d/functions

case "$1" in
start)
echo "Starting pppoa & FAST800USB : "
echo $(date)" : Loading USB modules ..." >> $LOG
modprobe adiusbadsl
# modprobe eagle-usb
echo $(date)" : Loading microcode ..." >> $LOG
adictrl -d
# /usr/local/sbin/eaglectrl -d
sleep 60
echo $(date)" : Microcode loaded" >> $LOG
adictrl -i
# /usr/local/sbin/eaglectrl -i
sleep 5
ifconfig eth1 10.0.0.15 up
echo $(date)" : Running pppd ..." >> $LOG
pppd call adsl
echo $(date)" : ADSL started" >> $LOG
sleep 20
route del default
route add default ppp0
ifconfig sl0 down
;;
stop)
# warning : it kills all running pppd
echo "Shutting down pppoa & FAST800USB : "
echo $(date)" : Killing pppd ..." >> $LOG
killproc pppd
echo $(date)" : ADSL stopped" >> $LOG
;;
restart)
echo "Restarting pppoa & FAST800USB : "
echo $(date)" : Restarting adsl connection ..." >> $LOG
echo $(date)" : Killing pppd" >> $LOG
killproc pppd
echo $(date)" : pppd killed" >> $LOG
sleep 2
echo $(date)" : Starting pppd" >> $LOG
pppd call adsl
echo $(date)" : pppd started" >> $LOG
;;
*) echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
#---------Fin--------------------

puis :wq pour sauver et quitter

shell>chmod 777 pppoa
shell> ln -s /etc/rc.d/init.d/pppoa /etc/rc.d/rc7.d/S58pppoa
shell> ln -s /etc/rc.d/init.d/pppoa /etc/rc.d/rc6.d/K02pppoa

Avec les liens symboliques réalisés pour les différents runlevels, votre connexion se lancera à chaque démarrage. D’ailleurs, à ce stade, vous pouvez rebooter un coup pour vérifier que ça marche.

STEP 8 : Ça marche !

Vous arrivez à vous connecter et ça roule.

Un petit détail, si vous allez jeter un coup d’oeil dans /var/log/messages, vous allez trouver toutes les 6 h un message similaire à :

Jan 17 13:36:09 serveur diald[18751]: Calling site 0.0.0.0
Jan 17 13:36:10 serveur chat[12181]: abort on (BUSY)
Jan 17 13:36:10 serveur chat[12181]: abort on (ERROR)
Jan 17 13:36:10 serveur chat[12181]: abort on (NO CARRIER)
Jan 17 13:36:10 serveur chat[12181]: abort on (NO DIALTONE)
Jan 17 13:36:10 serveur chat[12181]: abort on (Invalid Login)
Jan 17 13:36:10 serveur chat[12181]: abort on (Login incorrect)
Jan 17 13:36:10 serveur chat[12181]: report (CONNECT)
Jan 17 13:36:10 serveur chat[12181]: send (ATZ^M)
Jan 17 13:36:10 serveur chat[12181]: expect (OK)
Jan 17 13:36:55 serveur chat[12181]: alarm
Jan 17 13:36:55 serveur chat[12181]: Failed
Jan 17 13:36:55 serveur diald[18751]: Connect script failed.
Jan 17 13:36:56 serveur diald[18751]: Delaying 21600 seconds before clear to dial.

Il faut arrêter le service du dialer vu que vous assurez vous même la connexion à Internet :

shell > chkconfig --del diald
shell>rm /etc/rc.d/rc.7/*diald*

et comme ça n’arrêtait pas celui en cours

shell>kill diald

Question de sécurité, il est préférable de désinstaller les RPMs téléchargés au step 1 et installés au step 3.

shell>rpm -e autoconf
shell>rpm -e automake
shell>rpm -e gcc-c++
shell>rpm -e kernel-source
shell>rpm -e gcc
shell>rpm -e cpp
shell>rpm -e glibc-devel
shell>rpm -e glibc-kernheaders
shell>rpm -e libstdc++-devel
shell>rpm -e m4
shell>rpm -e ncurses-devel
shell>rpm -e zlib-devel

Et on enlève les fichiers eux-mêmes :

shell>cd /root/dev/
shell>rm *

et on dit ’yes’ pour chaque fichier ;-)

STEP 9 : Ca ne marche pas si bien que ça !

De temps à autre, la connexion ne fonctionne plus. Tout les deux ou trois mois, alors que tout paraît en ordre (ifconfig, eaglestat, messages.log), les données ne passent plus. Quand on regarde attentivement dans messages.log, on finit par voir :

Dec 9 23:59:08 serveur kernel: [EAGLE-USB] SM: LOS Defect Dec 10 00:14:49 serveur kernel: [eagle-usb] Modem operational !!

Ça serait un problème de ligne.
La proposition est de réaliser de temps à autre un ping sur un serveur extérieur et de relancer la connexion si ça ne passe pas. On va faire un script pour ça :

Shell> cd /usr/local/bin/
Shell> vi reco-pppoa
Les scripts
Les scripts utilisés dans ce howto

et on copie-colle le texte suivant :

#!/bin/sh
# Par Eric Sibert

# On regarde si les DNS de free sont accessibles


if ! ping -c 1 -w 5 212.27.39.1 > /dev/null 2>&1 ; then
echo "Connexion HS"
/etc/rc.d/init.d/pppoa restart &
fi

#---------Fin--------------------

puis :wq pour sauver et quitter

shell> chmod 777 reco-pppoa

Puis on va appeler le script à intervalle régulier :

shell> mkdir /etc/e-smith/templates-custom/etc/cron.d/
shell> cd /etc/e-smith/templates-custom/etc/cron.d
shell> vi check-pppoa

et on copie-colle le texte suivant :

#---------Début-----------------

57 * * * * root /usr/local/bin/reco-pppoa

#---------Fin--------------------

puis :wq pour sauver et quitter

shell> /sbin/e-smith/expand-template /etc/cron.d/check-pppoa

L’intervalle est d’une heure. D’une part, parce que pour moins d’une déconnexion par mois, ça me paraît suffisant. Et d’autre part, parce qu’à trop pinger un serveur, il finit par ne plus répondre.

Conclusion

Même avec tout ça, ça ne marche pas parfaitement. J’ai eu un cas où la connexion est devenue instable. Elle ne tenait que quelques secondes puis elle se rompait. Et ça reprenait quelques secondes plus tard. Du point de vue du script à base de ping, la connexion était bien présente. Et quand bien même il aurait déclenché une reconnexion, celà n’aurait rien changé. La seule solution que j’ai trouvé sur le coup a été de recharger le firmware du modem (après l’avoir débranché).
En cas de problème, ne pas hésiter à regarder du côté du howto pour sme 5.6 (http://www.chars.dyndns.org/fasthowto.html) et à comparer. Regarder aussi sur le forum Ixus http://forums.fr.ixus.net/viewtopic.php?t=12056&highlight=fast+800+usb.

Pour ce qui est des problèmes techniques, allez donc faire un tour sur news ://alt.e-smith.fr où une âme charitable vous aidera probablement.

Merci à Benoit Audourd (aka Baud 123) pour son aide à la mise en place de la version 1.9.9.1. Encore merci à Le corguillé Jean Michel, Vincent Bazimon, Timothée Gros et tous les contributeurs de aef.

Copyright : droit d'auteur Éric Sibert. Site réalisé avec SPIP.