Configuration UUCP et PPP, client et serveur (L. Bortzmeyer, en anglais)
Si un port série est employé pour la connexion il faut commencer par s'assurer que le noyau Linux comprend le pilote logiciel permettant d'exploiter ce périphérique.
Il suffit d'examiner les messages affichés lors du démarrage, durant lequel
Linux examine le matériel et « annonce » les ressources disponibles. Ces
messages défilent souvent assez vite mais sont le plus souvent conservés
dans /var/log/messages (ou via la commande dmesg), donc
accessibles une fois le système démarré.
Un port série, pour le noyau, est appelé "tty". Voici par conséquent une commande possible :
grep 'tty[0-9][0-9]' /var/log/messages
Elle produira par exemple, sur un système comprenant deux ports série standard :
Nov 24 20:02:32 nataa kernel: tty00 at 0x03f8 (irq = 4) is a 16550A
Nov 24 20:02:32 nataa kernel: tty01 at 0x02f8 (irq = 3) is a 16550A
Nov 24 20:02:32 : date et heure d'enregistrement du messagenataa : nom de la machine hôte (commande hostname)kernel : nom du programme auteur de la ligne de trace que
nous lisons en ce moment mêmetty00 : nom physique Unix du périphériqueat 0x03f8 : adresse de base (d'une zone mémoire partagée, car
accessible à la fois par le CPU de la machine et par les circuits de
gestion du port série)(irq = 4) : numéro de la ligne de requête d'interruptionis a 16550A : le type de circuit série (dit UART)Certains éléments du répertoire /proc offrent d'intéressantes
précisions sur le mode de prise en charge des circuits par le
noyau. cat /proc/ioports, par exemple, révèle les adresses mémoire
d'implantation du (ou des) circuit série reconnus.
Les utilisateurs de cartes série non standard liront le fichier
Documentation/devices.txt, fourni avec les sources du noyau, pour
déterminer les noms des fichiers spéciaux correspondants. Et probablement
aussi compiler un noyau ad hoc.
Lire le Kernel-HOWTO s'il s'avère nécessaire de compiler un noyau : (le pilote pour port série standard est compilable grâce à l'option "character devices", "standard/generic serial support")
L'administrateur (root) doit ensuite configurer les logiciels de
communication. Ils offrent tous le moyen de déclarer quel périphérique
exploiter, à quelle vitesse ...
Certains offrent beaucoup plus de paramètres mais cela ne nous concerne pas dans un premier temps.
La communication avec ce « périphérique » passe par un fichier dit «
spécial » placé dans le répertoire /dev. À presque tout
périphérique physique correspond un fichier spécial, ce n'est pas
spécifique au port série.
Tout logiciel peut, grâce à ce fichier spécial, accéder à une ressource matérielle via le pilote logiciel (« driver ») adéquat. Il ouvrira le fichier spécial et y écrira des données que le logiciel pilote (fourni par le noyau de Linux) fera parvenir au périphérique.
Linux associe aux ports série deux types de fichiers spéciaux :
ttyS et cua. Ce dernier type est appelé à disparaître, il
faut donc éviter de l'utiliser.
Un fichier spécial ttyS permet d'exploiter l'un des ports série de
la machine si le noyau Linux comporte le pilote adéquat (pour ports série,
donc !).
Si le fichier spécial n'existe pas : utiliser mknod pour le créer.
Prendre garde à ne pas engendrer de conflits :
ttyS. Il faut cependant rendre inopérant, grâce au
"SETUP" ou à la configuration matérielle de la carte d'extension, le port
série interne (fourni par la machine) correspondant.Utiliser setserial -a NOM-DU-PORT pour déterminer le type d'un
port donné. Exemple : setserial -a /dev/ttyS0.
Commencer, en tant que root, par créer un lien modem grâce auquel
tous les logiciels utiliseront le périphérique nommé « modem ». Voici
comment procéder dans le cas d'un modem connecté au deuxième port série :
cd /dev
ln -s ttyS1 modem
Le Serial-HOWTO fournira d'autres informations utiles.
Pour rendre la connexion ordinateur[-]modem (appelée "DTE") possible ou simplement améliorer ses performances il faut connaître le débit maximum toléré par :
Utiliser setserial et stty dans les scripts
automatiquement exécutés lors du démarrage pour paramétrer la vitesse pas
défaut du port à la valeur la moins élevé de ces débits maximum.
Sur une machine moderne exploitant un modem récent, par exemple, la
configuration sous Red Hat s'effectuera grâce à un fichier
/etc/rc.d/rc.serial contenant :
#!/bin/sh /bin/setserial /dev/modem spd_vhi hup_notify /bin/stty crtscts 38400 < /dev/modem
Ligne de stty:
spd_vhi de setserial, permet, d'après le man, ce qu'on
peut d'ailleurs vérifier aisément en envoyant "at /" au modem : "use 115kb
when the application requests 38.4bp.". À partir de là, il me semble plus
propre de demander à tous les scripts 38400 ce qui permet, si on veut
changer, pour une raison ou une autre, la vitesse DTE de changer uniquement
l'option spd_vhi de setserial par spd_hi
(pour obtenir 57600) ou de l'enlever (pour revenir à 38400) au démarrage.Certaines machines ou modems ne tolèreront pas cela et il faudra remplacer spd_vhi par spd_hi (57600 bps), voire spd_normal (38400 bps).
Tester grâce à un programme de communication (par exemple minicom
ou bien seyon) jusqu'à ce que le modem réponde "OK" lorsque vous
introduisez un "ATZ".
Un « WinModem », matériel exclusivement dédié à MS-Windows, ne fonctionnera très probablement jamais sous Linux. Mieux vaut de toutes façons acquérir un modem externe, qui fonctionnera sur toutes les machines (indépendamment de leur bus), n'augmentera pas la température près de la carte mère, permettra de surveiller la connexion (diodes visibles, haut-parleur audible) ...
Surveiller Linux Winmodem Support, http://www.math.sunysb.edu/~comech/tools/PCImodems.html et http://www.o2.net/~gromitkc/winmodem.html.
La plupart des modems intégrés à des cartes PCMCIA fonctionnent. Lire à ce propos la documentation du logiciel pilote, appelé 'pcmcia-cs'.
Configurer le modem (chaîne d'initialisation) de façon à débrayer le peu
efficace protocole MNP5 (qui bloque un instant tout transfert afin
de s'escrimer à le compacter, même s'il est incompactable) en faveur de
V42.
Notes de F. Schaefer :
hangup) lorsque la ligne DTR tombe, cela décoince
pas mal de modems bas de gamme.Qui donc utilise, sous Linux, l'un de ces modems fax capables de stocker messages vocaux et fax même lorsque l'ordinateur est éteint ?
Ou bien les fonctions ATX de réveil en cas d'activité sur le port série ?
Quelles fonctions exploitez-vous (fax ? répondeur ?) ?
Avec quel modem (marque / modèle), quel logiciel (mgetty, hylafax ...), quelle config du SETUP de la machine, quelles options de compilation du noyau ... ?
L'ensemble fonctionne-t-il bien (problèmes ?)
Merci de me contacter par mail connex@nataa.fr.eu.org, je publierai un résumé.
La documentation technique du modem 'Olitec Self Memory' est disponible, un bon développeur devrait donc pouvoir en tirer quelque chose ...
T. Danis :
Pour voir passer les paquets, il existe un outil qui utilise la
bibliothèque qt : qsermon. Pour avoir accès à toutes les
données nécessaires aux statistiques, il faut appliquer un petit patch
(livré avec qsermon) sur le noyau . L'interface est jolie, avec des
histogrammes des paquets passés dans chaque sens, des diodes pour chacun
des signaux du modem, etc...
Autre outil : serialmon
modemd/rmodem permet d'utiliser des modems installés sur d'autres machines du réseau existe. Voir aussi libmodem
dcon peut permettre de réaliser de façon simple
des scripts d'automatisation de la gestion des connexions. Il remplace
parfois avantageusement chap, dip ...