This file is indexed.

/usr/share/doc/HOWTO/fr-html/Modems-HOWTO.html is in doc-linux-fr-html 2013.01-3ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for HTML5 for Linux version 5.2.0">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.72">
<title>Modems-HOWTO</title>
</head>
<body>
<h1>Modems-HOWTO</h1>
<h2>Jean Michel VANSTEENE &lt;vanstee@worldnet.net&gt;</h2>
13 Février 1996
<hr>
<em>Le modem est devenu aujourd'hui un produit à la mode. Que ce
soit pour l'accès à Internet ou pour se connecter chez un
particulier qui laisse bénévolement sa machine disponible, il faut
un modem. Or, cet appareil, d'apparence fort simple, cache des
choses très sophistiquées et son emploi peut engendrer bien des
soucis. J'ai constaté d'ailleurs que bon nombre d'utilisateurs se
posaient des questions à son propos. (Et ceux qui ne s'en posent
pas ont parfois des problèmes qu'ils seraient aptes à résoudre par
eux-même, s'ils connaissaient un peu son fonctionnement.) Ce
document n'est ni un HOWTO ni une FAQ, ce qui est à priori
inhabituel pour un document Linux. J'ai longuement réfléchi avant
de me lancer dans cette aventure. Parmi mes priorités, la première
a été d'être clair et de ne pas tomber dans le genre cours
magistral... Le but de ce document est en fait d'éclaircir un peu
des notions <i>dont on a entendu parler</i>&nbsp;: bande passante,
bits/seconde, baud, modulation, interface série, connexions à
vingt-huit-huit&nbsp;... Après avoir lu ce document, de deux choses
l'une&nbsp;: soit vous vous dites <i>c'est imbitable</i>, et là
vous sautez sur votre courrier-é préféré pour m'engueu... me le
dire, soit vous pensez que ca vous a apporté quelque-chose et là,
vous sautez sur votre courrier-é... pour me le dire. En tout cas,
toute remarque sera la bienvenue, comme d'habitude.</em>
<hr>
<h2><a name="s1">1. Introduction</a></h2>
<p>La communication a toujours été, est et sera toujours un échange
de signaux entre un émetteur et un récepteur. Afin d'avoir les
idées claires sur ce que nous allons aborder, décomposons les
différentes étapes de la communication. Le meilleur modèle que nous
allons prendre est l'homme qui l'utilise depuis fort longtemps.</p>
<p><b>Première étape&nbsp;</b>: prenons un homme, bien rasé de
préférence, propre et prêt à se rendre au travail. Justement il a
un mot à dire à sa femme avant de partir. C'est l'information à
transmettre.</p>
<p><b>Deuxième étape&nbsp;</b>: comment la transmettre. Si elle est
là, il crie (bon, il parle), sinon il écrit le message sur un bout
de papier. Notre homme est donc capable (voyez-vous ça, il est à
peine 7h30 du matin&nbsp;!) de coder son information en fonction de
la manière dont il transmet son message.</p>
<p>Pour communiquer, nous utilisons des éléments de base dont
l'ensemble forme l'alphabet. Une succession de ces éléments définit
un vocabulaire. En fait il s'agit ni plus ni moins que d'un code,
complexe certes, mais compréhensible par tous ceux qui l'adoptent.
Moins il est ambigu, plus il est précis. (Vous pouvez essayer de
donner trois sens différents à cette phrase pour comprendre que
notre langue est parfois ambiguë&nbsp;: il est énormément
bête&nbsp;.) Pour s'exprimer, il est ensuite capable de découper
une suite de mots (éléments continus) en phonèmes (éléments
discontinus), que le récepteur saura réassembler.</p>
<p>En informatique, l'information de base est <b>binaire</b>, donc
codée sur deux valeurs logiques que l'on note habituellement 0 et
1. C'est le code sans doute le plus élémentaire qui soit. Aussi il
existe un certain nombre de codes intermédiaires. Nous citerons par
exemple le code ASCII, permettant de coder les lettres et
chiffres.</p>
<p><b>Troisième étape&nbsp;</b>: sa femme découvre le message (ou
l'entend). Elle est capable de le reconstituer. Les lettres
(respectivement les phonèmes) forment des mots qui forment des
phrases qui forment le message. Ouf&nbsp;! On y est.</p>
<h2><a name="ss1.1">1.1 Résumons un peu</a></h2>
<p><b>Découpage horizontal</b>. La communication n'est possible que
s'il existe un code commun. À tout niveau il faut s'assurer non
seulement que le code employé a un sens, mais en plus qu'il a le
même pour l'émetteur et le récepteur. On parle alors de
<i>protocole</i>. Au niveau le plus bas, un signal est utilisé
comme un moyen de communication. Il transporte en effet un message
sous une forme particulière appelé <i>codage</i> ou
<i>modulation</i>. Un signal a une nature physique et un modèle
mathématique. Nous nous étendrons davantage sur sa nature que sur
le modèle qui, bien qu'intéressant, nous amènerait trop loin. Le
signal s'appuie sur un support.</p>
<p><b>Découpage vertical</b>. De l'idée au code employé&nbsp;:
plusieurs niveaux de traitement sont utilisés pour transformer un
message complexe en éléments plus simples aptes à être véhiculés et
compris par une entité homologue.</p>
<p>Or s'il y a un signal, il faut forcément un support de
transmission, permettant de le véhiculer d'un point à un autre.
Nous verrons cela un peu plus loin. Celui qui nous intéresse
concerne les transmissions téléphoniques.</p>
<p>Voici donc jetées les bases de la communication. Nous allons
maintenant éclaircir un peu tout cela dans les différentes parties
qui vont suivre. La première étape consiste à consolider les bases
sur les signaux, ensuite nous verrons leur transmission.</p>
<h2><a name="s2">2. Un peu de théorie du signal...</a></h2>
<p>La voix est un bon exemple de signal permettant de véhiculer une
information. Ce signal est caractérisé par sa <b>bande
passante</b>, c'est-à-dire le domaine de fréquences sur lequel elle
peut s'étendre. En général cette bande est continue et comprise
entre 30 et 15000 Hz. Ce signal est de type sinusoïdal.</p>
<p>Sans entrer dans des détails mathématiques, disons qu'un signal
est composé d'une fréquence principale et d'harmoniques. Il est
possible d'en donner une représentation mathématique grâce aux
séries de Fourier, mais nous n'irons pas plus loin. Disons
simplement que ce signal est appelé signal "analogique", parce
qu'il peut prendre n'importe quelle valeur de façon continue entre
deux instants&nbsp;: le signal est "modulé".</p>
<h2><a name="ss2.1">2.1 Les supports de transmission</a></h2>
<p>Un signal quel qu'il soit, n'a d'intérêt que s'il peut être
transporté. Il faut savoir qu'un système de transmission n'est
jamais en mesure d'émettre des signaux sans leur faire subir de
déformations&nbsp;: selon leur nature, on parle de distorsion,
d'affaiblissement, de diaphonie&nbsp;... Comme nous le verrons plus
loin, les lignes téléphoniques ne font pas exception à cette
règle.</p>
<p>Chaque type de support est caractérisé entre autres par son
aptitude à transmettre un signal plus ou moins fidèlement. De
nombreux supports sont utilisés en transmission de données&nbsp;:
les supports avec guide physique (câbles, fibres, ...) et les
supports sans guide physique (ondes radio, ondes lumineuses). Pour
donner une idée, de la qualité des supports, disons que les câbles
électriques à paires torsadées sont les moins fiables, suivis par
les câbles coaxiaux. Les fibres optiques offrent actuellement le
meilleur compromis fiabilité/performance.</p>
<h2><a name="s3">3. Les télécommunications analogiques et
numériques</a></h2>
<h2><a name="ss3.1">3.1 Les télécommunications analogiques</a></h2>
<p>C'est un mode de communication utilisé depuis très longtemps
notamment dans la technologie téléphonique. Il s'agit en effet
d'une activité beaucoup moins consommatrice de ressources, tant
financières que technologiques que la transmission numérique. On
n'est pas tout à fait prêt à pouvoir s'en passer.</p>
<h2><a name="ss3.2">3.2 Le signal téléphonique</a></h2>
<p>À l'origine, le téléphone a été conçu pour transmettre la voix.
Malheureusement, il n'est pas possible, étant donné le support
utilisé, de véhiculer le signal complet, c'est-à-dire l'ensemble
des fréquences le constituant. Le domaine de fréquences (on parle
de largeur de bande) que peuvent transmettre les lignes
téléphoniques est officiellement compris entre 300 et 3400
hertz</p>
<blockquote>Les <i>codecs</i> (codeurs-décodeurs) modernes utilisés
dans les centraux téléphoniques actuels ont une bande passante de
l'ordre de 200 à 3700 Hz et la qualité des lignes des abonnés s'en
trouve généralement améliorée.</blockquote>
. On applique donc au signal de départ un <i>filtre passe-bande</i>
qui restreint l'espace de fréquence attribué à la transmission du
signal sur cette liaison. Ceci correspond heureusement à 90% de
netteté de la voix.
<p>Selon le principe bien admis que tout traitement a un coût, le
plus simple et le moins coûteux en télécommunications est de
transmettre le signal avec le moins de transformations possible.
C'est bien ce qui se passe pour la voix par téléphone. Les seules
transformations sont d'ordre analogique comme l'amplification par
exemple.</p>
<h2><a name="ss3.3">3.3 Les télécommunications numériques</a></h2>
<p>Nous avons déjà évoqué précédemment que le fonctionnement de nos
chers ordinateurs était fondé sur la seule information binaire.
Celle-ci est représentée, dès lors qu'il s'agit de la visualiser
(oscilloscope) ou de la transporter, par un signal rectangulaire à
deux niveaux.</p>
<p>Pour transporter un tel signal, le plus simple et le moins
coûteux consiste à lui faire subir le moins de traitement possible,
voire à le transporter tel quel. On imagine aisément que pour
transmettre ce signal sur un support, il suffise de définir deux
signaux électriques représentant les niveaux logiques 0 et 1. De
plus ce type de transmission offre des performances
considérablement supérieures à la transmission analogique, ceci
pour deux raisons.</p>
<p>La première est un faible taux d'erreurs. En effet, alors qu'en
transmission numérique, les signaux sont transmis avec des tensions
d'amplitude variable, en transmission numérique le nombre de
niveaux est limité. Les signaux parasites s'infiltrant dans un
signal analogique sont donc très difficiles à supprimer et
engendrent des erreurs. En transmission numérique, les défauts sont
plus facilement repérables et les équipements régénèrent plus
facilement un signal parasité ou affaibli.</p>
<p>La deuxième raison tient au fait que l'on sait mieux traiter une
information numérique. Ainsi, en utilisant les méthodes de
multiplexage, de compression, l'acheminement des données se fait
beaucoup plus rapidement. De plus le coût du matériel de traitement
diminue considérablement.</p>
<h2><a name="ss3.4">3.4 Alors pourquoi l'analogique ?</a></h2>
<p>Cette question est bien entendu la première que l'on se pose
maintenant. La réponse tient en quelques mots&nbsp;:
essentiellement pour des raisons financières. Lorsque les
ordinateurs sont organisés en petits groupes fermés,
l'infrastructure à mettre en place pour les relier est bien sûr
numérique. Mais dès lors que les communications s'établissent sur
de grandes distances, elles doivent empreinter l'infrastructure
existante, qui est analogique. L'évolution se fait lentement vers
le tout numérique, Numéris en est l'exemple prometteur.</p>
<h2><a name="ss3.5">3.5 De l'analogique au numérique et
réciproquement</a></h2>
<p>Puisqu'il faut s'adapter à un monde fait de numérique et
d'analogique, il faut savoir passer de l'un à l'autre. C'est
essentiellement ce qui va se passer avec les modems. Faisons
d'abord un point rapide sur les méthodes de conversion entre
l'analogique et le numérique.</p>
<h3>De l'analogique au numérique</h3>
<p>L'information de départ est représentée par un signal qui, si on
le transforme en tensions électriques, peut prendre une infinité de
valeurs (dans un intervalle fini, heureusement&nbsp;!) entre deux
instants. Pour le transcrire dans un monde fait d'un nombre limité
de niveaux significatifs, il faut le coder. Un des principes de
codage les plus simples consiste à prélever à intervalle régulier
la valeur de la tension, puis de la représenter en binaire sur 7 ou
8 bits. Le prélèvement est usuellement appelé
<i>échantillonnage</i> et la fréquence d'échantillonnage correspond
au nombre d'échantillons prélevés par seconde. Un codeur-décodeur
prélève en général 8000 échantillons par seconde.</p>
<h3>Du numérique à l'analogique</h3>
<p>A l'inverse, la transformation d'une information numérique en
analogique consiste à moduler un signal de base en fonction de
cette information. C'est le rôle du modulateur-démodulateur
(modem).</p>
<p>Considérons maintenant ce signal de base. S'agissant d'un signal
analogique, c'est donc une sinusoïde dont la fréquence peut varier,
dans le cas qui nous intéresse, de 1000 à 2000 hertz. C'est la
porteuse. La modulation de ce signal va consister ensuite à en
faire varier un ou plusieurs paramètres&nbsp;: la <b>phase</b>,
<b>l'amplitude</b> ou la <b>fréquence</b>.</p>
<p>La modulation d'amplitude consiste à modifier l'amplitude de la
porteuse, selon l'information binaire à transmettre. Par exemple
une valeur de l'amplitude est attribuée au 0 et une autre au 1.</p>
<p>La modulation de fréquence correspond à la même notion, mais ici
les deux valeurs sont représentées par des fréquences
différentes.</p>
<p>Enfin, la modulation de phase, consiste à faire varier la phase
de la porteuse, de 45, 135, 225 ou 315 degrés par exemple.</p>
<p>La <b>rapidité de modulation</b> caractérise la vitesse à
laquelle ces changements s'effectuent. C'est la caractéristique
essentielle qui permet de définir la bande passante.</p>
<p>Arrêtons-nous là un instant pour évoquer maintenant la notion de
débit. Il est en effet facile d'imaginer pouvoir faire varier un
signal à volonté, mais ce serait ne pas tenir compte de certaines
caractéristiques physiques des supports qui nous contraignent
fortement.</p>
<h2><a name="ss3.6">3.6 Des bits et des débits</a></h2>
<p>Une des valeurs caractéristique des supports de transmission est
le débit maximum qu'ils peuvent supporter. Comment s'empêcher de
comparer un support à une route. Le nombre maximum de véhicules
qu'une autoroute est capable de supporter par heure est très
supérieur à celui d'une route départementale (même si vous n'aimez
pas les routes départementales, mais ceci est une autre
histoire&nbsp;...).</p>
<p>En ce qui concerne les supports de transmission, leur débit
maximum est directement lié à la largeur de la bande passante.
Chose promise, chose due, pas trop de mathématiques 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&nbsp;:
ce sont le <b>débit binaire maximum</b> et la <b>capacité de
transmission maximale</b>.</p>
<h3>Le débit binaire maximum</h3>
<p>Sur un canal de transmission dont la bande passante est B, il
est montré qu'un signal peut être entièrement reconstitué à
l'arrivée, si on le transmet en prenant 2B échantillons par
seconde. Le débit maximum s'écrit alors&nbsp;:</p>
<blockquote>
<pre><code>
        Dmax = 2B
</code></pre></blockquote>
<p>Si, de plus, le signal peut prendre plus de deux valeurs
significatives, la formule se généralise en&nbsp;:</p>
<blockquote>
<pre><code>
        Dmax = 2B log  V
                     2
</code></pre></blockquote>
<p><b>V</b> correspond au nombre de niveaux significatifs (ou
états) que peut prendre le signal&nbsp;: c'est sa <b>valence</b>.
Par exemple, V=4 si le signal peut prendre les valeurs
+10&nbsp;volts, +5&nbsp;volts, -5&nbsp;volts et -10&nbsp;volts.</p>
<p>Ceci pour vous montrer qu'en théorie, sur une ligne téléphonique
dont la bande passante est de 3000 hertz, le débit 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 débit maximum est
théoriquement infini.</p>
<h3>La capacité de transmission maximale</h3>
<p>Un des inconvénients supplémentaires des supports est le
<b>bruit</b>. Or la quantité de bruit présente sur une ligne
s'exprime par rapport à la puissance utile du signal
transmis&nbsp;: c'est le <b>rapport signal/bruit</b>. Plus ce
rapport est grand, meilleure est la qualité. La capacité de
transmission maximale est une fonction de ce rapport. Pour une
ligne téléphonique, cette capacité maximale atteint 30000 bits/s.
Cela signifie bien que sur ces lignes <b>on ne peut transmettre à
plus de 30000 bits/s</b></p>
<blockquote>C'est bien une capacité maximale physique, à ne pas
confondre avec des débits logiques après compression de
données.</blockquote>
quels que soient la valence et la fréquence du signal. C'est une
limite au débit binaire maximum.
<h2><a name="sec-modems"></a> <a name="s4">4.</a> Le modem</h2>
<p>Le rôle du modem est d'adapter les signaux rectangulaires de
données, que le réseau téléphonique ne peut pas transmettre tels
quels, en signaux transmissibles par ce réseau.</p>
<p>Il a en fait deux fonctions&nbsp;:</p>
<ul>
<li>un rôle d'<b>adaptation du signal</b> aux lignes du réseau
utilisé, c'est-à-dire de modulation et de démodulation&nbsp;;</li>
<li>un rôle de <b>dialogue</b> avec l'équipement informatique
auquel il est relié.</li>
</ul>
<p>Il tient donc exactement le même rôle fonctionnel qu'une couche
de communication (TCP, par exemple). Il possède une
<b>interface</b> permettant un dialogue avec un utilisateur se
trouvant à un niveau supérieur. Ici il s'agit d'une interface
physique (y compris électrique). Il communique avec une entité
paire (un autre modem) selon un <b>protocole</b>.</p>
<p>La structure interne d'un modem est décrite
ci-dessous&nbsp;:</p>
<pre>

+-----+      +--------+         +-------------+       +----------------+
|  J  +-----&gt;| codeur +-------&gt; |  modulateur +------&gt;|                |
|  O  |      +--------+         +-------------+       |                |
|  N  |                                               |                |
|  C  |                                               | transformateur | 
|  T  |                                               |                |
|  I  |                                               |     ligne      |
|  O  |      +----------+       +--------------+      |                |
|  N  |&lt;-----+ decodeur |&lt;------+ demodulateur |&lt;-----|                |
+-----+      +----------+       +--------------+      +----------------+
</pre>
<p>Les paramètres caractérisant un modem sont&nbsp;:</p>
<ul>
<li>le <i>débit d'information</i> en bits/s&nbsp;;</li>
<li>le <i>mode de transmission</i>&nbsp;: synchrone ou
asynchrone&nbsp;;</li>
<li>le <i>support de transmission utilisé</i>&nbsp;: réseau ou
ligne spécialisée&nbsp;;</li>
<li>le <i>mode de couplage</i> à la ligne&nbsp;: électrique ou
acoustique.</li>
</ul>
<p>Nous aborderons assez rapidement l'ensemble de ces paramètres,
selon l'utilisation que nous aurons à en faire. La notion de débit
devrait maintenant être assimilée.</p>
<p>Penchons-nous rapidement sur les modes et les supports de
transmission utilisés. Voyons ensuite plus précisément le rôle
d'adaptation du signal du modem, puis le dialogue qui met en jeu la
jonction et la ligne.</p>
<p>Commençons par définir un vocabulaire commun.</p>
<h2><a name="sec-vocab"></a> <a name="ss4.1">4.1</a>
Vocabulaire</h2>
<p>Un <b>avis</b> est une recommandation édictée par l'U.I.T (Union
Internationale des Télécommunications), organisation
intergouvernementale compétente en télécommunications. Les avis ont
valeur de norme au sein de l'Europe, puisque les organismes de
Télécom nationaux ont encore le monopole. Les recommandations sont
issues de travaux de diverses commissions d'études et sont adoptées
lors des assemblées pleinières (délai de l'ordre de neuf mois,
étant donné l'évolution rapide des technologies). La section
<a href="#sec-norme">Etat actuel de la normalisation</a> décrit les
différents avis actuellement en vigueur.</p>
<p>Dans sa normalisation, l'U.I.T définit l'équipement informatique
comme un <b>ETTD</b> (<i>Équipement Terminal de Traitement de
Données</i>) et le modem comme un <b>ETCD</b> (<i>Équipement
Terminal de Circuit de Données</i>). La connexion d'un équipement
informatique à un modem, par exemple, est réalisée par
l'intermédiaire d'une <b>jonction</b> ou <b>interface</b>.</p>
<p>On appelle half-duplex (bidirectionnel à l'alternat), une
transmission s'effectuant dans un seul sens à la fois. On appelle
full duplex (bidirectionnel simultané), une transmission pouvant
s'effectuer dans les deux sens en même temps. Ces transmissions
peuvent avoir lieu indifféremment sur liaison 2 ou 4 fils.</p>
<h2><a name="ss4.2">4.2 Le mode de transmission</a></h2>
<p>Une transmission de donnée est toujours liée au facteur temps.
Dans les transmissions en série qui constituent la majorité des
transmissions, l'émetteur et le récepteur doivent travailler à la
même cadence. Dans le mode <b>synchrone</b>, ils sont calés sur le
même rythme grâce à des signaux d'horloge émis avant la
transmission. Dans le mode <b>asynchrone</b>, l'horloge du
récepteur n'est déclenchée puis arrêtée que sur réception de bits
de début et de fin. On les appelle bits de <b>start</b> et de
<b>stop</b>. Ce mode, bien que moins performant, est le plus
utilisé actuellement dans les communications à travers le réseau
public.</p>
<h2><a name="ss4.3">4.3 Le support de transmission ou
ligne</a></h2>
<p>Un modem est utilisable principalement sur deux types de
supports&nbsp;: le <b>réseau commuté</b> ou la <b>ligne
spécialisée</b>. Sur chaque type de support, les liaisons peuvent
être à deux ou quatre fils.</p>
<p>Dans le cas qui nous intéresse, le modem est relié au réseau
téléphonique commuté et la liaison est à deux fils. Nous
l'utilisons soit en half duplex, soit en full duplex selon l'avis
(voir définition de ce mot au paragraphe <a href=
"#sec-vocab">Vocabulaire</a>.</p>
<p>A ce propos, réfléchissons un peu sur l'utilisation qui est
faite actuellement du Réseau Téléphonique Commuté (appelé 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 à quatre
fils, il est facile d'imaginer que l'on consacre deux fils à chaque
sens de transmission. Pour chaque sens, considérant les vitesses de
modulations maximales possibles, on conçoit qu'il faut combiner
plusieurs types de modulations pour obtenir des débits maintenant
courants de l'ordre de 28800 bits/s.</p>
<p>Or le RTC n'utilise que <b>deux</b> fils. Pour travailler en
full-duplex à des débits relativement faibles (en fait jusqu'à
l'avis V22 bis), il était possible de partager la bande de
fréquence en deux moitiés, une pour chaque sens. Avec les débits
employés actuellement ce n'est plus possible. Pour travailler en
full-duplex à d'importants débits, il est fait appel à des
algorithmes complexes dits "de suppression d'écho" (proche et
lointain). Imaginez le travail à réaliser&nbsp;: chaque modem
reçoit les données envoyées par le distant mélangées à ses propres
données. Le tout est encore pollué par de l'écho&nbsp;! Et pour
compliquer le tout, tout ceci varie dans le temps, et bien sûr
d'une communication à l'autre.</p>
<p>Vous comprendrez donc qu'avec une telle utilisation du RTC, les
modems soient continuellement soumis à rude épreuve pour ce qui est
de la correction, ceci pouvant conduire à des débits variables
selon le moment.</p>
<h2><a name="ss4.4">4.4 L'adaptation du signal</a></h2>
<p>Nous avons vu aux sections précédentes ce qu'étaient une
modulation et un débit. Rassemblons maintenant un peu toutes ces
idées. Bien souvent, c'est sur ce point délicat que les esprits se
perdent. Nous avons vu que la rapidité de modulation est une
caractéristique essentielle de la bande passante. Plus cette
rapidité est grande, plus la bande passante demandée est large. Sur
le réseau téléphonique, la bande maximale officielle est de 3100
hertz (300 à 3400 Hz). Dans les centraux téléphoniques modernes,
elle va jusqu'à 3500 Hz.</p>
<p>Pour bien comprendre le mécanisme de l'adaptation du signal,
imaginez maintenant que nous disposions d'un appareil électrique
capable d'émettre quatre niveaux de tensions possibles.</p>
<p>Les données à transmettre sont quant à elles toujours présentées
sous forme d'un flot ininterrompu (ou presque) d'informations
binaires.</p>
<p>L'idée 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
<b>valence</b> 4. Plus généralement, la valence d'un signal est le
nombre d'états qu'il peut prendre. Cette transformation du signal
est appelée <b>codage</b>.</p>
<p>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 donnée sa valence, nous avons besoin de
quatre décalages de phase.</p>
<p>A chaque fois que <b>deux</b> bits se présentent, il est
possible d'effectuer <b>une</b> modulation. A l'autre bout,
l'équipement est capable de regénérer deux bits. Le débit (en
<b>bits/s</b>) est donc bien double de la vitesse de modulation
(exprimée en <b>bauds</b>).</p>
<h3>Exemple</h3>
<p>Vous configurez un modem à 4800 bits par seconde
(V.27&nbsp;ter). Que va-t-il se passer &nbsp;? Selon cette norme,
le modem va réaliser une modulation de phase différentielle
octovalente. Il va donc regrouper les bits par trois
(<b>tribits</b>) pour moduler le signal. La vitesse de modulation
est donc de 1600 bauds et le débit de 4800 bits/seconde. Pour
obtenir un débit de 9600 bits par seconde, il faudra combiner un
autre type de modulation. La section <a href="#sec-modul">Débits et
modulations</a> présente l'essentiel des modulations utilisées dans
les différentes normes actuelles.</p>
<h3>Résumé</h3>
<p>L'adaptation du signal peut se faire de trois
manières&nbsp;:</p>
<ul>
<li>par une simple modulation appropriée&nbsp;;</li>
<li>par un codage puis une modulation&nbsp;;</li>
<li>par un simple codage. Ce type d'adaptation est présent dans
certains modems dits "bande de base" qui transmettent directement
ce code sur la ligne. Ce ne sont pas ceux que nous utilisons
couramment.</li>
</ul>
<p>La rapidité de modulation s'exprime en <b>bauds</b>. Elle
correspond au nombre de changements d'états du signal par seconde
sur la ligne de transmission. Une rapidité de <i>b</i> bauds ne
correspond pas forcément à <i>b</i> bits/s sur la ligne. Une
configuration binaire (un ou plusieurs bits selon la valence)
correspond à un état du signal.</p>
<h2><a name="ss4.5">4.5 Le dialogue</a></h2>
<p>Intéressons-nous maintenant au dialogue entre l'équipement
informatique et la jonction.</p>
<h3>La jonction série</h3>
<p>La jonction spécifie les caractéristiques mécaniques,
électriques et fonctionnelles des signaux. Bien entendu ces
jonctions sont normalisées (voir plus loin les tableaux
récapitulatifs sur l'état actuel de la normalisation) et celle qui
nous intéresse plus particulièrement est référencée sous le nom
V.24 par l'U.I.T, sensiblement équivalente de la norme RS-232C
définie par l'E.I.A</p>
<blockquote>Electronic Industries Association.</blockquote>
.
<p>Voici une description des signaux de l'interface V.24 les plus
couramment utilisés&nbsp;:</p>
<blockquote>
<pre><code>
+------+-----------+-----------+--------+------+--------------------------------+
| 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            |
+------+-----------+-----------+--------+------+--------------------------------+
</code></pre></blockquote>
Brochage des prises côté soudures :
<blockquote>
<pre><code>
      +-----------+          +---------------------------------------+
      | 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
</code></pre></blockquote>
<h3><a name="sec-dialogue"></a> Le dialogue proprement dit</h3>
<p>Prenons deux postes de travail équipés d'un modem chacun et
souhaitant communiquer.</p>
<p>Nous passerons rapidement sur le fait que les équipements
doivent être reliés à la masse. Ceci est réalisé grâce au circuit
101. D'autre part, il est nécessaire de définir une référence de
signalisation&nbsp;: c'est le rôle du circuit 102.</p>
<p>Dès sa mise sous tension, l'ETTD présente un état logique "1"
sur le circuit 108&nbsp;: <i>Terminal de Données Prêt</i> (DTR).
Dès la mise sous tension de l'ETCD, celui-ci présente l'état
<i>Poste de Données Prêt</i> (DSR) correspondant à un état logique
"1" sur le circuit 107, assurant ainsi que le modem est sous
tension et connecté à la ligne.</p>
<p>L'ETTD ayant des données à émettre, demande à émettre. Il
présente sur la jonction l'information <i>Demande Pour Émettre</i>
(RTS) sur le circuit 105. Ceci valide le modulateur de l'ETCD qui
émet alors une porteuse.</p>
<p>Du coté appelé, l'ETCD détecte la présence de la porteuse sur la
ligne de transmission et le signale à l'ETTD sur le circuit
109&nbsp;: <i>Détection de signal</i> (porteuse). Les circuits 107
et 108 auront été initialisés au préalable comme ci-dessus.</p>
<p>L'ETTD ayant signalé son intention d'émettre sur le circuit 105
reçoit en réponse peu de temps après le signal <i>Prêt À
Émettre</i> (CTS) sur le circuit 106.</p>
<p>Les données peuvent ensuite circuler via les circuits 103 et
104.</p>
<h3>Le contrôle de flux</h3>
<p>Lorsqu'un émetteur émet de façon systématique plus de données
que le récepteur ne peut en accepter, il se pose alors un problème
qui ne peut être résolu que grâce au mécanisme de <i>contrôle de
flux</i>.</p>
<p>Le contrôle de flux peut être de différents types&nbsp;:</p>
<dl>
<dt><b>logiciel</b></dt>
<dd>
<p>Le modem insère des caractères de contrôles dans le flot de
données circulant entre l'ETCD et l'ETTD&nbsp;: <b>XOFF</b> pour
arrêter l'envoi et <b>XON</b> pour le reprendre.</p>
</dd>
<dt><b>matériel</b></dt>
<dd>
<p>Généralement appelé <b>CRTSCTS</b>, il met en oeuvre l'emploi
des circuits 105 (RTS) et 106 (CTS). Ce symbole est en fait le nom
donné à la constante du fichier d'inclusion <i>termios.h</i>.</p>
</dd>
</dl>
<p>Le fonctionnement du contrôle de flux matériel pendant la
transmission peut se résumer ainsi&nbsp;:</p>
<p>Avant d'émettre, le terminal doit lever son signal RTS (Request
To Send). À partir de ce moment, le modem, s'il est en mesure
d'émettre, lève 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.</p>
<h2><a name="ss4.6">4.6 La connexion au réseau téléphonique
commuté</a></h2>
<p>Maintenant, plusieurs questions se posent, et j'imagine que
parmi celles que vous vous posez il y a&nbsp;:</p>
<ul>
<li>et sous Linux, le fonctionnement est-il identique&nbsp;?</li>
<li>à quel moment le numéro du correspondant a t-il été
composé&nbsp;?</li>
<li>mon modem est configuré en réception/émission, comment ça
marche&nbsp;?</li>
<li>etc.</li>
</ul>
<p>Nous allons maintenant tenter de répondre.</p>
<p>Eclaircissons un peu les choses. Le dialogue que nous venons de
voir concerne le dialogue <i>théorique</i> ETTD-ETCD et ETCD-ETTD
sans se soucier d'éventuelles contraintes pouvant provenir du
système d'exploitation. Il est toujours vrai. Néanmoins, il ne
suffit pas forcément pour qu'une communication soit établie,
notamment via le RTC. Nous allons étudier ce fonctionnement point
par point en prenant un bon système d'exploitation (<b>Linux</b>,
mais ce n'est qu'un exemple), un bon port série et du courage. Vous
continuez&nbsp;?</p>
<p>Tout d'abord, nous avons vu qu'une communication commençait
toujours par le premier échange DTR/DSR, ou si vous préférez
108/107. La montée du circuit 108 est réalisée sous Linux à
l'ouverture du port série (ex.&nbsp; <code>fopen ("/dev/ttyS0",
...)</code>). Cela se voit très bien sur un modem externe, le
voyant TR est allumé. La réponse du modem par le circuit 107 est un
peu différente. Dans la section <a href="#sec-dialogue">Le dialogue
proprement dit</a>, pour des raisons de simplicité, nous supposions
que le modem répondait sur le circuit 107 après un délai très bref,
c'est-à-dire qu'il était instantanément connecté à la ligne.</p>
<p>Cette réponse est maintenant conditionnée par la connexion à la
ligne via le réseau téléphonique commuté.</p>
<h3>Initialisation du modem</h3>
<p>En général, c'est juste après l'ouverture du port série que le
modem est initialisé. Cela se fait grâce aux commandes AT que nous
ne détaillerons pas. Simplement, ces commandes sont envoyées au
modem (par l'intermédiaire du circuit 103) (ex.&nbsp;
<code>write</code> sur le <i>descripteur de fichier</i> du
périphérique) et interprétées par lui, lorsque&nbsp;:</p>
<ul>
<li>le circuit 108 est fermé (état "1")&nbsp;;</li>
<li>le modem est en mode commande.</li>
</ul>
<h3>Établissement de la connexion</h3>
<p>L'une des commandes d'initialisation permet la composition d'un
numéro. Le modem décroche (eh oui, ce terme barbare veut dire que
suite à la fermeture du relais, le central local envoie une
tonalité à la fréquence de 440 Hz&nbsp;<code>:-)</code>) puis
compose le numéro.</p>
<p>Sur l'équipement distant, le circuit 108 est également monté. Le
modem appelé détecte l'appel. Le signal d'indication d'appel
(circuit 125) est utilisé en interne pour mémoriser l'appel, le
modem réalisant donc lui-même la connexion à la ligne. Cette
mémorisation est maintenue par DTR (jusqu'à déconnexion).</p>
<p>À ce moment précis, le modem appelé répond en validant son
modulateur qui émet la porteuse.</p>
<p>Le modem appelant, en état de décrochage et attendant la
porteuse, met son émetteur en service. Après négociation, le
circuit 109 (DCD) est alors validé. Du côté de l'appelé, le circuit
109 est également validé. La prise de contact est terminée. Les
circuits 107 (DSR) des deux modems sont alors montés en réponse à
DTR (asservissement des circuits 107-109).</p>
<h3>Réponse automatique ou manuelle</h3>
<p>Du côté de l'appelé, il est possible de mettre le modem en mode
réponse automatique. Il répond alors tout seul à l'appel après
quelques sonneries. Le registre S0 des modems est généralement
réservé à la configuration de ce mode.</p>
<p>Lorsque ce registre contient la valeur 0, (ATS0=0), le modem est
en réponse manuelle. Sous Linux, c'est assez souvent l'option
choisie, et c'est le logiciel (notamment <i>getty</i>) qui gère
l'appel. En effet les gestionnaires, de <i>tty</i> tels que
<i>getty</i> préfèrent prendre en charge la connexion&nbsp;: ce
n'est pas au modem à répondre à un appel mais à <i>getty</i> lui
même. Lorsque le modem reçoit un appel, il émet simplement le
message <b>RING</b> (bien sûr, si le mode verbeux est bien
configuré&nbsp;: ATE1). Sur ce, <i>getty</i> envoie la commande ATA
qui valide le mode réponse et la porteuse.</p>
<p>Enfin, à la fermeture du port, les signaux 108/107 repassent à
l'état <b>0</b>.</p>
<p>Voici à titre d'information l'organigramme d'un appel&nbsp;:</p>
<blockquote>
<pre><code>

                     +---------------------------------------+
                     | 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  |
    +--------------------------+   +-------------+  +--------------------------+
</code></pre></blockquote>
<h3>Déconnexion</h3>
<p>Plusieurs méthodes permettent de mettre fin à un
appel&nbsp;:</p>
<ul>
<li><b>Mode commande.</b> Mettre le modem en mode commande et
envoyer la chaîne <code>+++ATH</code>&nbsp;;</li>
<li><b>Perte de porteuse.</b> L'une des causes est la déconnexion
normale de l'autre modem&nbsp;;</li>
<li><b>Ouverture du circuit 108</b> (DTR). C'est la méthode la plus
couramment employée.</li>
</ul>
<h2><a name="sec-norme"></a> <a name="s5">5.</a> Etat actuel de la
normalisation</h2>
<p>Voici un tableau résumant l'état actuel de la normalisation
concernant les classes de débits supportés.</p>
<blockquote>
<pre><code>

+----------+--------------------------------------------+
|   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
</code></pre></blockquote>
<h2><a name="ss5.1">5.1 À propos du V.42 bis</a></h2>
<p>Un tout petit mot à propos de la norme V.42 bis qui permet la
compression de données. L'algorithme utilise un dictionnaire de
chaînes de caractères. Lorsqu'une chaîne apparaît, un <i>token</i>
est transmis qui n'est autre que l'index de cette chaîne dans le
dictionnaire. La longueur maximale d'une chaîne ainsi que la taille
maximale du dictionnaire sont négociées au début de la connexion.
La norme V.42&nbsp;bis autorise une longueur de chaîne comprise
entre 6 et 250 caractères. La taille minimale du dictionnaire est
de 512 entrées (soit 9 bits pour coder le rang d'un entrée). Le
taux maximal de compression dans ce cas est de&nbsp;:</p>
<blockquote>
<pre><code>
250 * 8 : 9 = 222.2
</code></pre></blockquote>
<p>soit un taux de 222:1. Un bon taux de compression est plus une
affaire de taille mémoire et d'efficacité en fonction des données à
coder qu'une affaire de puissance de processeur.</p>
<h2><a name="sec-modul"></a> <a name="ss5.2">5.2</a> Débits et
modulations</h2>
<blockquote>Merci à Christian 'naddy' Weisgerber de son aide pour
la rédaction de cette partie.</blockquote>
<p>Voici rassemblés dans les tableaux suivants les débits et les
modulations correspondantes utilisés dans les principales normes
pour liaisons téléphoniques à 2 fils. Les <i>normes</i> qui ne sont
pas citées ci-après sont peu utilisées voire oubliées aujourd'hui
(liaisons à 4 fils, V.32 terbo, Bell xxx, V.FC, ZyXEL, HST, PEP...
certaines n'étant d'ailleurs pas de véritables normes).</p>
<blockquote>
<pre><code>
+------------------------------------------------------------------------+
| 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)
</code></pre></blockquote>
<p>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 méthodes TCM choisie par le
récepteur. Les combinaisons suivantes sont possibles&nbsp;:</p>
<blockquote>
<pre><code>
+-------------------------------------------------------------+
|         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         |
+-------------------------------------------------------------+
</code></pre></blockquote>
<h2><a name="s6">6. Foire Aux Questions</a></h2>
<dl>
<dt><b>Comment puis-je changer facilement un paramètre de mon port
série ?</b></dt>
<dd>
<p>La meilleure façon de le faire, aussi bien manuellement que dans
un script est de rediriger le périphérique sur l'entrée standard de
<i>stty</i>. Exemple&nbsp;:</p>
<blockquote>
<pre><code>
        stty crtscts &lt; /dev/ttyS0
</code></pre></blockquote>
<p>activera le contrôle de flux matériel sur le premier port série
utilisé en entrée.</p>
<blockquote>
<pre><code>
        stty -a &lt; /dev/cua0
</code></pre></blockquote>
<p>affichera tous les paramètres du premier port série utilisé en
sortie.</p>
</dd>
<dt><b>Pourquoi faut-il configurer CRTSCTS sur le port série
?</b></dt>
<dd>
<p>Pour gérer le contrôle de flux matériel. Ce n'est pas une
obligation, c'est une garantie que l'échange de données entre ETTD
et ETCD se fera dans les meilleures conditions. Il faut bien
entendu que votre modem puisse le faire. Contrairement à une idée
reçue, si vous mettez l'option CRTSCTS dans le fichier
/etc/gettydefs, il n'est pas nécessaire d'effectuer en plus un
<code>stty crtscts &lt;/dev/port\#</code>. Par contre, il faut le
mettre à la fois dans la partie <i>initiale</i> et <i>finale</i> de
gettydefs. Notez qu'il s'agit bien d'un contrôle de flux local, et
en aucun cas il ne faut s'inquiéter de ce que fait le correspondant
dans ce domaine.</p>
</dd>
<dt><b>Je remarque que agetty modifie les droits du fichier
/dev/ttyS0, bizarre non&nbsp;?</b></dt>
<dd>
<p>Ca peut effectivement paraître bizarre. Il s'agit en fait de
l'établissement d'une <i>session</i> d'utilisation du périphérique.
Celui-ci prend alors les droits du "chef" de session (<i>session
leader</i>) qui se protège ainsi des utilisations du même tty par
d'autres processus.</p>
</dd>
<dt><b>Aurais-je accès à mon téléphone ?</b></dt>
<dd>
<p>Cette question a été réellement posée. Si vous n'avez qu'une
ligne téléphonique, la réponse est non. De plus, en décrochant le
combiné téléphonique, vous pertuberez la ligne et le modem risque
fort de diminuer le débit (pour le remonter si tout va bien
ensuite).</p>
</dd>
<dt><b>Lorsque je me connecte chez mon fournisseur, comment mon
adresse IP est générée&nbsp;?</b></dt>
<dd>
<p>Cette question montre à l'évidence une confusion entre toutes
les notions réseaux. Bien qu'elle ait été posée suite à un problème
relatifs aux modems, la réponse ne devrait théoriquement pas se
trouver dans ce document. Néanmoins, le chapitre suivant rappelle
quelques principes de base des empilements protocolaires afin de
clarifier un peu tout cela.</p>
</dd>
</dl>
<h2><a name="s7">7. Un mot sur les empilements protocolaires
couramment utilisés</a></h2>
<p>Un tel titre pourrait faire croire à une erreur de mise en page
ou de <i>copier-coller</i> étant donné le sujet du document. En
fait, il n'en est rien.</p>
<p>La connexion d'une machine à un fournisseur d'accès à Internet
met en jeu un ensemble de protocoles de communications&nbsp;: TCP,
UDP, IP, SLIP, PPP, etc. De nombreux utilisateurs souhaitent
réaliser ce type de connexion depuis chez eux, via un modem et
rencontrent parfois quelques problèmes de configuration.</p>
<p>Il est évident qu'il est à la fois difficile et inutile de tout
connaître de ces protocoles. Il faut vraiment <i>être du métier</i>
pour bien les connaître, et encore&nbsp;! 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 utilisée.</p>
<p>La lecture du forum <i>fr.comp.os.linux</i> montre parfois une
certaine confusion dans toutes les fonctions mises en oeuvre et qui
engendrent inévitablement de mauvais paramétrages.</p>
<p>Les quelques schémas qui suivent donnent une idée de la façon
dont tous ces <i>engrenages</i> sont placés pour que "ça
tourne"&nbsp;!</p>
<h2><a name="ss7.1">7.1 TCP/UDP/IP</a></h2>
<p>Ces sigles sont très fréquemment utilisés aujourd'hui et pour
cause&nbsp;: ces empilements de couches de communications tendent à
se répandre à vive allure. C'est à l'origine un ensemble de
protocoles développés dans le cadre du projet ARPANET, créé par
ARPA (aujourd'hui DARPA), l'agence pour les projets de recherche
avancée du Ministère de la Défense des Etats-Unis.</p>
<ul>
<li>TCP
<blockquote>Transmission Control Protocol</blockquote>
est une entité de niveau Transport chargée de véhiculer des données
de manière fiable entre deux machines souhaitant
dialoguer&nbsp;;</li>
<li>UDP
<blockquote>User Datagram Protocol</blockquote>
est une entité de niveau Transport chargée de véhiculer des données
entre deux machines souhaitant dialoguer&nbsp;;</li>
<li>IP
<blockquote>Internet Protocol</blockquote>
est une entité de niveau Réseau chargée de véhiculer des données
entre deux noeuds d'un réseau.</li>
</ul>
<h2><a name="ss7.2">7.2 PPP/SLIP</a></h2>
<p>PPP</p>
<blockquote>Point-to-Point Protocol</blockquote>
et SLIP
<blockquote>Serial Line IP</blockquote>
proposent une méthode d'encapsulation des datagrammes IP sur des
liaisons point à point, par exemple les lignes asynchrones série.
En quelques mots, disons que SLIP est un protocole très simple,
assez ancien, datant d'une époque où certains problèmes n'étaient
pas aussi importants qu'aujourd'hui&nbsp;: adressage,
identification réciproque, détection et correction d'erreurs,
compression (extrait du RFC-1055). PPP est quant à lui beaucoup
plus complet et c'est pourquoi il est généralement préféré par les
connaisseurs. Il offre toutes ces caractéristiques regroupées en
trois sous-ensembles&nbsp;:
<ul>
<li>une méthode d'encapsulation de type HDLC sur circuit commuté ou
permanent, synchrone ou asynchrone&nbsp;;</li>
<li>un protocole LCP (Link Control Protocol) permettant d'établir,
de configurer et de tester une connexion&nbsp;;</li>
<li>une famille de protocoles NCP (Network Control Protocols) pour
l'établissement et la configuration des protocoles réseaux.</li>
</ul>
<p>Pour obtenir de plus amples renseignements, vous pouvez vous
reporter aux documents concernant ces protocoles&nbsp;:
<b>RFC-1055</b> (SLIP), <b>RFC-1171</b> et <b>RFC-1172</b> (PPP) et
le <b>PPP-HOWTO</b>.</p>
<h2><a name="ss7.3">7.3 Mise en oeuvre</a></h2>
<blockquote>
<pre><code>

+----------------+-------+ +--------+ +--------+ +------+ +-----+
|  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_|    ---------
</code></pre></blockquote>
<p>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&nbsp;:</p>
<p>Supposons que vous souhaitiez faire un <i>ftp</i> de chez vous
sur <i>ftp.samachine.fr</i>. L'application <i>ftp</i> demande à TCP
d'établir une connexion. Pour qu'elle puisse s'établir, PPP doit
déjà fonctionner. Pour que PPP fonctionne, le modem doit être en
ligne&nbsp;:</p>
<ul>
<li>première étape&nbsp;: établissement d'une communication entre
deux modems. Cette étape est supposée connue,
maintenant&nbsp;;</li>
<li>deuxième étape&nbsp;: mise en route de PPP, avec éventuellement
authentification&nbsp;;</li>
<li>troisième étape&nbsp;: configuration de l'interface IP
correspondante. Il s'agit en général, sous Linux, de l'interface
<i>ppp0</i>. Une adresse IP pouvant provenir soit d'une
configuration locale, soit de votre fournisseur, est affectée à
l'interface. Dans ce dernier cas, celui-ci la fournit lors de
l'initialisation PPP. Dans les deux cas, c'est le démon PPP qui
configure l'adresse de l'interface&nbsp;;</li>
<li>quatrième étape&nbsp;: établissement d'une connexion TCP, puis
initialisation de <i>ftp</i>. A partir de là, si tout s'est bien
passé, vous pouvez transférer vos fichiers.</li>
</ul>
<p>Vous pouvez maintenant imaginer le déroulement d'une
déconnexion.</p>
<h2><a name="ss7.4">7.4 Les fichiers de configuration</a></h2>
<h3>Les applications</h3>
<p>Vous comprendrez qu'il est difficile de décrire ici
l'emplacement des fichiers de configuration des applications.
Prenez soin de lire les fichiers README ou INSTALL et d'exécuter
l'installation correctement.</p>
<h3>Les couches de communication : TCP/UDP/IP</h3>
<p>Pour une configuration standard de votre machine, vous devez
compiler le noyau avec les options "réseau" suivantes&nbsp;:</p>
<blockquote>
<pre><code>
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 &lt;16Mb of memory)  n

The IPX protocol                n
... autres protocoles           n
</code></pre></blockquote>
<p>Le fichier <i>resolv.conf</i> doit contenir&nbsp;:</p>
<blockquote>
<pre><code>
domain &lt;domaine de votre fournisseur&gt;
nameserver &lt;adresse IP du serveur de nom de votre fournisseur&gt;
</code></pre></blockquote>
<h2><a name="s8">8. Le Minitel</a></h2>
<p>Bien que ce merveilleux appareil commence à prendre de l'âge, il
est difficile de ne pas en parler un peu, notamment en raison de
ses spécificités. 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
caractéristiques intéressantes dans le cadre d'une utilisation avec
Linux.</p>
<p>Les STUM&nbsp;1B</p>
<blockquote>Spécifications Techniques d'Utilisation du Minitel
1B.</blockquote>
décrivent l'ensemble des caractéristiques des divers modules du
Minitel 1B&nbsp;:
<ul>
<li>l'écran&nbsp;;</li>
<li>le clavier&nbsp;;</li>
<li>le modem&nbsp;;</li>
<li>la prise péri-informatique.
<blockquote>A ce propos, je tiens à votre disposition un schéma
électronique d'un montage permettant l'adaptation RS232-Minitel. Il
met en oeuvre le circuit MAX232 permettant une parfaite adaptation
des tensions.</blockquote>
</li>
</ul>
<h2><a name="ss8.1">8.1 L'écran</a></h2>
<p>Le minitel 1B est capable d'afficher 24 lignes de 40 ou 80
caractères et 8 couleurs (ou niveaux de gris).</p>
<p>Le mode 40 colonnes correspond au standard <i>Videotex</i>, le
mode 80 colonnes au standard <i>télé-informatique</i>. C'est en
général celui-ci que l'on utilisera s'il sert de terminal. Les
séquences de touches permettant de passer d'un mode à l'autre sont
indiquées dans le tableau suivant dans lequel on retrouvera
également quelques séquences utiles&nbsp;:</p>
<blockquote>
<pre><code>
+-------------+----------------------------------+
|   Touches   |          Signification           |
+-------------+----------------------------------+
| &lt;Fcnt T&gt; A  | Mode tele-informatique americain |
|             | (pas d'accents)                  |
| &lt;Fcnt T&gt; F  | Mode tele-informatique francais  |
|             | accents (codage particulier)     |
| &lt;Fcnt T&gt; V  | Mode Videotex                    |
+-------------+----------------------------------+
| &lt;Fcnt T&gt; E  | Valide/invalide l'echo local     |
|             |                                  |
| &lt;Fcnt E&gt; P  | Mode page (retour haut de page   |
|             | en fin d'ecran)                  |
| &lt;Fcnt E&gt; R  | Mode rouleau (par defaut)        |
|             |                                  |
| &lt;Fcnt C&gt; M  | Verouillage minuscules (defaut   |
|             | en mode tele-informatique)       |
+-------------+----------------------------------+
</code></pre></blockquote>
<h2><a name="ss8.2">8.2 Le clavier</a></h2>
<p>Il s'agit d'un clavier <i>AZERTY</i> permettant la saisie de la
plupart des caractères courants pour un terminal. Il est notamment
possible de verouiller les minuscules grâce à la séquence
&lt;Fcnt&nbsp;C&gt;&nbsp;M. A noter une correspondance, dans le
mode télé-informatique, de certaines touches&nbsp;:</p>
<blockquote>
<pre><code>
+-------------+-----------------------------------+
|   Touches   | Correspondance terminal classique |
+-------------+-----------------------------------+
| Sommaire    |   PF1                             |
|             |                                   |
| Annulation  |   PF2                             |
|             |                                   |
| Retour      |   PF3                             |
|             |                                   |
| Repetition  |   PF4                             |
|             |                                   |
| Envoi       |   Enter (Entree)                  |
+-------------+-----------------------------------+
</code></pre></blockquote>
<p>La touche <i>Entrée</i> correspond également à la séquence de
touches &lt;Ctrl&nbsp;J&gt;</p>
<h2><a name="ss8.3">8.3 Le modem</a></h2>
<p>Le modem du minitel permet des débits de 300 à 4800 ou 9600
bits/s</p>
<blockquote>Tous les modèles de minitel n'autorisent pas tous ces
débits.</blockquote>
. Il est associé à un coupleur travaillant sur 7 bits de données,
un bit de parité paire, un bit de <i>start</i> et un bit de
<i>stop</i>, soit 10 bits par caractère. Le tableau suivant donne
les séquences de touches permettant de configurer le modem à ces
différents débits.
<blockquote>
<pre><code>
+-------------+--------------+
|   Touches   |    Debit     |
+-------------+--------------+
| &lt;Fcnt P&gt; 3  |  300 bits/s  |
|             |              |
| &lt;Fcnt P&gt; 1  | 1200 bits/s  |
|             |              |
| &lt;Fcnt P&gt; 4  | 4800 bits/s  |
|             |              |
| &lt;Fcnt P&gt; 9  | 9600 bits/s  |
+-------------+--------------+
</code></pre></blockquote>
<p>En standard V.23, il est possible de <i>retourner</i> le modem
(vitesse émission-réception) avec la séquence
&lt;Fcnt&nbsp;M&gt;&nbsp;R.</p>
<h2><a name="ss8.4">8.4 Utilisation du Minitel comme simple
terminal</a></h2>
<p>D'après les conseils avisés de <i>Pierre Ficheux</i>, voici un
exemple de configuration permettant de connecter un
Minitel&nbsp;:</p>
<h3>Configuration de getty</h3>
<p>Une méthode simple consiste à compiler un <i>getty</i> un peu
particulier. Les sources se trouvent dans le paquetage
<b>getty_ps-2.0.7h</b>, en général disponible par <i>ftp</i>
(ftp.ibp.fr) sous <b>/pub/linux/tsx-11/sources/sbin</b>.</p>
<p>Il s'agit ensuite de modifier le fichier <i>tune.h</i> comme
suit&nbsp;:</p>
<blockquote>
<pre><code>
#ifdef V23
#define DEF_CFL  (CS7|PARENB)                   /* Pour connexion V.23 */
#else
#define DEF_CFL  (CS8)                  /* default word-len/parity */
#endif /* V23 */
</code></pre></blockquote>
<p>Puis de compiler l'ensemble avec l'option -DV23 vous donnant un
fichier exécutable <i>uugetty</i> que vous pourrez renommer
<i>uugetty_v23</i>. Ensuite, il faut ajouter quelques entrées au
fichier <i>/etc/gettydefs</i>&nbsp;:</p>
<blockquote>
<pre><code>
#
# 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
</code></pre></blockquote>
<p>Enfin, vous modifiez le fichier <i>inittab</i> de façon à
démarrer <i>uugetty_v23</i> comme dans l'exemple
ci-dessous&nbsp;:</p>
<blockquote>
<pre><code>
d4:45:respawn:/sbin/uugetty_v23 ttyS1 9600v23
</code></pre></blockquote>
<p>Une solution différente consisterait à seulement modifier
<i>/etc/gettydefs</i>. La méthode précédente ne fait, finalement,
que redéfinir l'option SANE qui ne comporte pas moins de 16
paramètres, en modifiant l'un d'eux&nbsp;: DEF_CFL. Il est possible
de la redéfinir par configuration en la remplaçant par l'ensemble
des paramètres, sauf CS8 que l'on remplacera par CS7&nbsp;PARENB.
Les entrées de <i>/etc/gettydefs</i> sont à modifier comme
l'exemple ci-après&nbsp;:</p>
<blockquote>
<pre><code>
#
# 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]
</code></pre></blockquote>
<p>Bien que cela puisse paraître lourd, il est préférable
d'utiliser cette méthode. On a trop tendance à recompiler des
sources pour les adapter à trente-six situations alors qu'ils
fournissent généralement un niveau de configurabilité extrêmement
complet et puissant. C'est le cas ici. Les sources de <i>getty</i>
prévoient d'analyser tous ces paramètres, et cela fonctionne
parfaitement.</p>
<h2><a name="ss8.5">8.5 Utilisation du Minitel pour un accès
distant</a></h2>
<p>Deux cas peuvent se présenter&nbsp;:</p>
<ul>
<li>soit vous souhaitez dédier votre ligne aux seuls accès Minitel,
auquel cas il est souhaitable d'envisager de configurer votre
système comme ci-dessus. Il faut simplement modifier le fichier
<i>/etc/gettydefs</i> en remplaçant l'option CLOCAL par CRTSCTS
dans la première partie (options initiales) et par
CRTSCTS&nbsp;HUPCL dans le partie suivante (options
finales)&nbsp;;</li>
<li>soit vous souhaitez seulement <i>pouvoir</i> utiliser le
Minitel comme terminal distant, sans que ce soit un accès dédié.
Dans ce cas il n'y a rien à faire sur votre système (rien de plus
que la configuration que vous avez déjà dû mettre en place&nbsp;:
getty, gettydefs, inittab, ...). Sur le Minitel, il sera préférable
de le configurer en mode télé-informatique
(&lt;Fcnt&nbsp;T&gt;&nbsp;F).</li>
</ul>
<h2><a name="s9">9. Un modem particulier: le câble
null-modem</a></h2>
<p>Un câble <i>null-modem</i> est tout simplement un câble
inverseur permettant de relier ensemble deux ETTD sans passer par
l'intermédiaire de deux ETCD. Il est conforme aux normes du
C.C.I.T.T., c'est à dire qu'il simule les différents signaux. Son
seul inconvénient est que la liaison ainsi réalisée ne peut
dépasser 250 mètres.</p>
<p>Voici le schéma du câble à réaliser&nbsp;:</p>
<blockquote>
<pre><code>
+------+-------+---------------------------------+------+-------+
| 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  |
|      |       |                                 |      |       |
+------+-------+---------------------------------+------+-------+
</code></pre></blockquote>
<h2><a name="s10">10. Choix d'un modem</a></h2>
<p>Si vous êtes sur le point d'investir dans un modem, il y a au
moins trois facteurs déterminants pour vous&nbsp;:</p>
<dl>
<dt><b>Le coût</b></dt>
<dd>
<p>Ce facteur est généralement le plus important. Vous vous êtes
certainement fixé une somme que vous ne pourrez dépasser que dans
des limites raisonnables (moins de 500 francs environ) et moyennant
un service supplémentaire non négligeable. On trouve à l'heure
actuelle d'excellents modems dans une gamme de prix de l'ordre de
1000 FF à 2000 FF.</p>
</dd>
<dt><b>Le débit</b></dt>
<dd>
<p>La réponse pourrait être vague&nbsp;: tout dépend de
l'utilisation. En fait, il semble que la plupart d'entre vous se
connectera à Internet et la plupart des fournisseurs proposent
désormais des accès à 28800 bits/s. Il semble raisonnable
d'investir dans un tel modem, d'autant plus que leur coût est
rarement supérieur à 2000&nbsp;FF. Vous pouvez d'ailleurs espérer
gagner un peu sur les temps de connexions lors de transferts de
fichiers ou de navigation "WEB".</p>
</dd>
<dt><b>Le type de modem&nbsp;: interne ou externe</b></dt>
<dd>
<p>Pour répondre rapidement, on pourrait dire que le modem interne
a, en France, tous les défauts. Hors de France, il a beaucoup de
défauts. C'est un avis, il vaut ce qu'il vaut, mais il semble
partagé par bon nombre d'utilisateurs&nbsp;:</p>
</dd>
</dl>
<ul>
<li>le premier défaut est qu'il est interne et occupe donc un
emplacement sur le <i>bus</i>. En externe le modem est de plus
facilement transportable d'un PC à un autre, par
exemple&nbsp;;</li>
<li>le deuxième est que notre opérateur national demande à ce qu'un
numéro soit "brûlé" lorsqu'un appel échoue plusieurs fois. Une fois
le numéro brûlé, le modem refuse de le composer. La seule solution
est alors d'éteindre le modem et de recommencer. Au fait, comment
éteignez-vous un modem interne&nbsp;?</li>
<li>le troisième est plutôt lié au confort. La plupart des modems
externes possèdent en effet des voyants indiquant l'état de la
connexion. Il est agréable de constater rapidement que la connexion
est perdue ou que le transfert est perturbé.</li>
</ul>
<p>Le seul inconvénient du modem externe est qu'il occupe un port
série. De plus il vaut mieux posséder un port série rapide de type
16550A (les 16550 sont bogués). Notez cependant que les ports série
de type 8250 (les anciens) supportent des débits pouvant aller
jusqu'à 57600 bits/s. Contrairement à ce que l'on dit, ils ne sont
pas si mauvais que cela. Qui est déjà monté à des débits
supérieurs&nbsp;?</p>
<h2><a name="s11">11. Quelques chiffres</a></h2>
<p>Beaucoup d'utilisateurs se posent des questions sur ce qu'ils
peuvent attendre de leur modem et du coût des communications. Bien
souvent, la facture surprend tous les deux mois.</p>
<h2><a name="ss11.1">11.1 Débit réel</a></h2>
<p>Un petit tableau vaut mieux qu'un long discours, voici quelques
valeurs de débits réels. Evidemment, il n'est pas tenu compte des
problèmes de lignes, de disponibilité des serveurs qui réduisent
parfois les taux de transfert effectifs. De plus, les valeurs sont
indiquées sans compression logicielle. En cas de compression, il
faudra multiplier les valeurs par au plus 2, ce qui est déjà
optimiste.</p>
<p>Il faut savoir qu'en transmission asynchrone 8 bits, étant
donnés les bits de <b>start</b> et de <b>stop</b>, le rendement est
d'environ 80%.</p>
<blockquote>
<pre><code>
+---------------+--------------+-------------------+
| 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    |
+---------------+--------------+--------+----------+
</code></pre></blockquote>
<h2><a name="ss11.2">11.2 Coûts de connexion</a></h2>
<p>Le meilleur indicateur pour ce genre de calcul est bien entendu
France Télécom. Essayons ici de dégager quelques grands chiffres.
Les prix sont indiquées pour un appel à Paris&nbsp;:</p>
<blockquote>
<pre><code>
+---------------+---------------------------------+
|               |  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 |
+---------------+---------------------------------+
</code></pre></blockquote>
Prix de l'unité Télécom&nbsp;: 0,742 FF.
<h2><a name="s12">12. Envisager d'écrire des applications</a></h2>
<p>Vous avez sûrement plein d'idées d'applications intéressantes,
mais envisager de contrôler une jonction série vous fait
peur&nbsp;? Voici quelques petites indications.</p>
<h2><a name="ss12.1">12.1 Et si c'était simple&nbsp;?</a></h2>
<p>Sous Unix, donc sous Linux, les seuls objets manipulés lors des
entrées/sorties sont les <i>fichiers</i>. (Tiens, au fait, on
aurait peut-être dû commencer par là&nbsp;! Bon, vous le saviez
déjà, ce n'est pas un cours Unix). La jonction série n'échappe pas
à cette règle et le pilote vous la présente ainsi. Ici, il s'agit
d'un (ou plutôt deux comme on le verra plus loin) fichier
particulier, bien sûr, puisque se cache derrière un pilote
(<i>driver</i>) en mode caractère, mais la façon de réaliser les
entrées sorties est la même&nbsp;: <b>open, read, write, ioctl,
close</b>. Il y a quand même quelques petites choses à savoir.</p>
<p>Le pilote série s'est enregistré, à l'initialisation du noyau,
comme un <i>tty</i>. Il est donc géré comme un tty classique. Il
apporte bien entendu quelques caractéristiques supplémentaires que
nous verrons rapidement dans la section concernant la commande
<i>ioctl</i>. Toujours est-il que si vous savez gérer un <i>tty</i>
sous Unix (commande <i>stty</i>), vous saurez sans problème gérer
ce pilote.</p>
<h3>open, close</h3>
<p>La méthode d'ouverture et de fermeture d'un port série est
classique. Néanmoins un mécanisme particulier se cache derrière la
primitive <b>open</b> qui est rapidement décrit à la section
<a href="#sec-appels">Appels entrants (Dial-in) et appels sortants
(Call-out) sous Linux</a>.</p>
<h3>read, write</h3>
<p>Rien à signaler de particulier.</p>
<h3>ioctl</h3>
<p>Le contrôle de tout système d'entrée/sortie se fait avec la
commande système <i>ioctl</i>. Elle est souvent masquée par des
commandes de haut niveau (setserial, stty, modemstat, ...), mais
elle est leur moteur.</p>
<p>Selon que vous souhaitez vous adresser aux fonctionnalités
classiques d'un <i>tty</i> ou aux fonctions spécialisées du pilote
série, vous utiliserez deux sous-ensembles de commandes
différentes. Vous les retrouverez dans le fichier à inclure
<i>linux/termios.h</i>. Décrivons-les rapidement (on déborde un
tout petit peu du sujet <code>:-)</code>)&nbsp;:</p>
<dl>
<dt><b>TCGETS - TCSETS</b></dt>
<dd>
<p>et quelques dérivés avec WAIT, FLUSH... Elles permettent de
récupérer (resp. positionner) les attributs standard <i>tty</i>
dans une structure <i>termios</i> (voir le fichier
<i>linux/termios.h</i>)</p>
</dd>
<dt><b>TIOCSTTY - TIOCNOTTY</b></dt>
<dd>
<p>permettent de définir (resp. annuler) une session d'utilisation
du <i>tty</i>. Ceci est visible car, entre autres choses, une
conséquence est le changement des droits du fichier
correspondant</p>
<blockquote>
<pre><code>
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
</code></pre></blockquote>
</dd>
<dt><b>TCFLSH et compagnie</b></dt>
<dd>
<p>positionnement d'indicateurs (voir la commande stty)</p>
</dd>
<dt><b>TIOCGSERIAL - TIOCSSERIAL</b></dt>
<dd>
<p>permettent de récupérer (resp. positionner) les informations
générales dans une (resp. à partir d'une) structure
<i>serial_struct</i> (voir le fichier <i>linux/serial.h</i>)&nbsp;:
le type de port série, la ligne, le port, l'irq le port utilisé...
ni plus ni moins ce que fait <i>setserial</i>.</p>
</dd>
<dt><b>TIOCMGET - TIOCMSET</b></dt>
<dd>
<p>permettent de récupérer (resp. positionner) les informations
plus spécifiques à la jonction proprement dite (dans un entier,
sous forme de bits positionnés selon que l'indicateur correspondant
est vrai ou faux)&nbsp;:</p>
</dd>
</dl>
<blockquote>
<pre><code>
+-------------------------------------------------------------------------------------------+
|   //     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
</code></pre></blockquote>
<h2><a name="sec-appels"></a> <a name="ss12.2">12.2</a> Appels
entrants (Dial-in) et appels sortants (Call-out) sous Linux</h2>
<h3>Introduction</h3>
<p>Le pilote série du noyau de Linux propose de gérer un même port
série à la fois pour les appels entrants et pour les appels
sortants exploitant ainsi pleinement leur caractéristique
bi-directionnelle. Il offre donc à l'utilisateur deux types de
fichiers&nbsp;:</p>
<ul>
<li><code>/dev/ttyS&lt;n&gt;</code>&nbsp;: sont généralement
utilisés en entrée&nbsp;;</li>
<li><code>/dev/cua&lt;n&gt;</code>&nbsp;: sont généralement
utilisés en sortie.</li>
</ul>
<h3>Gestion</h3>
<p>Chaque port série est enregistré deux fois auprès du gérant
<i>tty</i>&nbsp;: une fois en mode <i>entrée</i> (ttyS,
majeur&nbsp;4) et une fois en mode <i>sortie</i> (cua,
majeur&nbsp;5). Voyons rapidement comment le pilote gère ensuite
les "deux" ports&nbsp;:</p>
<ul>
<li>les ports séries <code>/dev/cua</code> sont gérés en mode
<i>non-bloquant</i>. Leur ouverture n'est possible que si la ligne
<code>/dev/ttyS</code> correspondante n'est pas ouverte et active
(sinon <code>errno</code> retourne EBUSY)&nbsp;;</li>
<li>les ports séries <code>/dev/ttyS</code> sont gérés en mode
bloquant ou non-bloquant, c'est donc un peu plus compliqué. Si
l'indicateur CLOCAL est positionné, l'ouverture en mode
<b>bloquant</b> est effective si la ligne <code>/dev/cua</code> est
libre. Si l'indicateur CLOCAL n'est pas positionné, elle est
effective si les deux conditions suivantes sont réunies&nbsp;:
<ul>
<li>la ligne est libre (le <code>/dev/cua</code> correspondant
n'est pas utilisé),</li>
<li>la porteuse (circuit 109) a été détectée.</li>
</ul>
Dans ce mode et pendant que l'ouverture est bloquée, la ligne n'est
pas occupée, ce qui signifie qu'une application peut toujours
effectuer un appel sortant. Si le port est en cours de fermeture,
l'ouverture échoue (EAGAIN).
<p>L'ouverture en mode non-bloquant, quant à elle, est effective si
le port n'est pas déjà ouvert et actif (sinon <code>errno</code>
retourne EBUSY)</p>
<blockquote>Les applications utilisent de plus le mécanisme des
fichiers de verrouillage garantissant l'unicité d'utilisation de la
ressource.</blockquote>
.</li>
</ul>
<p>C'est le mode qu'utilisent beaucoup d'applications comme
<i>getty</i> qui souhaitent dans un premier temps initialiser la
ligne (pour éviter des instabilités liées aux connexions
précédentes) voire ensuite pour initialiser l'équipement (modem).
Elles ne s'intéressent qu'au fait que la ligne soit occupée, en
fermeture ou libre. Si celle-ci n'est pas libre, l'application se
termine et le mécanisme du <i>respawn</i> se charge de les
relancer.</p>
<p>Pour la gestion de la connexion proprement dite, l'application
<i>getty</i> (pour prendre un exemple courant) ouvre la ligne, soit
en mode bloquant si vous laissez le modem en réponse automatique,
soit en mode non-bloquant si vous souhaitez qu'elle gère activement
la connexion. Elle est alors en attente bloquante en lecture (sur
<i>read</i>).</p>
<h2><a name="s13">13. Quelques applications intéressantes</a></h2>
<h2><a name="ss13.1">13.1 Un numéroteur</a></h2>
<p>Cette idée va faire plaisir à <i>Xavier CAZIN</i>&nbsp;: c'est
la sienne. Le mieux est de le laisser parler&nbsp;:</p>
<blockquote>En fait, je trouverais très utile de cliquer sur un
bouton pour appeler une personne retrouvée dans une base de données
par exemple. Surtout si elle se trouve à l'étranger (minimum 12
chiffres depuis ici). Donc, ce que j'aimerais, ce sont les
renseignements nécessaires au programmeur pour pouvoir construire
un frontal qui demande au modem de composer le numéro choisi, puis
affiche un message (si le poste n'est pas occupé) du style "Le
téléphone sonne, prenez le combiné". Ces petites choses toutes
simples demandent de comprendre ce que signifie prendre la ligne et
la relâcher, pour un modem.</blockquote>
<p>Excellent exercice. Alors avec tout ce que l'on vient de dire,
au travail&nbsp;<code>:-)</code>. En laissant de côté la partie
base de données, l'algorithme à utiliser correspond à
<i>l'organigramme d'un appel</i> donné à titre d'information au
chapitre <a href="#sec-modems">Le modem</a>, auquel il faut
rajouter&nbsp;:</p>
<ul>
<li>au préalable, ouvrir le port série
(<code>/dev/cua&lt;n&gt;</code>), le configurer. Le mieux est de
prendre exemple sur ce que fait <i>getty</i>&nbsp;;</li>
<li>envoyer ensuite les commandes AT d'initialisation puis de
numérotation (utiliser la fonction chat()) qui fait ceci très
bien&nbsp;;</li>
<li>enfin se mettre en lecture sur le port afin de détecter les
messages émis par le modem. Le seul problème ici est qu'il sera
difficile d'attendre certains d'entre-eux (NO&nbsp;ANSWER, TIMEOUT)
étant donné qu'il faut prévenir l'utilisateur qu'il peut
décrocher.</li>
</ul>
<p>Par contre les messages NO&nbsp;DIALTONE (modem pas branché), et
BUSY sont fort intéressants et permettent d'informer l'utilisateur
immédiatement.</p>
<h2><a name="ss13.2">13.2 modemstat et compagnie</a></h2>
<p>Vous trouverez sur les <i>serveurs ftp</i> habituels quelques
petits programmes permettant d'afficher l'état de la jonction. Vous
pourrez vous intéresser particulièrement à la façon de récupérer
les informations (plutôt que sur l'interface utilisateur qui est
l'exemple même de ce qu'il ne faut pas faire).</p>
<blockquote>
<pre><code>
/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
</code></pre></blockquote>
<p>Un bon point pour statserial aussi simple que bien présenté, en
mode texte.</p>
<h2><a name="ss13.3">13.3 Un détecteur de signal 109 (CD)</a></h2>
<p>Lu dans <i>comp.os.linux.development.apps</i> cette demande</p>
<blockquote>Existe-t-il un utilitaire que je pourrais utiliser dans
un <i>shell-script</i> et retournant une valeur, disons 1, si le
signal <i>Détection de porteuse</i> est monté et 0
sinon&nbsp;?</blockquote>
<p>Le message ne dit pas quel en serait l'usage mais peu importe
c'est un excellent exemple d'utilitaire assez facile à réaliser.
Voici d'ailleurs un exemple de code source possible&nbsp;:</p>
<hr>
<pre>
------------------------- debut de carrier.c -------------------------
#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt;
#include &lt;sys/ioctl.h&gt;
#include &lt;termios.h&gt;
#include &lt;unistd.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;errno.h&gt;
#include &lt;stdio.h&gt;

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)) &lt; 0) {
    fprintf(stderr, "%s: error opening \"%s\": %s\n", whoami, device,
            strerror(errno));
    return(EXIT_FAILURE);
  }

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

  if (modem_bits &amp; TIOCM_CAR) {
    printf("1\n");
    return(EXIT_SUCCESS);
  }
  
  printf("0\n");
  return(EXIT_FAILURE);
}
------------------------- fin de carrier.c -------------------------
</pre>
<hr>
<p>On pourra ensuite l'utiliser dans un <i>shell</i> de la manière
suivante&nbsp;:</p>
<hr>
<pre>
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
</pre>
<hr>
<h2><a name="s14">14. Remerciements</a></h2>
<p>Ce document n'aurait vu le jour sans un certain nombre de gens
fort sympathiques et plein de bonnes idées appartenant pour la
plupart à la mailing list de traduction :</p>
<p>René COUGNENC,\\ Xavier CAZIN,\\ Bernard CHOPPY,\\ François
AUDIBERT\\ Eric DUMAS,\\ Pierre FICHEUX, \\ Hervé MIGNOT, \\ Pierre
VASSELLERIE, \\ Jacques LAVIGNOTTE, \\ et tous les autres.</p>
</body>
</html>