  Modems-HOWTO
  Jean Michel VANSTEENE <vanstee@worldnet.net>
  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.

  11..  IInnttrroodduuccttiioonn

  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.

  PPrreemmiieerree  eettaappee : 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.

  DDeeuuxxiieemmee  eettaappee  :  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 bbiinnaaiirree, 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.

  TTrrooiissiieemmee   eettaappee  :  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.

  11..11..  RReessuummoonnss uunn ppeeuu

  DDeeccoouuppaaggee hhoorriizzoonnttaall.  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.

  DDeeccoouuppaaggee        vveerrttiiccaall.        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.

  22..  UUnn ppeeuu ddee tthheeoorriiee dduu ssiiggnnaall......

  La  voix est un  bon exemple  de  signal permettant de  vehiculer  une
  information.   Ce     signal  est caracterise  par  sa bbaannddee ppaassssaannttee,
  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".

  22..11..  LLeess ssuuppppoorrttss ddee ttrraannssmmiissssiioonn

  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.

  33..  LLeess tteelleeccoommmmuunniiccaattiioonnss aannaallooggiiqquueess eett nnuummeerriiqquueess

  33..11..  LLeess tteelleeccoommmmuunniiccaattiioonnss aannaallooggiiqquueess

  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.

  33..22..  LLee ssiiggnnaall tteelleepphhoonniiqquuee

  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.

  33..33..  LLeess tteelleeccoommmmuunniiccaattiioonnss nnuummeerriiqquueess

  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.

  33..44..  AAlloorrss ppoouurrqquuooii ll''aannaallooggiiqquuee ??

  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.

  33..55..  DDee ll''aannaallooggiiqquuee aauu nnuummeerriiqquuee eett rreecciipprrooqquueemmeenntt

  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.

  33..55..11..  DDee ll''aannaallooggiiqquuee aauu nnuummeerriiqquuee

  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.

  33..55..22..  DDuu nnuummeerriiqquuee aa ll''aannaallooggiiqquuee

  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  pphhaassee,
  ll''aammpplliittuuddee ou la ffrreeqquueennccee.

  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  rraappiiddiittee   ddee   mmoodduullaattiioonn  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.

  33..66..  DDeess bbiittss eett ddeess ddeebbiittss

  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
  ddeebbiitt bbiinnaaiirree mmaaxxiimmuumm et la ccaappaacciittee ddee ttrraannssmmiissssiioonn mmaaxxiimmaallee.
  33..66..11..  LLee ddeebbiitt bbiinnaaiirree mmaaxxiimmuumm

  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   VV correspond   au   nombre de   niveaux significatifs  (ou etats)
  que peut prendre  le signal : c'est sa vvaalleennccee. 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.

  33..66..22..  LLaa ccaappaacciittee ddee ttrraannssmmiissssiioonn mmaaxxiimmaallee

  Un  des  inconvenients supplementaires des   supports est   le  bbrruuiitt.
  Or  la quantite de bruit  presente sur une ligne s'exprime par rapport
  a  la  puissance  utile  du  signal  transmis  :  c'est  le    rraappppoorrtt
  ssiiggnnaall//bbrruuiitt.   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 oonn nnee ppeeuutt ttrraannssmmeettttrree aa pplluuss  ddee 3300000000 bbiittss//ss (--
  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.

  44..  LLee mmooddeemm

  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'aaddaappttaattiioonn dduu   ssiiggnnaall aux  lignes du  reseau utilise,
     c'est-a-dire        de  modulation      et      de demodulation ;

  +o   un role de ddiiaalloogguuee 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   iinntteerrffaaccee
  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 pprroottooccoollee.

  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.

  44..11..  VVooccaabbuullaaiirree

  Un   aavviiss   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   EETTTTDD  (_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   EETTCCDD (_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 jjoonnccttiioonn ou iinntteerrffaaccee.

  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.

  44..22..  LLee mmooddee ddee ttrraannssmmiissssiioonn

  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 ssyynncchhrroonnee, ils sont cales sur  le
  meme rythme grace a des signaux d'horloge  emis avant la transmission.
  Dans   le   mode        aassyynncchhrroonnee,     l'horloge      du    recepteur
  n'est declenchee puis arretee que sur reception de bits de debut et de
  fin.   On  les  appelle  bits  de ssttaarrtt et de ssttoopp.  Ce mode, bien que
  moins  performant,  est  le  plus  utilise  actuellement   dans    les
  communications a travers  le  reseau public.

  44..33..  LLee ssuuppppoorrtt ddee ttrraannssmmiissssiioonn oouu lliiggnnee

  Un modem est utilisable principalement sur deux types de supports : le
  rreesseeaauu           ccoommmmuuttee     ou       la       lliiggnnee ssppeecciiaalliisseeee.  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 ddeeuuxx 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.

  44..44..  LL''aaddaappttaattiioonn dduu ssiiggnnaall

  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  vvaalleennccee
  4.  Plus generalement,  la    valence  d'un  signal    est  le  nombre
  d'etats   qu'il   peut prendre.  Cette   transformation du  signal est
  appelee ccooddaaggee.

  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  ddeeuuxx   bits   se  presentent,  il est  possible
  d'effectuer  uunnee    modulation.  A  l'autre   bout,  l'equipement  est
  capable  de     regenerer   deux  bits.  Le     debit (en bbiittss//ss)  est
  donc   bien   double de  la    vitesse   de  modulation  (exprimee  en
  bbaauuddss).

  44..44..11..  EExxeemmppllee

  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  (ttrriibbiittss)   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.

  44..44..22..  RReessuummee

  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  bbaauuddss.  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.

  44..55..  LLee ddiiaalloogguuee

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

  44..55..11..  LLaa jjoonnccttiioonn sseerriiee

  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

  44..55..22..  LLee ddiiaalloogguuee pprroopprreemmeenntt ddiitt

  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.

  44..55..33..  LLee ccoonnttrroollee ddee fflluuxx

  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 :

     llooggiicciieell
        Le modem  insere des caracteres   de controles dans  le flot  de
        donnees   circulant  entre l'ETCD et l'ETTD :  XXOOFFFF pour arreter
        l'envoi et XXOONN pour le reprendre.

     mmaatteerriieell
        Generalement appele CCRRTTSSCCTTSS,  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.

  44..66..  LLaa ccoonnnneexxiioonn aauu rreesseeaauu tteelleepphhoonniiqquuee ccoommmmuuttee

  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  (LLiinnuuxx,  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.

  44..66..11..  IInniittiiaalliissaattiioonn dduu mmooddeemm

  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.

  44..66..22..  EEttaabblliisssseemmeenntt ddee llaa ccoonnnneexxiioonn

  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).

  44..66..33..  RReeppoonnssee aauuttoommaattiiqquuee oouu mmaannuueellllee

  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 RRIINNGG  (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 00.

  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  |
      +--------------------------+   +-------------+  +--------------------------+

  44..66..44..  DDeeccoonnnneexxiioonn

  Plusieurs methodes permettent de mettre fin a un appel :

  +o  MMooddee  ccoommmmaannddee.. Mettre  le modem en   mode commande et  envoyer  la
     chaine +++ATH ;

  +o  PPeerrttee ddee  ppoorrtteeuussee.. L'une   des causes est  la  deconnexion normale
     de l'autre modem ;

  +o  OOuuvveerrttuurree  dduu  cciirrccuuiitt  110088  (DTR).  C'est    la  methode  la  plus
     couramment employee.

  55..  EEttaatt aaccttuueell ddee llaa nnoorrmmaalliissaattiioonn

  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

  55..11..  AA pprrooppooss dduu VV..4422 bbiiss

  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.

  55..22..  DDeebbiittss eett mmoodduullaattiioonnss

       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         |
  +-------------------------------------------------------------+

  66..  FFooiirree AAuuxx QQuueessttiioonnss

     CCoommmmeenntt ppuuiiss--jjee cchhaannggeerr  ffaacciilleemmeenntt  uunn ppaarraammeettrree ddee   mmoonn ppoorrtt
        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.

     PPoouurrqquuooii ffaauutt--iill ccoonnffiigguurreerr CCRRTTSSCCTTSS ssuurr llee ppoorrtt sseerriiee ??
        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.

     JJee  rreemmaarrqquuee  qquuee  aaggeettttyy mmooddiiffiiee lleess ddrrooiittss dduu ffiicchhiieerr //ddeevv//ttttyySS00,,
        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.

     AAuurraaiiss--jjee aacccceess aa mmoonn tteelleepphhoonnee ??
        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).

     LLoorrssqquuee  jjee mmee ccoonnnneeccttee cchheezz mmoonn  ffoouurrnniisssseeuurr,, ccoommmmeenntt  mmoonn aaddrreessssee
        IIPP
        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.

  77..  UUnn mmoott ssuurr lleess eemmppiilleemmeennttss pprroottooccoollaaiirreess ccoouurraammmmeenntt uuttiilliisseess

  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" !

  77..11..  TTCCPP//UUDDPP//IIPP

  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.

  77..22..  PPPPPP//SSLLIIPP

  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 :   RRFFCC--11005555
  (SLIP), RRFFCC--11117711 et RRFFCC--11117722 (PPP) et le PPPPPP--HHOOWWTTOO.

  77..33..  MMiissee eenn ooeeuuvvrree

  +----------------+-------+ +--------+ +--------+ +------+ +-----+
  |  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.

  77..44..  LLeess ffiicchhiieerrss ddee ccoonnffiigguurraattiioonn

  77..44..11..  LLeess aapppplliiccaattiioonnss

  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.

  77..44..22..  LLeess ccoouucchheess ddee ccoommmmuunniiccaattiioonn :: TTCCPP//UUDDPP//IIPP

  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>

  88..  LLee MMiinniitteell

  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.--)

  88..11..  LL''eeccrraann

  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)       |
       +-------------+----------------------------------+

  88..22..  LLee ccllaavviieerr

  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>

  88..33..  LLee mmooddeemm

  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.

  88..44..  UUttiilliissaattiioonn dduu MMiinniitteell ccoommmmee ssiimmppllee tteerrmmiinnaall

  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 :

  88..44..11..  CCoonnffiigguurraattiioonn ddee ggeettttyy

  Une methode simple consiste  a compiler un _g_e_t_t_y un  peu  particulier.
  Les       sources      se      trouvent       dans    le     paquetage
  ggeettttyy__ppss--22..00..77hh,   en  general  disponible par  _f_t_p (ftp.ibp.fr)  sous
  //ppuubb//lliinnuuxx//ttssxx--1111//ssoouurrcceess//ssbbiinn.

  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.

  88..55..  UUttiilliissaattiioonn dduu MMiinniitteell ppoouurr uunn aacccceess ddiissttaanntt

  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).

  99..  UUnn mmooddeemm ppaarrttiiccuulliieerr:: llee ccaabbllee nnuullll--mmooddeemm

  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  |
  |      |       |                                 |      |       |
  +------+-------+---------------------------------+------+-------+

  1100..  CChhooiixx dd''uunn mmooddeemm

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

     LLee ccoouutt
        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.

     LLee ddeebbiitt
        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".

     LLee ttyyppee ddee mmooddeemm :: iinntteerrnnee oouu eexxtteerrnnee
        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 ?

  1111..  QQuueellqquueess cchhiiffffrreess

  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.

  1111..11..  DDeebbiitt rreeeell

  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 ssttaarrtt et  de  ssttoopp,  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    |
       +---------------+--------------+--------+----------+

  1111..22..  CCoouuttss ddee ccoonnnneexxiioonn

  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.

  1122..  EEnnvviissaaggeerr dd''eeccrriirree ddeess aapppplliiccaattiioonnss

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

  1122..11..  EEtt ssii cc''eettaaiitt ssiimmppllee ??

  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 : ooppeenn,,
  rreeaadd,,    wwrriittee,, iiooccttll,, cclloossee.   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.

  1122..11..11..  ooppeenn,, cclloossee

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

  1122..11..22..  rreeaadd,, wwrriittee

  Rien a signaler de particulier.

  1122..11..33..  iiooccttll

  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 :-)) :

     TTCCGGEETTSS -- TTCCSSEETTSS
        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)

     TTIIOOCCSSTTTTYY -- TTIIOOCCNNOOTTTTYY
        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

     TTCCFFLLSSHH eett ccoommppaaggnniiee
        positionnement d'indicateurs (voir la commande stty)

     TTIIOOCCGGSSEERRIIAALL -- TTIIOOCCSSSSEERRIIAALL
        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.

     TTIIOOCCMMGGEETT -- TTIIOOCCMMSSEETT
        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

  1122..22..   AAppppeellss  eennttrraannttss  ((DDiiaall--iinn)) eett aappppeellss ssoorrttaannttss ((CCaallll--oouutt)) ssoouuss
  LLiinnuuxx

  1122..22..11..  IInnttrroodduuccttiioonn

  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.

  1122..22..22..  GGeessttiioonn

  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  bbllooqquuaanntt  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).

  1133..  QQuueellqquueess aapppplliiccaattiioonnss iinntteerreessssaanntteess

  1133..11..  UUnn nnuummeerrootteeuurr

  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.

  1133..22..  mmooddeemmssttaatt eett ccoommppaaggnniiee

  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.

  1133..33..  UUnn ddeetteecctteeuurr ddee ssiiggnnaall 110099 ((CCDD))

  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
  ______________________________________________________________________

  1144..  RReemmeerrcciieemmeennttss

  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.

