Mini-guide sur les Winmodems et Linux

Version française de The Winmodems-and-Linux HOWTO

Auteur : Alexandre J.


        
    

Adaptation française: Eric Barbero


        
    

Version : 1.2.fr.1.0

29 avril 2001

Résumé

Ce document aide les utilisateurs de Winmodems (modems dédiés à l'origine à Windows) à le faire fonctionner sous Linux.


Table des matières

1. Qu'est-ce que les Winmodems ?
1.1. Ce sont des modems…
1.2. …mais pas de vrais modems !
1.3. Comment savoir si j'ai un Winmodem ?
2. ISA ou PCI ?
2.1. PCI ?
2.2. or ISA ?
2.3. ISA et les noyaux 2.4
3. Installer le pilote du modem
3.1. ltmodem 5.78
3.2. Le WinModem LT (de Lucent) 5.68 (obsolète)
3.3. Le programme LTMODEM (pilote à code source ouvert)
4. Fin…
4.1. Licence, Copyright
4.2. Commentaires et corrections

1. Qu'est-ce que les Winmodems ?

1.1. Ce sont des modems…

Un Winmodem, comme les autres modems, est utilisé pour accéder aux téléphone, BBS, Internet, fax, et cætera. Il est raccordé à une ligne téléphonique et est caractérisé par sa vitesse. Si vous désirez en savoir plus sur les modems, Je vous renvoie au guide sur les Modems.

1.2. …mais pas de vrais modems !

Ce sont des WINmodems. C'est à dire qu'ils ont besoin de Windows pour fonctionner. Pourquoi ? Simplement parce qu'ils sont stupides. Ils ont besoin d'un programme spécial, un pilote, pour accomplir entièrement leur tâche. Qui dit programme dit système d'exploitation (SE), et les pilotes inclus dans les modems sont, à 99%, exclusivement destinés à la plate-forme MS-Windows. Avec la démocratisation de Linux, certains constructeurs, comme LT ou Motorola, ont décidé de créer un pilote pour leurs modems. Mais ils n'ont pas intégré la philosophie Linux : les pilotes qu'ils fournissent sont bien sûr des logiciels propriétaires, à code source fermé. Ils sont gratuits, mais leur licence n'est pas sous le régime de la GPL. Ce qui signifie que leurs sources ne sont pas disponibles.

C'est pourquoi certains « bidouilleurs » ont décidé de réaliser un pilote à code source ouvert. Mais ils ne savent pas grand-chose à propos de leurs modems, car les constructeurs ne veulent pas communiquer les spécifications de leurs modems. Ainsi les pilotes à code ouvert sont souvent en version alpha ou bêta.

1.3. Comment savoir si j'ai un Winmodem ?

  1. Essayez de connaître le nom du port série sur lequel le modem est connecté (sous Windows ou MS DOS, par exemple : COM1, COM2, et cætera).

    Le nom de votre modem sous Linux est /dev/ttySx, où x est le numéro du port série sous DOS moins 1.

    1er exemple : sous DOS, COM1 équivaut sous Linux à ttySx, avec x=1-1, soit ttyS0.

    2e exemple : sous DOS, COM3 équivaut sous Linux à ttyS2

    et ainsi de suite.

  2. Créez un lien symbolique de /dev/ttySx vers /dev/modem, en tapant :

    rm -f /dev/modem<p>
    ln -s /dev/ttySx /dev/modem
    
  3. Téléchargez et installez le paquet minicom. Puis exécutez minicom -s.

    Choisissez Configuration du port série, tapez A dans l'option Port série, effacez toute la ligne et tapez « /dev/modem ». Validez par Entrée. Appuyez sur Échap., sélectionnez Enregistrer config. sous dfl, puis sélectionner Sortir.

    Patientez un instant, puis tapez AT. Si le modem répond OK alors vous n'avez pas un Winmodem, mais un modem classique…

    Si l'initialisation dure trop longtemps, c'est que vous avez un Winmodem. Utilisez alors ce document pour essayer de le rendre utilisable. Connectez-vous en administrateur.

  4. Sortez de Minicom en tapant CTRL+A, puis X.

2. ISA ou PCI ?

2.1. PCI ?

Bon, vous avez un Winmodem… Mais il y a deux types de Winmodems : ISA ou PCI. Pour rendre les choses encore plus compliquées, les deux interfaces sont assez différentes. Nous allons maintenant tester si vous avez un modem ISA ou PCI. Tout d'abord, vous devez configurer votre noyau. Lors de la configuration (avec make *config), vous devez répondre yes aux questions suivantes :

  • Dans Loadable module support :

    • Enable loadable module support (CONFIG_MODULES)

    • Set version information on all modules for symbols (CONFIG_MODVERSIONS)

    (Notez que vous devez avoir le paquet modutils installé ; cf. pour cela le Guide Kerneld)

  • Dans General setup :

    • PCI support (CONFIG_PCI)

    • PCI Access Mode (CONFIG_PCI_GOBIOS) → sélectionnez Any

    • PCI quirks (CONFIG_PCI_QUIRKS)

    • Backward compatible /proc/pci (CONFIG_PCI_OLD_PROC)

  • Si vous savez configurer la base des noms des périphériques PCI (avec un noyau 2.4 et plus), vous pouvez dire oui (Y), ceci rendra votre fichier /proc/pci plus facile à comprendre (PCI Device Name Database — CONFIG_PCI_NAMES).

  • Dans Filesystems :

    • /proc filesystem support (CONFIG_PROC_FS)

Si vous n'avez jamais compilé votre noyau, peut-être que celui de votre distribution contient déjà ces options. Si vous voulez le recompiler et que vous ne l'avez jamais fait, lisez le Guide sur le Kernel.

Désormais nous considérons que votre nouveau noyau est installé.

Exécutez 'cat /proc/pci'. Si vous voyez le nom de votre modem dans les lignes affichées par la commande alors vous avez un Winmodem PCI. Allez à la section 'Installer le pilote'.

2.2. or ISA ?

Si vous n'avez pas trouvé le nom, peut-être avez-vous un modem ISA. Comment en être sûr ?

Le support ISA n'est pas assuré par le noyau jusqu'au 2.4 (si vous disposez d'un noyau de la série 2.4.x, le noyau fera ce travail automatiquement. Sautez la section et lisez la suite). C'est un programme tiers, nommé isapnp, qui réalise cela. D'abord assurez-vous que ce paquet est installé. Si ce n'est pas le cas, installez-le en téléchargeant le paquet isapnptools.

Une fois que isapnptools est installé, nous allons exécuter un programme spécial, pnpdump, qui inspecte votre ordinateur pour trouver les périphériques ISA. Puis il essaye de deviner les ressources utilisées par les périphériques et les écrit dans un fichier, /etc/isapnp.conf. Ensuite modifiez ce fichier et lancez un autre programme, isapnp, qui lit isapnp.conf et configure automatiquement vos périphériques.

Ça semble difficile ? Alors suivez ces étapes :

1. Exécutez 'pnpdump > /etc/isapnp.conf'.

2. Éditez ce fichier avec votre éditeur de texte favori

3. Localisez la section où est décrit votre modem.

4. Dé-commentez certaines lignes du fichier (ôtez le caractère # au début de la ligne). Vous avez besoin de dé-commenter :

1 ligne '(IO 0 ...)'

1 ligne '(INT 0 ...)'

1 ligne '(DMA 0 ...)'

1 ligne '(DMA 1 ...)'

1 ligne '(IO 1...)'

5. Ôtez le '(CHECK)' dans toutes les lignes dé-commentées et enregistrez le fichier.

6. Exécutez 'isapnp /etc/isapnp.conf'. Si vous obtenez des erreurs, éditez le fichier isapnp.conf et modifiez des paramètres ; aidez-vous avec le message d'erreur. Si vous n'obtenez aucune erreur, éditez isapnp.conf et dé-commentez la ligne '(ACT Y)' dans la section de votre modem. Puis relancer 'isapnp /etc/isapnp.conf'. Le programme doit vous répondre « [[Nom de votre modem]] Enabled OK"

7. Ajoutez 'isapnp /etc/isapnp.conf' à votre fichier /etc/rc.d/rc.local, en tapant 'echo "isapnp /etc/isapnp.conf" >> /etc/rc.d/rc.local'. C'est utile pour auto-configurer vos périphériques à chaque démarrage.

Si cela peut aider, voici un extrait de mon fichier /etc/isapnp.conf (J'ai commenté ce fichier, et les commentaires d'origine sont précédés par ##).


# Quelques détails ...
## (DEBUG)
(READPORT 0x0203)
(ISOLATE PRESERVE)
(IDENTIFY *)
(VERBOSITY 2)
(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING

# Identification de ma carte modem

## Card 1: (serial identifier e2 00 00 01 00 05 50 c3 1e)
## Vendor Id GVC5005, Serial Number 256, checksum 0xE2.
## Version 1.0, Vendor version 0.1
## ANSI string -->LT Win Modem<--
##
## Logical device id HSM0140
##     Device support I/O range check register
#

# Nous voulons configurer la carte GVC5005/256

(CONFIGURE GVC5005/256 (LD 0

# I/O Base address 0x03f8, with a range of 8
(IO 0 (SIZE 8) (BASE 0x03f8) )
# IRQ 4
(INT 0 (IRQ 4 (MODE +E)))
# DMA 5
(DMA 0 (CHANNEL 5))
# DMA 7
(DMA 1 (CHANNEL 7))
# I/O Base address 2  0x0100, range 8
(IO 1 (SIZE 8) (BASE 0x0100) )
# Nom de la carte
 (NAME "GVC5005/256[0]{LT Win Modem        }")
# Activez-la
(ACT Y)
# Fin de configuration
))

######## paramètres pour mes autres périphériques ISA ##############

## Renvoie à toutes les cartes ISA l'état "Wait for Key"
(WAITFORKEY)

2.3. ISA et les noyaux 2.4

Si vous disposez d'un noyau 2.4 (lancez 'uname -r' pour obtenir la version de votre noyau), vous n'avez pas à faire ce bidouillage de fichier texte et cette installation de programme extérieur. La série 2.4 a introduit une méthode similaire à celle des PCI et a rendu obsolète le paquet isapnptools. Pour obtenir cette caractéristique, vous devez cocher 'Y' ou 'M' à 'Plug and Play support' (CONFIG_PNP) et 'ISA Plug and Play support' (CONFIG_ISAPNP) lors de la configuration du kernel (c'est dans la section 'Plug and Play configuration'). A nouveau, recompiler votre noyau et installez-le. Si vous cochez 'M' au 'ISA Plug-and-Play support', il serait bon de faire un 'modprobe isapnp'. Vous devez avoir un pilote compatible avec cette nouvelle méthode d'accès aux périphériques (par exemple le ltmodem 5.78, cf. la section suivante).

3. Installer le pilote du modem

Vous n'avez pas à lire entièrement cette section ; lisez uniquement la partie correspondant à votre modem. Pour le moment, la section décrit seulement comment installer un modem LT, en utilisant le pilote à code ouvert et ceux de Lucent. Si vous avez conçu ou utilisez un autre pilote de Winmodem, à code ouvert ou fermé, contactez-moi (alexandre12@mageos.com), et je inclurai dans cette section.

3.1. ltmodem 5.78

URL : http://www.physcip.uni-stuttgart.de/heby/ltmodem/archive/ltmodem-5.78f.tar.gz

Auteur : Lucent

Licence : Non-GPL

Supports : modems ISA/PCI, avec un chipset Lucent (modèles "Mars")

Caractéristiques : module du noyau ; simule un port série. Fait fonctionner PPP, le fax et le téléphone

Version actuelle : 5.78f

Documentation : README-1ST

Pré-requis : noyau 2.2.x ou 2.4.x; ISA PNP support ; Loadable module support; Compilateur C

Installation : lire README-1ST. Il est très clair.

Problèmes (messages d'erreur) :

  • "Unresolved symbols : xxx_isapnp_xxxx" : lancez modprobe isapnp.

  • "Device or ressource busy" : votre modem n'est pas compatible avec le pilote.

Commentaires : Lucent, en ce moment, évite les problèmes de distribution et de version de noyau en fournissant le code source pour certains éléments.

3.2. Le WinModem LT (de Lucent) 5.68 (obsolète)

URL : http://www.linmodems.org/linux568.zip

Auteur : Lucent Technologies

Licence : Non-GPL

Supports : modems ISA/PCI, avec un chipset Lucent (modèles "Mars")

Caractéristiques : module du noyau ; simule un port série. Fait fonctionner PPP, le fax et le téléphone

Version actuelle (autant que je saches) : 5.68

Documentation : README

Pré-requis : un noyau RedHat 2.2.12 ou supérieur ; loadable module support

Installation : décompresser le paquet ('unzip linux568.zip'), et exécutez ./ltinst. C'est tout !

Problèmes (messages d'erreur) :

  • "insmod: ltmodem: Unresolved symbol(s) *****" : vous n'avez pas un noyau compatible avec le ltmodem. Téléchargez le noyau 2.2.12 de ftp.kernel.org, compilez and installez-le.

  • "Warning: kernel version mismatch..." : vous n'avez pas le noyau 2.2.12-20. C'est une alarme mineure et elle ne fera pas échouer l'installation du pilote.

  • "ltmodem: init_module: device or resource busy" :

    • Vous n'avez pas un modem lt ou compatible installé

    • Si vous avez un modem ISA, il n'est pas configuré par isapnp

    • Si vous avez un modem PCI, le support de PCI dans le noyau n'est pas configuré

3.3. Le programme LTMODEM (pilote à code source ouvert)

URL : http://www.close.u-net.com

Auteur : Richard Close et Pavel Machek

Licence : GPL

Supports : modems ISA/PCI, avec des chipsets Lucent (modèles "Mars")

Caractéristiques : User-space driver; fait fonctionner le téléphone, mais pas PPP (V90)

Version actuelle (autant que je saches) : 0.99

Documentation : README

Pré-requis : compilateur GNU C, automake

Installation :

  • PCI : exécutez make ; make install. Puis utilisez le programme ltmodem pour communiquer avec le modem.

  • ISA : lire le fichier README.ISA. Exécutez mv Makefile Makefile.PCI ; mv Makefile.ISA Makefile ; éditez config.h et indiquez les bonnes valeurs pour votre modem (adresse E/S, DMA, IRQ) ; make ; make install - Puis utilisez le programme 'ltmodem' pour communiquer avec le modem.

Problèmes (messages d'erreur) :

  • "Sorry, I can't found any modem...":

    • Vous n'avez pas un modem LT

    • Vous avez un modem ISA non configuré par isapnp

    • Vous avez un modem ISA configuré ; mais ltmodem n'a pas été configuré pour l'ISA

    • Vous avez un modem PCI sans support PCI inclus dans le noyau

    • Vous avez un modem PCI et un noyau compatible, mais ltmodem n'a pas été compilé pour le PCI

4. Fin…

4.1. Licence, Copyright

Copyright (C) 2000, 2001 Alexandre J.

Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier

selon les termes de la licence GNU GPL publiée par

la Free Software Foundation, en version 2 de la licence ou

(au choix) toute version ultérieure.

Ce programme est distribué avec l'espoir qu'il sera utile,

mais SANS AUCUNE GARANTIE ; sans même les garanties implicites

d'être commercialisable ou de répondre à un besoin spécifique.

Cf. la licence GNU GPL pour plus de détails.

Vous devriez avoir reçu une copie de la licence GNU GPL

avec ce programme ; si ce n'est pas le cas, écrivez à la "Free Software

Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"

4.2. Commentaires et corrections

Si vous avez des idées à propos de ce document, n'hésitez pas à m'écrire : alexandre12 CHEZ mageos POINT com.

N'hésitez pas à faire parvenir tout commentaire relatif à la version française de ce document à en précisant le nom et la version du document auquel vous faites référence.

4.2.2. Ressources

  • Site du projet des Linmodems : http://www.linmodems.org

  • Site du projet LTModem : http://www.close.u-net.com

  • Site de Lucent Technologies : http://www.lucent.com

  • Le noyau Linux : http://www.kernel.org

  • Le site de isapnptools : http://www.roestock.demon.co.uk/isapnptools

  • Le site de la LDP (pour obtenir les guides): http://www.redhat.com/mirrors/LDP