Modems-HOWTO
 Jean Michel VANSTEENE <[email protected]>
 13 Fevrier 1996

 Le  modem  est devenu  aujourd'hui un produit a  la mode. Que ce  soit
 pour l'acces a   Internet  ou  pour  se connecter   chez   un  partic-
 ulier qui laisse benevolement sa machine disponible, il faut un modem.
 Or, cet appareil, d'apparence  fort  simple,  cache  des  choses  tres
 sophistiquees  et son  emploi   peut engendrer bien  des soucis.  J'ai
 constate d'ailleurs  que bon nombre d'utilisateurs   se  posaient  des
 questions  a son propos. (Et ceux qui ne s'en posent pas ont   parfois
 des   problemes   qu'ils seraient    aptes  a resoudre par   eux-meme,
 s'ils   connaissaient   un    peu    son fonctionnement.)  Ce document
 n'est  ni un HOWTO ni  une   FAQ, ce qui    est  a  priori  inhabituel
 pour  un   document  Linux.   J'ai  longuement  reflechi  avant de  me
 lancer dans  cette aventure.  Parmi  mes priorites, la premiere a  ete
 d'etre  clair et de ne pas tomber dans le genre cours magistral...  Le
 but de ce document  est en fait   d'eclaircir un peu des  notions _d_o_n_t
 _o_n   _a   _e_n_t_e_n_d_u   _p_a_r_l_e_r  :  bande  passante,    bits/seconde,  baud,
 modulation,        interface       serie,        connexions          a
 vingt-huit-huit  ...   Apres  avoir   lu  ce document, de  deux choses
 l'une :  soit vous vous dites  _c_'_e_s_t  _i_m_b_i_t_a_b_l_e, et la   vous   sautez
 sur  votre  courrier-e  prefere pour m'engueu... me le dire, soit vous
 pensez  que ca vous  a apporte quelque-chose et la,  vous  sautez  sur
 votre  courrier-e...  pour  me   le dire. En tout  cas, toute remarque
 sera la bienvenue, comme d'habitude.

 11..  IInnttrroodduuccttiioonn

 La communication a   toujours ete, est  et sera   toujours un  echange
 de  signaux   entre  un  emetteur  et un recepteur.  Afin d'avoir  les
 idees claires sur   ce que  nous allons  aborder,  decomposons     les
 differentes    etapes  de       la communication.  Le  meilleur modele
 que nous allons    prendre  est  l'homme  qui  l'utilise  depuis  fort
 longtemps.

 PPrreemmiieerree  eettaappee : prenons un homme, bien rase de preference, propre et
 pret  a se rendre   au travail. Justement  il a un  mot a dire a    sa
 femme avant de partir. C'est l'information a transmettre.

 DDeeuuxxiieemmee  eettaappee  :  comment la  transmettre.  Si elle est  la, il crie
 (bon, il  parle), sinon il  ecrit le message sur un  bout  de  papier.
 Notre  homme  est donc capable (voyez-vous ca, il est  a peine 7h30 du
 matin !)   de coder son  information en fonction de la maniere dont il
 transmet son message.

 Pour    communiquer,  nous  utilisons    des  elements  de  base  dont
 l'ensemble forme l'alphabet.  Une  succession de ces elements  definit
 un  vocabulaire.  En  fait  il s'agit ni plus  ni moins que d'un code,
 complexe  certes,   mais   comprehensible    par  tous    ceux     qui
 l'adoptent.   Moins  il est  ambigu, plus il  est precis. (Vous pouvez
 essayer  de  donner   trois  sens  differents   a  cette  phrase  pour
 comprendre   que  notre   langue     est  parfois  ambigue : il    est
 enormement    bete  .)     Pour     s'exprimer,    il    est   ensuite
 capable     de      decouper     une      suite      de mots (elements
 continus)        en            phonemes (elements   discontinus),  que
 le recepteur    saura reassembler.

 En  informatique,  l'information  de  base est bbiinnaaiirree, donc codee sur
 deux valeurs logiques  que l'on note  habituellement 0   et  1.  C'est
 le  code  sans  doute le plus elementaire qui soit. Aussi il existe un
 certain nombre de codes intermediaires. Nous citerons par  exemple  le
 code ASCII, permettant de coder les lettres et chiffres.

 TTrrooiissiieemmee   eettaappee  :  sa   femme decouvre   le message  (ou l'entend).
 Elle est  capable de le  reconstituer.   Les  lettres  (respectivement
 les  phonemes)     forment  des  mots   qui  forment   des phrases qui
 forment le message. Ouf ! On y est.

 11..11..  RReessuummoonnss uunn ppeeuu

 DDeeccoouuppaaggee hhoorriizzoonnttaall.  La communication n'est possible que s'il existe
 un  code  commun. A tout niveau il faut s'assurer non seulement que le
 code employe  a  un  sens,   mais  en  plus   qu'il  a  le  meme  pour
 l'emetteur et   le    recepteur.  On  parle   alors  de _p_r_o_t_o_c_o_l_e.  Au
 niveau le plus   bas,  un  signal  est  utilise  comme  un  moyen   de
 communication.   Il  transporte  en   effet un message  sous une forme
 particuliere appele _c_o_d_a_g_e ou _m_o_d_u_l_a_t_i_o_n.   Un  signal  a  une  nature
 physique et un modele mathematique.  Nous nous etendrons davantage sur
 sa  nature  que  sur  le  modele  qui,  bien   qu'interessant,    nous
 amenerait  trop loin.  Le signal s'appuie sur un support.

 DDeeccoouuppaaggee        vveerrttiiccaall.        De   l'idee     au    code employe :
 plusieurs niveaux de traitement  sont  utilises  pour  transformer  un
 message  complexe  en  elements plus simples aptes a   etre  vehicules
 et  compris   par une entite homologue.

 Or s'il y a un signal, il faut forcement un support  de  transmission,
 permettant  de le  vehiculer d'un  point   a un autre.    Nous verrons
 cela  un  peu  plus  loin.  Celui  qui  nous  interesse  concerne  les
 transmissions telephoniques.

 Voici    donc  jetees les bases   de   la communication.  Nous  allons
 maintenant eclaircir un  peu  tout cela dans les  differentes  parties
 qui  vont  suivre. La  premiere etape consiste a consolider les  bases
 sur  les  signaux,   ensuite  nous  verrons   leur transmission.

 22..  UUnn ppeeuu ddee tthheeoorriiee dduu ssiiggnnaall......

 La  voix est un  bon exemple  de  signal permettant de  vehiculer  une
 information.   Ce     signal  est caracterise  par  sa bbaannddee ppaassssaannttee,
 c'est-a-dire  le   domaine  de   frequences  sur  lequel  elle    peut
 s'etendre.    En    general  cette   bande  est continue  et  comprise
 entre  30  et 15000   Hz.  Ce   signal  est  de type sinusoidal.

 Sans entrer  dans  des  details mathematiques,  disons   qu'un  signal
 est       compose   d'une   frequence     principale et d'harmoniques.
 Il  est   possible   d'en  donner   une   representation  mathematique
 grace   aux   series  de   Fourier, mais  nous n'irons  pas plus loin.
 Disons  simplement que ce signal est appele signal "analogique", parce
 qu'il peut prendre n'importe quelle valeur de facon    continue  entre
 deux  instants :   le   signal   est "module".

 22..11..  LLeess ssuuppppoorrttss ddee ttrraannssmmiissssiioonn

 Un   signal quel  qu'il   soit,  n'a d'interet  que  s'il   peut  etre
 transporte.    Il   faut   savoir qu'un systeme  de transmission n'est
 jamais en mesure  d'emettre des signaux  sans  leur  faire   subir  de
 deformations   :    selon    leur  nature,  on  parle  de  distorsion,
 d'affaiblissement, de diaphonie ...  Comme nous le verrons plus  loin,
 les  lignes telephoniques ne font   pas exception a cette regle.

 Chaque  type de support est caracterise  entre autres par son aptitude
 a  transmettre  un  signal  plus  ou  moins  fidelement.  De  nombreux
 supports      sont    utilises     en     transmission    de donnees :
 les  supports  avec  guide  physique  (cables, fibres,   ...)  et  les
 supports   sans    guide  physique  (ondes  radio,  ondes lumineuses).
 Pour donner  une    idee, de la   qualite   des supports,  disons  que
 les cables electriques  a paires torsadees sont  les    moins fiables,
 suivis  par   les  cables  coaxiaux.   Les  fibres   optiques  offrent
 actuellement  le meilleur compromis fiabilite/performance.

 33..  LLeess tteelleeccoommmmuunniiccaattiioonnss aannaallooggiiqquueess eett nnuummeerriiqquueess

 33..11..  LLeess tteelleeccoommmmuunniiccaattiioonnss aannaallooggiiqquueess

 C'est   un  mode  de   communication  utilise  depuis  tres  longtemps
 notamment  dans  la technologie  telephonique. Il   s'agit   en  effet
 d'une  activite   beaucoup   moins consommatrice de   ressources, tant
 financieres    que      technologiques    que      la     transmission
 numerique.  On n'est   pas  tout a fait  pret   a pouvoir s'en passer.

 33..22..  LLee ssiiggnnaall tteelleepphhoonniiqquuee

 A    l'origine,    le telephone   a  ete concu pour  transmettre    la
 voix.   Malheureusement,  il  n'est  pas possible,  etant   donne   le
 support    utilise,   de vehiculer le   signal  complet,  c'est-a-dire
 l'ensemble    des  frequences   le   constituant.    Le  domaine    de
 frequences  (on  parle  de  largeur  de         bande)   que   peuvent
 transmettre       les      lignes   telephoniques  est  officiellement
 compris entre 300  et   3400  hertz  (--  Les     _c_o_d_e_c_s     (codeurs-
 decodeurs)     modernes  utilises   dans  les   centraux telephoniques
 actuels ont une bande passante de l'ordre de 200   a  3700  Hz  et  la
 qualite   des  lignes    des   abonnes   s'en    trouve   generalement
 amelioree.--) .   On  applique   donc    au   signal    de  depart  un
 _f_i_l_t_r_e     _p_a_s_s_e_-_b_a_n_d_e   qui     restreint   l'espace    de  frequence
 attribue a la    transmission  du   signal  sur  cette  liaison.  Ceci
 correspond  heureusement a 90% de nettete de la voix.

 Selon  le principe bien  admis que tout traitement a  un cout, le plus
 simple et le moins couteux en telecommunications  est  de  transmettre
 le signal  avec le moins  de  transformations possible.  C'est bien ce
 qui se passe pour  la voix par telephone. Les  seules  transformations
 sont d'ordre analogique comme l'amplification par exemple.

 33..33..  LLeess tteelleeccoommmmuunniiccaattiioonnss nnuummeerriiqquueess

 Nous           avons          deja         evoque precedemment que  le
 fonctionnement de nos  chers ordinateurs etait   fonde  sur  la  seule
 information binaire. Celle-ci est representee,  des  lors qu'il s'agit
 de la visualiser (oscilloscope) ou  de la transporter,  par un  signal
 rectangulaire a deux niveaux.

 Pour  transporter un  tel signal, le plus simple  et le moins  couteux
 consiste a lui faire  subir le moins  de traitement possible,  voire a
 le  transporter tel quel.   On   imagine aisement que pour transmettre
 ce  signal sur un  support,  il   suffise  de   definir  deux  signaux
 electriques representant les niveaux logiques 0 et 1.  De  plus     ce
 type     de        transmission     offre       des       performances
 considerablement     superieures   a    la    transmission analogique,
 ceci pour deux raisons.

 La   premiere est un faible  taux  d'erreurs.  En effet,  alors  qu'en
 transmission  numerique,  les signaux sont  transmis avec des tensions
 d'amplitude variable, en transmission numerique le nombre  de  niveaux
 est   limite.   Les   signaux  parasites s'infiltrant  dans un  signal
 analogique    sont   donc    tres   difficiles    a   supprimer     et
 engendrent   des    erreurs.      En transmission  numerique,      les
 defauts    sont    plus      facilement    reperables      et      les
 equipements  regenerent   plus      facilement   un signal parasite ou
 affaibli.

 La deuxieme  raison tient au  fait  que l'on sait mieux   traiter  une
 information    numerique.   Ainsi,  en   utilisant  les   methodes  de
 multiplexage,  de  compression, l'acheminement  des  donnees  se  fait
 beaucoup  plus  rapidement.  De     plus  le  cout  du  materiel    de
 traitement diminue considerablement.

 33..44..  AAlloorrss ppoouurrqquuooii ll''aannaallooggiiqquuee ??

 Cette  question est   bien  entendu la premiere    que l'on  se   pose
 maintenant.       La   reponse    tient      en   quelques     mots  :
 essentiellement    pour  des   raisons  financieres.    Lorsque    les
 ordinateurs    sont      organises   en    petits    groupes   fermes,
 l'infrastructure a    mettre en  place   pour les  relier   est   bien
 sur   numerique.  Mais des  lors  que les communications s'etablissent
 sur    de    grandes    distances,     elles     doivent    empreinter
 l'infrastructure  existante,  qui est  analogique. L'evolution se fait
 lentement  vers  le   tout  numerique,   Numeris  en  est    l'exemple
 prometteur.

 33..55..  DDee ll''aannaallooggiiqquuee aauu nnuummeerriiqquuee eett rreecciipprrooqquueemmeenntt

 Puisqu'il  faut   s'adapter  a   un  monde   fait  de    numerique  et
 d'analogique,   il faut savoir   passer   de l'un  a   l'autre.  C'est
 essentiellement  ce  qui  va   se  passer  avec  les  modems.  Faisons
 d'abord   un  point  rapide  sur  les  methodes  de  conversion  entre
 l'analogique et le numerique.

 33..55..11..  DDee ll''aannaallooggiiqquuee aauu nnuummeerriiqquuee

 L'information  de depart est  representee par un signal qui, si  on le
 transforme en tensions  electriques,  peut  prendre  une  infinite  de
 valeurs  (dans  un   intervalle  fini,  heureusement  !)   entre  deux
 instants.  Pour le  transcrire  dans un  monde fait d'un nombre limite
 de  niveaux  significatifs,  il   faut  le  coder. Un des principes de
 codage   les   plus   simples   consiste  a    prelever  a  intervalle
 regulier    la  valeur  de   la    tension,  puis de    la representer
 en          binaire   sur  7    ou      8      bits.   Le  prelevement
 est        usuellement         appele  _e_c_h_a_n_t_i_l_l_o_n_n_a_g_e et la frequence
 d'echantillonnage correspond   au   nombre  d'echantillons    preleves
 par  seconde.     Un     codeur-decodeur         preleve    en general
 8000 echantillons par seconde.

 33..55..22..  DDuu nnuummeerriiqquuee aa ll''aannaallooggiiqquuee

 A  l'inverse,   la  transformation d'une   information  numerique   en
 analogique  consiste  a moduler un signal de base en fonction de cette
 information. C'est le role du modulateur-demodulateur (modem).

 Considerons maintenant ce signal de   base.  S'agissant  d'un   signal
 analogique,  c'est   donc  une   sinusoide   dont  la  frequence  peut
 varier, dans  le   cas qui  nous interesse,   de 1000  a  2000  hertz.
 C'est  la porteuse. La modulation  de ce signal va consister ensuite a
 en  faire    varier    un  ou  plusieurs  parametres  :     la  pphhaassee,
 ll''aammpplliittuuddee ou la ffrreeqquueennccee.

 La   modulation  d'amplitude  consiste  a modifier  l'amplitude  de la
 porteuse, selon   l'information binaire a transmettre.    Par  exemple
 une valeur de l'amplitude est attribuee au 0 et une autre au 1.

 La modulation de frequence correspond a la meme notion, mais ici   les
 deux  valeurs   sont  representees   par  des frequences  differentes.

 Enfin,  la  modulation de  phase, consiste a faire  varier la phase de
 la porteuse, de 45, 135, 225 ou 315 degres par exemple.

 La  rraappiiddiittee   ddee   mmoodduullaattiioonn  caracterise  la  vitesse a    laquelle
 ces    changements     s'effectuent.      C'est     la caracteristique
 essentielle  qui permet  de definir la  bande passante.

 Arretons-nous la un instant  pour evoquer  maintenant  la  notion   de
 debit.   Il  est  en effet facile  d'imaginer pouvoir faire varier  un
 signal a  volonte,  mais  ce serait  ne  pas tenir compte de certaines
 caracteristiques   physiques   des   supports  qui  nous  contraignent
 fortement.

 33..66..  DDeess bbiittss eett ddeess ddeebbiittss

 Une des valeurs caracteristique des supports  de transmission  est  le
 debit   maximum  qu'ils  peuvent  supporter.   Comment  s'empecher  de
 comparer   un support  a  une   route.     Le  nombre   maximum     de
 vehicules   qu'une  autoroute est capable  de  supporter par heure est
 tres         superieur     a     celui     d'une route  departementale
 (meme   si      vous n'aimez   pas les    routes departementales, mais
 ceci est une autre histoire ...).

 En ce qui concerne les  supports de transmission, leur  debit  maximum
 est directement lie a la largeur de la bande passante.  Chose promise,
 chose  due, pas trop  de  mathematiques ici.  Mais  il  est impossible
 de  ne   pas   parler   de   deux    valeurs fondamentales  qui   vont
 permettre de  comprendre ce qui se passe  avec les modems : ce sont le
 ddeebbiitt bbiinnaaiirree mmaaxxiimmuumm et la ccaappaacciittee ddee ttrraannssmmiissssiioonn mmaaxxiimmaallee.
 33..66..11..  LLee ddeebbiitt bbiinnaaiirree mmaaxxiimmuumm

 Sur un canal  de  transmission  dont  la  bande   passante est  B,  il
 est  montre       qu'un    signal        peut     etre     entierement
 reconstitue a l'arrivee, si on  le transmet en prenant 2B echantillons
 par seconde.  Le debit maximum s'ecrit alors :

              Dmax = 2B

 Si,  de  plus,  le  signal  peut  prendre   plus   de   deux   valeurs
 significatives, la formule se generalise en :

              Dmax = 2B log  V
                           2

 ou   VV correspond   au   nombre de   niveaux significatifs  (ou etats)
 que peut prendre  le signal : c'est sa vvaalleennccee. Par exemple,  V=4   si
 le  signal peut   prendre les  valeurs   +10 volts, +5 volts, -5 volts
 et -10 volts.

 Ceci    pour  vous  montrer     qu'en   theorie,   sur   une     ligne
 telephonique  dont  la  bande   passante est de 3000   hertz, le debit
 maximum est de 6000 bits/s avec deux niveaux significatifs (un pour le
 0,  un  pour    le  1), 12000  bits/s  avec quatre niveaux,  etc.   Le
 debit maximum est theoriquement infini.

 33..66..22..  LLaa ccaappaacciittee ddee ttrraannssmmiissssiioonn mmaaxxiimmaallee

 Un  des  inconvenients supplementaires des   supports est   le  bbrruuiitt.
 Or  la quantite de bruit  presente sur une ligne s'exprime par rapport
 a  la  puissance  utile  du  signal  transmis  :  c'est  le    rraappppoorrtt
 ssiiggnnaall//bbrruuiitt.   Plus   ce    rapport   est  grand, meilleure   est  la
 qualite.    La   capacite   de  transmission  maximale     est     une
 fonction      de     ce   rapport.     Pour  une   ligne telephonique,
 cette  capacite  maximale atteint  30000 bits/s.  Cela  signifie  bien
 que sur ces  lignes oonn nnee ppeeuutt ttrraannssmmeettttrree aa pplluuss  ddee 3300000000 bbiittss//ss (--
 C'est bien une capacite maximale physique,    a   ne  pas    confondre
 avec   des   debits  logiques  apres compression  de donnees.--) quels
 que soient la valence et  la frequence du signal.   C'est une   limite
 au debit binaire maximum.

 44..  LLee mmooddeemm

 Le   role du  modem  est  d'adapter   les signaux  rectangulaires   de
 donnees, que le reseau  telephonique  ne  peut  pas  transmettre  tels
 quels, en signaux transmissibles par ce reseau.

 Il a en fait deux fonctions :

 +o   un   role d'aaddaappttaattiioonn dduu   ssiiggnnaall aux  lignes du  reseau utilise,
    c'est-a-dire        de  modulation      et      de demodulation ;

 +o   un role de ddiiaalloogguuee avec l'equipement informatique auquel  il  est
    relie.

 Il  tient  donc  exactement  le meme role fonctionnel qu'une couche de
 communication  (TCP,  par  exemple).    Il   possede   une   iinntteerrffaaccee
 permettant  un  dialogue  avec un utilisateur se  trouvant a un niveau
 superieur.   Ici  il  s'agit d'une   interface  physique  (y   compris
 electrique).  Il  communique avec  une  entite paire (un  autre modem)
 selon un pprroottooccoollee.

 La structure interne d'un modem est decrite ci-dessous :

 +-----+      +--------+         +-------------+       +----------------+
 |  J  +----->| codeur +-------> |  modulateur +------>|                |
 |  O  |      +--------+         +-------------+       |                |
 |  N  |                                               |                |
 |  C  |                                               | transformateur |
 |  T  |                                               |                |
 |  I  |                                               |     ligne      |
 |  O  |      +----------+       +--------------+      |                |
 |  N  |<-----+ decodeur |<------+ demodulateur |<-----|                |
 +-----+      +----------+       +--------------+      +----------------+

 Les parametres caracterisant un modem sont :

 +o   le _d_e_b_i_t _d_'_i_n_f_o_r_m_a_t_i_o_n en bits/s ;

 +o   le _m_o_d_e _d_e _t_r_a_n_s_m_i_s_s_i_o_n : synchrone ou asynchrone ;

 +o    le  _s_u_p_p_o_r_t  _d_e   _t_r_a_n_s_m_i_s_s_i_o_n  _u_t_i_l_i_s_e   :   reseau   ou   ligne
    specialisee ;

 +o   le _m_o_d_e _d_e _c_o_u_p_l_a_g_e a  la ligne : electrique ou acoustique.

 Nous  aborderons  assez rapidement l'ensemble de ces parametres, selon
 l'utilisation que nous aurons a en faire.  La notion de debit  devrait
 maintenant etre assimilee.

 Penchons-nous   rapidement   sur  les  modes    et  les  supports   de
 transmission utilises.  Voyons   ensuite   plus     precisement     le
 role  d'adaptation du signal du modem, puis le dialogue qui met en jeu
 la jonction et la ligne.

 Commencons par definir un vocabulaire commun.

 44..11..  VVooccaabbuullaaiirree

 Un   aavviiss   est  une    recommandation   edictee  par  l'U.I.T  (Union
 Internationale       des      Telecommunications),        organisation
 intergouvernementale competente en telecommunications.  Les  avis  ont
 valeur de norme au sein de l'Europe, puisque les organismes de Telecom
 nationaux  ont   encore      le   monopole.  Les recommandations  sont
 issues      de  travaux   de      diverses   commissions  d'etudes  et
 sont adoptees lors    des   assemblees pleinieres  (delai de   l'ordre
 de  neuf mois,  etant donne l'evolution  rapide des technologies).  La
 section ``Etat  actuel  de la normalisation'' decrit   les  differents
 avis actuellement en vigueur.

 Dans     sa      normalisation,     l'U.I.T     definit   l'equipement
 informatique  comme   un   EETTTTDD  (_E_q_u_i_p_e_m_e_n_t  _T_e_r_m_i_n_a_l   _d_e _T_r_a_i_t_e_m_e_n_t
 _d_e  _D_o_n_n_e_e_s)  et      le  modem comme  un   EETTCCDD (_E_q_u_i_p_e_m_e_n_t  _T_e_r_m_i_n_a_l
 _d_e _C_i_r_c_u_i_t  _d_e _D_o_n_n_e_e_s).  La connexion  d'un equipement   informatique
 a    un   modem,   par exemple,     est realisee   par l'intermediaire
 d'une jjoonnccttiioonn ou iinntteerrffaaccee.

 On     appelle   half-duplex  (bidirectionnel  a   l'alternat),    une
 transmission   s'effectuant  dans un seul sens   a la fois. On appelle
 full duplex (bidirectionnel   simultane), une   transmission   pouvant
 s'effectuer   dans les deux sens    en meme temps.  Ces  transmissions
 peuvent avoir lieu indifferemment sur liaison 2 ou 4 fils.

 44..22..  LLee mmooddee ddee ttrraannssmmiissssiioonn

 Une  transmission de  donnee   est toujours liee  au   facteur  temps.
 Dans  les    transmissions   en   serie   qui  constituent la majorite
 des transmissions, l'emetteur et le recepteur doivent  travailler    a
 la  meme cadence.      Dans  le mode ssyynncchhrroonnee, ils sont cales sur  le
 meme rythme grace a des signaux d'horloge  emis avant la transmission.
 Dans   le   mode        aassyynncchhrroonnee,     l'horloge      du    recepteur
 n'est declenchee puis arretee que sur reception de bits de debut et de
 fin.   On  les  appelle  bits  de ssttaarrtt et de ssttoopp.  Ce mode, bien que
 moins  performant,  est  le  plus  utilise  actuellement   dans    les
 communications a travers  le  reseau public.

 44..33..  LLee ssuuppppoorrtt ddee ttrraannssmmiissssiioonn oouu lliiggnnee

 Un modem est utilisable principalement sur deux types de supports : le
 rreesseeaauu           ccoommmmuuttee     ou       la       lliiggnnee ssppeecciiaalliisseeee.  Sur
 chaque   type    de   support,  les    liaisons peuvent etre a deux ou
 quatre fils.

 Dans  le   cas qui  nous interesse,  le  modem est   relie  au  reseau
 telephonique    commute   et  la  liaison  est  a   deux  fils.   Nous
 l'utilisons soit  en half duplex,  soit en full duplex   selon  l'avis
 (voir definition  de  ce mot au paragraphe ``Vocabulaire''.

 A  ce   propos,  reflechissons un  peu sur l'utilisation qui est faite
 actuellement  du     Reseau       Telephonique Commute  (appele  aussi
 RTC).   Nous l'utilisons bien souvent en full  duplex sur liaison deux
 fils  (avis V.32 ou V.34).  Lorsqu'on  utilise  des  lignes  a  quatre
 fils,  il est facile d'imaginer que l'on consacre deux fils a   chaque
 sens   de   transmission.   Pour    chaque    sens,  considerant   les
 vitesses  de  modulations maximales  possibles,  on concoit qu'il faut
 combiner  plusieurs   types de modulations   pour obtenir  des  debits
 maintenant courants de l'ordre de 28800 bits/s.

 Or le RTC n'utilise  que ddeeuuxx fils.    Pour travailler en  full-duplex
 a des debits relativement   faibles (en   fait   jusqu'a  l'avis   V22
 bis),   il   etait possible de   partager   la  bande de frequence  en
 deux moities, une pour    chaque  sens.   Avec  les  debits   employes
 actuellement ce   n'est plus possible.  Pour travailler en full-duplex
 a d'importants debits, il  est  fait  appel    a   des     algorithmes
 complexes     dits  "de  suppression d'echo" (proche    et  lointain).
 Imaginez  le   travail  a realiser :    chaque  modem    recoit    les
 donnees  envoyees  par  le  distant  melangees  a ses propres donnees.
 Le      tout est   encore     pollue    par   de l'echo  !    Et  pour
 compliquer  le  tout, tout ceci varie dans le temps, et bien sur d'une
 communication a l'autre.

 Vous  comprendrez donc qu'avec  une  telle utilisation   du  RTC,  les
 modems  soient  continuellement soumis a  rude epreuve pour ce qui est
 de    la  correction,   ceci   pouvant    conduire   a   des    debits
 variables selon le moment.

 44..44..  LL''aaddaappttaattiioonn dduu ssiiggnnaall

 Nous  avons  vu aux  sections precedentes ce qu'etaient une modulation
 et un debit. Rassemblons maintenant un peu toutes  ces  idees.    Bien
 souvent,  c'est   sur   ce  point delicat que  les esprits se perdent.
 Nous avons vu que la rapidite de modulation  est  une  caracteristique
 essentielle   de la bande  passante.  Plus cette rapidite  est grande,
 plus    la  bande  passante   demandee  est  large.   Sur  le   reseau
 telephonique, la bande maximale officielle est  de 3100 hertz  (300  a
 3400  Hz). Dans  les centraux telephoniques modernes, elle va  jusqu'a
 3500 Hz.

 Pour   bien   comprendre   le  mecanisme de  l'adaptation   du signal,
 imaginez  maintenant que  nous  disposions  d'un  appareil  electrique
 capable d'emettre quatre niveaux de tensions possibles.

 Les donnees a transmettre sont  quant a elles toujours presentees sous
 forme  d'un  flot ininterrompu (ou  presque) d'informations  binaires.

 L'idee  serait  de regrouper  les bits deux par deux  et de les  faire
 passer par  ce dispositif, afin d'obtenir  en  sortie  le   niveau  de
 tension  correspondant.  Un tel  signal en sortie  est dit de  vvaalleennccee
 4.  Plus generalement,  la    valence  d'un  signal    est  le  nombre
 d'etats   qu'il   peut prendre.  Cette   transformation du  signal est
 appelee ccooddaaggee.

 Afin  d'adapter  ce  signal   de   sortie   au  support,     il   faut
 maintenant   le  moduler, par exemple en  choisissant  d'effectuer une
 modulation de  phase.  Etant   donnee  sa  valence,     nous     avons
 besoin    de   quatre decalages de phase.

 A  chaque   fois  que  ddeeuuxx   bits   se  presentent,  il est  possible
 d'effectuer  uunnee    modulation.  A  l'autre   bout,  l'equipement  est
 capable  de     regenerer   deux  bits.  Le     debit (en bbiittss//ss)  est
 donc   bien   double de  la    vitesse   de  modulation  (exprimee  en
 bbaauuddss).

 44..44..11..  EExxeemmppllee

 Vous  configurez  un  modem a 4800  bits par  seconde (V.27 ter).  Que
 va-t-il  se   passer    ?    Selon   cette  norme,    le    modem   va
 realiser   une modulation de phase differentielle octovalente.  Il  va
 donc  regrouper les  bits    par  trois  (ttrriibbiittss)   pour  moduler  le
 signal.   La  vitesse de modulation est donc de 1600 bauds et le debit
 de 4800 bits/seconde.   Pour   obtenir un debit   de 9600   bits   par
 seconde, il faudra combiner  un autre type de  modulation.  La section
 ``Debits   et      modulations''       presente    l'essentiel     des
 modulations utilisees dans  les differentes normes actuelles.

 44..44..22..  RReessuummee

 L'adaptation du signal peut se faire de trois manieres :

 +o   par une simple modulation appropriee ;

 +o   par un codage puis une modulation ;

 +o    par  un  simple  codage.  Ce  type  d'adaptation est present dans
    certains modems dits "bande de base" qui  transmettent  directement
    ce  code  sur  la  ligne.   Ce  ne sont pas ceux que nous utilisons
    couramment.

 La  rapidite de modulation s'exprime  en  bbaauuddss.  Elle  correspond  au
 nombre  de  changements d'etats du signal  par seconde sur la ligne de
 transmission.   Une  rapidite de _b  bauds ne  correspond pas forcement
 a  _b  bits/s  sur   la   ligne.   Une  configuration  binaire  (un  ou
 plusieurs bits selon  la  valence) correspond a  un etat du signal.

 44..55..  LLee ddiiaalloogguuee

 Interessons-nous   maintenant   au    dialogue    entre   l'equipement
 informatique  et la   jonction.

 44..55..11..  LLaa jjoonnccttiioonn sseerriiee

 La jonction  specifie les caracteristiques mecaniques, electriques  et
 fonctionnelles  des signaux.   Bien   entendu   ces  jonctions    sont
 normalisees     (voir  plus loin     les  tableaux recapitulatifs  sur
 l'etat  actuel   de   la   normalisation)  et   celle    qui      nous
 interesse    plus  particulierement   est referencee sous  le nom V.24
 par l'U.I.T, sensiblement equivalente     de   la      norme   RS-232C
 definie    par l'E.I.A (-- Electronic Industries Association.--)

 Voici  une  description  des  signaux   de  l'interface  V.24 les plus
 couramment utilises :

 +------+-----------+-----------+--------+------+--------------------------------+
 | Code | No broche | No broche | RS-232 | V.24 |        Signification           |
 |      | ISO  2110 |   DB 9    |        |      |                                |
 +------+-----------+-----------+--------+------+--------------------------------+
 | 101  |     1     |           |  PG    | TP   |  Terre de protection           |
 |      |           |           |        |      |                                |
 | 102  |     7     |    5      |  SG    | TS   |  Terre de signalisation        |
 +------+-----------+-----------+--------+------+--------------------------------+
 | 103  |     2     |    3      |  TD    | ED   |  Emission de donnees           |
 |      |           |           |        |      |                                |
 | 104  |     3     |    2      |  RD    | RD   |  Reception de donnees          |
 +------+-----------+-----------+--------+------+--------------------------------+
 | 105  |     4     |    7      |  RTS   | DPE  |  Demande pour emettre          |
 |      |           |           |        |      |                                |
 | 106  |     5     |    8      |  CTS   | PAE  |  Pret a emettre                |
 |      |           |           |        |      |                                |
 | 107  |     6     |    6      |  DSR   | PDP  |  Poste de donnees pret         |
 |      |           |           |        |      |                                |
 | 108  |    20     |    4      |  DTR   | TDP  |  Terminal de donnees pret      |
 |      |           |           |        |      |                                |
 | 109  |     8     |    1      |  DCD   | DS   |  Detection du signal de ligne  |
 +------+-----------+-----------+--------+------+--------------------------------+
 | 125  |    22     |    9      |  RI    | IA   |  Indicateur d'appel            |
 +------+-----------+-----------+--------+------+--------------------------------+

 Brochage des prises cote soudures :

            +-----------+          +---------------------------------------+
            | 5 4 3 2 1 |          | 13 12 11 10 9  8  7  6  5  4  3  2  1 |
            \  9 8 7 6  /          \  25 24 23 22 21 20 19 18 17 16 15 14  /
             `---------'            `-------------------------------------'
                DB 9                              ISO IS 2110

 44..55..22..  LLee ddiiaalloogguuee pprroopprreemmeenntt ddiitt

 Prenons  deux  postes   de  travail  equipes   d'un  modem  chacun  et
 souhaitant communiquer.

 Nous  passerons   rapidement sur le fait  que les  equipements doivent
 etre relies  a la masse. Ceci  est  realise  grace   au  circuit  101.
 D'autre    part,  il   est  necessaire   de  definir  une reference de
 signalisation : c'est le role du circuit 102.

 Des  sa  mise sous  tension, l'ETTD  presente  un etat logique "1" sur
 le   circuit   108  : _T_e_r_m_i_n_a_l  _d_e  _D_o_n_n_e_e_s _P_r_e_t  (DTR).  Des  la mise
 sous  tension de l'ETCD, celui-ci presente  l'etat  _P_o_s_t_e  _d_e  _D_o_n_n_e_e_s
 _P_r_e_t  (DSR) correspondant a un etat   logique "1" sur le circuit  107,
 assurant ainsi que le modem est sous tension et connecte a la ligne.

 L'ETTD  ayant des donnees  a emettre, demande a emettre.   Il presente
 sur    la   jonction   l'information _D_e_m_a_n_d_e _P_o_u_r _E_m_e_t_t_r_e (RTS) sur le
 circuit 105.  Ceci valide le modulateur de l'ETCD qui emet  alors  une
 porteuse.
 Du   cote  appele,  l'ETCD   detecte la presence de la porteuse sur la
 ligne de transmission et  le signale a l'ETTD sur le  circuit   109  :
 _D_e_t_e_c_t_i_o_n  _d_e  _s_i_g_n_a_l (porteuse).  Les circuits 107  et    108  auront
 ete   initialises  au prealable comme ci-dessus.

 L'ETTD ayant signale son  intention  d'emettre  sur  le   circuit  105
 recoit   en  reponse  peu   de   temps apres  le signal _P_r_e_t _A _E_m_e_t_t_r_e
 (CTS) sur le circuit 106.

 Les donnees peuvent ensuite circuler via les circuits 103 et 104.

 44..55..33..  LLee ccoonnttrroollee ddee fflluuxx

 Lorsqu'un   emetteur emet de facon systematique plus de   donnees  que
 le  recepteur  ne peut en accepter, il se pose alors   un probleme qui
 ne   peut  etre resolu que grace au mecanisme de _c_o_n_t_r_o_l_e _d_e _f_l_u_x.

 Le controle de flux peut etre de differents types :

    llooggiicciieell
       Le modem  insere des caracteres   de controles dans  le flot  de
       donnees   circulant  entre l'ETCD et l'ETTD :  XXOOFFFF pour arreter
       l'envoi et XXOONN pour le reprendre.

    mmaatteerriieell
       Generalement appele CCRRTTSSCCTTSS,  il  met  en  oeuvre  l'emploi  des
       circuits  105   (RTS) et 106  (CTS).  Ce symbole  est en fait le
       nom donne       a la  constante     du     fichier   d'inclusion
       _t_e_r_m_i_o_s_._h.

 Le   fonctionnement   du  controle   de  flux   materiel   pendant  la
 transmission peut se resumer ainsi :

 Avant d'emettre,  le terminal doit lever  son signal RTS  (Request  To
 Send).    A   partir  de ce moment,  le   modem,  s'il  est  en mesure
 d'emettre,  leve  le signal CTS  (Clear  To Send). Lorsque  le  buffer
 du  modem  est    plein,   le   modem   descend   CTS.  Il le  remonte
 ensuite.  Dans l'autre sens de transmission,   lorsque  le  buffer  du
 terminal est plein, le terminal descend RTS.

 44..66..  LLaa ccoonnnneexxiioonn aauu rreesseeaauu tteelleepphhoonniiqquuee ccoommmmuuttee

 Maintenant,  plusieurs   questions se posent, et   j'imagine que parmi
 celles que vous vous posez il y a :

 +o   et sous Linux, le fonctionnement est-il identique ?

 +o   a   quel  moment   le   numero   du    correspondant a   t-il  ete
    compose ?

 +o   mon modem est configure en reception/emission, comment ca marche ?

 +o  etc.

 Nous allons maintenant tenter de repondre.

 Eclaircissons un peu  les choses.   Le dialogue  que  nous  venons  de
 voir  concerne  le  dialogue _t_h_e_o_r_i_q_u_e ETTD-ETCD  et ETCD-ETTD sans se
 soucier  d'eventuelles  contraintes  pouvant   provenir   du   systeme
 d'exploitation.   Il  est toujours vrai.  Neanmoins,  il ne suffit pas
 forcement pour  qu'une communication soit  etablie, notamment  via  le
 RTC.   Nous  allons  etudier  ce   fonctionnement  point  par point en
 prenant un bon systeme d'exploitation  (LLiinnuuxx,  mais  ce  n'est  qu'un
 exemple),   un     bon      port   serie    et   du   courage.    Vous
 continuez ?

 Tout d'abord, nous avons vu qu'une communication  commencait  toujours
 par  le   premier  echange DTR/DSR,   ou si vous preferez 108/107.  La
 montee  du circuit 108 est realisee  sous Linux   a   l'ouverture   du
 port  serie  (ex.    fopen ("/dev/ttyS0", ...)).   Cela se  voit  tres
 bien  sur un  modem externe, le voyant TR est allume.  La  reponse  du
 modem  par  le  circuit  107   est   un   peu   differente.   Dans  la
 section   ``Le  dialogue   proprement  dit'',  pour  des   raisons  de
 simplicite,   nous supposions que   le modem repondait  sur le circuit
 107    apres     un   delai   tres      bref,  c'est-a-dire      qu'il
 etait      instantanement connecte a la ligne.

 Cette  reponse  est   maintenant  conditionnee par  la connexion a  la
 ligne    via le    reseau telephonique commute.

 44..66..11..  IInniittiiaalliissaattiioonn dduu mmooddeemm

 En  general,  c'est juste   apres l'ouverture  du port  serie  que  le
 modem est  initialise.  Cela se fait grace aux commandes   AT que nous
 ne   detaillerons pas.  Simplement, ces commandes sont envoyees     au
 modem  (par   l'intermediaire   du  circuit  103)  (ex.   write sur le
 _d_e_s_c_r_i_p_t_e_u_r  _d_e _f_i_c_h_i_e_r du peripherique)   et     interpretees     par
 lui, lorsque :

 +o   le circuit 108 est ferme (etat "1") ;

 +o   le modem est en mode commande.

 44..66..22..  EEttaabblliisssseemmeenntt ddee llaa ccoonnnneexxiioonn

 L'une     des  commandes  d'initialisation     permet  la  composition
 d'un numero.   Le  modem decroche  (eh  oui,  ce  terme  barbare  veut
 dire  que  suite a la fermeture du relais, le central local envoie une
 tonalite a  la frequence  de 440 Hz :-)) puis compose le numero.

 Sur  l'equipement  distant,   le circuit   108 est   egalement  monte.
 Le   modem  appele  detecte l'appel.  Le signal d'indication   d'appel
 (circuit 125)  est   utilise en interne  pour memoriser  l'appel,   le
 modem   realisant  donc  lui-meme  la  connexion  a  la  ligne.  Cette
 memorisation est maintenue  par DTR (jusqu'a deconnexion).

 A  ce  moment  precis,  le   modem  appele  repond   en  validant  son
 modulateur qui emet la porteuse.

 Le  modem  appelant,   en   etat  de   decrochage  et  attendant    la
 porteuse,    met      son    emetteur      en       service.     Apres
 negociation,   le circuit  109  (DCD)  est alors valide.    Du cote de
 l'appele,  le circuit 109 est  egalement valide.  La prise de  contact
 est   terminee.   Les  circuits  107 (DSR) des deux  modems sont alors
 montes en reponse a DTR (asservissement des circuits 107-109).

 44..66..33..  RReeppoonnssee aauuttoommaattiiqquuee oouu mmaannuueellllee

 Du cote de l'appele, il est  possible  de  mettre  le  modem  en  mode
 reponse   automatique.   Il  repond alors  tout   seul a l'appel apres
 quelques sonneries. Le registre  S0  des  modems  est     generalement
 reserve   a   la configuration de ce mode.

 Lorsque    ce   registre  contient  la valeur   0,  (ATS0=0), le modem
 est en reponse manuelle. Sous Linux,  c'est   assez  souvent  l'option
 choisie,  et  c'est le  logiciel (notamment _g_e_t_t_y)  qui  gere l'appel.
 En effet   les   gestionnaires,     de   _t_t_y   tels      que     _g_e_t_t_y
 preferent  prendre en  charge la connexion : ce n'est pas au  modem  a
 repondre    a un  appel  mais   a _g_e_t_t_y  lui  meme.  Lorsque le  modem
 recoit  un appel, il emet simplement  le  message RRIINNGG  (bien sur,  si
 le mode verbeux est bien  configure : ATE1).  Sur ce, _g_e_t_t_y envoie  la
 commande ATA qui valide le mode reponse et la porteuse.

 Enfin,   a   la fermeture  du  port,  les  signaux 108/107 repassent a
 l'etat 00.

 Voici a titre d'information l'organigramme d'un appel :

                      +---------------------------------------+
                      | Detection de l'invitation a numeroter |
                      +---------------------------------------+
                                          |
                            +--------------------------+
                            |       Numerotation       |
                            +--------------------------+
                                          |
                         +---------------------------------+
                         | Emission de la tonalite d'appel |
                         +---------------------------------+
                                          |
                            +--------------------------+
          +------- NON -----|   Detection de tonalite  |- OUI
          |                 +--------------------------+    |
          |                    |                            |
          |         +--------------+            +--------------------------+
          |         |   Occupe     |            |     Retour d'appel       |
          |         +--------------+            +--------------------------+
          |           |                                     |
          |           |                         +--------------------------+
          +------------------------- NON -------| Detection arret tonalite |
          |           |                         +--------------------------+
          |           |                                     |
          |           |                      +-------------------------------+
          |           |    +-------- NON ----| Detection tonalite de reponse |
          |           |    |                 +-------------------------------+
          |           |    |                                |
          |           |    |                   +--------------------------+
          |           |    |            +-NON--| Prise de contact aboutie |
          |           |    |            |      +--------------------------+
          |           |    | NO         |                   |
  TIMEOUT |     BUSY  |    | ANSWER     | TIMEOUT           | CONNECT
     +--------------------------+   +-------------+  +--------------------------+
     |    Appel infructueux     |   | Deconnexion |  | Transmission de donnees  |
     +--------------------------+   +-------------+  +--------------------------+

 44..66..44..  DDeeccoonnnneexxiioonn

 Plusieurs methodes permettent de mettre fin a un appel :

 +o  MMooddee  ccoommmmaannddee.. Mettre  le modem en   mode commande et  envoyer  la
    chaine +++ATH ;

 +o  PPeerrttee ddee  ppoorrtteeuussee.. L'une   des causes est  la  deconnexion normale
    de l'autre modem ;

 +o  OOuuvveerrttuurree  dduu  cciirrccuuiitt  110088  (DTR).  C'est    la  methode  la  plus
    couramment employee.

 55..  EEttaatt aaccttuueell ddee llaa nnoorrmmaalliissaattiioonn

 Voici un tableau resumant l'etat actuel de la normalisation concernant
 les classes de debits supportes.

      +----------+--------------------------------------------+
      |   Avis   |              Signification                 |
      +----------+--------------------------------------------+
      | V.21     | Utilisation sur RTC a 300 bits/s           |
      |          |                                            |
      | V.22     | Utilisation a 1200 bits/s sur RTC 2 fils   |
      |          | full duplex                                |
      | V.22 bis | idem a 2400 bits/s                         |
      |          |                                            |
      | V.23     | Utilisation a 600 ou 1200 bits/s sur RTC   |
      |          | ou 1200/75 bits/s                          |
      |          |                                            |
      | V.25 et  | Composition automatique du numero et/ou    |
      | V.25 bis | reponse automatique a un appel sur RTC     |
      |          |                                            |
      | V.26     | Utilisation a 2400 bits/s sur LS(*) 4 fils |
      |          |                                            |
      | V.26 bis | Modem 2400 bits/s (1200 en repli) sur RTC  |
      |          |                                            |
      | V.27     | Modem 4800 bits/s pour LS                  |
      |          |                                            |
      | V.27 bis | Modem 4800 bits/s (2400 en repli) pour     |
      |          | donnees synchrones                         |
      |          |                                            |
      | V.27 ter | Modem 4800 bits/s (2400 en repli) meme     |
      |          | modulation mais pour le RTC                |
      |          |                                            |
      | V.29     | Modem 9600 bits/s pour LS                  |
      |          |                                            |
      | V.32     | 9600 bits/s (4800 en repli) duplex 2 fils  |
      |          | sur RTC                                    |
      |          |                                            |
      | V.32 bis | 14400 bits/s                               |
      |          |                                            |
      | V.34     | 28800 bits/s sur RTC                       |
      |          |                                            |
      | V.42     | Correction d'erreurs LAP-M et MNP4         |
      |          |                                            |
      | V.42 bis | Correction d'erreurs +                     |
      |          | compression de donnees  MNP5               |
      |          |                                            |
      | V.54     | Normalise les boucles de tests             |
      +----------+--------------------------------------------+

      * LS = Ligne Specialisee

 55..11..  AA pprrooppooss dduu VV..4422 bbiiss

 Un  tout petit  mot a  propos de  la norme V.42  bis  qui   permet  la
 compression  de   donnees.   L'algorithme utilise un   dictionnaire de
 chaines de caracteres. Lorsqu'une  chaine  apparait,  un   _t_o_k_e_n   est
 transmis  qui   n'est   autre   que l'index de    cette chaine dans le
 dictionnaire. La longueur maximale d'une chaine ainsi  que  la  taille
 maximale  du dictionnaire sont  negociees au debut  de la   connexion.
 La norme  V.42 bis  autorise une longueur de  chaine  comprise entre 6
 et   250  caracteres.   La  taille minimale du dictionnaire est de 512
 entrees (soit 9 bits  pour  coder  le   rang  d'un  entree).  Le  taux
 maximal de compression dans ce cas est de :

 250 * 8 : 9 = 222.2

 soit  un  taux  de   222:1.  Un  bon taux de  compression est plus une
 affaire de taille memoire et d'efficacite en fonction  des  donnees  a
 coder qu'une affaire de puissance de processeur.

 55..22..  DDeebbiittss eett mmoodduullaattiioonnss

      Merci   a  Christian    'naddy'   Weisgerber  de   son  aide
      pour  la redaction de cette partie.

 Voici  rassembles  dans  les  tableaux  suivants  les  debits  et  les
 modulations  correspondantes   utilises  dans les  principales  normes
 pour liaisons telephoniques a 2 fils.  Les  _n_o_r_m_e_s  qui  ne  sont  pas
 citees  ci-apres  sont    peu  utilisees  voire   oubliees aujourd'hui
 (liaisons  a  4 fils, V.32 terbo, Bell xxx, V.FC, ZyXEL,  HST,  PEP...
 certaines n'etant d'ailleurs pas de veritables normes).

 +------------------------------------------------------------------------+
 | Avis             b/s             bauds        modulation     remarques |
 +------------------------------------------------------------------------+
 | V.21             300             300            FSK                    |
 |                                                                        |
 | V.22            1200             600            DPSK                   |
 |                                                                        |
 | V.22bis         2400             600            QAM                    |
 |                                                                        |
 | V.23            1200            1200            FSK                    |
 |                  600             600            FSK                    |
 |                   75              75            FSK             [1]    |
 |                                                                        |
 | V.32            9600            2400            QAM+TCM                |
 |                 9600            2400            QAM                    |
 |                 4800            2400            QAM                    |
 |                                                                        |
 | V.32bis        14400            2400            QAM+TCM                |
 |                12000            2400            QAM+TCM                |
 |                 9600            2400            QAM+TCM                |
 |                 7200            2400            QAM+TCM                |
 |                 4800            2400            QAM                    |
 |                                                                        |
 | V.34            (voir tableau suivant)                                 |
 |                                                                        |
 | V.27ter         4800            1600            DPSK                   |
 |                 2400            1200            DPSK                   |
 |                                                                        |
 | V.29            9600            2400            QAM                    |
 |                 7200            2400            QAM                    |
 |                 4800            2400            QAM             [2]    |
 |                                                                        |
 | V.17           14400            2400            QAM+TCM                |
 |                12000            2400            QAM+TCM                |
 |                 9600            2400            QAM+TCM                |
 |                 7200            2400            QAM+TCM                |
 +------------------------------------------------------------------------+

 [1] Bande de retour.
 [2] Pas utilise pour fax.

 V.21, V.22, V.22bis, V.32, V.32bis, V.34 sont "full duplex".
 V.27ter, V.29, V.17 sont "half duplex" et utilises pour fax.
 V.23 est "half duplex" et asymetrique.

 Les modulations:

 FSK :  Frequency Shift Keying           (modulation de frequence)
 DPSK : Differential Phase Shift Keying  (modulation de phase differentielle)
 QAM :  Quadrature Amplitude Modulation  (modulation d'amplitude en quadrature)
 TCM :  Trellis Coded Modulation         (modulation codee en treillis)

 Dans  le cas de l'avis V.34, les choses  se compliquent un peu.  Cette
 norme a des vitesses  de modulation obligatoires   (2400,  3000,  3200
 bauds)  et  des  vitesses  facultatives  (2743, 2800, 3429 bauds).  La
 modulation est toujours de  type  QAM    (modulation   d'amplitude  en
 quadrature)   avec    une  des  trois  methodes  TCM   choisie  par le
 recepteur.   Les  combinaisons suivantes sont possibles :

 +-------------------------------------------------------------+
 |         2400    2743    2800    3000    3200    3429  bauds |
 |  b/s                                                        |
 +-------------------------------------------------------------+
 |  2400     x                                                 |
 |  4800     x       x       x       x       x       x         |
 |  7200     x       x       x       x       x       x         |
 |  9600     x       x       x       x       x       x         |
 | 12000     x       x       x       x       x       x         |
 | 14400     x       x       x       x       x       x         |
 | 16800     x       x       x       x       x       x         |
 | 19200     x       x       x       x       x       x         |
 | 21600     x       x       x       x       x       x         |
 | 24000             x       x       x       x       x         |
 | 26400                             x       x       x         |
 | 28800                                     x       x         |
 +-------------------------------------------------------------+

 66..  FFooiirree AAuuxx QQuueessttiioonnss

    CCoommmmeenntt ppuuiiss--jjee cchhaannggeerr  ffaacciilleemmeenntt  uunn ppaarraammeettrree ddee   mmoonn ppoorrtt
       serie  ?"   La  meilleure  facon  de  le   faire,   aussi   bien
       manuellement   que   dans   un   script  est  de   rediriger  le
       peripherique sur l'entree standard de _s_t_t_y. Exemple :

                 stty crtscts < /dev/ttyS0

    activera le   controle de flux   materiel   sur   le  premier  port
    serie utilise en entree.

                 stty -a < /dev/cua0

    affichera    tous    les   parametres    du   premier    port serie
    utilise en sortie.

    PPoouurrqquuooii ffaauutt--iill ccoonnffiigguurreerr CCRRTTSSCCTTSS ssuurr llee ppoorrtt sseerriiee ??
       Pour gerer le controle de  flux  materiel.   Ce  n'est  pas  une
       obligation,  c'est  une  garantie que l'echange de donnees entre
       ETTD et ETCD se  fera dans les  meilleures conditions.  Il  faut
       bien entendu que  votre modem puisse    le faire.  Contrairement
       a   une idee  recue, si vous  mettez l'option  CRTSCTS  dans  le
       fichier  /etc/gettydefs,  il  n'est  pas necessaire  d'effectuer
       en plus  un stty  crtscts </dev/porta la fois  dans  la   partie
       _i_n_i_t_i_a_l_e  et  _f_i_n_a_l_e de gettydefs.  Notez qu'il s'agit bien d'un
       controle  de   flux  local,  et  en  aucun  cas  il    ne   faut
       s'inquieter de  ce  que fait  le correspondant dans  ce domaine.

    JJee  rreemmaarrqquuee  qquuee  aaggeettttyy mmooddiiffiiee lleess ddrrooiittss dduu ffiicchhiieerr //ddeevv//ttttyySS00,,
       bizarre  non ?"  Ca  peut  effectivement paraitre  bizarre.   Il
       s'agit  en   fait   de  l'etablissement        d'une     _s_e_s_s_i_o_n
       d'utilisation       du  peripherique.  Celui-ci  prend alors les
       droits du "chef" de session (_s_e_s_s_i_o_n  _l_e_a_d_e_r)  qui  se   protege
       ainsi des utilisations du meme tty par d'autres processus.

    AAuurraaiiss--jjee aacccceess aa mmoonn tteelleepphhoonnee ??
       Cette  question  a  ete reellement posee.  Si vous n'avez qu'une
       ligne telephonique, la reponse est non.  De plus, en  decrochant
       le  combine  telephonique,  vous   pertuberez la    ligne et  le
       modem  risque  fort  de   diminuer le debit (pour le remonter si
       tout va bien ensuite).

    LLoorrssqquuee  jjee mmee ccoonnnneeccttee cchheezz mmoonn  ffoouurrnniisssseeuurr,, ccoommmmeenntt  mmoonn aaddrreessssee
       IIPP
       est generee ?"  Cette question montre a l'evidence une confusion
       entre  toutes  les  notions  reseaux. Bien qu'elle ait ete posee
       suite a un probleme relatifs aux modems, la reponse  ne  devrait
       theoriquement        pas       se        trouver    dans      ce
       document.  Neanmoins,  le  chapitre  suivant  rappelle  quelques
       principes   de   base  des  empilements  protocolaires  afin  de
       clarifier un peu tout cela.

 77..  UUnn mmoott ssuurr lleess eemmppiilleemmeennttss pprroottooccoollaaiirreess ccoouurraammmmeenntt uuttiilliisseess

 Un  tel  titre pourrait  faire croire a une erreur  de mise en page ou
 de _c_o_p_i_e_r_-_c_o_l_l_e_r etant  donne  le sujet du  document. En fait, il n'en
 est rien.

 La connexion d'une machine a  un fournisseur d'acces a Internet met en
 jeu un ensemble de protocoles de communications  :  TCP,  UDP,     IP,
 SLIP,     PPP,     etc.     De   nombreux   utilisateurs    souhaitent
 realiser ce type   de connexion depuis   chez eux, via  un  modem   et
 rencontrent parfois quelques problemes de configuration.

 Il  est  evident   qu'il  est a la  fois difficile et inutile  de tout
 connaitre de ces protocoles.  Il faut vraiment  _e_t_r_e  _d_u  _m_e_t_i_e_r  pour
 bien  les  connaitre,  et  encore ! Cependant il semble raisonnable de
 penser  que la mise  en oeuvre de  telles connexions, sous  Linux  par
 exemple,  ne  peut se faire  dans de bonnes conditions sans un minimum
 de    connaissances      sur   l'architecture     de     communication
 utilisee.

 La lecture  du   forum _f_r_._c_o_m_p_._o_s_._l_i_n_u_x montre   parfois  une certaine
 confusion  dans toutes  les  fonctions   mises  en   oeuvre    et  qui
 engendrent inevitablement de mauvais parametrages.

 Les   quelques  schemas   qui suivent  donnent  une  idee de  la facon
 dont tous ces   _e_n_g_r_e_n_a_g_e_s  sont places pour   que "ca tourne" !

 77..11..  TTCCPP//UUDDPP//IIPP

 Ces sigles  sont tres frequemment utilises aujourd'hui et pour cause :
 ces  empilements de couches de  communications tendent a se repandre a
 vive allure.  C'est a l'origine un ensemble de  protocoles  developpes
 dans   le  cadre du projet ARPANET, cree par ARPA (aujourd'hui DARPA),
 l'agence pour les projets  de     recherche  avancee   du    Ministere
 de   la Defense des Etats-Unis.

 +o    TCP (--   Transmission     Control Protocol  --) est   une entite
    de   niveau  Transport   chargee  de  vehiculer   des  donnees   de
    maniere  fiable  entre  deux machines souhaitant dialoguer ;

 +o    UDP  (--   User  Datagram  Protocol--) est  une entite  de niveau
    Transport  chargee  de  vehiculer des  donnees entre deux  machines
    souhaitant dialoguer ;

 +o    IP  (--   Internet  Protocol--)  est une entite  de niveau Reseau
    chargee de  vehiculer des  donnees entre deux noeuds d'un reseau.

 77..22..  PPPPPP//SSLLIIPP

 PPP (-- Point-to-Point Protocol--) et  SLIP (--  Serial  Line    IP--)
 proposent   une    methode  d'encapsulation    des datagrammes  IP sur
 des liaisons   point a  point, par   exemple  les  lignes  asynchrones
 serie.   En  quelques   mots,  disons  que  SLIP est un protocole tres
 simple,  assez  ancien,  datant d'une  epoque ou  certains   problemes
 n'etaient   pas  aussi  importants  qu'aujourd'hui  :       adressage,
 identification   reciproque, detection    et    correction  d'erreurs,
 compression  (extrait   du RFC-1055).  PPP est  quant  a lui  beaucoup
 plus  complet et  c'est pourquoi il est generalement prefere  par  les
 connaisseurs.      Il    offre     toutes     ces     caracteristiques
 regroupees en trois sous-ensembles :

 +o   une methode d'encapsulation de type  HDLC sur circuit  commute  ou
    permanent, synchrone ou asynchrone ;

 +o    un  protocole LCP (Link  Control Protocol)  permettant d'etablir,
    de configurer et de tester une connexion ;

 +o    une    famille   de   protocoles   NCP        (Network    Control
    Protocols)      pour   l'etablissement   et  la  configuration  des
    protocoles reseaux.

 Pour  obtenir   de  plus  amples  renseignements,   vous  pouvez  vous
 reporter  aux  documents   concernant    ces   protocoles :   RRFFCC--11005555
 (SLIP), RRFFCC--11117711 et RRFFCC--11117722 (PPP) et le PPPPPP--HHOOWWTTOO.

 77..33..  MMiissee eenn ooeeuuvvrree

 +----------------+-------+ +--------+ +--------+ +------+ +-----+
 |  Applications  |  FTP  | | TELNET | |  SMTP  | | TFTP | | ... |
 +----------------+---+---+ +---+----+ +--------+ +--+---+ +-----+
                      |         |      |             |
 +----------------+---+---------+------++------------+-----+
 | Transport      |         TCP         |        UDP       |
 +----------------+---------------------+------------------+
 | Reseau         |                                        |
 |                |                    IP                  |
 |                |      _____         _____     ______    |
 | (interfaces)   |     / eth \       / ppp \   / slip \   |
 +----------------+-----------------^---------+------------+
 | Liaison        |       LLC       |   PPP   |   SLIP     |
 |                |       MAC       |         |            |
 +----------------+-------++--------+--------+-+-----------+
                          ||                 | |
 +----------------+-------++--------+--------+-+-----------+
 | Interfaces     |      LAN        |       V.24           | Fonctionnelle
 |                |  (non decrit)   |       V.28           | Electrique
 |                |                 |  ISO.2110 (25 br)    | Physique
 +----------------+-------++--------+--------+-+----------------+
                          ||                 | |
               Ethernet  +--+              +-+-+-+  Modem
               ==========|  |=====         |\     \-------
               Fddi      +--+              \ \_____\     /
                                            \|_0_0_|    ---------

 La mise en oeuvre de  tels protocoles se fait  toujours de bas en haut
 (des  couches  basses aux couches  hautes) puisque la demande  se fait
 de haut en bas. Prenons un exemple :

 Supposons  que  vous   souhaitiez faire   un  _f_t_p  de  chez vous   sur
 _f_t_p_._s_a_m_a_c_h_i_n_e_._f_r.    L'application     _f_t_p    demande a  TCP d'etablir
 une  connexion.  Pour   qu'elle  puisse  s'etablir,   PPP  doit   deja
 fonctionner. Pour que PPP fonctionne, le modem doit etre en ligne :

 +o    premiere    etape  :       etablissement      d'une communication
    entre  deux modems.  Cette  etape est supposee connue, maintenant ;

 +o     deuxieme     etape  :  mise   en      route   de     PPP,   avec
    eventuellement authentification ;

 +o    troisieme   etape  :   configuration      de    l'interface    IP
    correspondante.     Il   s'agit    en   general,   sous   Linux, de
    l'interface _p_p_p_0.   Une   adresse    IP   pouvant  provenir    soit
    d'une  configuration   locale,   soit   de   votre fournisseur, est
    affectee a l'interface.    Dans   ce  dernier   cas,  celui-ci   la
    fournit  lors de l'initialisation PPP.   Dans  les deux  cas, c'est
    le  demon PPP qui configure l'adresse de l'interface ;

 +o   quatrieme  etape  :   etablissement   d'une  connexion  TCP,  puis
    initialisation  de  _f_t_p.  A partir de la, si tout s'est bien passe,
    vous pouvez transferer vos fichiers.

 Vous pouvez    maintenant     imaginer   le     deroulement      d'une
 deconnexion.

 77..44..  LLeess ffiicchhiieerrss ddee ccoonnffiigguurraattiioonn

 77..44..11..  LLeess aapppplliiccaattiioonnss

 Vous  comprendrez  qu'il  est  difficile de decrire  ici l'emplacement
 des  fichiers de configuration  des  applications.   Prenez   soin  de
 lire   les   fichiers    README    ou       INSTALL     et  d'executer
 l'installation correctement.

 77..44..22..  LLeess ccoouucchheess ddee ccoommmmuunniiccaattiioonn :: TTCCPP//UUDDPP//IIPP

 Pour  une  configuration  standard   de  votre  machine,   vous  devez
 compiler  le noyau avec les options "reseau" suivantes :

      Networking support              y

      Network firewalls               n
      Network aliasing                n
      TCP/IP networking               y

      IP: forwarding/gatewaying       n
      IP: multicasting                n
      IP: accounting                  n
      IP: PC/TCP compatibility mode   n
      IP: Reverse ARP                 n
      IP: Disable Path MTU Discovery
              (normally enabled)      n
      IP: Disable NAGLE algorithm
              (normally enabled)      n
      IP: Drop source routed frames   y
      IP: Allow large windows
              (not recommended
              if <16Mb of memory)     n

      The IPX protocol                n

 Le fichier _r_e_s_o_l_v_._c_o_n_f doit contenir :

      domain <domaine de votre fournisseur>
      nameserver <adresse IP du serveur de nom de votre fournisseur>

 88..  LLee MMiinniitteell

 Bien  que ce merveilleux appareil commence  a prendre de l'age, il est
 difficile de  ne pas en parler  un peu, notamment  en raison  de   ses
 specificites.  Pourquoi ne pas envisager  en effet de faire un serveur
 Minitel chez vous ou tout simplement  de  l'utiliser  comme  terminal.
 Nous  nous    contenterons ici  d'en donner quelques  caracteristiques
 interessantes dans le cadre d'une utilisation avec Linux.
 Les STUM 1B (-- Specifications  Techniques  d'Utilisation  du  Minitel
 1B.--)  decrivent         l'ensemble         des  caracteristiques des
 divers modules du Minitel 1B :

 +o  l'ecran ;

 +o  le clavier ;

 +o  le modem ;

 +o  la prise peri-informatique. (-- A ce   propos,  je  tiens  a  votre
    disposition    un   schema  electronique  d'un   montage permettant
    l'adaptation RS232-Minitel.  Il met en  oeuvre  le  circuit  MAX232
    permettant une parfaite adaptation des tensions.--)

 88..11..  LL''eeccrraann

 Le   minitel  1B  est  capable    d'afficher   24 lignes   de   40  ou
 80 caracteres et 8 couleurs (ou niveaux de gris).

 Le mode 40  colonnes correspond   au  standard _V_i_d_e_o_t_e_x, le mode    80
 colonnes    au   standard    _t_e_l_e_-_i_n_f_o_r_m_a_t_i_q_u_e.     C'est  en  general
 celui-ci que  l'on       utilisera s'il sert       de  terminal.   Les
 sequences  de  touches  permettant de  passer d'un mode a l'autre sont
 indiquees dans le  tableau suivant dans lequel on retrouvera egalement
 quelques sequences utiles :

      +-------------+----------------------------------+
      |   Touches   |          Signification           |
      +-------------+----------------------------------+
      | <Fcnt T> A  | Mode tele-informatique americain |
      |             | (pas d'accents)                  |
      | <Fcnt T> F  | Mode tele-informatique francais  |
      |             | accents (codage particulier)     |
      | <Fcnt T> V  | Mode Videotex                    |
      +-------------+----------------------------------+
      | <Fcnt T> E  | Valide/invalide l'echo local     |
      |             |                                  |
      | <Fcnt E> P  | Mode page (retour haut de page   |
      |             | en fin d'ecran)                  |
      | <Fcnt E> R  | Mode rouleau (par defaut)        |
      |             |                                  |
      | <Fcnt C> M  | Verouillage minuscules (defaut   |
      |             | en mode tele-informatique)       |
      +-------------+----------------------------------+

 88..22..  LLee ccllaavviieerr

 Il s'agit d'un  clavier _A_Z_E_R_T_Y permettant  la saisie de la plupart des
 caracteres courants pour un  terminal.  Il est notamment  possible  de
 verouiller   les   minuscules     grace  a   la   sequence <Fcnt C> M.
 A noter une   correspondance,  dans  le   mode  tele-informatique,  de
 certaines touches :

      +-------------+-----------------------------------+
      |   Touches   | Correspondance terminal classique |
      +-------------+-----------------------------------+
      | Sommaire    |   PF1                             |
      |             |                                   |
      | Annulation  |   PF2                             |
      |             |                                   |
      | Retour      |   PF3                             |
      |             |                                   |
      | Repetition  |   PF4                             |
      |             |                                   |
      | Envoi       |   Enter (Entree)                  |
      +-------------+-----------------------------------+

 La    touche   _E_n_t_r_e_e   correspond egalement a  la sequence de touches
 <Ctrl J>

 88..33..  LLee mmooddeemm

 Le modem du minitel  permet des debits  de 300 a 4800 ou  9600  bits/s
 (--   Tous  les   modeles  de   minitel  n'autorisent  pas   tous  ces
 debits.--) .  Il  est associe a un coupleur travaillant sur 7 bits  de
 donnees,  un  bit  de parite paire, un bit   de   _s_t_a_r_t   et  un   bit
 de   _s_t_o_p,   soit   10  bits par caractere.  Le tableau suivant  donne
 les  sequences  de  touches  permettant de  configurer   le    modem a
 ces    differents debits.

      +-------------+--------------+
      |   Touches   |    Debit     |
      +-------------+--------------+
      | <Fcnt P> 3  |  300 bits/s  |
      |             |              |
      | <Fcnt P> 1  | 1200 bits/s  |
      |             |              |
      | <Fcnt P> 4  | 4800 bits/s  |
      |             |              |
      | <Fcnt P> 9  | 9600 bits/s  |
      +-------------+--------------+

 En  standard  V.23, il  est possible  de   _r_e_t_o_u_r_n_e_r le modem (vitesse
 emission-reception)     avec      la          sequence <Fcnt M> R.

 88..44..  UUttiilliissaattiioonn dduu MMiinniitteell ccoommmmee ssiimmppllee tteerrmmiinnaall

 D'apres  les  conseils  avises de  _P_i_e_r_r_e _F_i_c_h_e_u_x, voici un exemple de
 configuration permettant de connecter un Minitel :

 88..44..11..  CCoonnffiigguurraattiioonn ddee ggeettttyy

 Une methode simple consiste  a compiler un _g_e_t_t_y un  peu  particulier.
 Les       sources      se      trouvent       dans    le     paquetage
 ggeettttyy__ppss--22..00..77hh,   en  general  disponible par  _f_t_p (ftp.ibp.fr)  sous
 //ppuubb//lliinnuuxx//ttssxx--1111//ssoouurrcceess//ssbbiinn.

 Il s'agit ensuite de modifier le fichier _t_u_n_e_._h comme suit :

      #ifdef V23
      #define DEF_CFL  (CS7|PARENB)                   /* Pour connexion V.23 */
      #else
      #define DEF_CFL  (CS8)                  /* default word-len/parity */
      #endif /* V23 */

 Puis  de   compiler  l'ensemble avec  l'option  -DV23 vous donnant  un
 fichier executable  _u_u_g_e_t_t_y que  vous  pourrez  renommer  _u_u_g_e_t_t_y___v_2_3.
 Ensuite,  il       faut    ajouter  quelques  entrees       au fichier
 _/_e_t_c_/_g_e_t_t_y_d_e_f_s :

      #
      # Pour la connexion V.23
      #
      9600v23# B9600 CS7 PARENB -PARODD CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S login: #4800v23

      4800v23# B4800 CS7 PARENB -PARODD CLOCAL # B4800 SANE -ISTRIP CLOCAL #@S login: #2400v23

      2400v23# B2400 CS7 PARENB -PARODD CLOCAL # B2400 SANE -ISTRIP CLOCAL #@S login: #1200v23

      1200v23# B1200 CS7 PARENB -PARODD CLOCAL # B1200 SANE -ISTRIP CLOCAL #@S login: #1200v23

 Enfin, vous   modifiez  le fichier   _i_n_i_t_t_a_b   de   facon  a  demarrer
 _u_u_g_e_t_t_y___v_2_3 comme dans l'exemple ci-dessous :

      d4:45:respawn:/sbin/uugetty_v23 ttyS1 9600v23

 Une    solution    differente    consisterait  a   seulement  modifier
 _/_e_t_c_/_g_e_t_t_y_d_e_f_s.   La methode precedente    ne  fait,  finalement,  que
 redefinir l'option   SANE qui ne comporte  pas moins de 16 parametres,
 en modifiant  l'un d'eux : DEF_CFL.   Il  est     possible     de   la
 redefinir   par    configuration   en la remplacant par l'ensemble des
 parametres,  sauf CS8 que   l'on  remplacera    par       CS7  PARENB.
 Les         entrees        de _/_e_t_c_/_g_e_t_t_y_d_e_f_s    sont  a       modifier
 comme l'exemple ci-apres :

 #
 # Pour la connexion V.23
 #
 9600v23# B9600 CS7 PARENB -PARODD CLOCAL # B9600 ISTRIP CS7 PARENB -PARODD (*)
  CLOCAL BRKINT IGNPAR ICRNL IXON IXANY OPOST ONLCR CREAD HUPCL ISIG ICANON (*)
  ECHO ECHOE ECHOK #@S login: #4800v23

 (*) a continuer sur la meme ligne

 [reste du ficher]

 Bien que cela puisse  paraitre lourd,  il  est  preferable  d'utiliser
 cette  methode.   On   a  trop tendance a recompiler des  sources pour
 les  adapter  a    trente-six  situations  alors  qu'ils   fournissent
 generalement   un  niveau  de  configurabilite extremement  complet et
 puissant.   C'est  le   cas   ici.  Les  sources  de  _g_e_t_t_y  prevoient
 d'analyser tous ces parametres, et cela fonctionne parfaitement.

 88..55..  UUttiilliissaattiioonn dduu MMiinniitteell ppoouurr uunn aacccceess ddiissttaanntt

 Deux cas peuvent se presenter :

 +o    soit  vous   souhaitez   dedier    votre ligne aux   seuls  acces
    Minitel,  auquel  cas    il    est   souhaitable   d'envisager   de
    configurer  votre  systeme  comme  ci-dessus.   Il  faut simplement
    modifier   le   fichier  _/_e_t_c_/_g_e_t_t_y_d_e_f_s  en   remplacant   l'option
    CLOCAL  par   CRTSCTS  dans   la       premiere   partie   (options
    initiales)    et    par  CRTSCTS  HUPCL  dans  le  partie  suivante
    (options finales) ;

 +o   soit vous  souhaitez seulement _p_o_u_v_o_i_r  utiliser le  Minitel comme
    terminal     distant,        sans     que      ce       soit     un
    acces  dedie.   Dans  ce   cas  il  n'y   a rien  a faire sur votre
    systeme   (rien   de plus   que   la     configuration   que   vous
    avez  deja   du    mettre en  place :   getty,  gettydefs, inittab,
    ...).   Sur le  Minitel,  il sera   preferable  de   le  configurer
    en           mode       tele-informatique (<Fcnt T> F).

 99..  UUnn mmooddeemm ppaarrttiiccuulliieerr:: llee ccaabbllee nnuullll--mmooddeemm

 Un  cable _n_u_l_l_-_m_o_d_e_m est tout simplement un cable inverseur permettant
 de    relier         ensemble   deux   ETTD   sans     passer      par
 l'intermediaire      de  deux ETCD.   Il   est  conforme aux normes du
 C.C.I.T.T., c'est a dire qu'il simule  les  differents  signaux.   Son
 seul     inconvenient     est     que   la   liaison    ainsi realisee
 ne peut depasser 250 metres.

 Voici le schema du cable a realiser :

 +------+-------+---------------------------------+------+-------+
 | Code | V.24  |     Cablage (No de broche)      | Code | V.24  |
 +------+-------+---------------------------------+------+-------+
 | 101  |  TP   |    1 o-------------------o 1    | 101  |  TP   |
 |      |       |                                 |      |       |
 | 102  |  TS   |    7 o-------------------o 7    | 102  |  TS   |
 |      |       |                                 |      |       |
 | 103  |  ED   |    2 o-------------------o 3    | 104  |  RD   |
 |      |       |                                 |      |       |
 | 104  |  RD   |    3 o-------------------o 2    | 103  |  ED   |
 |      |       |                                 |      |       |
 | 105  |  DPE  |    4 o-|               |-o 4    | 105  |  DPE  |
 |      |       |        |               |        |      |       |
 | 106  |  PAE  |    5 o-|               |-o 5    | 106  |  PAE  |
 |      |       |        \        ,------'        |      |       |
 |      |       |         -------(---------o 8    | 109  |  DS   |
 | 109  |  DS   |    8 o---------'                |      |       |
 |      |       |                                 |      |       |
 | 107  |  PDP  |    6 o------------------o 20    | 108  |  TDP  |
 |      |       |                                 |      |       |
 | 108  |  TDP  |   20 o------------------o 6     | 107  |  PDP  |
 |      |       |                                 |      |       |
 +------+-------+---------------------------------+------+-------+

 1100..  CChhooiixx dd''uunn mmooddeemm

 Si vous etes sur le  point d'investir dans un modem,  il y a au  moins
 trois facteurs determinants pour vous :

    LLee ccoouutt
       Ce   facteur  est  generalement   le plus important.  Vous  vous
       etes  certainement fixe  une     somme que  vous   ne    pourrez
       depasser  que    dans  des limites raisonnables   (moins  de 500
       francs   environ)    et          moyennant      un       service
       supplementaire     non negligeable. On trouve a l'heure actuelle
       d'excellents modems dans une gamme de prix de l'ordre de 1000 FF
       a 2000 FF.

    LLee ddeebbiitt
       La   reponse   pourrait    etre    vague   :   tout  depend   de
       l'utilisation. En fait, il semble que la plupart d'entre vous se
       connectera  a  Internet et la plupart des fournisseurs proposent
       desormais des acces a   28800   bits/s.  Il  semble  raisonnable
       d'investir  dans    un  tel    modem, d'autant  plus    que leur
       cout  est  rarement superieur    a    2000 FF.     Vous   pouvez
       d'ailleurs  esperer  gagner  un  peu sur les temps de connexions
       lors de transferts de fichiers ou de navigation "WEB".

    LLee ttyyppee ddee mmooddeemm :: iinntteerrnnee oouu eexxtteerrnnee
       Pour repondre rapidement, on pourrait  dire que le modem interne
       a,  en   France,  tous  les   defauts.    Hors  de  France, il a
       beaucoup de defauts. C'est un  avis,  il  vaut ce   qu'il  vaut,
       mais  il  semble partage par bon nombre d'utilisateurs :

 +o    le   premier  defaut  est  qu'il  est   interne et   occupe  donc
    un emplacement sur  le _b_u_s. En  externe  le  modem   est   de  plus
    facilement transportable d'un PC a un autre, par exemple ;

 +o    le  deuxieme est que notre operateur national demande a ce  qu'un
    numero   soit  "brule"   lorsqu'un  appel  echoue  plusieurs  fois.
    Une  fois le numero brule, le    modem   refuse de  le    composer.
    La  seule   solution  est  alors d'eteindre   le   modem    et   de
    recommencer.     Au      fait,    comment  eteignez-vous  un  modem
    interne ?

 +o   le troisieme est plutot lie au confort.   La  plupart  des  modems
    externes  possedent    en   effet  des   voyants   indiquant l'etat
    de  la  connexion.  Il   est  agreable   de   constater  rapidement
    que    la    connexion   est   perdue  ou   que  le  transfert  est
    perturbe.

 Le  seul inconvenient du  modem   externe est qu'il  occupe  un   port
 serie. De  plus il vaut mieux  posseder  un port serie rapide  de type
 16550A (les  16550  sont  bogues).  Notez  cependant  que  les   ports
 serie  de type   8250   (les  anciens) supportent   des debits pouvant
 aller jusqu'a 57600   bits/s.  Contrairement a  ce que l'on dit,   ils
 ne  sont  pas  si   mauvais   que  cela.  Qui est deja    monte      a
 des   debits superieurs ?

 1111..  QQuueellqquueess cchhiiffffrreess

 Beaucoup  d'utilisateurs   se posent des  questions   sur   ce  qu'ils
 peuvent  attendre  de leur  modem et du cout  des communications. Bien
 souvent, la facture surprend tous les deux mois.

 1111..11..  DDeebbiitt rreeeell

 Un petit tableau vaut  mieux  qu'un  long  discours,   voici  quelques
 valeurs  de  debits  reels.  Evidemment,   il  n'est pas tenu   compte
 des problemes  de   lignes,   de   disponibilite  des    serveurs  qui
 reduisent  parfois    les taux de  transfert effectifs.   De plus, les
 valeurs sont indiquees  sans  compression  logicielle.  En   cas    de
 compression, il faudra multiplier les  valeurs par au   plus 2, ce qui
 est deja optimiste.

 Il  faut   savoir  qu'en  transmission   asynchrone 8    bits,   etant
 donnes   les   bits de ssttaarrtt et  de  ssttoopp,  le rendement est d'environ
 80%.

      +---------------+--------------+-------------------+
      | Debit affiche |  Debit reel  |  Ko/s  | Mo/heure |
      +---------------+--------------+--------+----------+
      |   9600 b/s    |   7680 b/s   |  0,96  |   3,4    |
      |               |              |        |          |
      |  14400 b/s    |  11520 b/s   |  1,44  |   5,2    |
      |               |              |        |          |
      |  19200 b/s    |  15360 b/s   |  1,92  |   6,9    |
      |               |              |        |          |
      |  21600 b/s    |  17280 b/s   |  2,16  |   7,8    |
      |               |              |        |          |
      |  26400 b/s    |  21120 b/s   |  2,64  |   9,5    |
      |               |              |        |          |
      |  28800 b/s    |  23040 b/s   |  2,88  |  10,4    |
      +---------------+--------------+--------+----------+

 1111..22..  CCoouuttss ddee ccoonnnneexxiioonn

 Le meilleur  indicateur  pour ce genre   de calcul est  bien   entendu
 France   Telecom.    Essayons    ici  de  degager    quelques   grands
 chiffres.   Les  prix  sont  indiquees    pour  un  appel   a Paris :

      +---------------+---------------------------------+
      |               |  Prix / heure de connexion      |
      +---------------+---------------------------------+
      | Appel de :    | Tarif plein |   50%   |   65%   |
      +---------------+-----------------------+---------+
      |     Paris     |   14,84 F   |  7,42 F |  5,20 F |
      |               |             |         |         |
      |  Proche       |   22,26 F   | 11,13 F |  7,79 F |
      |  Banlieue     |             |         |         |
      |               |             |         |         |
      |  Province     |  127,20 F   | 63,60 F | 44,52 F |
      +---------------+---------------------------------+

 Prix de l'unite Telecom : 0,742 FF.

 1122..  EEnnvviissaaggeerr dd''eeccrriirree ddeess aapppplliiccaattiioonnss

 Vous   avez   surement      plein    d'idees            d'applications
 interessantes,   mais    envisager  de  controler   une jonction serie
 vous fait peur ? Voici quelques petites indications.

 1122..11..  EEtt ssii cc''eettaaiitt ssiimmppllee ??

 Sous  Unix, donc sous  Linux,  les seuls  objets manipules   lors  des
 entrees/sorties  sont les _f_i_c_h_i_e_r_s.   (Tiens, au fait, on aurait peut-
 etre du commencer par la ! Bon, vous le saviez deja, ce n'est  pas  un
 cours  Unix).  La jonction serie n'echappe  pas a  cette   regle et le
 pilote vous la presente  ainsi. Ici, il s'agit d'un  (ou  plutot  deux
 comme  on le verra  plus loin) fichier particulier, bien  sur, puisque
 se cache derriere un  pilote (_d_r_i_v_e_r)  en   mode  caractere,  mais  la
 facon  de     realiser  les   entrees   sorties est    la meme : ooppeenn,,
 rreeaadd,,    wwrriittee,, iiooccttll,, cclloossee.   Il y   a quand meme  quelques  petites
 choses a savoir.

 Le pilote serie  s'est enregistre,  a l'initialisation du noyau, comme
 un _t_t_y.  Il  est donc gere comme  un  tty  classique.      Il  apporte
 bien   entendu quelques  caracteristiques supplementaires  que    nous
 verrons    rapidement   dans    la  section  concernant   la  commande
 _i_o_c_t_l.  Toujours   est-il  que si vous  savez gerer  un _t_t_y sous  Unix
 (commande _s_t_t_y), vous saurez sans probleme gerer ce pilote.

 1122..11..11..  ooppeenn,, cclloossee

 La   methode  d'ouverture  et  de   fermeture   d'un  port  serie  est
 classique.   Neanmoins  un  mecanisme  particulier se   cache derriere
 la primitive  ooppeenn  qui est rapidement  decrit a la  section  ``Appels
 entrants (Dial-in) et appels sortants (Call-out) sous Linux''.

 1122..11..22..  rreeaadd,, wwrriittee

 Rien a signaler de particulier.

 1122..11..33..  iiooccttll

 Le  controle  de   tout   systeme   d'entree/sortie  se   fait avec la
 commande systeme _i_o_c_t_l. Elle est souvent masquee par des commandes  de
 haut  niveau  (setserial,   stty, modemstat,  ...), mais elle est leur
 moteur.

 Selon     que vous souhaitez    vous   adresser  aux   fonctionnalites
 classiques d'un _t_t_y   ou aux fonctions specialisees   du pilote serie,
 vous  utiliserez  deux   sous-ensembles   de   commandes  differentes.
 Vous  les  retrouverez   dans  le  fichier  a inclure _l_i_n_u_x_/_t_e_r_m_i_o_s_._h.
 Decrivons-les      rapidement       (on deborde un tout petit  peu  du
 sujet :-)) :

    TTCCGGEETTSS -- TTCCSSEETTSS
       et   quelques  derives  avec WAIT,  FLUSH... Elles permettent de
       recuperer (resp. positionner) les attributs  standard  _t_t_y  dans
       une structure _t_e_r_m_i_o_s (voir le fichier _l_i_n_u_x_/_t_e_r_m_i_o_s_._h)

    TTIIOOCCSSTTTTYY -- TTIIOOCCNNOOTTTTYY
       permettent     de   definir   (resp.   annuler)    une   session
       d'utilisation du _t_t_y. Ceci est visible car, entre autres choses,
       une   consequence  est  le  changement  des  droits  du  fichier
       correspondant

         Avant:
                 crw-rw-rw-   1 root     tty        4,  64 Nov 26 20:47 ttyS0
         Apres:
                 crw--w--w-   1 root     root       4,  64 Nov 26 20:49 ttyS0

    TTCCFFLLSSHH eett ccoommppaaggnniiee
       positionnement d'indicateurs (voir la commande stty)

    TTIIOOCCGGSSEERRIIAALL -- TTIIOOCCSSSSEERRIIAALL
       permettent de recuperer (resp.   positionner)  les  informations
       generales   dans   une    (resp.   a  partir  d'une)   structure
       _s_e_r_i_a_l___s_t_r_u_c_t (voir le fichier _l_i_n_u_x_/_s_e_r_i_a_l_._h) : le type de port
       serie,  la  ligne,  le port, l'irq le port utilise... ni plus ni
       moins ce que fait _s_e_t_s_e_r_i_a_l.

    TTIIOOCCMMGGEETT -- TTIIOOCCMMSSEETT
       permettent de recuperer (resp.   positionner)  les  informations
       plus  specifiques  a    la  jonction proprement  dite  (dans  un
       entier,   sous  forme   de   bits      positionnes   selon   que
       l'indicateur correspondant est vrai ou faux) :

      +-------------------------------------------------------------------------------------------+
      |   //     DSR      RNG       CAR        CTS        //   //    RTS            DTR         //|
      |  //   (Data Set  (Ring)  (Carrier)  (Clear To    //   //   (Request   (Data Terminal   // |
      | //      Ready)                        Send)     //   //     To Send)      Ready)      //  |
      +------+----------+-------+----------+-----------+----+----+-----------+---------------+----+
       31   9     8         7        6          5        4    3        2          1            0

 1122..22..   AAppppeellss  eennttrraannttss  ((DDiiaall--iinn)) eett aappppeellss ssoorrttaannttss ((CCaallll--oouutt)) ssoouuss
 LLiinnuuxx

 1122..22..11..  IInnttrroodduuccttiioonn

 Le  pilote   serie du  noyau  de  Linux  propose  de   gerer  un  meme
 port  serie a la  fois pour les appels entrants et pour   les   appels
 sortants    exploitant   ainsi   pleinement      leur  caracteristique
 bi-directionnelle.    Il    offre  donc     a l'utilisateur deux types
 de fichiers :

 +o   /dev/ttyS<n> :      sont     generalement utilises en entree ;

 +o   /dev/cua<n> :    sont       generalement utilises en sortie.

 1122..22..22..  GGeessttiioonn

 Chaque port serie est  enregistre deux fois  aupres du  gerant  _t_t_y  :
 une  fois   en  mode  _e_n_t_r_e_e  (ttyS, majeur 4) et  une  fois en   mode
 _s_o_r_t_i_e (cua,   majeur 5).   Voyons    rapidement   comment  le  pilote
 gere ensuite les "deux" ports :

 +o   les ports series  /dev/cua sont geres en mode _n_o_n_-_b_l_o_q_u_a_n_t.   Leur
    ouverture   n'est   possible     que   si   la    ligne   /dev/ttyS
    correspondante  n'est    pas   ouverte   et   active   (sinon errno
    retourne EBUSY) ;

 +o   les ports series /dev/ttyS sont geres en mode  bloquant  ou   non-
    bloquant,   c'est  donc   un peu  plus  complique.  Si l'indicateur
    CLOCAL  est   positionne,    l'ouverture   en   mode  bbllooqquuaanntt  est
    effective   si  la  ligne   /dev/cua   est  libre.  Si l'indicateur
    CLOCAL n'est pas  positionne,   elle  est  effective  si  les  deux
    conditions suivantes sont reunies :

 +o   la   ligne est  libre      (le /dev/cua correspondant    n'est pas
    utilise),

 +o   la porteuse (circuit 109) a ete detectee.

    Dans ce mode et pendant que   l'ouverture  est  bloquee,  la  ligne
    n'est  pas    occupee,  ce qui signifie    qu'une  application peut
    toujours effectuer  un  appel  sortant.  Si   le    port  est    en
    cours   de fermeture, l'ouverture echoue  (EAGAIN).

    L'ouverture  en  mode non-bloquant, quant a elle,  est effective si
    le port    n'est   pas   deja  ouvert   et     actif  (sinon  errno
    retourne   EBUSY) (--     Les  applications  utilisent     de  plus
    le mecanisme des fichiers de  verrouillage  garantissant  l'unicite
    d'utilisation de la ressource.--)

 C'est   le mode qu'utilisent  beaucoup  d'applications comme _g_e_t_t_y qui
 souhaitent  dans un premier temps  initialiser la ligne  (pour  eviter
 des       instabilites           liees           aux        connexions
 precedentes)       voire       ensuite         pour        initialiser
 l'equipement (modem).   Elles ne s'interessent qu'au fait que la ligne
 soit occupee, en fermeture ou libre.  Si  celle-ci  n'est  pas  libre,
 l'application  se termine  et le mecanisme du _r_e_s_p_a_w_n se charge de les
 relancer.

 Pour la  gestion de la  connexion proprement dite, l'application _g_e_t_t_y
 (pour  prendre  un  exemple  courant)  ouvre  la   ligne, soit en mode
 bloquant si vous laissez   le  modem  en  reponse  automatique,   soit
 en  mode  non-bloquant  si  vous  souhaitez qu'elle gere activement la
 connexion.  Elle est alors en attente bloquante en lecture (sur _r_e_a_d).

 1133..  QQuueellqquueess aapppplliiccaattiioonnss iinntteerreessssaanntteess

 1133..11..  UUnn nnuummeerrootteeuurr

 Cette  idee    va  faire plaisir  a _X_a_v_i_e_r _C_A_Z_I_N : c'est la sienne. Le
 mieux est de le laisser parler :

      En fait,  je trouverais tres  utile  de cliquer  sur un bou-
      ton   pour  appeler une personne retrouvee dans  une base de
      donnees   par  exemple.   Surtout  si  elle  se  trouve    a
      l'etranger  (minimum  12 chiffres depuis ici).  Donc, ce que
      j'aimerais,  ce sont les renseignements necessaires au  pro-
      grammeur pour pouvoir  construire  un frontal qui demande au
      modem de composer le   numero choisi,  puis  affiche un mes-
      sage   (si    le   poste    n'est   pas occupe)   du   style
      "Le telephone   sonne,  prenez  le  combine".   Ces  petites
      choses  toutes simples demandent  de comprendre ce  que sig-
      nifie  prendre la ligne et la relacher, pour un modem.

 Excellent  exercice.   Alors  avec  tout    ce  que   l'on   vient  de
 dire, au travail :-).  En laissant de cote la partie base de  donnees,
 l'algorithme  a  utiliser  correspond  a _l_'_o_r_g_a_n_i_g_r_a_m_m_e    _d_'_u_n  _a_p_p_e_l
 donne      a   titre d'information au chapitre ``Le modem'', auquel il
 faut rajouter :

 +o  au     prealable,           ouvrir      le        port        serie
    (/dev/cua<n>),   le   configurer.  Le    mieux   est   de   prendre
    exemple sur ce que fait _g_e_t_t_y ;
 +o  envoyer    ensuite     les    commandes    AT      d'initialisation
    puis   de  numerotation (utiliser la fonction chat()) qui fait ceci
    tres bien ;

 +o  enfin se mettre en  lecture  sur  le  port  afin  de  detecter  les
    messages  emis   par  le  modem. Le seul   probleme  ici est  qu'il
    sera difficile    d'attendre   certains  d'entre-eux   (NO  ANSWER,
    TIMEOUT)  etant  donne   qu'il  faut  prevenir l'utilisateur  qu'il
    peut decrocher.

 Par contre les   messages NO DIALTONE (modem  pas  branche),  et  BUSY
 sont    fort  interessants  et  permettent   d'informer  l'utilisateur
 immediatement.

 1133..22..  mmooddeemmssttaatt eett ccoommppaaggnniiee

 Vous  trouverez sur les   _s_e_r_v_e_u_r_s   _f_t_p  habituels  quelques   petits
 programmes  permettant  d'afficher l'etat de la jonction. Vous pourrez
 vous   interesser  particulierement  a  la  facon  de  recuperer   les
 informations (plutot que sur l'interface utilisateur qui est l'exemple
 meme de ce qu'il ne faut pas faire).

      /pub/linux/sunsite/system/Serial/modem-stats-1.0.tar.gz
      /pub/linux/sunsite/system/Serial/statserial-1.1.tar.gz
      /pub/linux/sunsite/system/Serial/modemstat-0.2.tgz

 Un bon point pour statserial  aussi simple que bien presente, en  mode
 texte.

 1133..33..  UUnn ddeetteecctteeuurr ddee ssiiggnnaall 110099 ((CCDD))

 Lu dans _c_o_m_p_._o_s_._l_i_n_u_x_._d_e_v_e_l_o_p_m_e_n_t_._a_p_p_s cette demande

      Existe-t-il  un  utilitaire   que    je    pourrais utiliser
      dans      un  _s_h_e_l_l_-_s_c_r_i_p_t    et   retournant  une   valeur,
      disons  1,  si le  signal _D_e_t_e_c_t_i_o_n _d_e _p_o_r_t_e_u_s_e est monte et
      0 sinon ?

 Le message ne   dit pas quel en  serait   l'usage  mais  peu   importe
 c'est un excellent exemple d'utilitaire assez facile a realiser. Voici
 d'ailleurs un exemple de code source possible :

 ______________________________________________________________________
 ------------------------- debut de carrier.c -------------------------
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
 #include <termios.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include <string.h>
 #include <stdlib.h>
 #include <errno.h>
 #include <stdio.h>

 main(int argc, char *argv[])
 {
   char *whoami, *device;
   int fd;
   int modem_bits;

   whoami = (whoami = strrchr(argv[0], '/')) ? whoami + 1 : argv[0];

   if (argc != 2) {
     fprintf(stderr, "Usage: %s device-file\n", whoami);
     return(EXIT_FAILURE);
   }

   device = argv[1];

   if ((fd = open(device, O_RDONLY | O_NDELAY)) < 0) {
     fprintf(stderr, "%s: error opening \"%s\": %s\n", whoami, device,
             strerror(errno));
     return(EXIT_FAILURE);
   }

   if (ioctl(fd, TIOCMGET, & modem_bits) < 0) {
     fprintf(stderr, "%s: error getting modem line statuses for \"%s\": %s\n",
             whoami, device, strerror(errno));
     return(EXIT_FAILURE);
   }

   if (modem_bits & TIOCM_CAR) {
     printf("1\n");
     return(EXIT_SUCCESS);
   }

   printf("0\n");
   return(EXIT_FAILURE);
 }
 ------------------------- fin de carrier.c -------------------------
 ______________________________________________________________________

 On pourra  ensuite   l'utiliser   dans   un  _s_h_e_l_l   de   la   maniere
 suivante :

 ______________________________________________________________________
 if [ `carrier /dev/modem` -eq 1 ]; then
         ... choses a faire si la porteuse est detectee ...
 else
         ... choses a faire s'il n'y a pas de porteuse ...
 fi
 ______________________________________________________________________

 1144..  RReemmeerrcciieemmeennttss

 Ce  document  n'aurait  vu le  jour sans  un   certain nombre de  gens
 fort sympathiques et plein  de  bonnes  idees   appartenant   pour  la
 plupart a la mailing list de traduction :

 Rene  COUGNENC,\  Xavier  CAZIN,\  Bernard CHOPPY,\ Francois AUDIBERT\
 Eric DUMAS,\ Pierre FICHEUX, \ Herve MIGNOT, \ Pierre  VASSELLERIE,  \
 Jacques LAVIGNOTTE, \ et tous les autres.