File: setserial.8

package info (click to toggle)
manpages-ja 0.5.0.0.20120606-1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 25,964 kB
  • sloc: perl: 161; makefile: 116
file content (535 lines) | stat: -rw-r--r-- 23,591 bytes parent folder | download | duplicates (6)
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
.\" Copyright 1992, 1993 Rickard E. Faith (faith@cs.unc.edu)
.\" May be distributed under the GNU General Public License
.\" Portions of this text are from the README in setserial-2.01.tar.z,
.\" but I can't figure out who wrote that document.  If anyone knows,
.\" please tell me
.\"
.\" [tytso:19940519.2239EDT]  I did... - Ted Ts'o (tytso@mit.edu)
.\" Sat Aug 27 17:08:38 1994 Changes from Kai Petzke
.\" (wpp@marie.physik.tu-berlin.de) were applied by Rik Faith
.\" (faith@cs.unc.edu)
.\" "
.\" Translated Feb 14 1997 by FUKUBA Koso <koso@ga2.so-net.or.jp>
.\" Modified 8 Aug 1998 by Fujiwara Teruyoshi <fujiwara@linux.or.jp>
.\" Modified Sat 14 Apr 2001 by Kentaro Shirakata <argrath@ub32.org>
.\"
.\" WORD:	callout		発信
.\" WORD:	dialin		着信
.TH SETSERIAL 8 "January 2000" "Setserial 2.17
.SH 名前
setserial \- Linux シリアルポート情報の設定と取得
.SH 書式
.B setserial
.B "[ \-abqvVWz ]"
device
.BR "[ " parameter1 " [ " arg " ] ] ..."

.B "setserial -g"
.B "[ \-abGv ]"
device1 ...
.SH 説明
.B setserial
は、シリアルポートに関する設定情報を設定または
表示するプログラムです。この情報には、指定されたシリアルポートが
使用している I/O ポートアドレス や IRQ の情報、およびブレークキーを
受信接続通知キー(Secure Attention Key)として使用するかどうかなどの情報
が含まれます。

通常のブート処理中には、COM ポートの 1 〜 4 だけが、以下に示す
デフォルトの I/O ポートアドレスと IRQ の値を使って初期化されます。
.B setserial
は、追加されたシリアルポートを初期化したり、1 〜 4 の COM ポートを
標準でない設定にするために使用されます。
.B setserial
は通常、
.I /etc/rc.local
から起動される
.I rc.serial
スクリプトに登録しておきます。

引数
.I device
には、設定したり表示したいシリアルポートのデバイスファイルを
指定します。通常、以下のような形式で指定します:
.BR /dev/cua[0-3]

パラメータが全く指定されなかった場合、
.B setserial
は、ポートの種類 (例えば、8250, 16450, 16550, 16550A など)、
ハードウェアの I/O ポートアドレス、IRQ 番号、ボーレート、
操作可能なフラグのいくつかの内容を表示します。

.B \-g
オプションが指定されると、setserial への引数は全て、表示対象となるデバイス
として解釈され、複数のデバイスの設定内容を表示させることができます。

.B \-g
オプションを指定しないと、setserial への最初の引数が、設定したり表示
したりするデバイスとして解釈されます。また、その他の引数は、
シリアルデバイスに与えるパラメータとして解釈されます。

ほとんどの場合、シリアルポートのパラメータの設定にはスーパーユーザーの
特権が必要です。しかし、少しだけ一般ユーザが設定できるパラメータがあります。
それらはこの man ページ中で説明します。

.SH オプション
.B setserial
には、以下のオプションを指定することができます:
.TP
.B \-a
シリアルデバイスの設定内容を表示するとき、すべての情報を表示します。
.TP
.B \-b
シリアルデバイスの設定内容を表示するとき、
ブート時に /etc/rc スクリプトで使用する時に適した形で
デバイス情報のサマリを表示します。
.TP
.B \-G
シリアルポートの設定情報を、setserial のコマンドラインオプションの形で
表示します。
.TP
.B \-q
.B setserial
の出力を抑制します。
.TP
.B \-v
詳細モード。
いくつかのステータスが追加出力されます。
.TP
.B \-V
.B setserial
のバージョンを出力して終了します。
.TP
.B \-W
割り込みの初期化を荒っぽく行い、終了します。
このオプションはバージョン 2.1 以降の Linux カーネルに対しては無効です。
.TP
.B \-z
シリアルフラグをセットする前に全てのフラグをゼロクリアします。
これは \-G オプションを使ったシリアルフラグの自動保存と関係があります。

.SH パラメータ
シリアルポートに対して、以下のパラメータを設定することができます。

すべての値は、先頭に "0x" があれば 16 進数とみなされます。

.TP
.BR port " port_number"
.B port 
パラメータは、先に述べたように I/O ポート番号の設定を行ないます。
.TP
.BR irq " irq_number"
.B irq
パラメータは、先に述べたようにハードウェアの IRQ の設定を行ないます。
.TP
.BR uart " uart_type"
このオプションは、シリアルポートの UART の種類を設定するために使用されます。
指定できるタイプは、
.BR none ,
8250, 16450, 16550, 16550A, 16650, 16650V2, 
16654, 16750, 16850, 16950, 16954 です。
UART タイプ
.B none
は、ポートを使用できないようにします。

内蔵モデムの中には、「1k のバッファを持った 16550A」を備えていると
書かれたものがあります。これは嘘です。実際には 16550A 互換の
UART ではなく、(受信時のオーバーランを防ぐために)
1k の受信バッファのついた 16450 互換 UART が付いているのです。
これらには 送信 FIFO がないので、この違いは重要です。
そういう訳で、これらは 16550A UART と互換性がなく、
自動設定処理では 16450 として認識します。もし
.B uart
オプションを使ってこれを変更してしまうと、ファイル送信中にデータを
取りこぼすことになるでしょう。
これらの UART は普通他の問題も抱えています。
大抵の場合
.B skip_test
オプションも指定しなくてはいけません。
.TP
.B autoconfig
このパラメータが設定されると、
.B setserial
はカーネルにシリアルポートを自動的に設定するよう要求します。
I/O ポートは、正しく設定しなければいけません。
その後カーネルは UART の種類を決定し、
.B auto_irq 
オプションが設定されていれば、IRQ を自動的に設定しようとします。
.B autoconfig
オプションは、
.BR port 、
.BR auto_irq 、
.B skip_test
オプションの後に指定すべきです。
.TP
.B auto_irq
自動設定を行なう際、IRQ を自動決定しようとします。
この機能は、いつも正しい結果をもたらすとは限りません。
ハードウェアの設定によっては、Linux のカーネルはだまされてしまいます。
一般に
.B auto_irq
の機能を使うよりも、
.B irq
パラメータを使って、使用される IRQ を明示的に指定した方が信頼性があります。
.TP
.B ^auto_irq
自動設定の際、IRQ の自動決定を行ないません。
.TP
.B skip_test
自動設定の際、UART のテストをスキップします。
内蔵モデムの中には、National Semiconductor 互換の UART を持っておらず、
代わりに安い偽物を持っているものがあります。これらの偽物 UART では、
カーネルが設定する前に指定されたアドレスに本当に
UART があることを確認するために使用する、ループバック検出モードを
完全にはサポートしていません。
このような内蔵モデムでは、
このオプションを指定して
Linux が正しく UART を初期化できるようにしなければなりません。
.TP
.B ^skip_test
自動設定の際、UART のテストをスキップしません。
.TP
.BR baud_base " baud_base"
基本となるボーレートを設定します。
ボーレートは、クロック周波数を 16 で割った値です。
通常この値は 115,200 に設定されています。これは
UART がサポートできる最も速いボーレートです。
.TP
.B
spd_hi
アプリケーションが 38.4 Kbps を要求した場合に、57.6 Kbps を使用します。
このオプションは一般ユーザーでも指定できます。
.TP
.B spd_vhi
アプリケーションが 38.4 Kbps を要求した場合に、115 Kbps を使用します。
このオプションは一般ユーザーでも指定できます。
.TP
.B spd_shi
アプリケーションが 38.4 Kbps を要求した場合に、230 Kbps を使用します。
このオプションは一般ユーザーでも指定できます。
.TP
.B spd_warp
アプリケーションが 38.4 Kbps を要求した場合に、460 Kbps を使用します。
このオプションは一般ユーザーでも指定できます。
.TP
.B spd_cust
アプリケーションが 38.4 Kbps を要求した場合に、スピードを設定するため
に特別な除数を使用します。この場合のボーレートは、
.B baud_base
.B 除数
で割った値になります。
このオプションは一般ユーザーでも指定できます。
.TP
.B spd_normal
アプリケーションが 38.4 Kbps を要求した場合に、38.4 Kbps を使用します。
このオプションは一般ユーザーでも指定できます。
.TP
.BR divisor " divisor"
除数を設定します。この除数は、
.B spd_cust
オプションが指定されていて、アプリケーションがシリアルポートに 38.4 Kbps を
設定した場合に使用されます。
このオプションは一般ユーザーでも指定できます。
.TP
.B sak
ブレークキーを受信接続通知キー(Secure Attention Key)に指定します。
.TP
.B ^sak
受信接続通知キー(Secure Attention Key)を無効にします。
.TP
.B fourport
ポートを AST Fourport カードとして設定します。
.TP
.B ^fourport
AST Forport の設定を行ないません。
.TP
.BR close_delay " delay"
発信デバイスがクローズされたあと、ブロックされた着信デバイスの DTR が
再び立ち上がるまでの間、シリアルライン上の DTR を LOW に維持しておく
時間を指定します。この値の単位は、10ms です。
デフォルトでは、この値は 50、 すなわち 500 ms (0.5 秒)です。
.TP
.BR closing_wait " delay"
シリアルポートを閉じようとするとき、
ポートへデータを送信するためにカーネルが待つ時間を指定します。
この値の単位は 10ms です。
"none" が指定されると、待ち時間は発生しません。
"infinite" が指定されると、バッファリングされたデータが送信し終わるまで
無限に待ち続けます。
デフォルト設定は 3000 (30 秒待つ) です。
通常これは、ほとんどのデバイスに対して適切な値です。
もし長過ぎる待ち時間を設定すると、
未接続のシリアルポートに送信待ちのデータがある状態でクローズされた場合に
シリアルポートが長い間ハングアップしてしまうかもしれません。
もし短すぎる待ち時間を設定すると、
送信するべきデータを送信しきれない可能性があります。
もしデバイスがプロッタプリンタのように極めて低速な場合は、
closing_wait の値を大きくする必要があるかもしれません。
.TP
.B session_lockout
複数のセッションで同一の発信ポート(/dev/cuaXX)を使用できないようにします。
つまり、あるプロセスが一旦ポートをオープンすると、そのプロセスが
ポートをクローズするまで、別のセッション ID を持つプロセスは、
そのポートをオープンできなくなります。
.TP
.B ^session_lockout
複数のセッションで同一の発信ポート(/dev/cuaXX)を使用できるようにします。
.TP
.B pgrp_lockout
複数のプロセスグループで同一の発信ポート(/dev/cuaXX)を使用できないようにします。
つまり、あるプロセスが一旦ポートをオープンすると、
そのプロセスがポートをクローズするまで、
別のプロセスグループのプロセスはそのポートをオープンできなくなります。
.TP
.B ^pgrp_lockout
複数のプロセスグループで同一の発信ポート(/dev/cuaXX)を使用できるようにします。
.TP
.B hup_notify
別のプロセスによる発信ラインの使用が終了した(ポートをクローズしたか、
シリアルラインがハングアップした)ことを、着信ラインをオープンしようと
しているプロセスに EAGAIN を返すことで通知します。

このパラメータは、例えばシリアルポートの
着信ラインをブロックされている getty 向けに用います。
用いると、getty は再びそのポートをオープンしてブロックする前に、
モデムをリセットできるようになります
(そのモデムを発信デバイスとして使用したアプリケーションによって、
ポートの設定が変更されたかもしれませんから)。
.\"nakano 直してはみたものの、いまいちよくわからない...
.TP
.B ^hup_notify
発信デバイスがハングアップしたことを、着信回線をオープンしようと
しているプロセスに通知しません。
.TP
.B split_termios
発信デバイスによって使用される termios の設定と、
着信デバイスによって使用される termios の設定とを別々に扱います。
.TP
.B ^split_termios
発信ポートと着信ポートの両方で同じ termios 構造体を使用します。
これはデフォルトの設定です。
.TP
.B callout_nohup
指定されたシリアルポートが発信デバイスとしてオープンされた場合、
キャリア検出(CD)信号が落ちても tty をハングアップしません。
.TP
.B ^callout_nohup
シリアルポートが発信デバイスとしてオープンされているとき、
tty をハングアップする処理をスキップしません。
もちろん、ハングアップをさせるには
termios の HUPCL フラグが有効になっていなければなりません。
.TP
.B low_latency
シリアルデバイスの受信遅延を最小にします。ただし CPU の利用度は増加します
(通常はオーバーヘッドを最小限にするために、
受信キャラクタを扱う前に 5-10ms の遅延があります)。
これはデフォルトではオフですが、リアルタイム処理をするアプリケーションの中には
このオプションが有効なものがあるかもしれません。
.TP
.B ^low_latency
CPU がシリアルキャラクタを処理する効率を最適化します。
ただしキャラクタを処理する前に 5-10ms の遅延が発生します。
これがデフォルトです。
.SH シリアルポートの設定上の注意事項
注意して欲しいのですが、
setserial が行うのは、
指定されたシリアルポートの I/O ポートと IRQ とがどこそこで見つかるはずだ、
という情報を Linux カーネルに教えることだけなのです。
setserial は、実際のシリアルボードが指定された I/O ポートを使用するように、
ハードウェアを設定するわけではありません。
これを行なうには、ジャンパーの設定や、DIP スイッチの切替えによって
シリアルボードを物理的に設定する必要があります。

本章では、自分のシリアルポートをどのように設定したいかを決定する
手助けになるポインターを提供します。

標準的な "MS-DOS" のポート割り付けは、次のようになっています:

.nf
.RS
/dev/ttyS0 (COM1), port 0x3f8, irq 4
/dev/ttyS1 (COM2), port 0x2f8, irq 3
/dev/ttyS2 (COM3), port 0x3e8, irq 4
/dev/ttyS3 (COM4), port 0x2e8, irq 3
.RE
.fi

AT/ISA バスアーキテクチャーの設計上の制限のため、通常 IRQ は 2 つあるいは
それ以上のシリアルポートで共有することはできません。これを行なうと、
両方を同時に使おうとした時に一方あるいは両方のシリアルポートが不安定に
なるでしょう。この制約は単一の IRQ を複数のシリアルポートで共有できる
ように設計された特殊なマルチポートシリアルカードを使うことで克服する
ことができます。Linux でサポートされているマルチポートシリアルカードには、
AST Fourport, Accent Async board, Usenet Serial II board, Bocaboard
BB-1004, BB-1008, BB-2016 boards, HUB-6 serial board があります。

別の IRQ を用いるのも困難です (それらは大抵使用されていますから)。
以下の表は、標準的な "MS-DOS" で割り付けられている
使用可能な IRQ の一覧です:

.nf
.RS
IRQ 3: COM2
IRQ 4: COM1
IRQ 5: LPT2
IRQ 7: LPT1
.RE
.fi

コンピュータにパラレルポートが一つしかなければ、
IRQ 5 が良い選択であることにほとんどの人が気づくと思います。
その他の選択としては IRQ 2
(別名: IRQ 9) があります。ただしこの IRQ はネットワークカードで使われる
ことがあります。また非常に稀ですが、VGA カードが垂直同期信号割り込みのために
IRQ 2 を使うように設定されていることがあります。
自分の VGA カードがこのように設定されている場合は、
それを使用しないようにして見てください。
そうすれば、その IRQ を他のカードが使えるようになります。
Linux やその他のほとんどの OS では、
IRQ 2 を垂直同期信号割り込みのために使用する必要はありません。

他に使用できる IRQ が、3, 4, 7 だけですが、これらもおそらく
他のシリアルポートやパラレルポートで使用されているでしょう。
(もしお使いのシリアルカードに 16 bit カードエッジコネクタが付いていて、
より上位の割り込み番号をサポートしているなら、
IRQ 10, 11, 12, 15 も使用できるでしょう。)

AT 互換機では、IRQ 2 は IRQ 9 のように見えます。Linux でも、この流儀に
したがって解釈します。

2 (9), 3, 4, 5, 7, 10, 11, 12, 15 以外の IRQ は
他のハードウェアに割り付けられており、普通変更できないので、
使うべきではありません。
「標準的な」割り付けは、次のようになっています。

.nf
.RS
IRQ  0      Timer channel 0
IRQ  1      Keyboard
IRQ  2      Cascade for controller 2
IRQ  3      Serial port 2
IRQ  4      Serial port 1
IRQ  5      Parallel port 2 (Reserved in PS/2)
IRQ  6      Floppy diskette
IRQ  7      Parallel port 1
IRQ  8      Real-time clock
IRQ  9      Redirected to IRQ2
IRQ 10      Reserved
IRQ 11      Reserved
IRQ 12      Reserved (Auxillary device in PS/2)
IRQ 13      Math coprocessor
IRQ 14      Hard disk controller
IRQ 15      Reserved
.RE
.fi

.SH マルチポート設定

複数のポートで一つの IRQ を共有するようなタイプの
マルチポートシリアルボードには、
作業が必要な待ち状態のポートがあるかどうかを示すために、
ひとつまたは複数のポートを使うものがあります。
使っているマルチポートボードがこのようなポートをサポートしているなら、
これらのポートを使えば、
割り込みがロスト時でもシステムが固まらないようにできます。

これらのポートを設定するためには、
.B set_multiport
パラメータを指定し、その後ろにマルチポートパラメータを指定します。
マルチポートパラメータは、チェックするべき
.IR port 、
レジスタのどのビットが有効かを指定する
.IR mask 、
するべき作業がなくなった時にレジスタの有効ビットが
一致しなければならない値を指定する
.I match
からなります。

このような port/mask/match の組は 4 つまで指定できます。
一つ目の組は
.BR port1 ,
.BR mask1 ,
.B match1
で指定し、二つ目は
.BR port2 ,
.BR mask2 ,
.B match2
で指定します。以下同様です。
マルチポートのチェックを無効にするためには、
.B port1
に 0 を指定してください。

現在のマルチポート設定を見るためには、コマンドラインから
.B get_multiport
パラメータを指定してください。

以下にいくつかの一般的なシリアルボードのためのマルチポート設定を示します。

.nf
.RS
AST FourPort    port1 0x1BF mask1 0xf match1 0xf

Boca BB-1004/8  port1 0x107 mask1 0xff match1 0

Boca BB-2016    port1 0x107 mask1 0xff match1 0 
                port2 0x147 mask2 0xff match2 0
.RE
.fi

.SH Hayes ESP 設定
.B setserial
は Hayes ESP シリアルボードのポートを設定することもできます。
.PP
ESP ポートを設定するには以下のパラメータを使います。
.TP
.B rx_trigger
受信 FIFO のトリガレベル (バイト単位) です。
大きい値を設定すると割り込み回数が減り、性能が向上します。
しかし、値を大きくしすぎるとデータを失うことになるかもしれません。
有効な値は 1 から 1023 です。
.TP
.B tx_trigger
送信 FIFO のトリガレベル (バイト単位) です。
大きい値を設定すると割り込み回数が減り、性能が向上します。
しかし、値を大きくしすぎると送信効率を落とすことになるかもしれません。
有効な値は 1 から 1023 です。
.TP
.B flow_off
ESP ポートが相手の送信側に対して「フローオフ」を伝える
(これ以上データを送信しないように伝える)レベル(バイト単位)です。
有効な値は 1 から 1023 です。
この値は受信トリガレベルとフローオンレベルより大きい値にするべきです。
.TP
.B flow_on
ESP ポートが相手の送信側に対してフローオフを伝えた後に、
「フローオン」を伝える
(これ以上データ送信を再開するように伝える)レベル(バイト単位)です。
有効な値は 1 から 1023 です。
この値はフローオフレベルより小さく、受信トリガレベルより大きい値にするべきです。
.TP 
.B rx_timeout
最後のキャラクタを受信してから、割り込みを発生させるまでに
ESP ポートが待つ時間です。
有効な値は 0 から 255 です。
値が大きすぎると遅延が大きくなり、
値が小さすぎると不必要な割り込みが発生することになります。

.SH 警告
警告: シリアルポートが使用する I/O ポートの設定を間違えると、
マシンがハングアップしてしまうかもしれません。
.SH ファイル
.BR /etc/rc.local
.BR /etc/rc.serial
.SH "SEE ALSO"
.BR tty (4),
.BR ttys (4),
kernel/chr_drv/serial.c
.SH 著者
setserial のオリジナルバージョンは Rick Sladkey (jrs@world.std.com) 
によって書かれ、 Michael K. Johnson (johnsonm@stolaf.edu) によって
変更されました。

このバージョンは、1993 年 1 月 1 日 に Theodore Ts'o (tytso@mit.edu) 
によって最初から書き直されたものです。
バグおよび問題点は、彼のみの責任です。