Comment installer le modem Sagem Fast 800 USB sous SME 6.0
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
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 ...
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.
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
J’ai fais un script pour automatiser l’étape précédente.
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)
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.
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
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
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
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.
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
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.
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 ;-)
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
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.
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.