<!-- 	$Id: Modem-HOWTO.sgml,v 1.5 2004/02/15 02:12:36 morimoto Exp $	 -->
<!doctype linuxdoctr system>
<article>
<title>The Linux Modem-HOWTO </title>
<author>David S.Lawyer  
  <tt><url url="mailto:dave@lafn.org"></tt>
<date> v0.08, 4 January 2000
<trans>さいとうかん <tt/can-s@geocities.jp/
<tdate>2000年 2月 4日

<!--
Change log:  + => added more info  ++ => added new topic
v0.08 Vern's url, leased line modems, finding modem, Lucent winmodem,
 multiport modem cards, clarity for 56k sect
v0.07 28 Nov. 1999 digital-modems for ISP, duplicate info removed from 
  setserial
v0.06 Revised contact with Ted T.
v0.05 Oct. 1999 Book, PCI per Ted T., Exist DSL & Cable howtos, fixed 
 suse isdn link
v0.04 Aug. 1999 What is a fax or voice modem?
 Vern's getty, dialin + , flash upgrades +, stop and stop typo,
 MWave +, removed interrupt problem details (since latest in Serial-HOWTO)
 callback +, v.90 + uses 64k channel, remove &colon; include files per
 m4, serial voltage link, min. voice mail url
v0.03 Apr.-May 1999 BIOS messages; fixed formatting, Windows doesn't ? 
 update ESCD, sunsite ->metalab, PnP settings on card are volatile, 
 license rev.,  wvdial
v0.02 Mar. 1999 25-pin serial ports still on new ones,  Some modems
 report both speeds, New versions at, dumpregs (flag to pnpdump)
v0.01 Jan. 1999 link to mgetty site, added -g to setserial /dev/ttyS*, 
shared serial interrupts in Linux 2.2, pnpdump doesn't show config
warn about Winmodems being mislabeled. Use some of 20 items Bill Staehle 
emailed to me.  Link to voice-mail site.  PCMCIA-HOWTO. Added: Problems
Explained section.  Internal. doesn't overrun.  /proc/pci signature ??
v0.00 Dec. 1998 Combined Serial-HOWTO with my own additions
-->

<!--
<abstract>
 Help with selecting, connecting, configuring, trouble-shooting, and
 understanding modems for a PC.  See Serial-HOWTO for multiport serial
 boards.  
</abstract>
-->

<abstract>
PC のモデムを選択、接続、設定、トラブルシューティング、そしてモデムを
理解する際に、この文書は役立ちます。マルチポートシリアルボードに関して
は、Serial-HOWTO を参照してください。
</abstract>


<toc>

<!--
<sect> Introduction

<sect1> DSL, Cable, and ISDN Modems in other HOWTOs
<p> This HOWTO covers conventional modems for PC's, mainly modems on
the ISA bus (although much of this should also apply to the PCI bus).  
<itemize>
<item> DSL modems: see the mini-howto: ADSL
<item> Cable-Modems-HOWTO (was once a LDP mini-Howto) <url
url="http://www.cs.unm.edu/~vuksan/linux/Cable-Modem.html">
<item> ISDN Howto (not a LDP Howto) <url
url="http://sdb.suse.de/sdb/en/html/isdn.html">: drivers for ISDN 
"Modems".  Much related info on this is in German.  For a tutorial on 
ISDN see <url url="http://public.swbell.net/ISDN/overview.html">
</itemize>
See also <ref id="other_modems" name="Appendix D:  Other Types of
Modems">
-->

<sect> はじめに

<sect1> DSL モデム、ケーブル、および ISDN モデムは他の HOWTO にあります

<p> 本文書では通常の PC 用モデムを扱い、主として ISA バスのものを扱いま
す(ただし、PCI バスのモデムにも適用できるはずです)。
<itemize>
<item> DSL モデム: ADSL mini-HOWTO をご覧ください。
<item> Cable-Modems-HOWTO (かつて LDP の mini-HOWTO でした) <url
url="http://www.cs.unm.edu/~vuksan/linux/Cable-Modem.html">
<item> ISDN HOWTO (LDP の HOWTO ではありません) <url
url="http://sdb.suse.de/sdb/en/html/isdn.html">: ISDN 「モデム」用のド
ライバです。多くの関連する情報がありますが、ドイツ語です。ISDN のチュー
トリアルは <url url="http://public.swbell.net/ISDN/overview.html">
 をご覧ください。
</itemize>
<ref id="other_modems" name="付録 D: 他の種類のモデム"> もご覧ください。

&lsqb;訳注 : JF プロジェクトによる日本語訳 <url
url="http://www.linux.or.jp/JF/JFdocs/ADSL.html"
name="ADSL-mini-HOWTO">,
<url url="http://www.linux.or.jp/JF/JFdocs/Cable-Modem.html" 
name="Cable-Modem-HOWTO"> &rsqb;

<!--
<sect1> Also not covered: PCMCIA Modems, PPP
<p> For modems on the PCMCIA bus see the PCMCIA-HOWTO: PCMCIA serial
and modem devices.  This HOWTO doesn't cover PPP (used to connect to
the Internet via a modem) or communication programs.  Except it does
show how to use communication programs to test that your modem works
OK and can make phone calls.  If you want to use a modem to connect to
the Internet then you need to set up PPP.  There's a lot of
documentation for PPP (including a PPP-HOWTO which is being revised).
Some of it might be found in /usr/doc/ppp or the like.
-->

<sect1> PCMCIA モデムと PPP にはついては書いてありません

<p> PCMCIA のモデムおよびシリアルカードについては、PCMCIA-HOWTO をご覧
ください。(モデム経由でインターネットへ接続する際に用いる) PPP、そして
通信プログラムに関しては、この HOWTO では扱っていません。通信プログラ
ムの使い方のうち、モデムが正常に機能しているか、あるいは正しく電話をか
けられるかをテストする方法のみを示します。モデムを用いてインターネット
へ接続したいのなら、PPP を設定する必要があります。PPP に関しては (改定
中の PPP-HOWTO を含む)多くの文書があります。そのうちいくつかは 
<tt>/usr/doc/ppp</tt> などのディレクトリで見つかるかもしれません。

&lsqb;訳注 : JF プロジェクトによる日本語訳
<url url="http://www.linux.or.jp/JF/JFdocs/PCMCIA-HOWTO.html" name="PCMCIA-HOWTO">, 
<url url="http://www.linux.or.jp/JF/JFdocs/PPP-HOWTO.html" name="PPP-HOWTO">
&rsqb;

<!--
<sect1> Copyright, Disclaimer, Trademarks, & Credits
-->

<sect1> 著作権、免責事項、登録商標およびクレジット

<!--
<sect2> Copyright
-->
<sect2>著作権

<p> Copyright (c) 1998-9 by David S. Lawyer

<!-- license.H begin -->

<!--
Please freely copy and distribute (sell or give away) this document
in any format.  Forward any corrections and comments to the document
maintainer.  You may create a derivative work and distribute it
provided that you:
-->

この文書をあらゆる形式で自由に複製し配布(販売あるいは贈与)してください。
訂正および小さな修正はメンテナにご連絡ください。また、本文書の派生著作
物を作り、それを配布してもかまいません。:

<!--
<enum>
<item> Send your derivative work (in the most suitable format such as
  sgml) to the LDP (Linux Documentation Project) or the like for
  posting on the Internet.  If not the LDP, then let the LDP know
  where it is available.  Except for a translation, send a copy to the
  previous maintainer's url as shown in the latest version.
<item>License the derivative work in the spirit of this license or use
  GPL.  Include a copyright notice and at least a pointer to the 
  license used.
<item>Give due credit to previous authors and major contributors.
</enum>
-->

<enum>
<item> あなたが作成した派生著作物を (SGML のような最もふさわしい形式で)
LDP (Linux Documentation Project) へ送るか、あるいはインターネットへ投
稿するなどしてください。LDP 以外へ送ったのなら、どこで読めるかを LDP 
へ知らせてください。翻訳を除き、最新バージョンに書いてある、以前のメン
テナへコピーを送ってください。
<item> その派生著作物は本文書のライセンスの精神、あるいは GPL に従って
ください。著作権の告知、そして最低でも使用するライセンスへのポインタを
載せてください。
<item> 以前の著者と多くの貢献者のおかげであると、明示してください。
</enum>

<!--
If you're considering making a derived work other than a
translation, it's requested that you discuss your plans with the
current maintainer. 
-->

翻訳だけでなくそれ以上の作業を行おうと考えているのなら、現在のメンテナ
とあなたの計画について話し合ってください。

<!--
<sect2>Disclaimer
<p> While I haven't intentionally tried to mislead you, there are
likely a number of errors in this document.  Please let me know about
them.  Since this is free documentation, it should be obvious that I
cannot be held legally responsible for any errors.
-->

<sect2> 免責事項

<p> あなたを故意に欺こうとしたわけではありませんが、おそらく本文書にい
くつかの誤りがあるでしょう。この誤りを私に教えてください。本文書はフリー
の文書ですから、私あるいは以前の著者に、文書のいかなる誤りについても法
的な責任がないことは明らかなはずです。

<!-- copyright.H end -->

<!--
<sect2> Trademarks
<p> If certain words are trademarks, the context should make it clear
to whom they belong.  For example "MS Windows" (or just "Windows")
implies that "Windows" belongs to Microsoft (MS).  "Hayes" is a
trademark of Microcomputer Products Inc.  I use "winmodem" to mean any
modem which requires MS-Windows and not in the trademark sense.
-->

<sect2> 登録商標

<p> ある単語が登録商標であるとしても、それがだれに帰属するものかは文脈
上明らかなはずです。例えば、``MS Windows'' (あるいは単に ``Windows'') 
という表記は ``Windows'' が Microsoft 社 (MS) の登録商標であることに配
慮したものです。``Hayes'' は Microcomputer Products Inc. の登録商標で
す。

&lsqb;訳注 : 英文の原著には以下のように書いてあります。

<quote>
著者は ``winmodem'' を MS-Windows でしか動かないモデムを指すときに
使い、登録商標の意味では用いません。
</quote>

``Winmodem'' は 3Com 社の登録商標です。

原著では、登録商標を ``Winmodem'' と大文字で表記し、一般名詞は 
``winmodem'' と小文字で表記して区別しています。しかし、ややわかりにく
くなってしまいます。そこで日本語訳では、原著で ``winmodem'' と表記して
いる一般名詞は「ソフトウェアモデム」と書き換えています。&rsqb;

<!--
<sect2> Credits
<p> The following is only a rough approximation of how version 0.0 of
this document was created:  About 1/3 of the material here was lifted
directly from Serial-HOWTO v. 1.11 by Greg Hankins.  <url
url="mailto:gregh@cc.gatech.edu"> (with his permission).  About
another 1/3 was taken from that Serial-HOWTO and revised.  The
remaining 1/3 is newly created by the author: David S. Lawyer <tt><url
url="mailto:dave@lafn.org"></tt>.
-->

<sect2> クレジット

<p> 本文書の version 0.0 は、大まかに言って、次のような経緯で作成され
ました。本文書の素材の約 3/1 は Greg Hankins さん <url
url="mailto:gregh@cc.gatech.edu"> の Serial-HOWTO v. 1.11 から(許可の
もと)直接頂いたものです。他の約 3/1 は Serial-HOWTO を修正したものです。
残りの 3/1 は著者の David S. Lawyer <tt><url
url="mailto:dave@lafn.org"></tt> が新しく書いたものです。

&lsqb; 訳注 : 訳者も JF の <url
 url="http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html"
 name="Serial-HOWTO"> から多くの訳を頂きました。翻訳された永田靖人さん、
 藤原輝嘉さん、ありがとうございます。&rsqb;

<!--
<sect1> Contacting the Author
<p>  Please don't email me asking which modem to buy or asking if a
certain modem will work under Linux.  Look at the huge list at <ref
id="soft_modem" name="Software (Internal) Modems"> Also, please don't
ask me how to configure a modem unless you've looked over this HOWTO
and still can't do it.
-->

<sect1> 著者への連絡

<p> どのモデムを買うべきかの相談や、特定のモデムが Linux で動作するか
どうかの質問などの目的で著者に尋ねないでください。<ref id="soft_modem"
name="(内蔵)ソフトウェアモデム"> 節の巨大なリストをご覧ください。また、
この HOWTO を精読してもまだ設定できない場合以外は、どのようにモデムを
設定するのか著者に尋ねないでください。

<!--
Please let me know of any errors in facts, opinions, logic, spelling,
grammar, clarity, links, etc.  But first, if the date is over a month
old, check to see that you have the latest version.  Please send me
any other info that you think belongs in this document.  
-->

事実、意見、論法、綴り、文法、明快さ、あるいはリンクなどのいかなる誤り
に関しても、著者までお知らせください。しかしまず、あなたが読んでいる文
書の日付が 1 ヶ月以上古かったら、最新のバージョンかどうか、まず御確認
ください。本文書に関してあなたが思ったことはどんなことでも、著者までお
送りください。

&lsqb;訳注 : 日本語訳に関しては、さいとうかん
<tt>&lt;can-s@geocities.co.jp&gt;</tt> および JF プロジェクト
<tt>&lt;JF@linux.or.jp&gt;</tt> までご連絡ください。&rsqb;

<!--
<sect1> New Versions of this HOWTO <label id="new_vers">
<p> New versions of this Modem-HOWTO come out every month or so since
modem situation is rapidly changing (and since I'm still learning).
Your problem might be solved in the latest version.  It will be
available to browse and/or download at LDP mirror sites.  For a list
of such sites see: <url url="http://metalab.unc.edu/LDP/mirrors.html">
If you only want to quickly check the date of the latest version go to
<url url="http://metalab.unc.edu/LDP/HOWTO/Modem-HOWTO.html"> and
compare it to the version you are currently reading: v0.08, 1 Jan.
2000.
-->

<sect1> この HOWTO の新しいバージョン<label id="new_vers">

<p> (著者もまだ勉強中ですが) モデムをとりまく環境は急速に変化している
ので、この Modem-HOWTO の新しいバージョンはほぼ毎月出ています。あなた
の抱えている問題が、本文書の最新バージョンでは解決できるかもしれません。
最新バージョンは LDP のミラーサイトで閲覧、ダウンロードできます。ミラー
サイトの一覧は以下の Web ページで見ることができます。
<url url="http://metalab.unc.edu/LDP/mirrors.html">
最新バージョンの作成日を手短かに確認したい場合は <url
url="http://metalab.unc.edu/LDP/HOWTO/Modem-HOWTO.html"> を見て、今読
んでいるバージョン v0.08, 1 Jan. 2000 とどちらが新しいか比べてください。

&lsqb;訳注 : 最新の日本語訳は <url
url="http://www.linux.or.jp/JF/JFdocs/Modem-HOWTO.html"
name="Modem-HOWTO"> にあります。&rsqb;

<!--
<sect1> What is a Modem ? <label id="what_is_modem">
<p> A modem is a device that lets one send digital signals over
ordinary telephone lines not designed for digital signals.  If
telephone lines were all digital then you wouldn't need a modem.  It
permits your computer to connect to and communicate with the rest of
the world.  When you use a modem, you normally use a communication
program or web browser (which includes such a program) to utilize the
modem and dial-out on a telephone line.  Advanced modem users can set
things up so that others may phone in to them and use their computer.
This is called "dial-in".
-->

<sect1> モデムとは ? <label id="what_is_modem">

<p> モデムとはデジタル信号用に設計されていない、通常の電話回線を使って
デジタル信号を送る装置です。もし電話回線がすべてデジタル化されているの
なら、モデムは必要ありません。モデムはあなたと世界中のコンピュータを接
続し、通信することを可能にします。モデムを使う際には、モデムを正しく扱っ
て電話をかけるために、通常は通信プログラムや Web ブラウザなどを使いま
す。上級のモデムユーザはモデムに電話をかけてコンピュータを使えるよう設
定できます。これを「ダイヤルイン」と呼びます。

<!--
There are two basic types of modems for a PC: external and internal.
The external sets on your desk outside the PC while the internal is
not visible since it's inside the PC.  The external modem plugs into a
connector on the back of the PC known as a "serial port".  The
internal modem is a card that is inserted inside the computer and has
an (invisible) serial port built into it.  For a more detailed
comparison see <ref id="int_vs_ext" name="External vs. Internal">.
Thus when you get an internal modem, you also get a dedicated serial
port (which can only be used with the modem and not with anything else
such as another modem or a printer).  In Linux, the serial ports are
named ttyS0, ttyS1, etc. (usually corresponding respectively to COM1,
COM2, etc. in Dos/Windows). 
-->

PC のモデムには外付けと内蔵の2種類のタイプがあります。外付けモデムは 
PC 外部に設置します。一方、内蔵モデムは PC の中にあるため、外から見る
ことができません。外付けモデムは PC の背面にある「シリアルポート」とし
て知られているコネクタへ接続します。内蔵モデムはコンピュータの内部に挿
入するボードで、内部に(見えない)シリアルポートがあります。詳細な比較に
ついては、<ref id="int_vs_ext" name="外付けと内蔵"> をご覧ください。内
蔵モデムを使用する際には、(そのモデムだけが使用し、他のモデムやプリン
タが使用しない)シリアルポートとして検出されます。Linux においては、シ
リアルポートは <tt/ttyS0/, <tt/ttyS1/ などの名前が付いています(DOS や 
Windows では、通常 COM1, COM2 にそれぞれ対応します)。

<!--
The serial port is not to be confused with the "Universal Serial Bus"
(USB) which uses a special modular connector and may be used with
modems in the future.  See <ref id="basics_" name="Modem & Serial
Port Basics"> for more details on modems and serial ports.
-->

着脱可能なコネクタで将来はモデムとともに使用するかもしれない、
``Universal Serial Bus (USB)'' とシリアルポートは全く異なったものです。
モデムとシリアルポートに関する詳細は <ref id="basics_" name="モデムと
シリアルポートの基礎"> をご覧ください。

<!--
Modems often include the ability to send Faxes (Fax Modems).  See <ref
id="fax_" name="Fax"> for a list of fax software.  "Voice" modems can
work like an automatic answering machine and handle voicemail.  See
<ref id="voice_" name="Voicemail">.
-->

Fax 送信機能を備えたモデムもたくさんあります。(これを FAX モデムと呼びま
す。) <ref id="fax_" name="Fax"> の項目に FAX ソフトウェアの一覧がありま
す。ボイスモデムは音声自動応答装置のように動作し、ボイスメールを扱えま
す。<ref id="voice_" name="ボイスメール"> の項目をご覧ください。

<!--
<sect1> Quick Install
<sect2> External Modem Install
<p> With a straight-thru or modem cable, connect the modem to an
unused serial port on the PC.  Make sure you know the name of the
serial port: in most cases COM1 is ttyS0, COM2 is ttyS1, etc.  You may
need to check the BIOS setup menu to determine this.  Plug in the
power cord to provide power to the modem.  See <ref id="all_modems"
name="All Modems"> for further instructions.
-->

<sect1> クイックインストール
<sect2> 外付けモデムのインストール

<p> ストレートケーブルあるいはモデムケーブルを用いて、モデムと PC の使っ
ていないシリアルポートを接続します。多くの場合、シリアルポートの名前が 
COM1 は <tt/ttyS0/、COM2 は <tt/ttyS1/、などになることを知っておいてく
ださい。ここで、シリアルポートに関する BIOS の設定を確認する必要がある
かもしれません。モデムへ電力を供給するために、電源コードを接続します。
更なる説明に関しては <ref id="all_modems" name="すべてのモデム"> をご
覧ください。

<!--
<sect2> Internal Modems (on ISA bus)
<p> (For the PCI bus see <ref id="PCI_" name="PCI Bus Not Yet
Supported"> and <ref id="pci_m" name="PCI Modems">.)  If the modem
says it will only work under MS Windows, you are out of luck.  If you
already have 2 serial ports, make the modem the 3rd serial port (ttyS2
= COM3).  Find an unused IRQ number to use.  In the past IRQ 5 was
often used but today IRQ 5 is also used for sound cards.  Then set the
jumpers (or the like) on the internal modem to the unused IRQ and IO
address 3E8 (ttyS2) .  
-->

<sect2> (ISA バス用の)内蔵モデム

<p> (PCI バスに関しては <ref id="PCI_" name="PCI バスはまだサポートさ
れていません"> および <ref id="pci_m" name="PCI モデム"> をご覧くださ
い。) モデムに MS Windows 上でのみ動作すると書いてあったなら、あなたは
不運です。シリアルポートが既に2つあるなら、このボードを3番目のシリアル
ポート (<tt/ttyS2/ = COM3) にします。未使用の IRQ を探してください。以
前は IRQ5 を内蔵モデムに使用しましたが、今ではサウンドカードが使用して
います。内蔵モデム上のジャンパ(あるいはそれに類するもの)を使い、未使用
の IRQ へ設定し IO アドレスを <tt/3E8/ (<tt/ttyS2/) に設定してください。

<!--
"Or the like" (in the previous sentence) may be a bit tricky.  If the
modem is a Plug and Play (PnP) for the ISA bus, the equivalent
probably can be done using the "isapnp" program which comes with
"isapnptools".  See "man isapnp" or the FAQ for it.  See also
"Plug-and-Play-HOWTO.  With a PnP-BIOS you may be able to tell the
CMOS setup menu that you don't have a PnP OS and then the BIOS may set
a suitable IRQ and IO address in the modem card.  If you want to
"force" the BIOS to set a certain IRQ and/or IO then you may be able
to do this using Window9x on the same PC.  It can set them into the
PnP BIOS's flash memory where they will be used to configure for Linux
as well as Windows.  See "Plug-and-Play-HOWTO and search for "forced"
(occurs in several places).  For Windows 3.x you can do the same thing
using the ICU under Windows 3.x.  There may even be a way to disable
PnP using software (under Windows) that came with the modem.  
-->

(前の文における)「それに類するもの」&lsqb;訳注:PnP 設定用のプログラム
など&rsqb; は若干扱いにくいかもしれません。そのモデムが ISA バスのプラ
グ&amp;プレイ (PnP) 対応であるなら、恐らく ``isapnptools'' で配布して
いる ``isapnp'' を用いて同等のことができます。``<tt/man isapnp/'' ある
いは FAQ をご覧ください。また、Plug-and-Play-HOWTO もご覧ください。PnP
OS を持っていなくとも、PnP-BIOS の CMOS セットアップメニューを用いて、
モデムボードに適切な IRQ および IO アドレスを設定できるかもしれません。
特定の IRQ および IO アドレスを設定するよう BIOS に「強制」したいのな
ら、同じ PC 上で Windows9x を使用すればできるかもしれません。Windows 
と同様に、Linux でも設定に用いる PnP-BIOS のフラッシュメモリへ、IRQ お
よび IO アドレスを設定できます。Plug-and-Play-HOWTO を読み、(何ヶ所か
に出てくる) 「強制」を探してください。Windows 3.x では ICU &lsqb; 訳注:
ISA Configuration Utility &rsqb; を用いて同じことができます。同様に、
モデムと同梱されている (Windows の)ソフトウェアで PnP を無効にできる方
法があるかもしれません。

&lsqb;訳注 : JF プロジェクトによる日本語訳
<url url="http://www.linux.or.jp/JF/JFdocs/Plug-and-Play-HOWTO.html"
name="Plug-and-Play-HOWTO"> &rsqb;

<!--
Finally you must also find the file where "setserial" is run and add a
line something like: "setserial /dev/ttyS2 irq5".  Except for
setserial v2.15 and later you may (if you distribution lets you) just
run "setserial" on the command line and the results are saved to a
configuration file.  See <ref id="set_serial" name="What is
Setserial"> for more info.  See the next subsection <ref
id="all_modems" name="All Modems"> for further instructions on quick
installation.
-->

最後に、``setserial'' を起動しているファイルを探し、以下のような記述を
追加してください : ``<tt>setserial /dev/ttyS2 irq5</tt>''。setserial
v2.15 以降を除き、(ディストリビューションが許すなら)コマンドラインで 
``setserial'' を動かすだけでよく、その結果は設定ファイルに保存されます。
詳細は <ref id="set_serial" name="setserial とは何か?"> をご覧ください。
クイックインストールに関する更なる説明については <ref id="all_modems"
name="すべてのモデム"> をご覧ください。

<!--
<sect2> All Modems <label id="all_modems"> 
<p> Plug the modem into a telephone line.  Then start up a
communication program such as minicom and go to the configuration menu
for the serial port.  Assign it a high baud rate a few times higher
than the bit rate of your modem.  See <ref id="speed_table"
name="Speed Table"> for the "best" speeds to use.  Tell it the full
name of your serial port such as /dev/ttyS1.  Set hardware flow
control (RTS/CTS).  Now you need to save these settings and exit
minicom.  Then start minicom again, type AT to see if your modem is
there and responds with OK.  Then go to the dial directory (or menu)
and dial a number.
-->

<sect2> すべてのモデムに共通の設定 <label id="all_modems"> 

<p> モデムを電話線に接続します。minicom のような通信プログラムを起動し、
シリアルポートの設定メニューへ移ります。シリアルポートへモデムより 2 
〜 3 倍速いビットレートを割り当てます。最適なスピードは<ref
id="speed_table" name="速度表">をご覧ください。<tt>/dev/ttyS1</tt> の
ような、シリアルポートの完全な名前を記述します。ハードウェアフロー制御
(RTS/CTS) を使うように設定します。これらの設定を保存し、minicom を終了
します。minicom を再び動かし、モデムが <tt/OK/ と応答するかどうか確か
めるために、<tt/AT/ とタイプします。その後ダイアルを行うディレクトリ
(あるいはメニュー)へ移動し、電話番号をダイアルします。

&lsqb;訳注 : <tt/cu/ コマンドも使えます。cu はたいていのディストリビュー
ションで uucp パッケージに入っています。

<tscreen><verb>
$ cu -l ttyS1
AT （キーボードから入力・モデムが応答するか実験）
OK （モデムの応答）
~. （キーボードから入力・cu の終了）
</verb></tscreen>
&rsqb;

<!--
<sect> Modems for a Linux PC
<sect1> External vs. Internal <label id="int_vs_ext">
-->
<sect> Linux PC 用のモデム
<sect1> 内蔵と外付けのどちらが良いのか <label id="int_vs_ext">

<!--
<p> A modem for a PC may be either internal or external.  The
internal one is installed inside of your PC (you must remove screws,
etc. to install it) and the external one just plugs into a serial port
connector on a PC.  Internal modems are less expensive, are less
likely to to suffer data loss due to buffer overrun, usually use less
electricity, and use up no space on your desk.  
-->

<p> PC 用のモデムには内蔵あるいは外付けのものがあります。内蔵のものは 
PC の内部に取り付けます(取り付けるためにはねじを外すなどが必要です)。
外付けのものは PC のシリアルポートコネクタへ差し込むだけです。内蔵モデ
ムは低価格でバッファ溢れによるデータ喪失が発生しにくく、たいてい消費電
力も少なく机の上に余分な空間が要りません。

<!--
External modems are much easier to install and require less
configuration.  They have lights which may give you a clue as to what
is happening and aid in troubleshooting.  The fact that the serial
port and modem can be physically separated also aids in
troubleshooting.  External modems are easy to move to another
computer.  
-->

外付けモデムは取付けが非常に簡単で設定もほとんど必要ありません。そして
何が起こっているのかを知る手がかりになる表示灯があります。シリアルポー
トとモデムが物理的に分かれていることは、トラブル解決にも役立ちます。ま
た、外付けモデムは他のコンピュータへ簡単に移動できます。

<!--
Unfortunately most external modems have no switch to turn off the
power supply when not in use and thus are likely to consume a little
electricity even when turned off (unless you unplug the power supply
from the wall).  Each watt they draw costs you about $1/yr.  Another
possible disadvantage of an external is that you will be forced to use
an existing serial port which may not support a speed of over 115,200
k (although as of late 1998 most new internal modems don't either
&#045;&#045;but some do).  If a new internal modem had a 16650 UART it would put
less load on the CPU (but almost none do as of late 1998).
-->

残念なことに、多くの外付けモデムは非使用時に電源を切るスイッチがないの
で、(壁のコンセントからプラグを抜かない限り)電源を切っていても若干の電
力を消費します。電気料金は年間 $1 程度でしょう。外付けモデムのもうひと
つ不利な点は、115,200 kbps 以上の速度をサポートしないシリアルポートを
使わざるをえない場合があることです(しかし、1998年の終わりには多くの新
型の内蔵モデムでもこの速度は出ず、一部のものだけが出せませんでした)。
新型の内蔵モデムが 16650 UART を持っているなら、CPU の負荷は低くなりま
す(しかし 1998 年の終わりごろには、そのようなものはほとんどありません
でした)。

<!--
Internal modems present a special problem for Linux, but will work
just as well as external modems provided you avoid the high percentage
of them that will work only for MS Windows, and also provided that you
spend time (sometimes a lot of time) to configure them correctly.
Some of the modems which will work only under MS Windows are,
unfortunately, not labeled as such.  If you buy a new one, make sure
that you can return it for a refund if it will not work under Linux.
-->

内蔵モデムは Linux で使用すると、固有の問題が発生します。しかし、MS
Windows でしか動かないモデムを避ければ、正しく設定するために(ときには
非常に多くの)時間がかかるものの、外付けモデムと同様に動作します。残念
なことに、MS Windows でしか動作しないモデムの中には、その旨を明記して
いないものもあります。。もし新しいモデムを買うなら、Linux で動作しなかっ
た際に返品できるかどうか確かめてください。

<!--
While most new modems are plug-and-play you have various ways to deal
with them:
<itemize>
<item> Use the "isapnp" program 
<item> Have a PnP BIOS do the configuring
<item> Patch the kernel to create a PnP Linux (not currently available) 
</itemize>
-->

新しいモデムの多くはプラグ&amp;プレイであり、それを扱うには多くの方法
があります :
<itemize>
<item> ``isapnp'' プログラムを使用する
<item> 設定を行う PnP BIOS を手に入れる
<item> PnP Linux を作るためにカーネルにパッチを当てる(今は利用できません)
</itemize>

<!--
Each of the above has shortcomings.  Isapnp documentation is difficult
to understand although reading the Plug-and-Play-HOWTO (at present
incomplete) will aid in understanding it.  If you want the PnP BIOS to
do the configuring, all you need to do is to make sure that it knows
you don't have a PnP operating system.  But it may not do it
correctly.  To find out what it's done see <ref id="io-irq_in_hdw"
name="What is set in my serial port hardware?">.   Patching the kernel
has worked in the past but no patch seems to be currently available.
Check out the website for it.
-->

上記の手法にはそれぞれ欠点があります。(現在はまだ不完全な)
Plug-and-Play-HOWTO が理解を助けるとはいえ、isapnp の文書は理解しにく
いものです。PnP BIOS の設定を行いたいなら、PnP OS を使っていないことを 
PnP BIOS に伝えなければなりません。それでも正しく設定できないかもしれ
ません。何をするのか知りたければ、<ref id="io-irq_in_hdw" name="シリア
ルポートのハードウェアの設定は?"> をご覧ください。以前はパッチを当てた
カーネルが動作していました。しかし、現在有効なパッチは存在しないようで
す。関連する Web サイトを御確認ください。

<!--
There are many Linux users that say that it's a lot simpler just to
get an external modem and plug it in.  But since new peripherals are
mostly PnP today, you may eventually need to deal with it, so why
delay the inevitable?  Still, the most expedient (and expensive)
solution is an external modem (if you have a free serial port).
-->

外付けモデムの方が簡単に入手して接続できると言う Linux ユーザが多くい
ます。しかし、現在新しい周辺機器はたいていプラグ&amp;プレイになりまし
た。いずれ PnP を扱うことになるかもしれないのに、なぜやらないのでしょ
うか? でもまだ今のところは、(空いているシリアルポートがあるなら)最も好
都合な(そして高価な)解決策は外付けモデムです。

<!--
<sect1> External Modems
<sect2> PnP External Modems
-->
<sect1> 外付けモデム
<sect2> PnP 外付けモデム

<!--
<p> Many external modems are labeled "Plug and Play" (PnP) but they
should all work fine as non-PnP modems.  Since you usually plug the
modem into a serial port which has its own IRQ number and IO address,
the modem needs no PnP features to set these up.  However, the serial
port itself may need to be configured (IRQ number and IO address)
unless the default configuration is OK.
-->

<p> 多くの外付けモデムは ``Plug and Play'' (PnP) のラベルがついていま
すが、PnP ではないモデムとしても同様に正常に動作するはずです。固有の 
IRQ と IO アドレスを持つシリアルポートにモデムを接続するので、モデムに
 PnP の機能は必要ありません。しかし、デフォルトの設定で正常に動作しな
い限り、シリアルポート自体には (IRQ と IO アドレスの)設定作業が必要で
す。

<!--
How can an external modem be called PnP since it can't be configured
by PnP?   Well, it has a special PnP identification built into it that
can be read (thru the serial port) by a PnP operating system.  Such an
operating system would then know that you have a modem on a certain
port and would also know the model number.  Then you might not need to
configure application programs by telling them what port the modem is
on (such as /dev/ttyS2 or COM3).  But since you don't have such a PnP
operating system you will need to configure your application program
manually by giving it the /dev id (such as /dev/ttyS2).
-->

PnP で設定しないのに、なぜ外付けモデムを PnP と呼ぶのでしょうか。PnP
OS が(シリアルポートを通じて)読み込める特別な PnP 識別情報を、モデムは
自身の中に持っています。PnP OS にはモデムが特定のポートにつながってい
ること、そしてモデムの型番が分かります。そして、モデムが 
(<tt>/dev/ttsS2</tt> あるいは COM3 など)どのポートにつながっているのか、
アプリケーションを設定する必要がなくなるかもしれません。しかし、このよ
うな PnP OS を持っていないなら、(<tt>/dev/ttyS2</tt> といった)デバイス
識別子をアプリケーションに手動で設定する必要があるでしょう。

<!--
<sect2> Cabling & Installation
<p> Connecting an external modem is simple compared to connecting
most other devices to a serial port that require various types of
"null modem" cables.  Modems use straight through cable, with no pins
crossed over.  Most computer stores should have these.  Make sure you
get the correct gender.  If you are using the DB9 or DB25 serial port
at your computer, it will always be male which means that the
connector on the cable should be female.  Hook up your modem to one
of your serial ports.  If you are willing to accept the default IRQ
and IO address of the port you connect it to, then you are ready to
start your communication program and configure the modem itself.
-->

<sect2> ケーブル接続とインストール

<p> 様々なタイプの「ヌルモデム」ケーブルを必要とするその他の装置をシリ
アルポートへ接続することと比べて、外付けモデムを接続することは簡単です。
モデムは交差するピンのないストレートケーブルを使います。多くのコンピュー
タショップはストレートケーブルを売っているはずです。正しいケーブルを手
に入れるよう気を付けてください。コンピュータに DB9 あるいは DB25 のシ
リアルポートがあるなら、シリアルポートは常にオスコネクタであり、ケーブ
ルはメスコネクタになります。シリアルポートへモデムを接続してください。
接続したポートのデフォルト IRQ と IO アドレスで構わないなら、これで通
信プログラムを起動しモデム自体の設定を行う準備が整いました。

&lsqb;訳注 : DB9 は D-Sub 9 ピンコネクタ、DB25 は D-Sub 25 ピンコネク
タです。&rsqb;

<!--
<sect2> What the Lights (LED's) Mean
<p>
<itemize>
<item> TM Test Modem 
<item> AA Auto Answer (If on, your modem will answer an incoming call)
<item> RD Receive Data line = RxD
<item> SD Send Data line = TxD
<item> TR data Terminal Ready = DTR (set by your PC)
<item> RI Ring Indicator (If on, someone is "ringing" your modem)
<item> OH Off Hook (If off, your modem has hung up the phone line)
<item> MR Modem Ready = DSR ??
<item> EC Error Correction
<item> DC Data Compression
<item> HS High Speed (for this modem)
</itemize>
-->

<sect2> ライト (LED) の意味
<p>
<itemize>
<item> TM テストモデム
<item> AA 自動応答 (on ならモデムは着信に応答します)
<item> RD データ受信線 = RxD
<item> SD データ送信線 = TxD
<item> TR データ端末レディ = DTR (PC がセットします)
<item> RI 着信音表示 (on なら誰かがモデムに電話をかけてきています)
<item> OH オフフック (off ならモデムが電話を切ったことを示します)
<item> MR モデムレディ = DSR ??
<item> EC エラー訂正
<item> DC データ圧縮
<item> HS (そのモデムにとって)ハイスピード
</itemize>

&lsqb;訳注 : 訳者のモデムでは MR = Modem Ready で、モデムの電源が入っ
ているときに ON になります。&rsqb;

<!--
<sect1> Internal Modems
<p> An internal modem is installed in a PC by taking off the cover of
the PC and inserting the modem card into a vacant slot on the
motherboard.  There are modems for the ISA slots and others for the
PCI slots.  While external modems plug into the serial port (via a
short cable) the internal modems have the serial port built into the
modem.  In other words, the modem card is both a serial port and a
modem.  
-->

<sect1> 内蔵モデム

<p> PC のカバーを取り外しマザーボード上の空きスロットへモデムボードを
挿入して、内蔵モデムを取り付けます。内蔵モデムにはISA スロット用のモデ
ムがあり、その他には PCI スロット用のものがあります。外付けモデムはシ
リアルポートへ(短いケーブルを介して)接続したのに対し、内蔵モデムにはモ
デム自身の中にシリアルポートがあります。言い換えると、モデムボードはシ
リアルポートとモデムの双方の役割をします。

<!--
Setting the IO address and IRQ for a serial port was formerly done by
jumpers on the card.  These are little black rectangular "cubes" about
5x4x2 mm in size which push in over pins on the card.  Plug-and-Play
modems (actually the serial port part of the modems) don't use jumpers
for setting these but instead are configured by sending configuration
commands to them (via IO address space on the ISA bus inside the
computer).  Such configuration commands can be sent by a PnP BIOS, the
isapnp program (for the ISA bus only) or by a PnP operating system.
The configuring of them is built into Windows 95/98 OSs.  Under Linux
you have a choice of ways (none of which is always easy) to io-irq
configure them:
-->

昔は、シリアルポートへの IO アドレスと IRQ の設定を、ボード上のジャン
パで行いました。ボード上のピンへ押し込む、5x4x2mm 程度の黒く小さい長方
形の「サイコロ」があります。PnP モデム(実際はモデムの一部であるシリア
ルポート)は設定のためにジャンパは用いず、モデム(コンピュータの中にある 
ISA バスの IO アドレス空間)へ設定コマンドを送ることにより設定を行いま
す。PnP BIOS、(ISA バスは) isapnp プログラム、あるいは PnP OS が、こう
いった設定コマンドを送ることができます。モデムを設定する手段は、
Windows 95/98 には組み込まれています。Linux では、IO と IRQ の設定方法
は(常に簡単な方法はありませんが)いくつかの方法から選ぶことができます:

<!--
<enum> 
<item> Use "isapnp" which may be run automatically at every boot-time 
<item> Use a PnP BIOS alone (which runs at every boot-time)
<item>  Patch Linux to make it a PnP operating system 
</enum>
-->

<enum> 
<item> 起動の度に ``isapnp'' を自動的に動かす
<item> (起動ごとに動く) PnP BIOS を単独で使用する
<item> Linux にパッチを当て PnP OS にする
</enum>

<!--
<sect1> Software (Internal) Modems (mostly winmodems) <label
id="soft_modem">
<p> Software modems turn over much (or even almost
all) of the work of the modem to the main processor (CPU) chip of your
computer (such as a Pentium chip).  Complex proprietary software
programs (drivers) do this work on the CPU.  A majority of internal
modems made after about mid-1998 <em/don't/ work with Linux since they
are software modems which only work under Windows and are often called
"winmodems".  Although a few volunteers were willing to try writing
Linux drivers for these modems, specs were not made available so this
couldn't be done.  Prior to about 2000, no software modem could be
used with Linux due to no drivers for them under Linux.
-->

<sect1> (内蔵)ソフトウェアモデム <label id="soft_modem">

<p> ソフトウェアモデムはモデムとして必要な処理の多く(あるいはほぼすべ
て)を(Pentium など)コンピュータの CPU へ委託します。複雑な専用ソフトウェ
ア(ドライバ)が CPU でこの処理を行います。1998 年中頃以降に製造された内
蔵モデムの多くは Windows でしか動作しないソフトウェアモデムであり、
Linux では<em/動作しません/。数人の有志がこのモデム用の Linux ドライバ
を書こうとしているものの、仕様書が入手できないのでドライバを完成できま
せん。2000 年以前は、ドライバがないために Linux で動作するソフトウェア
モデムはありませんでした。

<!--
Then finally in late 1999 two software modems appeared that could work
under Linux.  Lucent Technologies unofficially released a Linux
binary-only code to support it's PCI software modems but bugs were
reported in early versions.   PC-TEL introduced a new software
modem for Linux.  Will other companies follow these leads and thus
create "linmodems"?  For a list of modems which work/don't_work under
Linux see <url url="http://www.o2.net/~gromitkc/winmodem.html"
name="modem list">.  A project to get winmodems to work under linux is
at <url url="http://linmodems.org">.  They also have a mailing list.
There is some effort underway at reverse-engineering with at least one
report of a winmodem that has been made to work under linux (but not
yet with full functionality).  So by the time you read this there may
be more linmodems.
-->

1999 年の終りには、やっと 2 つのソフトウェアモデムが Linux で動作する
ようになりました。残念なことに、Lucent Technologies 社は PCI ソフトウェ
アモデムのドライバをバイナリを非公式に公開しているだけです。このドライ
バの初期のバージョンにはバグがありました。PC-TEL 社は Linux 用の新しい
ソフトウェアモデムを売り出しました。他の企業も先行企業に続いて、
``linmodem'' を作るのでしょうか?  Linux におけるモデムの動作状況一覧が
<url url="http://www.o2.net/~gromitkc/winmodem.html" name="modem
list"> にあります。ソフトウェアモデムを Linux で動作させようとするプロ
ジェクトがあります。<url url="http://linmodems.org"> をご覧ください。
メーリングリストもあります。現在、複数のリバースエンジニアリング作業が
進行中です。ソフトウェアモデムを Linux で動作させた報告が、少なくとも
ひとつあります(しかし、まだすべての機能を利用できるわけではありません)。
従って、皆さんがこれを読むころには、linmodem がもっと増えているかもし
れません。

<!--
If code is made available to operate a "winmodem" under Linux, then one
may call it a "linmodem".  Is it still a "winmodem"?  Perhaps it is
since it also works under MS Windows.  The term "Winmodem" is a
trademark for a certain type of "winmodem".  
-->

ソフトウェアモデム(いわゆる winmodem) を Lunux で扱えるドライバが手に
入るようになったら、それを ``linmodem'' と呼ぶ人もいるでしょう。それで
もまだ ``winmodem'' なのでしょうか?  そのモデムは MS Windows でも動作
するので、恐らく ``winmodem'' ということになるでしょう。``Winmodem'' 
という単語は特定のタイプのソフトウェアモデムを指す登録商標です。

&lsqb;訳注 : 原著ではソフトウェアモデム一般を ``winmodem'' と表記して
いて、winmodem と linmodem を対比させる形になっています。&rsqb;

<!--
Here is some more precise terminology regarding software modems.  HSP
(Host Signal Processor) means that the host processor (your CPU chip)
creates the code needed to produce the electrical signal on the phone
line.  The modem itself just creates whatever electrical waveshape the
CPU tells it to.  In contrast to this, a "controllerless" modem can
create the waveshapes on its own (but can't control the modem).  It
contains no facilities to deal with bytes being sent and received.  It
can't compress strings of bytes; it can't check for errors; it can't
put them into packets.  In other words it can't control the modem but
instead has the CPU do all this work using software.  The Rockwell HCF
(Host Controlled Family) does this.  If the software that does all
this could be ported to Linux and then there wouldn't be this problem.
Besides the above, a modem which doesn't simulate a serial port will
not work under Linux.  
-->

ここではソフトウェアモデムに関して、より正確な技術用語を解説します。
HSP (Host Signal Processor) とは電話回線に流す電気信号を生成するために
必要となる信号を、ホストのプロセッサ (CPU チップ)で作り出すことを意味
します。モデム自身は CPU が伝えた電気的な波形を生成しているにすぎませ
ん。これとは対照的に、「制御装置のない」モデムは(モデム自身を制御でき
ないものの)自分自身で波形を生成できます。HSP には送受信データを処理す
る機能はありません。データ列を圧縮できず、誤りも検出できず、パケットに
データを入れられません。言い換えると、HSP はモデムを制御できず、ソフト
ウェアを使用し CPU がすべての作業を行います。Rockwell 社の HCF (Host
Controlled Family) はこの作業を行います。このすべてを行うソフトウェア
が Linux へ移植できたなら、前述の問題はなくなります。上記の問題が解決
したとしても、Linux からシリアルポートに見えないモデムは Linux では動
作ないでしょう。

<!--
How do you determine if an internal modem will work under Linux?
First see if the name or description of it indicates it's a software
modem: HSP, HCF, HSF, controllerless, host-controlled, host-based, and
soft-...  modem.  If it's a software modem it will only work for the
rare cases (so far) where a Linux driver is available.  If you don't
know the model of the modem and you also have Windows on your Linux
PC, click on the "Modem" icon in the "Control Panel".  Then check out
the modem list on the Web mentioned 4 paragraphs above.  If the above
doesn't work (or isn't feasible), you can look at the package it came
in (or a manual) find the section on the package that says something
like "Minimum System Requirements" or just "System Requirements".  It
may be in fine print.  Read it closely.  If Windows is listed as one
of the requirements then it will likely not work under Linux.
-->

特定の内蔵モデムが Linux で動くかどうかを判断するにはどうすれば良いの
でしょうか? まず、ソフトウェアモデムを示す名前や記述があるかどうか確か
めてください : HSP, HCF, HSF、制御装置なし、ホスト制御型、ホストベース、
そして soft- モデムなどです。ソフトウェアモデムの Linux ドライバが入手
できたごくまれな場合にのみ、正常に動作するでしょう。そのモデムの型名が
分からなくて、そして Linux PC に Windows も入っているなら、「コントロー
ルパネル」で「モデム」のアイコンをクリックしてください。まず、4 つ前の
段落で述べた Web の一覧を確認してください。もしモデムが動作しない(ある
いはうまく動かない)なら、モデムの箱(あるいはマニュアル) を見て、「最小
システム要件」あるいは「システム要求」といった記述のある部分を探すと良
いでしょう。それは小さな字で印刷されているかもしれません。じっくり読ん
でください。要求の中に Windows が載っていたら、おそらく Linux では動作
しないでしょう。

<!--
Otherwise, it may work under Linux if it fails to state explicitly
that you must have Windows.  By saying it's "designed for Windows" it
may only mean that it fully supports Microsoft's plug-and-play which
is OK since Linux uses the same plug-and-play specs (but it's harder
to configure under Linux).  Being "designed for Windows" thus gives no
clue as to whether or not it will work under Linux.  You might check
the Website of the manufacturer or inquire via email.  I once saw a
web-page that specifically stated that one model worked under Linux
while implying that another model didn't.
-->

一方、Windows が必要だと明言しないモデムは、Linux で動作するかもしれま
せん。「Windows 用に設計した」ということは、Microsoft の PnP を完全に
サポートしていることを意味しているだけかもしれません。Linux が同じ PnP 
機能を使用しているなら問題なく動作します(しかし、Linux を使用して設定
するのは難しいです)。「Windows 用に設計した」という記述は、Linux で動
作するか否かを判断する手がかりにはなりません。製造元の Web サイトを確
かめるか、メールで尋ねるのが良いでしょう。あるモデルは Linux で動作し、
他のモデルは動作しないと明言する Web ページを、著者はかつて見たことが
あります。

<!--
Besides the problems of getting a driver, what are the pros and cons
of software modems.  Since the software modem uses the CPU to do much
of its work, the software modem requires less on-board electronics and
thus costs less.  At the same time, the CPU is heavily loaded by the
modem which may result in slower operation.  This is especially true
if other CPU-intensive tasks are running at the same time.  Of course
when you're not using the software modem there is no degradation in
performance at all.  Is the cost savings worth it?  In some cases yes,
especially if you seldom use the modem or are not running any other
CPU intensive tasks when the modem is in use.  Thus there are cases
where use of a software modem is economically justified.  The savings
in modem cost could be used for a better CPU which would speed things
up a little.  But the on-board electronics of a modem can do the job
more efficiently than a general purpose CPU.  So if you use the modem
most of the time it's probably better to avoid software modems (and
then you can use a less powerful CPU :-).
-->

ドライバを手に入れるという問題のほかにも、ソフトウェアモデムには利害得
失があります。ソフトウェアモデムは処理の大部分に CPU を使用するのでボー
ド上の電子部品が少なくて済み、製造コストが安くなります。ですが、モデム
が CPU に高い負荷をかけるので、他の処理が遅くなる可能性があります。実
際、CPU を激しく使用するタスクが同時に動いていると、特に処理が遅くなり
ます。もちろん、ソフトウェアモデムを使っていないときには、全く処理能力
の低下は発生しません。このコスト削減には価値があるのでしょうか?  モデ
ムをあまり使わなかったり、モデムの使用中に高い CPU 負荷をかけるタスク
がない場合には、その答えは yes になります。このように、ソフトウェアモ
デムの使用が経済的に正解である場合もあります。モデムにかける経費を削っ
た分をつぎ込んで高性能の CPU を手にいれたところで、処理速度はほんのちょっ
としか上がらないでしょう。しかし、モデムボードの電子部品は汎用 CPU よ
りも効率的に処理を行えます。従って、多くの場合、多分ソフトウェアモデム
の使用を避ける方が良いでしょう。

<!--
<sect1> PCI Modems <label id="pci_m"> 
<p> A PCI modem card is one which inserts into a PCI-bus slot on the
motherboard of a PC.  Unfortunately, it seems that most PCI modems
will not work under Linux but efforts are underway to support some of
them.  See  <ref id="PCI_" name="PCI Bus Yet Supported">
-->

<sect1> PCI モデム <label id="pci_m"> 

<p> PCI モデムボードは PC のマザーボード上の PCI バススロットへ挿入す
るものです。不幸なことに、多くの PCI モデムが Linux では動作しないよう
です。しかし、その一部をサポートする努力が進行中です。<ref id="PCI_"
name="PCI バスはまだサポートされていません"> をご覧ください。

<!--
<sect1> Which Internal Modems might not work with Linux <label id="m_to_avoid">
<p> 
<itemize> 
<item> <ref id="soft_modem" name="Software (Internal) Modems">
   only work in rare cases where a Linux driver is available.
<item><ref id="pci_m" name="PCI Modems"> seldom work under Linux
<item> <ref id="dsp" name="MWave and DSP Modems"> might work, but only if 
   you first start Windows/Dos each time you power on your PC
<item> Modems with <ref id="rpi_" name="RPI (Rockwell)"> drivers work 
   but with reduced performance
</itemize>
-->

<sect1> Linux で動作しない内蔵モデムは? <label id="m_to_avoid">

<p> 
<itemize> 
<item> <ref id="soft_modem" name="(内蔵)ソフトウェアモデム"> など。
   全く動作しません。
<item><ref id="pci_m" name="PCI モデム"> Linux ではめったに動作しません。
<item> <ref id="dsp" name="MWave および DSP モデム"> 動くかもしれません。
   しかし、PC の起動時に毎回、まず Windows あるいは DOS を起動する必要
   があります。
<item> <ref id="rpi_" name="RPI (Rockwell)"> モデムは動作するものの、
   性能は劣ります。
</itemize>

<!--
<sect2> MWave and DSP Modems <label id="dsp">
<p> Such modems use DSP's (Digital Signal Processors) which are
programmed by algorithms which must be downloaded from the hard
disk to the DSP's memory just before using the modem.  Unfortunately,
the downloading is done by Dos/Windows programs so one can't do it
from Linux.  Ordinary modems that work with Linux often have a DSP too
(and may mention this on the packaging), but the program that runs it
is stored inside the modem.  This is not a "DSP modem" in the sense of
this section and should work OK under Linux.  An example of a DSP
modem is IBM's Aptiva MWAVE.
-->

<sect2> MWave および DSP モデム <label id="dsp">

<p> この種のモデムは DSP (Digital Signal Processor) を使っています。モ
デムを使う直前に、ハードディスクから DSP のメモリへプログラムをダウン
ロードするよう、DSP は作られています。不運にも、DOS あるいは Windows 
のプログラムでそのダウンロードを行うなら、Linux では動作しません。通常、
Linux で動作するモデムも DSP を持っていますが(パッケージに書いてあるか
もしれません)、動作プログラムはモデム中に格納されています。これは本節
でいう意味の「DSP モデム」ではなく、Linux でも正常に動作するはずです。
DSP モデムの一例に IBM Aptiva の MWAVE があります。

<!--
If a DSP modem modem simulates a serial port, then it is usable with
Linux which communicates with modems via the serial port.  If you also
have Dos/Windows on the same PC you may be able to use the modem:
You first install the driver under DOS (using DOS and not Window
drivers).  Then start Dos/Windows (make sure the modem gets
initialized) and without turning off the computer, go into Linux.  One
way to get to Linux is to use loadlin.exe which is a DOS program that
will boot Linux from DOS (See Config-HOWTO).  Another way is to just
press CTRL-ALT-DEL.  The modem remains on the same com port (same IO
address) that it used under DOS.
-->

DSP モデムがシリアルポートをシミュレートするなら、Linux でシリアルポー
トを経由しモデムと通信できます。同じ PC 上に DOS あるいは Windows が入っ
ているなら、モデムを使えるかもしれません : まず (Windows 用ドライバを
使わずに DOS を使って)、DOS でドライバをインストールします。DOS か 
Windows を起動し(モデムが初期化されることを確かめ)、電源を切らずに 
Linux を起動します。DOS から Linux へ移行する方法のひとつは、
loadlin.exe を使用することです (Config-HOWTO をご覧ください)。もうひと
つの方法は CTRL-ALT-DEL を押すだけです。モデムは DOS で使用したものと
同じ COM ポート(同じ IO アドレス)を記憶しています。

&lsqb;訳注 : JF プロジェクトによる日本語訳
<url url="http://www.linux.or.jp/JF/JFdocs/Config-HOWTO.html"
name="Config-HOWTO"> &rsqb;

<!--
<sect2> Rockwell (RPI) Drivers <label id="rpi_">
<p> Modems that require Rockwell RPI (Rockwell Protocol Interface)
drivers can still be used with Linux even thought the driver software
works only under Windows.  This is because the Windows software which
you don't have does only compression and error correction.  If you are
willing to operate the modem without compression and error correction
then it's feasible to use it with Linux.  To do this you will need to
disable RPI by sending the modem (via the initialization string) a
"RPI disable" command each time you power on your modem.  On my modem
this command is +H0.  Not having data compression available may not be
much of a handicap since most long files which you download from the
Internet are already compressed and attempts at further compression
may only slow things down a bit.
-->

<sect2> Rockwell (RPI) ドライバ <label id="rpi_">

<p> Rockwell RPI (Rockwell Protocol Interface) ドライバを必要とするモ
デムは、そのドライバが Windows でしか動かないにもかかわらず、Linux で使用
できます。なぜなら、MS Windows のソフトウェアはデータ圧縮とエラー訂正
しか行わないからです。データ圧縮とエラー訂正をせずにモデムを使えば、
Linux でも使用できます。そのためには、モデムの電源を入れる度に、モデム
へ(初期化文字列で)「RPI 無効化」コマンドを送り、RPI を無効にする必要が
あります。このコマンドは著者のモデムでは <tt/+H0/ です。インターネット
からダウンロードする多くのファイルは圧縮済みです。更に圧縮を試みてもダ
ウンロードを遅くするので、データ圧縮を利用しなくてもそれほど多くの不利
益はないかもしれません。

<!--
<sect> Multiport Modem Cards
<p> These are internal modems, but there is more that one per card.
8 modems/card is common.  You will need these if you want to have
several people simultaneously dial in/out to your computer.  Note that
these modems are not digital modems and will thus not be able to use
56k for people who dial-in.  So they are not suitable for ISPs.  The
cards listed claim to work with Linux and the websites should point
you to a driver for them.  
-->

<sect> マルチポートモデムボード

<p> 内蔵モデムには、1 枚のボード上に複数のモデムを持つボードもあります。
通常は、ボード 1 枚あたり 8 個のモデムがあります。あなたのコンピュータ
へ、数人が同時にダイヤルインおよびダイヤルアウトできるようにしたいのな
ら、マルチポートモデムボードが必要になるでしょう。こういったモデムはデ
ジタルモデムではないので、ダイヤルインするユーザは 56k を使えないこと
に、注意してください。従って、これは ISP には向いていません。以下に、
Linux で動作するボードの一覧を挙げます。Web サイトにドライバへのリンク
があるはずです。

<!--
<itemize>
<item> MultiModemISI by Multi-Tech Systems.  56K or 33.6K, PCI or ISA,  
 4 or 8 ports.  ISDN/56K hybrids.<newline> 
 <url url="http://www.multitech.com/products/">

<item> RAStel by Moreton Bay Products. 56K PCI or ISA, 4 or 8 ports.
Also 2 modems + 2 vacant serial ports.<newline> 
 <url url="http://www.moretonbay.com.au/MBWEB/product/rastel/rastel.htm">

<item> RocketModem by Comtrol.  ISA 33.6K, 4 or 8 port.<newline>
 <url url="http://www.comtrol.com/SALES/SPECS/Rmodem.htm">

<item> AccelePort (RAS Family) by Digi.  
 <url url="http://www.dgii.com/digi.cfm?p=940564.pi.prd.00000046">
</itemize>
-->

<descrip>
<tag>Multi-Tech Systems 社の MultiModemISI</tag> 56K あるいは 33.6K の
 PCI か ISA で、4 ポートまたは 8 ポートのモデムで、ISDN/56K 共用です。
 <url url="http://www.multitech.com/products/">

<tag>Moreton Bay Products 社の RAStel</tag> PCI あるいはISA の 4 また
は 8 ポートの56Kモデムで、2 つのモデムと 2 つの空きシリアルポートがあ
ります。
<url url="http://www.moretonbay.com.au/MBWEB/product/rastel/rastel.htm">

<tag>Comtrol 社の RocketModem</tag> ISA の 4 あるいは 8 ポートの 33.6K 
モデム。<url url="http://www.comtrol.com/SALES/SPECS/Rmodem.htm">

<tag>Digi 社の AccelePort (RAS Family)</tag>
 <url url="http://www.dgii.com/digi.cfm?p=940564.pi.prd.00000046">
</descrip>

<!--
The use of modems by ISPs is not covered in this HOWTO since it's
become somewhat complex due to the introduction of 56k modems which
require a digital connection to the phone company.  See <htmlurl
url="/http://www.cyclades.com/sol_isp.html" name="What do I need to be
an ISP?">.  Cyclades promotes their own products here so please do
comparison shopping before buying anything.  Also bear in mind that
one may turn a PC into a "remote access server" by buying expensive
specialized PCI cards containing digital modems, etc.  
-->

電話会社へのデジタル回線が必要となる 56k モデムは多少複雑になります。
従って、ISP が使うモデムに関しては、この HOWTO では扱いません。
<htmlurl url="http://www.cyclades.com/sol_isp.html" name="What do I
need to be an ISP?"> をご覧ください。Cyclades 社はここで製品を宣伝して
います。ですから、購入前に製品を比較してください。デジタルモデムの載っ
ている高価な専用 PCI ボードを買えば、PC を「リモートアクセスサーバ」の
代わりになることを、覚えておいてください。

<!--
<sect> Modem & Serial Port Basics <label id="basics_"> 
-->
<sect> モデムとシリアルポートの基礎 <label id="basics_">

<!-- basics.H  begin   <sect> Serial Port & Modem Basics -->
<!-- Change log: Nov. '99: 2 serial drivers concurrently NG
-->
<!-- ifdef MODEM_ -->
<!--
<p> You don't have to understand the basics to use and install a
modem.  But understanding it may help to determine what is wrong if
you run into problems.  After reading this section, if you want to
understand it even better you may want to see <ref
id="how_modems_work" name="How Modems Work"> in this document (not yet
complete).  More details on the serial port (including much of this
section) will be found in Serial-HOWTO.
-->

<p> モデムを使用するあるいは取り付けるために、その基礎を必ずしも理解す
る必要はありません。しかし、何か問題が起こった際にモデムの動作原理を理
解していれば、何が悪いのかを見定めるのに役立つかもしれません。本章を読
んだあと、更に理解を深めたいのなら、(まだ不完全ですが)本文書中の <ref
id="how_modems_work" name="モデムがどのように動作するのか"> の章を読み
たくなるでしょう。シリアルポートに関する(本章の内容以上の)詳細について
は、Serial-HOWTO に記述があります。

&lsqb; 訳注 : JF プロジェクトによる日本語訳 <url
 url="http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html"
 name="Serial-HOWTO"> &rsqb;

<!--
<sect1> Modem Converts Digital to Analog (and conversely)
<p> Most all telephone main lines are digital already but the lines
leading to your house (or business) are usually analog which means
that they were designed to transmit a voltage wave which is an exact
replica of the sound wave coming out of your mouth.  Such a voltage
wave is called "analog".  If viewed on an oscilloscope it looks like a
sine wave of varying frequency and amplitude.  A digital signal is
like a square wave.  For example 3 v (volts) might be a 1-bit and 0 v
could be a 0-bit.  For most serial ports (used by external modems) +12
v is a 0-bit and -12 v is a 1-bit (some are + or - 5 v).
-->

<sect1> モデムのデジタル-アナログ変換(およびその逆)

<p> 既に電話網の基幹部はほぼすべてデジタル回線になってるものの、家庭
(あるいはオフィス)への回線はたいていアナログ回線です。つまり、発声した
音声波形の正確な複製を電圧波形として送るように設計してあります。このよ
うな電圧波形を「アナログ」と呼びます。オシロスコープで観測すると、アナ
ログ波形は周波数と振幅が変化する正弦波のように見えます。デジタル信号は
方形波に似ています。例えば、3 ボルトは 1 に、0 ボルトは 0 に割り当てま
す。(外付けモデムが使用する)大抵のシリアルポートは +12 ボルトが 0 を、-
12 ボルトが 1 を表します(いくつかは ±5 ボルトのものもあります)。

<!--
To send data from your computer over the phone line, the modem takes
the digital signal from your computer and converts it to "analog".  It
does this by both creating an analog sine wave and then "MODulating"
it.  Since the result still represents digital data, it could also be
called a digital signal instead of analog.  But it looks something
like an analog signal and almost everyone calls it analog.  At the
other end of the phone line another modem "DEModulates" this signal
and the pure digital signal is recovered.  Put together the "mod" and
"dem" parts of the two words above and you get "modem" (if you drop
one of the two d's).  A "modem" is thus a MODulator-DEModulator.  Just
what modulation is may be found in the section <ref id="modulate_"
name="Modulation Details">.  
-->

電話回線を通してコンピュータからデータを送るために、モデムはコンピュー
タからのデジタル信号をアナログ信号に変換します。モデムはアナログ正弦波
を生成し、それを変調 (MODulating) します。変調の結果はデジタルデータを
表現しているので、この信号もまたアナログ信号ではなくデジタル信号と呼び
ます。しかし、その信号はアナログ信号と類似しており、ほぼすべての人がア
ナログ信号と呼んでいます。電話回線のもう一方の端で、他のモデムがこの信
号を復調し (DEModulate)、もとのデジタル信号を復元します。この変調
(MODulating) と復調 (DEModulate) をまとめて(2つの d のうちひとつを落と
して)、モデム (modem) という語になります。従って、モデム (modem) とは
変調 - 復調器 (MODulator - DEModulator) を意味します。変調に関しては 
<ref id="modulate_" name="変調の詳細"> の節に記述があります。

<!-- ifdef MODEM end -->

<!--
<sect1> What is a Serial Port ?
<sect2> Intro to Serial
<p> The serial port is an I/O (Input/Output) device.  
-->

<sect1> シリアルポートとは?
<sect2> シリアルの基礎

<p> シリアルポートは入出力装置です。

<!-- ifdef MODEM_ -->
<!--
Since modems have a serial port between them and the computer,
it's necessary to understand the serial port as well as the modem.
-->
モデムにはコンピュータとの間にシリアルポートがあり、モデムと同様にシリ
アルポートについても理解する必要があります。
<!-- ifdef MODEM end -->

<!--
Most PC's have one or two serial ports.  Each has a 9-pin connector
(sometimes 25-pin) on the back of the computer.  Computer programs can
send data (bytes) to the transmit pin (output) and receive bytes from
the receive pin (input).  The other pins are for control purposes and
ground.
-->

<!-- from Serial-HOWTO -->
ほとんどの PC はシリアルポートを 1 つあるいは 2 つ持っています。各ポー 
トはコンピュータの裏側に 9 ピン (25 ピンのこともあります)コネクタを持っ 
ています。コンピュータのプログラムは送信ピン(出力)にデータ(バイト列)を 
送ることができますし、受信ピン(入力)からデータを受け取ることもできます。 
他のピンはフロー制御と接地のために使います。

<!--
The serial port is much more than just a connector.  It converts the
data from parallel to serial and changes the electrical representation
of the data.  Inside the computer, data bits flow in parallel (using
many wires at the same time).  Serial flow is a stream of bits over a
single wire (such as on the transmit or receive pin of the serial
connector).  For the serial port to create such a flow, it must
convert data from parallel (inside the computer) to serial on the
transmit pin (and conversely).
-->

<!-- from Serial-HOWTO -->
シリアルポートは単なるコネクタではありません。シリアルポートは並列のデー
タを直列に変換し、データの電気的な表現を変えます。コンピュータ内部では、
データを表すビット群は並列に流れます(同時に複数の配線を用います)。デー
タを直列に流すことは、1 本の配線(シリアルコネクタの送信ピンや受信ピン等) 
にビットのストリームを流すことです。シリアルポートでこのようにデータを
流すため、シリアルポートはデータを並列(コンピュータ内部の形式)から直列
に変換できなければなりません(その逆の変換も必要です)。

<!--
Most of the electronics of the serial port is found in a computer chip
(or a section of a chip) known as a UART.  For more details on UARTs
see the section <ref id="uart_" name="What Are UARTs?  How Do They
Affect Performance?">.  But you may want to finish this section first
so that you will hopefully understand how the UART fits into the
overall scheme of things.
-->

<!-- from Serial-HOWTO -->
シリアルポートの電子回路のほとんどは、UART と呼ばれるチップ(あるいはチッ
プの一部)です。UART の詳細については、<ref id="uart_" name="UART って 
何ですか? 性能にどんな影響を与えますか?"> の章を見てください。しかし、
まずはこの章から読むとよいでしょう。全体における UART の位置づけが分か
るからです。

<!--
<sect2> Pins and Wires
<p> Old PC's used 25 pin connectors but only about 9 pins were
actually used so today most connectors are only 9-pin.  Each of the 9
pins usually connects to a wire.  Besides the two wires used for
transmitting and receiving data, another pin (wire) is signal ground.
The voltage on any wire is measured with respect to this ground.  Thus
the minimum number of wires to use for 2-way transmission of data is
3.  Except that it has been known to work with no signal ground wire
but with degraded performance and sometimes with errors.
-->

<!-- from Serial-HOWTO -->
<sect2> ピンと配線

<p> 古い PC では 25 ピンのコネクタが使われていましたが、このうち実際に
使われていたのは 9 本のピンだけです。従って、現在ではほとんどのコネク
タは 9 ピンです。9 本のピンはそれぞれ配線につながっています。データの
送信と受信用に 1 本ずつの配線が使われ、信号の接地用に 1 本のピン(配線) 
が使われます。各配線の電圧は、この接地電圧に対して計測されます。従って、
双方向のデータ送信に必要となる最小の配線数は3本です。接地線を用いなく
とも動作しますが、この場合には性能が落ちたり、エラーが起きたりします。

<!--
There are still more wires which are for control purposes (signalling)
only and not for sending bytes.  All of these signals could have been
shared on a single wire, but instead, there is a separate dedicated
wire for every type of signal.  Some (or all) of these control wires
are called "modem control lines".  Modem control wires are either in
the asserted state (on) of +12 volts or in the negated state (off) of
-12 volts.  One of these wires is to signal the computer to stop
sending bytes out the serial port cable.  Conversely, another wire
signals the device attached to the serial port to stop sending bytes
to the computer.  If the attached device is a modem, other wires may
tell the modem to hang up the telephone line or tell the computer that
a connection has been made or that the telephone line is ringing
(someone is attempting to call in).  See the Serial-HOWTO:
Pinout and Signals for more details.
-->

<!-- from Serial-HOWTO -->
他にも配線がありますが、これらは制御用(シグナリング)に使われるだけであ
り、データの送信には使われません。全種類の信号を同じ線で共有することも
できますが、シリアルポートはそうなっておらず、信号の種類ごとに別々の専
用線が用意されています。これらの制御用配線の一部(あるいは全部)は
「モデム制御線 (modem control line)」と呼ばれます。モデム制御線の状態は、
+12 ボルトの有効 (on) 状態か、-12 ボルトの無効 (off) 状態のどちらかです。
これらのモデム制御線の 1 つは、コンピュータにシリアルポートからのデー
タ送信を止めさせる信号を送るためのものです。この反対に、シリアルポート
に接続されたデバイスからコンピュータへのデータ送信を止めさせるための制
御線もあります。この他にも、接続されているデバイスがモデムの場合にモデ
ムに電話を取るように指示したり、接続が確立していることや電話が鳴ってい
る(誰かが電話をかけてきている)状態であることをコンピュータに教えるため
の線もあります。ピンおよび制御信号の詳細については、Serial-HOWTO を
ご覧ください。

&lsqb; 訳注 : JF プロジェクトによる日本語訳 <url
 url="http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html"
 name="Serial-HOWTO"> &rsqb;

<!-- ifdef MODEM_ -->
<!--
<sect2> Internal Modem Contains Serial Port
<p> For an internal modem there is no 9-pin connector but the behavior
is almost exactly as if the above mentioned cable wires existed.
Instead of a a 12 volt signal in a wire giving the state of a modem
control line, the internal modem may just use a status bit in its own
memory (a register) to determine the state of this non-existent
"wire".  The internal modem's serial port looks just like a real
serial port to the computer.  It even includes the speed limits that
one may set at ordinary serial ports such as 115200 bits/sec.
Unfortunately for Linux, many internal modems today don't work exactly
this way but instead use software (running on the CPU) to do much of
the modem's work.  Unfortunately, such software is often only
available for the MS Windows OS (it hasn't been ported to Linux).
Thus you can't use most of these modems with Linux See <ref
id="soft_modem" name="Software (Internal) Modems">.
-->

<sect2> 内蔵モデムのシリアルポート

<p> 内蔵モデムには9ピンのコネクタはありませんが、ちょうど前述の配線が
存在するかのように振る舞います。モデム制御線の12ボルト信号ではなく、内
蔵モデムには存在しない「配線」の状態を表すため、自分自身にメモリ(レジ
スタ) を持ち、その状態ビットを使用します。コンピュータには、内蔵モデム
のシリアルポートが本物のシリアルポートのように見えます。そして、通常の
シリアルポートと同様に、115200 bits/sec といった回線速度制限もあります。
現在では不幸なことに、多くの内蔵モデムが上記のような方法では動作せず、
(CPU で動く)ソフトウェアがモデムの処理の大部分を行います。ときには、こ
ういったソフトウェアは MS Windows 用のものしかありません(Linux へ移植
されていません)。こういったモデムの多くは Linux で動作しません。<ref
id="soft_modem" name="(内蔵)ソフトウェアモデム">の節をご覧ください。

<!--
<sect1> IO Address & IRQ
<p> Since the computer needs to communicate with each serial port, the
operating system must know that each serial port exists and where it
is (its I/O address).  It also needs to know which wire (IRQ number)
the serial port must use to request service from the computer's CPU.
It requests service by sending an interrupt on this wire.  Thus every
serial port device must store in its non-volatile memory both its I/O
address and its Interrupt ReQuest number: IRQ.  See <ref
id="interrupt_" name="Interrupts">.  For the PCI bus it doesn't work
exactly this way since the PCI bus has its own system of interrupts.
But since the PCI-aware BIOS sets up chips to map these PCI interrupts
to IRQs, it seemingly behaves just as described above except that
sharing of interrupts is allowed (2 or more devices may use the same
IRQ number).
-->

<!-- from Serial-HOWTO -->
<sect1> IO アドレスおよび IRQ

<p> コンピュータはそれぞれのシリアルデバイスと通信する必要があるので、 
OS はそれぞれのシリアルポートが存在することと、それらがある場所 (I/O 
アドレス)を知っていなければなりません。 また、OS はシリアルポートが 
CPU にサービスを要求するときにどの線(IRQ 番号)を使うかも知っている必要
があります。シリアルポートはこの線に割込みを送ることによってサービスを
要求します。したがって、それぞれのシリアルポートデバイスは I/O アドレ
スと IRQ (Interrupt ReQuest number)の両方を不揮発性メモリに保存してい
なければなりません。<ref id="interrupt_" name="割込み"> の節をご覧くだ
さい。PCI バスの場合は、全くこのように動作するわけではありません。とい
うのも、PCI には独自の割込みシステムがあるからです。しかし、PCI 対応の 
BIOS はチップの設定を行って PCI の割込みを IRQ にマッピングするため、
見かけ上は先の説明の通りに動作します。ただし、割込みの共有が許されてい
る点は除きます(2 つあるいはそれ以上のデバイスが同じ IRQ 番号を使うこと
ができます)。

<!--
I/O addresses are not the same as memory addresses.  When an I/O
addresses is put onto the computer's address bus, another wire is
energized.  This both tells main memory to ignore the address and
tells all devices which have I/O addresses (such as the serial port)
to listen to the address to see if it matches the device's.  If the
address matches, then the I/O device reads the data on the data bus.
-->

I/O アドレスはメモリのアドレスとは異なります。I/O アドレスがコンピュー
タのアドレスバスに設定されると、他の配線に信号が流れます。この信号は、
メインメモリにアドレスを無視させることと、I/O アドレスを持っている全て
のデバイス(シリアルポート等)にそのアドレスを監視させ、それがデバイスの
アドレスにマッチするかどうかを調べさせることを指示します。もしアドレス
がマッチすれば、その I/O デバイスはデータバス上のデータを読み込みます。

<!--
<sect1> Names: ttyS0, ttyS1, etc.
<p> The serial ports are named ttyS0, ttyS1, etc. (and usually
correspond respectively to COM1, COM2, etc. in DOS/Windows).  The /dev
directory has a special file for each port.  Type "ls /dev/ttyS*" to
see them.  Just because there may be (for example) a ttyS3 file,
doesn't necessarily mean that there exists a physical serial port
there.
-->

<!-- from Serial-HOWTO -->
<sect1> 名前: ttyS0, ttyS1 など

<p> シリアルポートには <tt/ttyS0/, <tt/ttyS1/ といった名前が付けられま
す(そしてこれは普通 DOS や Windows における COM1, COM2 等に対応します)。
<tt>/dev</tt> ディレクトリには、それぞれのポートに関するスペシャルファ
イルがあります。 ``<tt>ls /dev/ttyS*</tt>'' を実行してこれらのファイル
を見てみましょう。ただし、 (例えば)<tt/ttyS3/ ファイルがあるからといっ
て、必ずしもそこに物理的なシリアルポートが存在するわけではありません。

<!--
Which one of these names (ttyS0, ttyS1, etc.) refers to which
physical serial port is determined as follows.  The serial driver
(software) maintains a table showing which I/O address corresponds to
which ttyS.  This mapping of names (such as ttyS1) to I/O addresses
(and IRQ's) may be both set and viewed by the "setserial" command.
See <ref id="set_serial" name="What is Setserial">.  This does
<tt/not/ set the I/O address and IRQ in the hardware itself (which is
set by jumpers or by plug-and-play software).  Thus what physical port
corresponds to say ttyS1 depends both on what the serial driver thinks
(per setserial) and what is set in the hardware.  If a mistake has
been made, the physical port may not correspond to any name (such as
ttyS2) and thus it can't be used.  See <ref id="ttySN_" name="Serial
Port Devices /dev/ttyS2, etc."> for more details>
-->

<!-- from Serial-HOWTO -->

(<tt/ttyS0/, <tt/ttyS1/ 等の)名前がどの物理シリアルポートを指すのかは、
以下のようにして決まります。シリアルドライバ(ソフトウェア)は、どの I/O 
アドレスがどの <tt/ttyS/ に対応するのかを示す表を管理しています。この
ような名前(<tt/ttyS1/ 等)から I/O アドレス(と IRQ)への対応は、設定も表
示も ``setserial'' コマンドで行うことができます。<ref id="set_serial"
name="setserial とは何か?">の節をご覧ください。このプログラムはハード
ウェアそのものの I/O アドレスや IRQ の設定は行い<tt/ません/ (ハードウェ
アの設定はジャンパやプラグ&amp;プレイの設定プログラムで行います)。この
ように、どの物理ポートが <tt/ttyS1/ などに対応するのかは、シリアルドラ
イバの設定 (setserial による)とハードウェアの設定の両方に依存します。
これに間違いがあると、物理ポートは (<tt/ttyS2/ などの)どの名前にも対応
せず、従って使えないかもしれません。詳しくは <ref id="ttySN_"
name="/dev/ttyS2 などのシリアルポートデバイス"> の章をご覧ください。

<!--
<sect1> Interrupts <label id="interrupt_">
<p> 
-->
<!-- ifdef MODEM_ -->
<!--
Bytes come in over the phone line to the modem, are converted from
analog to digital by the modem and passed along to the serial port on
their way to their destination inside your computer.
-->
<sect1> 割込み <label id="interrupt_">

<p> 電話回線を通じモデムにやってくるデータは、モデムがアナログからデジ
タルへ変換します。そして、シリアルポートを通りコンピュータ中の目的地に
到着します。

<!-- ifdef MODEM end -->
<!--
When the serial port receives a number of bytes (may be set to 1, 4,
8, or 14) into its FIFO buffer, it signals the CPU to fetch them by
sending an electrical signal known as an interrupt on a certain wire
normally used only by that port.  Thus the FIFO waits for a number of
bytes and then issues an interrupt.
-->

<!-- from Serial-HOWTO --> 
シリアルポートは、ある数のバイトデータ(1, 4, 8, 14 のいずれかに設定さ
れていると思います)のデータを FIFO バッファに受け取ります。すると、通
常はそのポートだけが使う特定の配線上に割込みとして知られる電気信号を流
すことにより、そのデータを取り込むように CPU に伝えます。このように 
FIFO は、ある数のバイトデータを待って、それから割込みを発行します。

<!--
However, this interrupt will also be sent if there is an unexpected
delay while waiting for the next byte to arrive (known as a timeout).
Thus if the bytes are being received slowly (such as someone typing on
a terminal keyboard) there may be an interrupt issued for every byte
received.  For some UART chips the rule is like this: If 4 bytes in a
row could have been received, but none of these 4 show up, then the
port gives up waiting for more bytes and issues an interrupt to fetch
the bytes currently in the FIFO.  Of course, if the FIFO is empty,
no interrupt will be issued.
-->

<!-- from Serial-HOWTO -->
しかし、この割込みは、次のバイトデータが届くのを待っている間に、予期し
ない遅延が生じたときにも送られます(タイムアウトといいます)。このように、
(端末のキーボードで入力しているときのように)バイトデータがゆっくり受信
されていると、1 バイトを受け取るごとに割込みが発行されるかもしれません。
一部の UART チップでは、以下のような規則になります: 4 バイトを連続して
受け取れるかもしれなかったのに、これらの 4 バイトのデータがいずれも出
てこなければ、シリアルポートは次のバイトデータを待つのをあきらめ、現在 
FIFO に入っているバイトデータを取得させるために割込みを発行します。も
ちろん、FIFO が空であれば割込みは発行されません。

<!--
Each interrupt conductor (inside the computer) has a number (IRQ) and
the serial port must know which conductor to use to signal on.  For
example, ttyS0 normally uses IRQ number 4 known as IRQ4 (or IRQ 4).  A
list of them and more will be found in "man setserial" (search for
"Configuring Serial Ports").  Interrupts are issued whenever the
serial port needs to get the CPU's attention.  It's important to do
this in a timely manner since the buffer inside the serial port can
hold only 16 (1 in old serial ports) incoming bytes.  If the CPU fails
to remove such received bytes promptly, then there will not be any
space left for any more incoming bytes and the small buffer may
overflow (overrun) resulting in a loss of data bytes.
-->

<!-- from Serial-HOWTO -->

それぞれの(コンピュータ内部の)割込み線には番号 (IRQ) が付いており、シ
リアルポートは信号を送るためにどの線を使うのかを知らなければなりません。
例えば、<tt/ttyS0/ は通常、IRQ 番号 4 を使います。これは IRQ4 (または 
IRQ 4) と書きます。IRQ 番号のリストなどは ``<tt/man setserial/'' に書
いてあります( 「シリアルポートのコンフィギュレーション上の注意事項 
(Configuring Serial Ports)」の章を見てください)。シリアルポートが CPU 
の注意を引きつける必要がある際には、必ず割込みを発行します。割込みの発
行を適切なタイミングで行うことは重要です。というのも、シリアルポートの
バッファは入ってくるデータを 16 バイト(古いシリアルポートでは 1 バイト) 
しか保持できないからです。このような受信データをバッファからうまく取り
出すことに CPU が失敗すると、これ以上のデータが入る場所がなくなり、小
さなバッファがあふれて(オーバーラン)が起こってしまい、データは無くなり
ます。

<!-- ifdef MODEM_ -->

<!--
For an external modem, there is no way (such as flow control) to stop
the flow rapidly enough to prevent this.  For an internal modem the
16-byte FIFO buffer is on the same card and a good modem will not
write to it if it's full.  Thus a good internal modem will not overrun
the 16-byte buffers but it may need to use <ref id="M-M_flow_c"
name="Modem-to-Modem Flow Control"> to prevent the modem itself from
being overrun.  This is one advantage of an internal modem over an
external.
-->

外付けモデムに関しては、この現象をすみやかに防ぎオーバーフローを止める
(フロー制御のような)方法はありません。内蔵モデムに関しては、16バイトの
FIFO バッファがモデムボード上にあり、出来の良いモデムはバッファに空き
がなければ書込みを行いません。従って、良い内蔵モデムはこの16バイトのバッ
ファをあふれさせることがありません。しかし、モデム自体がオーバーフロー
することを防ぐには<ref id="M-M_flow_c" name="モデム間のフロー制御"> を
使う必要があるかもしれません。以上のことは外付けモデムに対する、内蔵モ
デムのひとつの利点になっています。

<!-- ifdef MODEM end -->

<!--
Interrupts are also issued when the serial port has just sent out all
16 of its bytes from its small transmit buffer out the external cable.
It then has space for 16 more outgoing bytes.  The interrupt is to
notify the CPU of that fact so that it may put more bytes in the small
transmit buffer to be transmitted.  Also, when a modem control line
changes state an interrupt is issued.
-->

<!-- from Serial-HOWTO -->
割込みは、シリアルポートが 16 バイトのデータを小さい送信バッファから外
部ケーブルに全て送り出した直後にも発行されます。この送信バッファには、
送り出すデータ用の 16 バイトの空きができます。割込みはこの事実を CPU 
に伝え、小さい送信バッファに送信すべき新しいデータを入れさせるために用
います。また、モデム制御ラインの状態が変化したときにも割込みが発行され
ます。

<!--
The buffers mentioned above are all hardware buffers.  The serial port
also has large buffers in main memory.  This will be explained later
-->

<!-- from Serial-HOWTO -->
前述のバッファはすべてハードウェアバッファのことです。シリアルポートは
主記憶上にも大きなバッファを持っています。これに関しては後ほど説明しま
す。

<!--
Interrupts convey a lot of information but only indirectly.  The
interrupt itself just tells a chip called the interrupt controller
that a certain serial port needs attention.  The interrupt controller
then signals the CPU.  The CPU runs a special program to service the
serial port.  That program is called an interrupt service routine
(part of the serial driver software).  It tries to find out what has
happened at the serial port and then deals with the problem such a
transferring bytes from (or to) the serial port's hardware buffer.
This program can easily find out what has happened since the serial
port has registers at IO addresses known to the the serial driver
software.  These registers contain status information about the serial
port.  The software reads these registers and by inspecting the
contents, finds out what has happened and takes appropriate action.
-->

<!-- from Serial-HOWTO -->

割込みは多くの情報を伝えますが、これは間接的にしか行いません。割込みそ
のものは、特定のポートが注意を求めていることを割込みコントローラと呼ば
れるチップに知らせるだけです。割込みコントローラはこれを受けて CPU に
信号を送ります。CPU はシリアルポートにサービスを提供する特殊なプログラ
ム(シリアルデバイスドライバの一部)を実行します。このプログラムは割込み
サービスルーチン(または割込みハンドラ)と呼ばれます。割込みサービスルー
チンはシリアルポートで起きた出来事を調べ、その問題 (シリアルポートのハー
ドウェアバッファのデータ入出力など)を処理します。このルーチンはシリア
ルポートで起きたことを簡単に知ることができます。というのも、シリアルポー
トのレジスタはシリアルデバイスドライバが知っている I/O アドレスにある
からです。このレジスタは、シリアルポートの状態に関する情報を保持してい
ます。デバイスドライバはこのレジスタを読んでその内容を調べることにより、
シリアルポートで起きたことを知り、適切な動作を行うことができます。

<!-- ifdef MODEM_ -->
<!--
<sect1> Data Compression (by the Modem)
<p> Before continuing with the basics of the serial port, one needs to
understand about something done by the modem: data compression.  In
some cases this task is actually done by software run on the
computer's CPU but unfortunately at present, such software only works
for MS Windows.  The discussion here will be for the case where the
modem itself does the compression since this is what must happen in
order for the modem to work under Linux.
-->

<sect1> (モデムによる)データ圧縮

<p> シリアルポートの基礎を続ける前に、モデムが行っているデータ圧縮に関
して理解する必要があります。コンピュータの CPU がソフトウェア処理によ
りこの圧縮を行うこともあります。しかし不幸なことに、現在ではこういった
ソフトウェアは MS Windows 上でしか動作しません。これは Linux でモデム
を動作させるために必ず発生する問題であり、この議論はモデム自身がどこで
圧縮を行うのかに関するものです。<!-- 最後の文は良く分からん -->

<!--
In order to send data faster over the phone line, one may compress
(encode it) using a custom encoding scheme which itself depends on the
data.  The encoded data is smaller than the original (less bytes) and
can be sent over the Internet in less time.  This process is called
"data compression".
-->

電話回線を通じデータをより高速に送るためには、ひとつにはデータに依存し
た特定の符号化方式を用いて圧縮を行う方法があるでしょう。符号化したデー
タはもとのデータよりも小さくなり、短い時間でインターネットを通じて送る
ことができます。この過程を「データ圧縮」と呼びます。

<!--
If you download files from the Internet, they are likely already
compressed and it is not feasible for the modem to try to compress
them further.  Your modem may sense that what is passing thru has
already been compressed and refrain from trying a compress it any
more.  If you are receiving data which has been compressed by the
other modem, your modem will decompress it and create many more bytes
than were sent over the phone line.  Thus the flow of data from your
modem into your computer will be higher than the flow over the phone
line to you.  The ratio of this flow is called the compression ratio.
Compression ratios as high as 4 are possible, but not very likely.
-->

インターネットからファイルをダウンロードする際、ファイルは既に圧縮して
あり、モデムが更に圧縮を試みてもうまくいきません。モデムは既に圧縮済み
のものを感知し、更なる圧縮を試みないかもしれません。対向するモデムから
圧縮済みのデータを受け取ったたら、モデムはデータを展開し、電話回線を通
じ送られたデータより多くのデータを作成します。従って、モデムからコン
ピュータへ送られるデータ量は、電話回線上での流量よりも多くなるでしょう。
これらの流量の比率を圧縮率と呼びます。圧縮率は最高でも 4 程度ですが、
ほとんどありえないことです。

<!--
<sect1> Error Correction
<p> Similar to data compression, modems may be set to do error
correction.  While there is some overhead cost involved which slows
down the byte/sec flow rate, the fact that error correction strips off
start and stop bits actually increases the data byte/sec flow rate.  
-->

<sect1> エラー訂正

<p> モデムがエラー訂正を行うように設定されているかもしれません。これは
データ圧縮に似ています。エラー訂正には送信速度(フローレート)を減少させ
るオーバーヘッドが伴うものの、エラー訂正はスタートビットおよびストップ
ビットを削ぎ落し、送信速度を向上させます。

<!--
For the serial port's interface with the external world, each 8-bit
byte has 2 extra bits added to it: a start-bit and a stop-bit.
Without error correction, these extra start and stop bits usually go
right thru the modem and out over the phone lines.  But when error
correction is enabled, these extra bits are stripped off and the 8-bit
bytes are put into packets.  This is more efficient and results in
higher byte/sec flow in spite of the fact that there are a few more
bytes added for packet headers and error correction purposes.
-->

外界とのインターフェイスであるシリアルポートは、各 8 ビット(1バイト)に
スタートビットおよびストップビットの 2 ビット分を付加します。エラー訂
正がなければ、これらの付加されたスタートビットおよびストップビットは、
モデムと電話回線を通過していきます。しかし、エラー訂正を有効にすると、
こういった付加ビットは取り除かれ、8 ビット分がパケットに入ります。パケッ
トヘッダおよびエラー訂正用の付加情報があるにも関わらず、これは効率が良
くより高い送信速度をもたらします。
<!-- ifdef MODEM end -->
  
<!-- ifdef MODEM_ -->
<!--
<sect1> Data Flow (Speeds)
<p> Data (bytes representing letters, pictures, etc.) flows from your
computer to your modem and then out on the telephone line (and
conversely).  Flow rates (such as 56k (56000) bits/sec) are
(incorrectly) called "speed".  But almost everyone says "speed"
instead of "flow rate".  If there were no data compression the flow
rate from the computer to the modem would be about the same as the
flow rate over the telephone line.
-->

<sect1> データフロー(速度)

<p> (文字、画像などを表すバイト列である)データはコンピュータからモデム
へと流れ、電話回線を通じ外界へ、あるいはその逆方向に送られます。データ
が流れる速度である (56k (56000) ビット/秒などの)フローレートは、(不正
確ですが) 「速度」と呼ばれます。ですが大抵の人は「フローレート」ではな
く「速度」の方を使います。もしデータ圧縮を行わなければ、コンピュータか
らモデムへのフローレートは電話回線上での伝送速度と等しいはずです。

<!--
Actually there are two different speeds to consider at your end of the
phone line:
-->

実際、電話回線の終端にはふたつの異なったスピードがあります。

<!--
<itemize>
<item> The speed on the phone line itself (DCE speed) modem-to-modem
<item> The speed from your computer's serial port to your modem (DTE speed)
</itemize>
-->

<itemize>
<item> モデム - モデム間の電話回線そのものの速度(DCE スピード)
<item> シリアルポートからモデムまでの速度(DTE スピード)
</itemize>

<!--
When you dial out and connect to another modem on the other end of the
phone line, your modem often sends you a message like "CONNECT 28800"
or "CONNECT 115200".  What do these mean?  Well, its either the DCE
speed or the DTE speed. If it's higher than the advertised modem speed
it must be the DTE modem-to-computer speed.  This is the case for the
115200 speed shown above.  The 28800 must be a DCE (modem-to-modem)
speed since the serial port has no such speed.  One may configure the
modem to report either speed.  Some modems report both speeds and
report the modem-to-modem speed as (for example): CARRIER 28800.
-->

電話回線のもう一端にあるモデムに電話をかけて接続すると、モデムは 
``<tt/CONNECT 28800/'' あるいは ``<tt/CONNECT 115200/'' といったメッセー
ジをあなたに送ります。これは何を意味しているのでしょうか?  これは DCE 
スピードあるいは DTE スピードを示します。表示されたスピードがモデムの
スピードより高速なら、それはモデムとコンピュータ間の DTE 速度のはずで
す。115200 を示した上記の場合がそれにあたります。28800 に関しては、シ
リアルポートにはその速度がないので、DCE (モデム - モデム間)速度のはず
です。どちらか一方の速度を示すよう、モデムを設定する人がいるかもしれま
せん。また、両方の速度、そして(例えば) ``<tt/CARRIER 28800/'' のような
モデム間の速度を示すモデムもあるでしょう。

<!--
If you have an internal modem you would not expect that there would be
any speed limit on the DTE speed from your modem to your computer
since you modem is inside your computer and is almost part of your
computer.  But there is since the modem contains a dedicated serial
port within it.
-->

内蔵モデムの場合には、モデムがコンピュータの内部にあってほとんどコン
ピュータの部品なので、モデムからコンピュータへの DTE 速度には速度上の
限界はないでしょう。しかし、内蔵モデムは内部に専用のシリアルポートがあ
ります。

<!--
It's important to understand that the average speed is often less than
the specified speed, especially on the short DTE computer-to-modem
line.  Waits (or idle time) result in a lower average speed.  These
waits may include long waits of perhaps a second due to <ref
id="flow_control" name="Flow Control">.  At the other extreme there
may be very short waits (idle time) of several micro-seconds
separating the end of one byte and the start of the next byte.  In
addition, modems will fallback to lower speeds if the telephone line
conditions are less than pristine.
-->

<!-- modified, from Serial-HOWTO -->
平均速度は仕様で決められている速度よりも遅い場合が多いことを理解してお
くことが大切です。待ち時間(あるいはアイドル時間)があると、平均速度は低
くなります。このような待ち時間には、 <ref id="flow_control" name="フロー
制御"> による 1 秒程度もある長い待ち時間も含まれます。別の極端な例とし
ては、バイトデータを送る間の数ミリ秒という非常に短い待ち時間があります。
それに加え、電話回線の状態が良くない場合、モデムは速度を落とすこともあ
ります。

<!--
For a discussion of what DTE speed is best to use see section <ref
id="speed_" name="What Speed Should I Use">.
-->

最良の DTE 速度に関する議論は <ref id="speed_" name="使うべき速度は?"> 
の章をご覧ください。

<!-- ifdef MODEM end -->


<!--
<sect1> Flow Control <label id="flow_control">
<p> Flow control means the ability to stop the flow of bytes in a
wire.  It also includes provisions to restart the flow without any
loss of bytes.  Flow control is needed for modems to allow a jump in
instantaneous flow rates.  
-->

<!-- from Serial-HOWTO -->
<sect1> フロー制御 <label id="flow_control">

<p> フロー制御とは、配線を流れるバイトデータを止める機能のことです。こ
れには、バイトデータを失うことなくデータを再び流し始める機能も含まれま
す。フロー制御は、モデムが瞬間のフローレートを非連続的に変えられるよう
にするために必要です。

<!--
<sect2> Example of Flow Control 
<p> For example, consider the case where you connect a 36.6k external
modem via a short cable to your serial port.  The modem sends and
receives bytes over the phone line at  36.6k bits per second (bps).
It's not doing any data compression or error correction.  You have set
the serial port speed to 115,200 bits/sec (bps), and you are sending
data from your computer to the phone line.  Then the flow from the
your computer to your modem over the short cable is at 115.2k bps.
However the flow from your modem out the phone line is only 33.6k bps.
Since a faster flow (115.2k) is going into your modem than is coming
out of it, the modem is storing the excess flow (115.2k -33.6k = 81.6k
bps) in one of its buffers.  This buffer would eventually overrun (run
out of free storage space) unless the 115.2k flow is stopped.  
-->

<!-- from Serial-HOWTO -->
<sect2> フロー制御の例

<p> 例として、33.6k の外部モデムを短いケーブルを使ってシリアルポートに
接続する場合を考えましょう。このモデムは電話回線上で 33.6k bps (ビット
毎秒)でデータを送受信します。データ圧縮やエラー訂正は全く行わないもの
とします。シリアルポートの速度は 115.2k bps に設定してあり、データをコ
ンピュータから電話回線に送ります。すると、コンピュータからモデムへは短
いケーブルを通って 115.2k bps でデータが流れます。しかし、モデムから電
話回線へは 33.6k bps でしかデータが流れません。データが出て行くよりも
速くデータが入ってくるので、モデムは超過分のデータ (115.2k -33.6k =
81.6k bps)をバッファに保持しなければなりません。 115.2k bps のデータの
流れが止まらない限り、結局はこのバッファは溢れて (空き容量がなくなって)
しまいます。

<!--
But now flow control comes to the rescue.  When the modem's buffer is
almost full, the modem sends a stop signal to the serial port.  The
serial port passes on the stop signal on to the device driver and the
115.2k bps flow is halted.  Then the modem continues to send out data
at 33.6k bps drawing on the data it previous accumulated in its
buffer.  Since nothing is coming into the buffer, the level of bytes
in it starts to drop.  When almost no bytes are left in the buffer,
the modem sends a start signal to the serial port and the 115.2k flow
from the computer to the modem resumes.  In effect, flow control
creates an average flow rate in the short cable (in this case 33.6k)
which is significantly less than the "on" flow rate of 115.2k bps.
This is "start-stop" flow control.
-->

<!-- from Serial-HOWTO -->

ですが、ここでフロー制御が役立ちます。モデムのバッファが溢れそうになる
と、モデムはシリアルポートに停止信号を送ります。シリアルポートはこの停
止信号をデバイスドライバに渡し、115.2k bps のデータの流れは停止します。
モデムは、今までバッファに蓄えたデータを取り出しながら、そのまま 33.6k
bps でデータを送り続けます。するとバッファには何も入ってこないため、バッ
ファ内のデータ量は減り始めます。バッファ内のデータがほとんどなくなると、
モデムは開始信号をシリアルポートに送り、コンピュータからモデムへ再び 
115.2k bps でデータが流れ始めます。フロー制御により事実上、短いケーブ
ル上での平均的なフロー速度(この場合は 33.6k bps)は、データを「流し続け
た」場合の速度である 115.2k bps よりもずっと遅くなります。これが「開始-
停止」フロー制御です。

<!--
The above is a simple example of flow control for flow from the
computer to a modem , but there is also flow control which is used for
the opposite direction of flow: from a modem (or other device) to a
computer.  Each direction of flow involve 3 buffers: 1. in the modem
2. in the UART chip (called FIFOs) 3. in main memory managed by the serial
driver.  Flow control protects certain buffers from overflowing.  The
small UART FIFO buffers are not protected in this way but rely
instead on a fast response to the interrupts they issue.  FIFO stand
for "First In, First Out" which is the way it handles bytes.  All the
3 buffers use the FIFO rule but only one of them also uses it as a
name.  This is the essence of flow control but there are still some
more details.
-->

<!-- from Serial-HOWTO -->

上記の簡単な例はコンピュータからモデムへの流れのフロー制御でしたが、反
対向きの流れ(モデムからコンピュータへの向き)に対して用いるフロー制御も
あります。すなわちモデム(または他のデバイス)からコンピュータの向きです。
どちらの向きの流れにも 3 つのバッファ(1. モデム内のバッファ、 2. UART 
チップ(いわゆる FIFO)の内部、3. シリアルドライバが管理するメインメモリ
中のバッファ)があります。フロー制御は、特定のバッファが溢れないように
保護します。小さい UART FIFO バッファはこのような保護を受けていません
が、その代わりに、このバッファが発行する割込みへの応答が高速であるこ
とを期待して動作します。FIFO は「First In, First Out(先に入ったデータ
が先に出る)」という、バイトデータの扱い方を表しています。 3 つのバッファ
全てが FIFO の規則で動作しますが、これを名前として持っているのは 1 つ
だけです。これがフロー制御の本質ですが、説明することはもっとたくさんあ
ります。

<!-- ifdef MODEM_ -->
<!--
You don't often need flow control in the direction from the modem to a
PC.  For complex example of a case where it's needed see "Complex Flow
Control Example" in the Serial-HOWTO.  But if you don't have a high
enough speed set between the modem and the computer (serial port
speed) then you do need to slow down the flow from the modem to the
PC.  To do this you must stop the incoming flow of bytes over the
telephone line.   Your modem must tell the other modem to stop
sending.  See <ref id="M-M_flow_c" name="Modem-to-Modem Flow Control">
-->

この(モデムから PC への)方向のフロー制御は必要ないことが多いです。これ
が必要となる複雑な例に関しては Serial-HOWTO の ``複雑なフロー制御の例'' 
をご覧ください。しかし、モデムとコンピュータ間(シリアルポート)に充分に
高速な設定がない場合、モデムから PC への流れを減らす必要があります。そ
のためには、電話回線からのデータの流入を停止しなければなりません。モデ
ムは対向するモデムに送信を停止するよう伝えなければいけません。<ref
id="M-M_flow_c" name="モデム間のフロー制御"> をご覧ください。

&lsqb; 訳注 : JF プロジェクトによる日本語訳 <url
 url="http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html"
 name="Serial-HOWTO"> &rsqb;

<!-- ifdef MODEM end -->

<!--
<sect2> Hardware vs. Software Flow Control
<p> If feasible it's best to use "hardware" flow control that uses two
dedicated "modem control" wires to send the "stop" and "start"
signals.  
-->

<!-- from Serial-HOWTO -->
<sect2> ハードウェアフロー制御対ソフトウェアフロー制御

<p> 可能であれば、できるだけ「ハードウェア」のフロー制御を使いましょう。
これは専用の「モデム制御線」を 2 本使い、「停止(stop)」と「開始(start)」
の信号を送るものです。

<!-- ifdef MODEM_ -->
<!--
Modern modems almost always use hardware flow control between the
modem and the serial port.
-->

最近のモデムはシリアルポートとの間で、ハードウェアフロー制御をほぼ常時
用います。

<!-- ifdef MODEM end -->

<!--
Software flow control uses the main receive and transmit wires to send
the start and stop signals.  It uses the ASCII control characters DC1
(start) and DC3 (stop) for this purpose.  They are just inserted into
the regular stream of data.  Software flow control is not only slower
in reacting but also does not allow the sending of binary data unless
special precautions are taken.  Since binary data will likely contain
DC1 and DC3, special means must be taken to distinguish between a DC3
that means a flow control stop and a DC3 that is part of the binary
code.  Likewise for DC1.  
-->

<!-- from Serial-HOWTO -->
ソフトウェアフロー制御は、制御信号を送るために ASCII 制御文字の DC1(開
始)と DC3(停止)を使います。この制御文字は単に、通常のデータストリーム
内に挿入されます。ソフトウェアのフロー制御は反応が遅いだけでなく、特別
な対策を講じなければモデムを使ってバイナリデータを送ることもできません。
バイナリデータには大抵、フロー制御用の制御文字 DC1, DC3 が入っています。
従って、特殊な対策を立てて、フロー制御の停止信号である DC3 とバイナリ
コードの一部である DC3 を区別しなければなりません。DC1 についても同様
です。

<!-- ifdef MODEM_ -->
<!--
To get software flow control to work for binary data requires both
modem (hardware) and software support
-->

バイナリデータに対してソフトウェアフロー制御を行うためには、モデム(ハー
ドウェア)とソフトウェアの両方での対応が必要です。

<!--
<sect2> Symptoms of No Flow Control
<p> Understanding flow-control theory can be of practical use.  For
example I used my modem to access the Internet and it seemed to work
fine.  But after a few months I tried to send long files from my PC to
an ISP and a huge amount of retries and errors resulted (but
eventually Kermit could send a long file after many retries).
Receiving in the other direction (from my ISP to me) worked fine.  The
problem turned out to be a hardware defect in my modem that had
resulted in disabling flow control.  My modem's buffer was overflowing
(overrunning) on long outgoing files since no "stop" signal was ever
sent to the computer to halt sending to the modem.  There was no
problem in the direction from the modem to my computer since the
capacity (say 115.2k) was always higher than the flow over the
telephone line.  The fix was to enable flow control by putting into
the init string an enable-flow-control command for the modem (It
should have been enabled by default but something was wrong).
-->

<sect2> フロー制御がないときの症状

<p> フロー制御の理屈が分かっていると、実際に役立つこともあります。例え
ば、著者はモデムを使ってインターネットにアクセスし、問題なく稼動してい
るかに見えました。しかし、数ヶ月後に PC から ISP へ大きなファイルを送
ろうとした際、大量の再送および送信誤りが生じました。(結局 Kermit は多
くの再送をしたののち、ファイルを送ることができました。) (ISP から著者
への)逆方向の受信では快適に動いていました。この問題はモデムのフロー制
御が無効になるハードウェアの欠陥によるものでした。著者のモデムはデータ
送信を止めるための「停止」信号をコンピュータに送らなかったので、大きな
送信ファイルでバッファがオーバーフロー(オーバーラン)しました。モデムか
らコンピュータへの方向では、電話回線上の流量よりも( 115.2k という)モデ
ムからコンピュータへの容量のほうが常に大きいため、問題が発生しませんで
した。初期化文字列にフロー制御を有効にするコマンドを付加しフロー制御を
有効にすることで、この問題を解決しました(デフォルトで有効になっている
はずなのに、何かがおかしくてそうなっていませんでした)。

<!--
<sect2> Modem-to-Modem Flow Control <label id="M-M_flow_c">
<p> This is the flow control of the data sent over the telephone lines
between two modems.  Practically speaking, it only exists when you
have error correction enabled.  Actually, even without error
correction it's possible to enable software flow control between
modems but it may interfere with sending binary data so it's not often
used.
-->

<sect2> モデム間のフロー制御 <label id="M-M_flow_c">

<p> これは電話回線を通じ 2 つのモデム間でデータを送る際の、フロー制御
に関する記述です。エラー訂正が有効な場合のみ、モデム間のフロー制御は可
能となります。実際、エラー訂正を行わなければ、モデム間のソフトウェアフ
ロー制御を有効にできますが、バイナリデータの送信を妨げるかもしれないの
で、あまり用いません。

<!-- ifdef MODEM end -->

<!--
<sect1> Data Flow Path; Buffers
<p> Although much has been explained about this including flow
control, a pair of 16-byte FIFO buffers (in the hardware), and
a pair of larger buffers inside a 
modem
there is still another pair of buffers.  These are large buffers
(perhaps 8k) in main memory also known as serial port buffers.  When
an application program sends bytes to the serial port
(and modem) they first get stashed in the the
transmit serial port buffer in main memory.  The pair consists of both
this transmit buffer and a receive buffer for the opposite direction
of byte-flow.
-->

<!-- from Serial-HOWTO and modified -->
<sect1> データフロー経路 - バッファ

<p> この話題については、フロー制御、(ハードウェアが持つ) 16 バイトの 
FIFO バッファの対、モデムにある大きなバッファ対を含めた大部分を既に説
明しました。しかし、これ以外にもまだバッファの対があります。メインメモ
リ上にある大きな(多分 8kB の)バッファがあり、これもシリアルポートのバッ
ファと呼ばれます。アプリケーションプログラムがデータをシリアルポート
(そしてモデム)に送ると、このデータはまずメインメモリ上の方の(シリアル
ポートの) 送信バッファに格納されます。バッファの対はデータの流れの向き
が反対である、送信バッファと受信バッファの組み合せです。

<!--
The serial device driver takes out say 16 bytes from this transmit buffer,
one byte at a time and puts them into the 16-byte transmit buffer in the
serial hardware for transmission.  Once in that transmit buffer, there
is no way to stop them from being transmitted.  They are then
transmitted to the modem
which also has a fair sized (say 1k) buffer.  When the device driver
(on orders from flow control) stops the flow of outgoing bytes from
the computer, what it actually stops is the flow of outgoing bytes
from the large transmit buffer in main memory.  Even after this has
happened and the flow to the modem has stopped, an application program
may keep sending bytes to the 8k transmit buffer until it becomes
fill.  
-->

<!-- from Serial-HOWTO and modified -->
シリアルポートのデバイスドライバは、例えば 16 バイトのデータを 1 バイ
トずつ送信バッファから取り出し、これをシリアルポートのハードウェアが送
信用に持っている送信バッファに入れます。一度データが送信バッファに入る
と、その送信を止める方法はありません。そしてこのデータはシリアルポート
から適切な大きさ(恐らく 1KB )のバッファを持つモデムへ送り出されます。
デバイスドライバが(フロー制御の指示を受けて)コンピュータから送信される
データの流れを止めたとき、実際に止まるのはメインメモリ上の大きな送信
バッファから送り出されるデータの流れです。データが止められ、モデムへ送
り出されるデータの流れが止まった後であっても、アプリケーションプログラ
ムは、8kB の送信バッファがいっぱいになるまでは、ここにデータを送り続け
ることができます。

<!--
When it gets fill, the application program can't send any more bytes
to it (a "write" statement in a C_program blocks) and the application
program temporarily stops running and waits until some buffer space
becomes available.  Thus a flow control "stop" is ultimately able to
stop the program that is sending the bytes.  Even though this program
stops, the computer does not necessarily stop computing.  It may
switch to running other processes while it's waiting at a flow control
stop.  The above was a little oversimplified since there is another
alternative of having the application program itself do something else
while it is waiting to "write".
-->

<!-- from Serial-HOWTO -->
このバッファがいっぱいになると、アプリケーションプログラムはそれ以上の
データを送る(C 言語では ``write'' 文を使います) ことができなくなり、ア
プリケーションの実行を一時的に停止してバッファに空きができるのを待ちま
す。このように、フロー制御の ``stop'' 信号は結局、データを送るプログラ
ムを止めることができます。このプログラムが止まっても、コンピュータは計
算を止める必要はありません。フロー制御の stop 信号を受けて待っている間
は、別のプロセスに切替えればよいのです。以上の説明は多少簡略化しすぎて
いますが、``write'' 文を待っている間にアプリケーションプログラム自体に
別処理をさせる方法がこれとは別にあるからです。

<!-- ifdef MODEM_ -->
<!--
<sect1> Modem Commands
<p> Commands to the modem are sent to it from the communication
software over the same conductor as used to send data.  The commands
are short ASCII strings.  Examples are "AT&amp;K3" for enabling
hardware flow control (RTS/CTS) between your computer and modem; and
"ATDT5393401 for Dialing the number 5393401.  Note all commands are
prefaced by "AT".   Some commands such as enabling flow control help
configure the modem.  Other commands such as dialing a number actually
do something.  There are about a hundred or so different possible
commands.  When your communication software starts running, it first
sends an "init" string of commands to the modem to configure it.  All
commands are sent on the ordinary data line before the modem dials (or
receives a call).  
-->

<sect1> モデムコマンド

<p> 通信ソフトウェアはデータを送る配線と同じ配線を用いて、モデムへコマ
ンドを送ります。このコマンドは短い ASCII 文字列です。例えば、
``<tt/AT&amp;K3/'' はコンピュータとモデム間のハードウェアフロー制御 
(RTS/CTS) を有効にします。``<tt/ATDT5393401/'' は電話番号 5393401 をダ
イヤルします。すべてのコマンドが ``<tt/AT/'' で始まることに注意してく
ださい。こういったコマンドはフロー制御を有効にするなど、モデムを設定す
るために役立ちます。その他のコマンドは電話番号をダイヤルするなど、何ら
かの動作を行います。約 100 以上の異なった使用可能なコマンドがあります。
通信ソフトウェアが動き出すと、モデムを設定するためにコマンドの「初期化」
文字列をモデムに送ります。モデムがダイヤルする(あるいは電話を受ける)前
に、すべてのコマンドが通常のデータ通信線を用いて送られます。

<!--
Once the modem is connected to another modem (on-line mode),
everything that is sent from your computer to your modem goes directly
to the other modem and is not interpreted by the modem as a command.
There is a way to "escape" from this mode of operation and go back to
command mode where everything sent to the modem will be interpreted as
a command.  The computer just sends "+++" with a specified time
spacing before and after it.  If this time spacing is correct, the
modem reverts to command mode.  Another way to do this is by a signal
on a certain modem control line.
-->

モデムを他のモデムに接続した(オンラインモードの)とき、コンピュータから
モデムへ送ったすべてのデータはもう一方のモデムへ直接到達し、コマンドの
ようにモデムが解釈することはありません。オペレーションモードから、送信
データすべてをモデムが解釈するコマンドモードへ「エスケープする」方法が
あります。コンピュータが特定の時間間隔で ``<tt/+++/''のみを送信します。
この間隔が正しければ、モデムはコマンドモードへ復帰します。もうひとつの
方法はモデム制御線に信号を送ることです。

<!--
There are a number of lists of modem commands on the Internet.  The
section <ref id="web_sites" name="Web Sites"> has links to a couple of
such web-sites.  Different models and brands of modems do not use
exactly the same set of such commands.  So what works for one modem
might not work for another.  Some common command (not guaranteed to
work on all modems) are listed in this HOWTO in the section <ref
id="modem_conf" name="Modem Configuration">
-->

インターネット上には多くのモデムコマンドのリストがあります。<ref
id="web_sites" name="Web サイト"> の節では、こういったウェブサイトへの
リンクを載せています。異なった型番やブランドのモデムは、異なったコマン
ドセットを使用します。従って、あるモデムのコマンドが他のモデムでは動作
しない可能性があります。(すべてのモデムで動作する保証はありませんが)共
通のコマンドは、この HOWTO の <ref id="modem_conf" name="モデムの設定
"> の節に載せてあります。

<!-- ifdef MODEM end -->

<!--
<sect1> Serial Software: Device Driver Module
<p> The device driver for the serial port is the software that
operates the serial port.  It is now provided as a serial module.
This module will normally get loaded automatically if it's needed.
The kernel 2.2 + will do this.  In earlier kernels, you had to have
<tt/kerneld/ running in order to do auto-load modules on demand.
Otherwise the serial module needed to be explicitly listed in
/etc/modules.  Before modules became popular with Linux, the serial
driver was usually built into the kernel.  If it's still built into
the kernel (you might have selected this when you compiled the kernel)
don't let the serial module load.  If you do and wind up with two
serial drivers, it's reported that you can't use the serial ports and
get an "I/O error" if an attempt is made to open them.
-->

<!-- from Serial-HOWTO -->
<sect1> シリアル操作ソフトウェア: デバイスドライバモジュール

<p> シリアルポート用のデバイスドライバは、シリアルポートを操作するソフ
トウェアです。現在はこれはシリアルモジュールとして用意されています。こ
のモジュールは普通、必要なときに自動的に読み込まれます。バージョン 2.2 
以降のカーネルはこれを行います。これより古いカーネルでは、必要なときにモ
ジュールを自動的に読み込むためには <tt/kerneld/ を実行する必要がありま
した。これを行わない場合には、<tt>/etc/modules</tt> に明示的に列挙する
必要がありました。モジュールが Linux で一般的になる前は、シリアルドラ
イバはカーネルに組み込むのが普通でした。もし、シリアルドライバがまだカー
ネルに組み込んであるのなら(カーネルのコンパイル時にそう選択したのかも
しれません)、シリアルモジュールをロードしてはいけません。もしこれをロー
ドしてシリアルドライバが 2 つになってしまうと、シリアルポートは使えな
くなります。この場合にシリアルポートをオープンしようとすると ``I/O
error'' となります。

<!--
When the serial module is loaded it displays a message on the screen
about the existing serial ports (often showing a wrong IRQ).  But once
the module is used by <tt/setserial/ to tell the device driver the
(hopefully) correct IRQ then you should see a second display similar
to the first but with the correct IRQ, etc. See <ref id="set_serial"
name="What is Setserial"> for more info on <tt/setserial/. ) 
-->

<!-- from Serial-HOWTO -->
シリアルモジュールが読み込まれると、存在するシリアルポートに関するメッ
セージが画面に表示されます(間違った IRQ を表示することもよくあります)。
しかし、一度 <tt/setserial/ を使ってデバイスドライバに(たぶん)正しい 
IRQ を教えれば、次には一度目と似た形式で正しい IRQ 等が表示されるはず
です。<tt/setserial/ の詳細については <ref id="set_serial"
name="setserial とは何か?"> をご覧ください。

<!--
One may modify the driver by editing the kernel source code.  Much of
the serial driver is found in the file serial.c.  For details
regarding writing of programs for the serial port see
Serial-Programming-HOWTO (currently being revised by Vern Hoxie).
-->

<!-- from Serial-HOWTO -->
カーネルのソースコードを編集してドライバを修正することができます。シリ
アルドライバの大部分は <tt/serial.c/ ファイルにあります。シリアルポー
トを使うプログラムの詳しい書き方については、Serial-Programming-HOWTO 
をご覧ください(現在 Vern Hoxie さんが改訂中です)。

&lsqb;訳注 : JF プロジェクトによる日本語訳
<url url="http://www.linux.or.jp/JF/JFdocs/Serial-Programming-HOWTO.html"
name="Serial-Programming-HOWTO"> &rsqb;

<!-- basics.H end  -->

<!--
<sect> Configuring Overview
<p> If you want to use a modem only for MS Windows/Dos, then you can
just install almost any modem and it will work OK.  With a Linux PC
it's not usually this easy unless you use an external modem.  All
external modems should work OK (even if they are labeled "Plug and
Play")  But most new internal modems are Plug-and-Play (PnP) and have
PnP serial ports.  If it's a ISA modem may need to use the Linux
"isapnp" program to configure these PnP serial ports.  See the
Plug-and-Play-HOWTO for more information.
-->

<sect> 設定の概要

<p> MS Windows あるいは DOS 上のみでモデムを使いたいなら、たいていのモ
デムはただ取り付けるだけでよく、正しく動作するでしょう。外付けモデムで
ない限り、Linux ではたいていの場合このように簡単にはいきません。
(``Plug and Play'' とラベルが貼ってあるとしても) 外付けモデムは正しく
動作するはずです。しかし、最近の内蔵モデムの多くはプラグ&amp;プレイ 
(PnP) であり、PnP のシリアルポートがあります。ISA のモデムなら、Linux 
の ``isapnp'' プログラムを使う必要があるかもしれません。詳細は 
Plug-and-Play-HOWTO をご覧ください。

&lsqb;訳注 : JF プロジェクトによる日本語訳
<url url="http://www.linux.or.jp/JF/JFdocs/Plug-and-Play-HOWTO.html"
name="Plug-and-Play-HOWTO"> &rsqb;

<!--
Since each modem has an associated serial port there are two parts
to configuring a modem:

<itemize> 
<item> Configuring the modem itself: Done by the communication program
<item> Configuring the modem's serial port: Done only *partly* by the
  communication program
</itemize>
-->

モデムはシリアルポートと連携するため、モデムの設定にはふたつの部分があ
ります。

<itemize> 
<item> モデム自身の設定 - 通信端末で設定する
<item> モデムのシリアルポートの設定 - *一部だけ*を通信端末で設定する
</itemize>

<!--
Most of the above configuring (but not necessarily most of the effort)
is done by the communication program that you use with the modem such
as <tt/minicom/, <tt/seyon/, <tt/wvdial/ (for PPP).  If you use the
modem for dial-in, then the <tt/getty/ program which you use to
present outsiders with a login-prompt, will help configure.  Thus to
configure the modem (and much of the serial port) you need to
configure the communication program (such as the PPP dialer
or <tt/getty/).
-->

(推奨項目であって必要ではない)上記設定の多くは、モデムとともに使う
<tt/minicom/, <tt/seyon/, <tt/wvdial/ などの通信プログラムや PPP で設
定します。モデムをダイヤルインに使用しているのなら、訪問者にログインプ
ロンプトを出力する <tt/getty/ プログラムがモデムの設定に役立ちます。従っ
て、モデム(そしてシリアルポートの大部分)を設定するためには、通信プログ
ラムを(あるいは PPP や <tt/getty/ を)設定する必要があります。

<!--
Unfortunately the above configuring doesn't do the low-level
configuring of the serial port: setting its IO address and IRQ in both
the hardware and the driver.  If you are lucky, this will happen
automatically when you boot Linux.  Setting these in the hardware was
formerly done by jumpers but today it's done by "Plug-and-Play"
software.
-->

上記の設定作業では、シリアルポートの IO アドレスや IRQ をハードウェア
とドライバに設定するような、低レベルの設定は行いません。運が良ければ、
Linux を起動する際に自動的に設定されます。以前はジャンパでハードウェア
の設定を行いましたが、現在は「プラグ&amp;プレイ」によりソフトウェアで
設定します。

<!--
But there's a serious problem: Linux (as of late 1999) is not a
Plug-and-Play operating system but it does have Plug-and-Play tools
which you may use to set up the configuration although they are not
always very user friendly.  This may create a difficult problem for
you.  The next section will go into this in much more detail. 
-->

しかし、深刻な問題があります - (1999年の終りでは) Linux はプラグ&amp;
プレイのオペレーティングシステムではありません。しかし、使いにくいけれ
どもプラグ&amp;プレイを設定できるツールがあります。次節では更に詳しく
述べます。

<!--
<sect>Configuring the Serial Port
-->

<sect>シリアルポートの設定

<!-- configure.H begin
<sect>Configuring the Serial Port  -->

<!--
<sect1> PCI Bus Not Yet Supported <label id="PCI_">
<p> The kernel 2.2 serial driver contains no support for the PCI bus.
But kernels 2.3 and 2.4 will eventually support some PCI serial cards
(and modem cards).  Most PCI cards need special support in the driver.
The driver will read the id number digitally stored on the card to
determine how (or if) to support the card.  If you have a PCI card
which you are convinced is not a winmodem but it will not work, you
can help in attempting to create a driver for it.  To do this you'll
need to contact the maintainer of the serial driver, Theodore (Ted) Y.
Ts'o.
-->

<!-- from Serial-HOWTO -->
<sect1> PCI バスはまだサポートされていません <label id="PCI_">

<p> カーネル 2.2 のシリアルドライバは PCI バスをサポートしていません。
しかし、カーネル 2.3 と 2.4 では、ついに一部の PCI シリアルボード(およ
びモデムボード)に対応します。ほとんどの PCI ボードは、ドライバによる特
殊なサポートが必要です。ドライバはボードにデジタル的に格納されている 
ID を読み込み、そのボードにどうやって対応するか(あるいはサポートするか
どうか)を決めます。確実にソフトウェアモデムではないのに動作しない PCI 
ボードをお持ちであれば、そのボード用のドライバを作る手助けができます。
そのためには、シリアルドライバのメンテナである Theodore (Ted) Y. Ts'o 
さんに連絡する必要があります。

<!--
You will need to email him a copy of the output of "lspci -vv" with
full information about the model and manufacturer of the PCI modem (or
serial port).  Then he will try to point you to a test driver which
might work for it.  You will then need to get it, compile it and
possibly recompile your kernel.  Then you will test the driver to see
if it works OK for you and report the results to Ted Ts'o.  If you are
willing to do all the above (and this is the latest version of this
HOWTO) then email the needed info to him at: <url
url="mailto:tytso@mit.edu">.
-->

この際には、``<tt/lspci -vv/'' の出力のコピーと PCI モデム(またはシリ
アルポート)のモデルとメーカーに関する詳しい情報を電子メールで送る必要
があります。そうすれば、彼は動作するかもしれないテスト用ドライバの場所
をできるだけ教えてくれるでしょう。次に、このドライバを入手してコンパイ
ルします。カーネルも多分再コンパイルすることになるでしょう。そして、こ
のドライバをテストしてうまく動作するかどうかを調べ、その結果を Ted
Ts'o さんに報告します。上記の手順全てをちゃんと行うつもりがあるなら(そ
してこの文書が最新版なら)、彼に必要な情報を送ってください。メールアド
レスは <url url="mailto:tytso@mit.edu"> です。

<!--
PCI modems are not well standardized.  Some use main memory for I/O
with the PC (ISA ones use the I/O address space for this).  Some
require special enabling of the IRQ.  The output of "lspci" can help
determine if one can be supported.  If the details are not too
complex I may find them and put them here in a future revision.
-->

<!-- from Serial-HOWTO -->

PCI モデムはあまり標準化されていません。一部のボードは PC との I/O に
メインメモリを使います(ISA ボードはこういった場合には I/O アドレス空間
を使います)。一部のボードは、特殊な方法を使わないと IRQ が有効になりま
せん。``lspci'' の出力を見れば、ボードがサポートされているかどうかを調
べる役に立つでしょう。細かい話があまり難しくなければ、筆者がこの方法に
ついて調べ、この文書の将来のバージョンで説明するかもしれません。

<!--
<sect1> Configuring Overview <label id="irq_io_conf">
<p> In many cases, configuring will happen automatically and you have
nothing to do.  But sometimes you need to configure (or just want to
check out the configuration).  If so, first you need to know about the
two parts to configuring the serial port under Linux:
-->

<sect1> 設定の概要 <label id="irq_io_conf">

<!-- from Serial-HOWTO -->

<p> 多くの場合、設定は自動的に行われるので、ユーザがすることは何もあり
ません。しかし場合によっては設定を行う必要があります(単に設定を確かめ
るだけのこともあるでしょう)。こういった場合に最初にすべきことは、Linux 
におけるシリアルポートの設定の 2 つの部分を知ることです。

<!--
The first part (low-level configuring) is assigning it an IO address,
IRQ, and name (such as ttyS2).  This IO-IRQ pair must be set in both
the hardware and told to the serial driver.  We might just call this
"io-irq" configuring for short.  The <tt/setserial/ is used to tell
the driver.  PnP methods, jumpers, etc, are used to set the hardware.
Details will be supplied later.  If you need to configure but don't
understand certain details it's easy to get into trouble.
-->

<!-- from Serial-HOWTO -->

最初の部分(低レベル設定)は、I/O アドレス、IRQ、名前 (<tt/ttyS2/ など)
を割り当てることです。この I/O と IRQ の組は、ハードウェアとシリアルド
ライバの両方に設定しなければなりません。これを簡単に「IO と IRQ の設定」
と呼ぶことにしましょう。<tt/setserial/ はドライバを設定するために使い
ます。 PnP の機構やジャンパなどはハードウェアの設定に用います。詳しく
は後述します。設定をする必要があるにも関わらず詳しいことが分かっていな
ければ、すぐに問題に出会ってしまうでしょう。

<!--
The second part (high-level configuring) is assigning it a speed (such
as 38.4K bits/sec), selecting flow control, etc.  This is often done
by communication programs such as PPP, minicom, or by getty (which you
may run on the port so that others may log into your computer).
However you will need to tell these programs what speed you want, etc.
by using a menu or a configuration file.  This high-level configuring
may also be done with the <tt/stty/ program.  <tt/stty/ is also useful
to view the current status if you're having problems.
See also the Serial-HOWTO section: "Stty".
When Linux starts, some effort is made to detect and configure
(low-level) a few serial ports.  Exactly what happens depends on your
BIOS, hardware, Linux distribution, etc.  If the serial ports work OK,
there may be no need for you to do any configuring.  Application
programs often do the high-level configuring but you may need to
supply them with the required information.  With Plug-and-Play serial
ports (often built into an internal modem), the situation has become
more complex.  Here are cases when you need to do low-level
configuring (set IRQ and IO addresses):
-->

<!-- from Serial-HOWTO -->

2 番目の部分(高レベルの設定)は速度(38.4K ビット/秒など)の設定やフロー
制御の選択などです。これはときには PPP や minicom といった通信プログラ
ムや、<tt/getty/ (他の人があなたのコンピュータへログインできるようにポー
ト上で動作します)が行います。しかし、設定メニューや設定ファイルにより、
使いたい速度をプログラムへ指定する必要があります。この高レベルの設定は、
<tt/stty/ プログラムによっても行えます。 <tt/stty/ は、問題があるとき
に現在の状態を表示する役にも立ちます。Serial-HOWTO 中の ``stty'' の章
をご覧ください。Linux が起動するときには、いくつかのシリアルポートの検
出と(低レベル)設定が試みられます。正確にどうなるのかは、お使いの BIOS, 
ハードウェア、 Linux ディストリビューションなどによって違います。シリ
アルポートがうまく動作しているならば、何もする必要はありません。アプリ
ケーションプログラムは多くの場合、高レベルの設定を行いますが、必要な情
報を与える必要があるかもしれません。(内蔵モデムに組み込まれることが多
い)プラグ&amp;プレイのシリアルポートでは、事情はずっと複雑になります。
低レベルの設定(IRQ と I/O アドレスの設定)を行う必要がある場合を以下に
示します:

<!--
<itemize>
<item> Plan to use more than 2 serial ports
<item> Installing a new serial port (such as an internal modem)
<item>  Having problems with serial port(s)
</itemize>
-->

<!-- from Serial-HOWTO -->
<itemize>
<item> 3 つ以上のシリアルポートを使う場合 
<item> 新しいシリアルポート(内蔵モデムなど)をインストールする場合 
<item> シリアルポートで問題が起きた場合 
</itemize>

<!--
For kernel 2.2+ you may be able to use more that 2 serial ports
without low-level configuring by sharing interrupts.  This only works
if the serial hardware supports it and may be no easier than low-level
configuring.  See <ref id="int_share-2.2" name="Interrupt sharing and
Kernels 2.2+">
-->

<!-- from Serial-HOWTO -->
バージョン 2.2 以降のカーネルでは、割込みの共有を使えば低レベルの設定
を行わなくても 3 つ以上のシリアルポートを使えます。この共有はシリアル
ポートのハードウェアが対応している場合にのみ動作しますが、低レベルの設
定より簡単とはいえません。<ref id="int_share-2.2" name="2.2 以降のカー
ネルと割込みの共有"> をご覧ください。

<!--
The low-level configuring (setting the IRQ and IO address) seems to
cause people more trouble (than high-level), although for many it's
fully automatic and there is no configuring to be done.  Thus most all
of this section is on that topic.  Until the serial driver knows the
correct IRQ and IO address the port will not work at all.  It may not
even be found by Linux.  Even if it can be found, it may work
extremely slow if the IRQ is wrong.  See <ref id="slow_"
name="Extremely Slow: Text appears on the screen slowly after long
delays">.
-->

<!-- from Serial-HOWTO --> 
低レベルの設定(IRQ と I/O アドレスの設定)は、(高レベルの設定と比べると) 
比較的問題を起こしやすいようです。多くの場合は完全に自動で、何も設定す
ることがないのにです。そこで、この章の大部分はその話題を扱います。シリ
アルドライバが正しい IRQ と I/O アドレスを知るまでは、ポートは全く動作
しないでしょう。Linux では検出さえされないでしょう。検出されたとしても、 
IRQ が間違っていれば、動作は極めて遅いかもしれません。 <ref id="slow_"
name="この上なく遅い: テキストがすごく遅れてゆっくり画面に表示されます
"> を見てください。

<!--
In the Wintel world, the IO address and IRQ are called "resources" and
we are thus configuring certain resources.  But there are many other
types of "resources" so the term has many other meanings.  In review,
the low-level configuring consists of putting two values (an IRQ
number and IO address) into two places: 
-->

<!-- from Serial-HOWTO -->

Wintel の世界では、I/O アドレスと IRQ は「リソース」と呼ばれます。従っ
て、我々は特定のリソースを設定していることになります。しかし、「リソー
ス」には多くの種類があるので、この単語には他にも色々な意味があります。
復習になりますが、低レベルの設定は 2 つの値(IRQ 番号と I/O )アドレスを 
2 つの場所に設定することです:

<!--
<enum>
<item> the device driver (often by running "<tt/setserial/" at 
 boot-time)
<item> memory registers of the serial port hardware itself 
</enum>
-->

<!-- from Serial-HOWTO -->
<enum>
<item> デバイスドライバ(多くの場合、起動時に ``<tt/setserial/'' を実行
して設定します)
<item> シリアルポートのハードウェアそのもののメモリレジスタ
</enum>

<!--
You may watch the start-up (= boot-time) messages.  They are usually
correct.  But if you're having problems, there's a good chance that
some of these messages don't show the true configuration of the
hardware (and they are not supposed to).  See <ref id="boot_mesgs"
name="I/O Address & IRQ: Boot-time messages">.  
-->

<!-- from Serial-HOWTO -->
起動(= ブート時)メッセージを見てください。これは通常は正しいです。しか
し問題が起きている場合には、これらのメッセージの一部がハードウェアの正
しい設定を示していない(そして正しくないと思われる)可能性が高いです。 
<ref id="boot_mesgs" name="I/O アドレスと IRQ: 起動時のメッセージ"> を
ご覧ください。

<!--
<sect1> Common mistakes made re low-level configuring
<p> Here are some common mistakes people make:
<itemize>
<item>setserial command: They run it (without the "autoconfig" option)
 and think it has checked out the hardware (it hasn't).  
<item>setserial messages:  They see them displayed on the screen at
 boot-time, and erroneously think that the result shows how their
 hardware is actually configured.
<item>/proc/interrupts: When their serial device isn't in use they don't
 see its interrupt there, and erroneously conclude that their
 serial port can't be found (or doesn't have an interrupt set).
<item>/proc/ioports: People think this shows the hardware
 configuration when it only shows about the same data (possibly
 erroneous) as setserial.
</itemize>
-->

<!-- from Serial-HOWTO -->
<sect1> ありふれた間違いで起きた低レベル設定のやり直し

<p> 多くの人がやってしまう一般的な間違いを示します:

<itemize>
<item><tt/setserial/ コマンド: (<tt/autoconfig/ オプションを付けずに)
<tt/setserial/ を実行し、ハードウェアも調べられたと思い込む(実際には調
べられません)
<item><tt/setserial/ のメッセージ: 起動時に画面に表示されるメッセージ
を見て、ハードウェアが実際に設定された結果だと間違って信じてしまう
<item><tt>/proc/interrupt</tt>: シリアルポートが使われていないときは、
その割込みは <tt>/proc/interrupts</tt> に現われないが、それを見てシリ
アルポートが見つからない(あるいは割込みが設定されていない)と誤って信じ
てしまう
<item><tt>/proc/ioports</tt>: このファイルが(たぶん間違いで)
<tt/setserial/ と同じデータしか表示していないとき、これがハードウェア設
定を表示すると考えてしまう
</itemize>

<!--
<sect1>  I/O Address & IRQ: Boot-time messages <label id="boot_mesgs">
<p> In many cases your ports will automatically get low-level
configured at boot-time (but not always correctly).  To see what is
happening, look at the start-up messages on the screen.  Don't neglect
to check the messages from the BIOS before Linux is loaded (no
examples shown here).  These BIOS messages may be frozen by pressing
the Pause key.  Use Shift-PageUp to go back to all the messages after
they have flash by.  Shift-PageDown will scroll in the opposite
direction.  The <tt/dmesg/ command may be used at any time to view
some of the messages but it often misses important ones.  Here's an
example of the start-up messages (as of mid 1999).  Note that ttyS00
is the same as /dev/ttyS0.  
-->

<!-- from Serial-HOWTO -->
<sect1>  I/O アドレスと IRQ: 起動時のメッセージ <label id="boot_mesgs">

<p> 多くの場合、ポートの低レベルの設定は起動時に自動的に行われます(し
かし常に正しいとは限りません)。何が起きているか調べるには、画面上の起
動メッセージを見ましょう。Linux がロードされる前に BIOS が出すメッセー
ジ(例は挙げません)の確認も怠らないでください。BIOS のメッセージは 
Pause キーを押せば一旦止まります。スクロールして流れてしまったメッセー
ジを見るには、Shift-PageUp を使います。Shift-PageDown では下向きにスク
ロールします。<tt/dmesg/ コマンドを使えばいつでも起動メッセージの一部
を見ることができますが、大事な部分が抜け落ちていることもよくあります。
起動メッセージ(1999 半ばの時点)の例を以下に示します: <tt/ttyS00/ は 
<tt>/dev/ttyS0</tt> と同じである点に注意してください。

<!--
<tscreen><verb>
At first you see what was detected (but the irq is only a wild guess):

Serial driver version 4.27 with no serial options enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
ttyS02 at 0x03e8 (irq = 4) is a 16550A

Later you see what was saved, but it's not necessarily correct either:

Loading the saved-state of the serial devices...
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A
/dev/ttyS2 at 0x03e8 (irq = 5) is a 16550A
</verb></tscreen>
-->

<tscreen><verb>
検出されたものが最初に表示されます(ただし IRQ は大雑把に推定したものに
過ぎません):

Serial driver version 4.27 with no serial options enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
ttyS02 at 0x03e8 (irq = 4) is a 16550A

保存された値が後で表示されますが、これも正しいとは限りません:

Loading the saved-state of the serial devices...
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A
/dev/ttyS2 at 0x03e8 (irq = 5) is a 16550A
</verb></tscreen>

<!--
Note that there is a slight disagreement: The first message shows
ttyS2 at irq=4 while the second shows it at irq=5.  Your may only have
the first message.  In most cases the last message is the correct one.
But if your having trouble it may be misleading.  Before reading the
explanation of all of this complexity in the rest of this section, you
might just try using your serial port and see if it works OK.  If so
it may not be essential to read further.
-->

<!-- from Serial-HOWTO -->

ちょっとした不一致がある点に注意してください。最初のメッセージでは 
IRQ=4 に <tt/ttyS2/ があるように表示されていますが、二番目のメッセージ
では IRQ=5 になっています。最初のメッセージしか表示されないこともあり
ます。ほとんどの場合は最後に表示されるものが正しいメッセージです。しか
し問題がある場合には紛らわしいかもしれません。この章の残りに書かれてい
るこの難しい現象の説明を読む前に、とりあえずシリアルポートを使ってみて、
正しく動作するかどうかを調べるとよいでしょう。ちゃんと動作しているなら
ば、この先は特に読まなくてもかまいません。

<!--
The second message is from the <tt/setserial/ program being run at
boot-time.  It shows what the device driver thinks is the correct
configuration.  But this too could be wrong.  For example, the irq
could actually be set to irq=8 in the hardware (both messages wrong).
The irq=5 could be there because someone incorrectly put this into a
configuration file (or the like).  The fact that Linux sometimes gets
IRQs wrong is because it doesn't probe for IRQs.  It just assumes the
"standard" ones (first message) or accepts what you told it when you
configured it (second message).  Neither of these is necessarily
correct.  If the serial driver has the wrong IRQ the serial port is
very slow or doesn't seem to work at all.
-->

<!-- from Serial-HOWTO -->
2 番目のメッセージは、起動時に実行される <tt/setserial/ プログラムが出
力します。このメッセージは、デバイスドライバが正しいと思っている設定を
示します。しかし、これも間違っていることがあります。例えば、ハードウェ
アの IRQ が実際には IRQ=8 に設定されていることもあります(どちらのメッ
セージも間違っています)。IRQ=5 が表示されるのは、誰かが間違ってその情
報を設定ファイルに入れたから(あるいはこれと同様の理由)です。Linux がと
きどき間違った IRQ を取得するのは、Linux が IRQ の探査を行わないからで
す。 Linux は単に「標準」の IRQ を仮定するか(最初のメッセージ)、ユーザ
が行った設定をそのまま使います(2番目のメッセージ)。この両者はいずれも、
正しいとは限りません。シリアルドライバの IRQ が間違っていると、シリア
ルポートの動作が非常に遅くなったり、まったく動作していないように見えた
りします。

<!--
The first message is a result of Linux probing the serial ports but it
doesn't probe for IRQs.  If a port shows up here it exists but the
IRQ may be wrong.  Linux doesn't check IRQs because doing so is not
foolproof.  It just assumes the IRQs are as shown because they are the
"standard" values.  Your may check them manually with <tt/setserial/
using the <tt/autoconfig/ and <tt/auto_irq/ options but this isn't
guaranteed to be correct.
-->

<!-- from Serial-HOWTO -->
最初のメッセージは、Linux がシリアルポートの探査を行った結果ですが、
IRQ を検出できていません。ポートがここに現われた場合、そのポートは存在
しますが、IRQ は間違っていることがあります。Linux は IRQ のチェックは
行いません。なぜなら、チェックをしてもフールプルーフにならないからです。
Linux は IRQ が先に示した値であることを仮定します。なぜなら、これらが
「標準的」な値だからです。 <tt/setserial/ に <tt/autoconfig/ オプショ
ンと <tt/auto_irq/ オプションを付けて実行し、手動で確認を行うことがで
きます。しかし、この値が正しい保証はありません。

<!--
The data shown by the BIOS messages (which you see at first) is what
is set in the hardware.  If your serial port is Plug-and-Play PnP then
it's possible that the <tt/isapnp/ will run and change these settings.
Look for messages about this after Linux starts.  The last serial port
message shown in the example above should agree with the BIOS messages
(as possibly modified by isapnp).  If they don't agree then you either
need to change the setting in the port hardware or use setserial to
tell the driver what is actually set in the hardware.
-->

<!-- from Serial-HOWTO -->

BIOS のメッセージに表示されるデータ(最初に表示される)はハードウェアに
設定されている値です。シリアルポートがプラグ&amp;プレイならば、 
<tt/isapnp/ を実行してこれらの設定を変えることができます。Linux が起動
した後に、これに関するメッセージを探しましょう。先の例に挙げられている、
最後のシリアルポートのメッセージは、BIOS のメッセージと一致していなけ
ればなりません。一致しない場合には、ポートのハードウェアの設定を変更す
るか、ハードウェアに実際に設定されている内容を setserial を使ってドラ
イバに教えなくてはなりません。

<!--
Also, if you have Plug-and-Play (PnP) serial ports, Linux will not
find them unless the IRQ and IO has been set inside the hardware by
Plug-and-Play software.  This is a common reason why the start-up
messages do not show a serial port that physically exists.  The PC
hardware (a PnP BIOS) may automatically low-level configure this.  PnP
configuring will be explained later.
-->

<!-- from Serial-HOWTO -->

また、プラグ&amp;プレイのシリアルポートをお使いの場合には、プラグ&amp;
プレイのソフトウェアがハードウェア内部の IRQ と I/O を設定しなければ、 
Linux はこれらを検出しません。これは、物理的に存在するシリアルポートが
起動メッセージで表示されない一般的な理由です。PC のハードウェア(PnP
BIOS) はこのようなシリアルポートの低レベルな設定を自動的に行います。
PnP の設定は後で説明します。

<!--
<sect1> What is the current IO address and IRQ of my Serial Port ? 
<label id="what_is_io_irq">
<p> The previous section indicated how to attempt to do this by
looking at the start-up messages.  If they give you sufficient info
then you may not need to read this section.  If they don't then there
are some other ways to look into this.
-->

<!-- from Serial-HOWTO -->
<sect1> シリアルポートの現在の I/O アドレスと IRQ の設定は?
<label id="what_is_io_irq">

<p> 前の節では、起動メッセージを見て設定を調べる方法を説明しました。起
動メッセージで十分な情報が得られれば、この節を読む必要はありません。情
報が十分でなければ、これを調べる方法がいくつかあります。

<!--
There are really two answers to the question "What is my IO and
IRQ?" 1. What the device driver thinks has been set (This is what
setserial usually sets and shows).  2. What is actually set in the
hardware.  They both should be the same.  If they're not it spells
trouble since the driver has incorrect info on the physical serial
port.  If the driver has the wrong IO address it will try to send data
to a non-existing serial port &#045;&#045;or even worse, to an actual device
that is not a serial port.  If it has the wrong IRQ the driver will
not get interrupt service requests from the serial port, resulting in
a very slow or no response.  See <ref id="slow_" name="Extremely Slow:
Text appears on the screen slowly after long delays">.  If it has the
wrong model of UART there is also apt to be trouble.  To determine if
both I0-IRQ pairs are identical you must find out how they are set in
both the driver and the hardware.
-->

<!-- from Serial-HOWTO -->
「I/O と IRQ の設定はどうなっているの?」という問への答えは実際には 2 
通りあります。

<itemize>
<item>デバイスドライバに設定されている値(たいてい setserial で設定と表
示を行います)。
<item>実際にハードウェアに設定されている値。
</itemize>

両者は同じ値でなければなりません。そうなっていないと、ドライバが持って
いる物理的なシリアルポートに関する情報が間違っているので、問題を引き起
こします。間違った I/O アドレスがドライバに設定されていると、ドライバ
は存在しないポートにデータを送ろうとします。あるいはもっと悪いケースと
しては、シリアルポートでない実在のポートにデータを送ろうとします。間違っ
た IRQ がドライバに設定されていると、ドライバがシリアルポートからの割
込みサービス要求を受け取れずに、シリアルポートのバッファが溢れたり反応
が非常に遅くなる可能性があります。 <ref id="slow_" name="この上なく遅
い: テキストがすごく遅れてゆっくり画面に表示されます"> をご覧ください。
ドライバに設定されている UART のモデルが間違っている場合にも問題が起き
やすいです。I/O - IRQ の組がドライバとハードウェアで同じかどうかを確か
めるには、ドライバとハードウェアの双方がどのように設定されたか確かめる
必要があります。

<!--
<sect2> What does the device driver think?
<p> This is easy to find out.  Just look at the start-up messages or
type "setserial -g /dev/ttyS*".   If everything works OK then what
it tells you is likely also set in the hardware.  There are some other
ways to find this info by looking at "files" in the /proc directory.
An important reason for understanding these other ways is to warn you
that they only show what the device driver thinks.  Some people view
certain "files" in the /proc directory and erroneously think that what
they see is set in the hardware but "it ain't necessarily so". 
-->

<!-- from Serial-HOWTO -->
<sect2> デバイスドライバの設定は?

<p> これを調べるのは簡単です。単に起動メッセージを見るか、 
``<tt>setserial - g /dev/ttyS*</tt>'' を実行するだけです。シリアルポー
トがうまく動作していれば、この表示内容がハードウェアにも設定されている
でしょう。この情報を調べる別の方法としては、<tt>/proc</tt> ディレクト
リにある「ファイル」を見る方法があります。このような別の方法を説明する
重要な理由は、これらはデバイスドライバに設定されている情報しか表示しな
いことに注意してもらうためです。一部の人は、<tt>/proc</tt> ディレクト
リにある特定のファイルを見て、これがハードウェアに設定されていると勘違
いしてしまいますが、「必ずしもそうではありません」。

<!--
/proc/ioports will show the IO addresses that the drivers are using.
/proc/interrupts shows the IRQs that are used by drivers of 
currently running processes (that have devices open).  Note that
in both cases above you are only seeing what the driver thinks and not
necessarily what is actually set in the hardware.  /proc/interrupts also
shows how many interrupts have been issued (often thousands) for each
device.  You can get a clue from this because if you see a large
number of interrupts that have been issued it means that there is a
piece of hardware somewhere that is using that interrupt.  Sometimes a
showing of just a few interrupts doesn't mean that that interrupt is
actually being physically generated by any serial port.  Thus if you
see almost no interrupts for a port that you're trying to use, that
interrupt might not be set in the hardware and it implies that the
driver is using the wrong interrupt.  To view /proc/interrupts to
check on a program that you're currently running (such as "minicom")
you need to keep the program running while you view it.  To do this,
try to jump to a shell without exiting the program.
-->

<!-- from Serial-HOWTO -->

<tt>/proc/ioports</tt> は、ドライバが使っている I/O アドレスを表示しま
す。 <tt>/proc/interrupt</tt> は、現在動作している(デバイスをオープン
した)プロセスのドライバが使っている IRQ を表示します。上記のいずれの場
合も、表示されるのはドライバの設定内容であり、ハードウェアの実際の設定
内容では必ずしもありません。<tt>/proc/interrupt</tt> は、それぞれのデ
バイスに対して割込みがいくつ発行されたのかも表示します(数千個のことも
よくあります)。この情報から問題解決の手がかりをつかむことができます。
なぜなら、大量の割込みが発行されていれば、その割込みを使っているハード
ウェアがどこかにあるということだからです。割込みが少ししか表示されない
ことは、ときにその割込みが実際にはどのシリアルポートによっても物理的に
生成されていないことを意味します。従って、使おうとしているシリアルポー
トに対してほとんど割込みが発行されていなければ、ハードウェアには割込み
が設定されていないかもしれず、つまりドライバが間違った割込みを使ってい
るということかもしれません。現在実行中の(``minicom'' のような)プログラ
ムをチェックするために <tt>/proc/interruputs</tt> を見るには、このファ
イルを見ている間はずっとプログラムを実行し続ける必要があります。これを
行うには、プログラムを終了せずにシェルに行ってみましょう。

<!--
<sect2> What is set in my serial port hardware ? <label
 id="io-irq_in_hdw"
<p> How do you find out what IO address and IRQ are actually set in
the device hardware?  Perhaps the BIOS messages will tell you
some info before Linux starts booting.  Use the shift-PageUp key to
step back thru the boot-time messages and look at the very first ones
which are from the BIOS.  This is how it was before Linux started.
Setserial can't change it but isapnp or pciutils can.  
-->

<!-- from Serial-HOWTO -->
<sect2> シリアルポートのハードウェアの設定は? <label
 id="io-irq_in_hdw"

<p> デバイスのハードウェアに実際にどの I/O アドレスと IRQ が設定されて
いるのかを調べるにはどうすればいいのでしょうか? Linux が起動を始める前
に、多分 BIOS のメッセージがある程度の情報を教えてくれるでしょう。 
Shift-PageUp キーを使って起動メッセージの表示を戻し、BIOS が出した一番
最初のメッセージを見ましょう。これは Linux が起動する前の設定です。 
setserial はこの設定を変えることはできませんが、isapnp や pciutils は
設定を変えることができます。

<!--
One crude method is try probing with setserial using the "autoconfig"
option.  You'll need to guess the addresses to probe at.  See <ref
id="set_serial" name="What is Setserial">.  For a PCI serial port, use
the "lspci" command (for kernels &lt;2.2 look at /proc/pci).  If your
serial port is is Plug-and-Play see the next two subsections.
-->

<!-- from Serial-HOWTO -->
大雑把な方法の一つとして、``<tt/autoconfig/'' オプションを付けて 
setserial に検出を行わせてみる方法があります。この方法では、検出を行う
アドレスを推定する必要があります。 <ref id="set_serial"
name="setserial とは何か?  "> を見てください。PCI シリアルポートの場合
には、``<tt/lspci/'' コマンドを使ってください(カーネル 2.2 未満では 
<tt>/proc/pci</tt> を見てください)。お使いのシリアルポートがプラグ
&amp;プレイならば、以下の 2 つの節を見てください。

<!--
For a port set with jumpers, its how the jumpers were set.  If the
port is not Plug-and-Play (PnP) but has been setup by using a DOS
program then it's set at whatever the person who ran that program set
it to.
-->

<!-- from Serial-HOWTO -->
ジャンパで設定したポートの場合は、これはジャンパで設定した内容です。ポー
トがプラグ&amp;プレイ(PnP)ではないけれど DOS プログラムを使って設定さ
れている場合には、そのプログラムを実行した人が設定したように設定されて
います。

<!--
<sect2> What is set in my PnP serial port hardware ? 
<p> PnP ports don't store their configuration in the hardware when the
power is turned off.  This is in contrast to Jumpers (non-PnP) which
remain the same with the power off.  If you have an ISA PnP port, it
can reach a state where it doesn't have any IO address or IRQ and is
in effect disabled.  It should still be possible to find the port
using the <tt/pnpdump/ program.
-->

<!-- from Serial-HOWTO -->
<sect2> PnP シリアルポートのハードウェアの設定は?

<p> PnP シリアルポートは、電源を切ったときに設定をハードウェアに保存し
ません。これは、電源を切っても設定が変わらないジャンパ(非 PnP)と対照的
です。ISA PnP シリアルポートをお使いであれば、シリアルポートが全く I/O 
アドレスや IRQ を持たず、事実上使えない状態になる可能性があります。こ
の場合でもまだ、<tt/pnpdump/ を使ってそのシリアルポートを見つけること
が可能なはずです。

<!--
For Plug-and-Play (PnP) on the ISA bus one may try the <tt/pnpdump/
program (part of <tt/isapnptools/).  If you use the &#045;&#045;dumpregs option
then it should tell you the actual IO address and IRQ set in the port.
The address it "trys" is not the device's IO address, but a special
-->

<!-- from Serial-HOWTO -->

ISA バスでのプラグ&amp;プレイの場合、<tt/pnpdump/ (<tt/isapnptools/ に
含まれています)を試すとよいでしょう。<tt/&#045;&#045;dumpregs/ オプショ
ンを使うと、ポートに設定されている実際の I/O アドレスと IRQ が表示され
るはずです。 <tt/pnpdump/ が「試した」アドレスはデバイスの I/O アドレ
スではなく、特殊なものです。

<!--
For PnP ports checking on how it's configured under DOS/Windows may not
be of much help.  Windows stores its configuration info in its
Registry which is not used by Linux.  It may supply the BIOS's
non-volatile memory with some info but it may not be kept in sync with
the current Window configuration in the Registry ??  If you let a PnP
BIOS automatically do the configuring when you start Linux (and have
told the BIOS that you don't have a PnP operating system when running
Linux) then Linux should use whatever configuration is in the BIOS's
non-volatile memory.
-->

<!-- from Serial-HOWTO -->
PnP ポートを調べるに当たっては、DOS/Windows での設定内容はあまり役に立
ちません。Windows は設定情報をレジストリに保存しますが、これは Linux 
では使われません。これは何らかの情報付きで BIOS の不揮発性メモリに設定
されることもありますが、レジストリ内にある Windows の現在の設定とは同
期が取れていないことがあります。Linux の起動時に PnP BIOS に自動設定を
させているのならば(そして Linux を起動する際には、PnP オペレーティング
システムでないと BIOS を設定しているならば)、Linux は BIOS の不揮発性
メモリ内の設定を使うはずです。

<!--
<sect1>Choosing Serial IRQs

<p> If you have a true Plug-and-Play set up where either the OS or a
PnP BIOS configures all your devices, then you don't choose your IRQs.
PnP determines what it thinks is best and assigns them.  But if you
use the tools in Linux for Plug-and-Play (isapnp and pcitools) then
you have to choose.  If you already know what IRQ you want to use you
could skip this section except that you may want to know that IRQ 0
has a special use (see the following paragraph).
-->

<!-- from Serial-HOWTO -->
<sect1>シリアルの IRQ の選択 

<p> OS か PnP BIOS が全てのデバイスを設定するという本物のプラグ&amp;プ
レイ設定を行っているならば、IRQ を選ぶことはありません。PnP は最も良い
と思われる割り当てを選んでこれを設定します。しかし、Linux でプラグ
&amp;プレイ用のツール (isapnp と pcitools) を使っている場合には、IRQ 
の選択を行う必要があります。使いたい IRQ を既に知っている場合には、こ
の節を飛ばしてもかまいませんが、IRQ 0 の使い方が特殊であることだけは知っ
ておいてください(次の段落を読んでください)。

<!--
<sect2> IRQ 0 is not an IRQ
<p> While IRQ 0 is actually the timer (in hardware) it has a special
meaning for setting a serial port with setserial.  It tells the driver
that there is no interrupt for the port and the driver then will use
polling methods.  This is quite inefficient but can be tried if there
is an interrupt conflict or mis-set interrupt.  The advantage of
assigning this is that you don't need to know what interrupt is set in
the hardware.  It should be used only as a temporary expedient until
you are able to find a real interrupt to use.
-->

<!-- from Serial-HOWTO -->
<sect2> IRQ 0 は IRQ ではない

<p> IRQ 0 は実際には(ハードウェアでは)タイマですが、setserial を使った
シリアルポートの設定においては特殊な意味を持っています。この指定は、そ
のポートには割込みがないことをドライバに伝え、ドライバはポーリングを使っ
た動作を行います。ポーリングは非常に効率が悪いのですが、割込みが衝突し
た場合や、割込みの設定ミスがあった場合には試すとよいでしょう。 IRQ 0 
を設定する利点は、ハードウェアに設定されている割込み番号を知る必要がな
い点です。IRQ 0 は、実際に使える割込みが見つかるまでの急場をしのぐため
だけに使うべきです。

<!--
<sect2> Interrupt sharing and Kernels 2.2+ <label id="int_share-2.2">
<p> The general rule is that every device should use a unique IRQ and
not share them.  But there are situations where sharing is permitted
such as with most multi-port boards.  Even when it is permitted, it
may not be as efficient since every time a shared interrupt is given a
check must be made to determine where it came from.  Thus if it's
feasible, it's nice to allocate every device it's own interrupt.
-->

<!-- from Serial-HOWTO -->
<sect2> 割込みの共有とバージョン 2.2 以降のカーネル
<label id="int_share-2.2">

<p> 一般的な規則では、全てのデバイスが固有の IRQ を持ち、IRQ の共有を
行わないことになっています。しかし大抵のマルチポートを使う場合のように、 
IRQ の共有が許されている場合もあります。ただし、共有が許されているとし
ても、効率は良くないかもしれません。というのも、共有されている割込みが
与えられる度に、どこで割込みが発行されたのかを調べなければならないから
です。したがって、可能であれば、全てのデバイスに固有の割込みを与えると
いいでしょう。

<!--
Prior to kernel 2.2, serial IRQs could be shared with each other only
for most multiport boards.  Starting with kernel 2.2 serial IRQs may
be sometimes shared between all serial ports.  In order for sharing to
work in 2.2 the kernel must have been compiled with
CONFIG_SERIAL_SHARE_IRQ, and the serial port hardware must support
sharing (so that if two serial cards put different voltages on the
same interrupt wire, only the voltage that means "this is an
interrupt" will prevail).  Thus even if you have 2.2, it may be best
to avoid sharing.
-->

<!-- from Serial-HOWTO -->

バージョン 2.2 より前のカーネルでは、IRQ はほとんどのマルチポートボー
ド同士だけでしか共有できませんでした。バージョン 2.2 のカーネル以降は、
場合によっては全てのシリアルポートで IRQ を共有できます。バージョン 
2.2 のカーネルで共有を動作させるには、<tt/CONFIG_SERIAL_SHARE_IRQ/ を
設定してカーネルをコンパイルしなければなりません。また、シリアルポート
のハードウェアも共有に対応していなければなりません(したがって、2 つの
シリアルボードが 1 つの割込み線に異なる電圧を流しても、「これが割込み
です」という意味の電圧しか受け取られません)。よってバージョン 2.2 のカー
ネルであっても、割込みの共有はしない方が良いかもしれません。

<!--
<sect2> What IRQs to choose?

<p> The serial hardware often has only a limited number of IRQs it can
be set at.  Also you don't want IRQ conflicts.  So there may not be
much of a choice.  Your PC may normally come with <tt/ttyS0/ and
<tt/ttyS2/ at IRQ 4, and <tt/ttyS1/ and <tt/ttyS3/ at IRQ 3.  Looking
at <tt>/proc/interrupts</tt> will show which IRQs are being used by
programs currently running.  You likely don't want to use one of
these.  Before IRQ 5 was used for sound cards, it was often used for a
serial port.
-->

<!-- from Serial-HOWTO -->
<sect2> どの IRQ を選ぶか?

<p> シリアルポートのハードウェアには、限られた IRQ しか設定できないこ
とがよくあります。しかし IRQ が衝突するも嫌でしょう。したがって、選択
の余地はあまりありません。PC では普通、<tt/ttyS0/ と <tt/ttyS2/ が 
IRQ4 に、<tt/ttyS1/ と <tt/ttyS3/ が IRQ3 にあります。 
<tt>/proc/interrupts</tt> を見れば、現在動作中のプログラムがどの IRQ 
を使っているのかがわかります。このような IRQ は使わない方がいいでしょ
う。昔は IRQ 5 はサウンドカードが使っていましたが、よくシリアルポート
でも使われていました。

<!--
Here is how Greg (original author of Serial-HOWTO) set his up in
/etc/rc.d/rc.serial.  rc.serial is a file (shell script) which runs at
start-up (it may have a different name of location).  For versions of
"setserial" after 2.15 it's not always done this way anymore but this
example does show the choice of IRQs.
-->

<!-- from Serial-HOWTO -->

以下に、Greg (Serial-HOWTO の元々の著者)がどのように 
<tt>/etc/rc.d/rc.serial</tt> を設定しているかを示します。
<tt/rc.serial/ は起動時に実行されるファイル(シェルスクリプト)です(場所
や名前は違うことがあります)。バージョン 2.15 以降の ``setserial'' では、
必ずしもこのように設定が行われるわけではありませんが、これは IRQ の選
択の例にもなります。

<!--
<tscreen><verb>
/sbin/setserial /dev/ttyS0 irq 3	# my serial mouse
/sbin/setserial /dev/ttyS1 irq 4	# my Wyse dumb terminal
/sbin/setserial /dev/ttyS2 irq 5	# my Zoom modem 
/sbin/setserial /dev/ttyS3 irq 9	# my USR modem
</verb></tscreen>
-->

<tscreen><verb>
/sbin/setserial /dev/ttyS0 irq 3	# シリアルマウス        
/sbin/setserial /dev/ttyS1 irq 4	# Wyse 製のダム端末     
/sbin/setserial /dev/ttyS2 irq 5	# Zoom 製のモデム       
/sbin/setserial /dev/ttyS3 irq 9	# US Robotics 製のモデム
</verb></tscreen>

<!--
<p>
Standard IRQ assignments:
<verb>
	IRQ  0    Timer channel 0 (May mean "no interrupt".  See below.)
	IRQ  1    Keyboard
	IRQ  2    Cascade for controller 2
	IRQ  3    Serial port 2
	IRQ  4    Serial port 1
	IRQ  5    Parallel port 2, Sound card
	IRQ  6    Floppy diskette
	IRQ  7    Parallel port 1
	IRQ  8    Real-time clock
	IRQ  9    Redirected to IRQ2
	IRQ 10    not assigned 
	IRQ 11    not assigned
	IRQ 12    not assigned
	IRQ 13    Math coprocessor
	IRQ 14    Hard disk controller 1
	IRQ 15    Hard disk controller 2
</verb>
-->

<!-- from Serial-HOWTO -->
<p>
標準の IRQ 割り当てを示します:
<verb>
        IRQ  0    タイマチャネル 0 (「割込み無し」を意味することもあります。詳しくは後述します)
        IRQ  1    キーボード
        IRQ  2    コントローラ 2 へのカスケード
        IRQ  3    シリアルポート 2
        IRQ  4    シリアルポート 1
        IRQ  5    パラレルポート 2, サウンドカード
        IRQ  6    フロッピーディスク
        IRQ  7    パラレルポート 1
        IRQ  8    リアルタイムクロック
        IRQ  9    IRQ2 にリダイレクト
        IRQ 10    割り当て無し
        IRQ 11    割り当て無し
        IRQ 12    割り当て無し
        IRQ 13    数値コプロセッサ
        IRQ 14    ハードディスクコントローラ 1
        IRQ 15    ハードディスクコントローラ 2
</verb>

<!--
<p>

There is really no Right Thing to do when choosing interrupts.  Just
make sure it isn't being used by the motherboard, or any other boards.
2, 3, 4, 5, 7, 10, 11, 12 or 15 are possible choices.  Note that IRQ 2
is the same as IRQ 9.  You can call it either 2 or 9, the serial
driver is very understanding.  If you have a very old serial board it
may not be able to use IRQs 8 and above. 
-->

<!-- from Serial-HOWTO -->
割込みを選ぶための決定的な方法はありません。割込みをマザーボードや、
他のボードが使っていないことを確かめるしかありません。2, 3, 4, 5, 7,
10, 11, 12, 15 を選ぶことができます。IRQ 2 と 9 は同じであることに注意
してください。IRQ 2 と 9 のどちらを使っても、シリアルドライバはこれを
うまく認識します。非常に古いシリアルボードをお使いの場合には、8 以上の 
IRQ は使えないかもしれません。

<!--
Make sure you don't use IRQs 1, 6, 8, 13 or 14!  These are used by
your motherboard.  You will make her very unhappy by taking her IRQs.
When you are done, double-check <tt>/proc/interrupts</tt> when
programs that use interrupts are being run and make sure there are no
conflicts.
-->

<!-- from Serial-HOWTO -->
IRQ 1, 6, 8, 13, 14 は使わないでください! これらの IRQ はマザーボード
が使うからです。マザーボードが使っている IRQ を取り上げると、とても悲
しいことになります。設定が終わったら、割込みを使うプログラムを実行す
るときに <tt>/proc/interrupts</tt> を再確認し、IRQ の衝突が起こっていな
いことを確かめてください。

<!--
<sect1> Choosing Addresses &#045;&#045;Video card conflict with ttyS3

<p> The IO address of the IBM 8514 video board (and others like it) is
allegedly 0x?2e8 where ? is 2, 4, 8, or 9.  This may conflict (but
shouldn't it the serial port is well designed) with the IO address of
<tt/ttyS3/ at 0x02e8 if the serial port ignores the leading 0 hex
digit (many do).  That is bad news if you try to use <tt/ttyS3/ at
this IO address.
-->

<!-- from Serial-HOWTO -->
<sect1> アドレスの選択 &#045;&#045;ttyS3 と衝突するビデオボード

<p> IBM 8514 ビデオボード(とその類似品)の I/O アドレスは、聞くところで
は <tt/0x?2e8/ です(? は 2, 4, 8, 9 のいずれか)。16 進値の先頭の 0 で
ある桁をシリアルポートが無視する場合には(多くの場合はそうです)、これは 
<tt/0x02e8/ にある <tt/ttyS3/ と衝突するかもしれません(しかし、シリア
ルポートがうまく設計されていれば衝突しないはずです)。このアドレスで 
<tt/ttyS3/ を使おうとしている場合には、これは悪い知らせです。

<!--
In most cases you should use the default addresses if feasible.
Addresses shown represent the first address of an 8-byte range.  For
example 3f8 is really the range 3f8-3ff.  Each serial device (as well
as other types of devices that use IO addresses) needs its own unique
address range.  There should be no overlaps (conflicts).  Here are the
default addresses for the serial ports: 
-->

<!-- from Serial-HOWTO -->

ほとんどの場合は、可能であればデフォルトのアドレスを使うべきです。ここ
で言うアドレスは、8 バイトの範囲の最初のアドレスを表しています。例えば、 
<tt/3f8/ は実際には <tt/3f8-3ff/ の範囲です。それぞれのシリアルデバイ
スは(I/O アドレスを必要とする他のタイプのデバイスと同じく)固有のアドレ
ス範囲を必要とします。これは重なっては(衝突しては)いけません。シリアル
ポートのデフォルトのアドレスを以下に示します:

<!--
<tscreen><verb>
ttyS0 address 0x3f8
ttyS1 address 0x2f8
ttyS2 address 0x3e8
ttyS3 address 0x2e8
</verb></tscreen>
-->

<!-- from Serial-HOWTO -->
<tscreen><verb>
ttyS0 のアドレス 0x3f8
ttyS1 のアドレス 0x2f8
ttyS2 のアドレス 0x3e8
ttyS3 のアドレス 0x2e8
</verb></tscreen>

<!--
<sect1> Set IO Address & IRQ in the hardware (mostly for PnP)
 <label id="io-irq_methods">

<p> After it's set in the hardware don't forget to insure that it also
gets set in the driver by using <tt/setserial/.  For non-PnP serial
ports they are either set in hardware by jumpers or by running a DOS
program ("jumperless") to set them (it may disable PnP).  The rest of
this subsection is only for PnP serial ports.  Here's a list of the
possible methods of configuring PnP serial ports:
-->

<!-- from Serial-HOWTO -->
<sect1> I/O と IRQ のハードウェアへの設定 (ほぼ PnP 向け) 
 <label id="io-irq_methods">

<p> これをハードウェアに設定した後には、<tt/setserial/ を使ってドライ
バも設定することを忘れないでください。非 PnP のシリアルポートの場合に
は、ポートのハードウェアの設定はジャンパか、(「ジャンパレス」の場合に
は) 設定を行うための DOS プログラムの実行によって行います(このプログラ
ムで PnP が無効になるかもしれません)。PnP シリアルポートを設定する際に
考えられる方法のリストを以下に示します:

<!--
<itemize>
<item> Using a PnP BIOS CMOS setup menu
 (usually only for external 
 modems
 on ttyS0 (Com1) and ttyS1 (Com2))
<item> Letting a PnP BIOS automatically configure a PnP serial port
 See <ref id="bios_conf" name="Using a PnP BIOS to I0-IRQ Configure">
<item> Doing nothing if you have both a PnP serial port and a PnP
 Linux operating system (see Plug-and-Play-HOWTO).
<item> Using <tt/isapnp/ for a PnP serial port non-PCI)
<item> Using pciutils (pcitools) for the PCI bus
</itemize>
-->

<!-- from Serial-HOWTO -->
<itemize>
<item> PnP BIOS の CMOS 設定メニューを使う(普通は <tt/ttyS0/ (Com1) と 
<tt/ttyS1/ (Com2) にある外付けデバイスだけに使います)
<item> PnP BIOS に PnP シリアルポートを自動的に設定させる。<ref
id="bios_conf" name="PnP BIOS を使った I/O アドレスと IRQ の設定"> を
参照してください
<item> PnP シリアルポートと PnP 対応の Linux を使っているならば何もし
なくてかまいません(Plug-and-Play-HOWTO を参照)
<item> PCI でない PnP シリアルポートの場合には <tt/isapnp/ を用いる
<item> PCI バスの場合には pciutils (pcitools) を用いる
</itemize>

<!--
The IO address and IRQ must be set (by PnP) in their registers each
time the system is powered on since PnP hardware doesn't remember how
it was set when the power is shut off.  A simple way to do this is to
let a PnP BIOS know that you don't have a PnP OS and the BIOS will
automatically do this each time you start.  This might cause problems
in Windows (which is a PnP OS) if you start Windows with the BIOS
thinking that Windows is not a PnP OS.  See Plug-and-Play-HOWTO.
-->

<!-- from Serial-HOWTO -->
I/O アドレスと IRQ は電源を入れる度に(PnP を使って)シリアルポートのレ
ジスタに設定しなければなりません。というのも、PnP ハードウェアは電源が
切られたときの設定内容を覚えていないからです。これを行う簡単な方法は、 
PnP OS を使っておらず、起動する度に BIOS が自動的に設定を行うことを 
PnP BIOS に教えてやることです。(PnP OS である)Windows が PnP OS でない
と BIOS に設定して Windows を起動すると、問題が起こることがあります。
詳しくは Plug-and-Play-HOWTO をご覧ください。

&lsqb;訳注 : JF プロジェクトによる日本語訳
<url url="http://www.linux.or.jp/JF/JFdocs/Plug-and-Play-HOWTO.html"
name="Plug-and-Play-HOWTO"> &rsqb;

<!--
Plug-and-Play was designed to automate this io-irq configuring,
but for Linux at present, it has made life more complicated.  The
standard kernels for Linux don't support plug-and-play very well.  If
you use a patch to the Linux kernel to covert it to a plug-and-play
operating system, then all of the above should be handled
automatically by the OS.  But when you want to use this to automate
configuring devices other that the serial port, you may find that
you'll still have to configure the drivers manually since many Linux
drivers are not written to support a Linux PnP OS.  If you use
<tt/isapnptools/ or the BIOS for configuring plug-and-play this will
only put the two values into the registers of the serial port section
of the modem card and you will likely still need to set up setserial.
None of this is easy or very well documented as of early 1999.  See
Plug-and-Play-HOWTO and the isapnptools FAQ.
-->

<!-- from Serial-HOWTO -->

プラグ&amp;プレイは IO と IRQ の設定を自動化するために設計されました。
しかし現時点の Linux では、話をややこしくしているだけです。標準の 
Linux カーネルはプラグ&amp;プレイをあまりうまくサポートしていません。 
Linux カーネルをプラグ&amp;プレイ OS にするパッチを使っているならば、
上記のことは全て OS が自動的に処理できるはずです。しかし、これを使って
シリアルポート以外のデバイスの設定を自動化しようとしても、手動でドライ
バの設定をしなければなりません。というのも、Linux のドライバは PnP 対
応の Linux 向けに書かれていないからです。<tt/isapnptools/ や BIOS を使っ
てプラグ&amp;プレイの設定を行っているならば、これは 2 つの値をモデムボー
ドのシリアルポート部分のレジスタに設定するだけであり、setserial の設定
はユーザが行う必要があります。1999 年初めの時点では、これらの設定は簡
単でもありませんし、詳しい文書にもされてもいません。 
Plug-and-Play-HOWTO と isapnptools FAQ をご覧ください。

&lsqb;訳注 : JF プロジェクトによる日本語訳 <url
url="http://www.linux.or.jp/JF/JFdocs/Plug-and-Play-HOWTO.html"
name="Plug-and-Play-HOWTO"> &rsqb;

<!--
<sect2> Using a PnP BIOS to I0-IRQ Configure <label id="bios_conf">
<p> While the explanation of how to use a PnP OS or isapnp for io-irq
configuring should come with such software, this is not the case if
you want to let a PnP BIOS do such configuring.  Not all PnP BIOS can
do this.  The BIOS usually has a CMOS menu for setting up the first
two serial ports.  This menu may be hard to find and for an "Award"
BIOS it was found under "chipset features setup"  There is often
little to choose from.  Unless otherwise indicated in a menu, these
first two ports normally get set at the standard IO addresses and
IRQs.  See <ref id="dev_nos" name="Serial Port Device Names &
Numbers">
-->

<!-- from Serial-HOWTO -->
<sect2> PnP BIOS を使った I/O アドレスと IRQ の設定 <label id="bios_conf">

<p> PnP OS や isapnp を使って IO と IRQ の設定を行う方法の説明がそれら
のソフトウェアに付いてくるにもかかわらず、PnP BIOS にそういった設定を
させようと思っていたらそれは間違いです。全ての PnP BIOS がこれを行える
わけではありません。BIOS には普通、最初の 2 つのシリアルポートを設定す
るための CMOS メニューがあります。このメニューは見つけにくいかもしれま
せんが、Award 製の BIOS ならば ``<tt/chipset features setup/'' の下に
あります。多くの場合、ここではほとんど何も選べません。他のものがメニュー
になければ、最初の 2 つのシリアルポートには標準の I/O アドレスと IRQ 
が設定されます。<ref id="dev_nos" name="シリアルポートデバイスの名前と
番号"> をご覧ください。

<!--
Whether you like it or not, when you start up a PC a PnP BIOS starts
to do PnP (io-irq) configuring of hardware devices.  It may do the job
partially and turn the rest over to a PnP OS (which you probably don't
have) or if thinks you don't have a PnP OS it may fully configure all
the PnP devices but not configure the device drivers.  This is what
you want but it's not always easy to figure out exactly what the PnP
BIOS has done.
-->

<!-- from Serial-HOWTO -->
好むと好まざるとに関わらず、PC を起動すると PnP BIOS が PnP によるハー
ドウェアデバイスの(I/O と IRQ の)設定を始めます。PnP BIOS が行う処理が
不十分で、残りの設定が(読者の皆さんがおそらく持っていない) PnP OS に残
されるかもしれません。あるいは PnP OS を持っていないと設定されている場
合には、全ての PnP デバイスを完全に設定するかもしれませんが、デバイス
ドライバの設定は行いません。これは読者の皆さんが望む動作ですが、PnP
BIOS が行った設定を正確に調べることは必ずしも容易ではありません。

<!--
If you tell the BIOS that you don't have a PnP OS, then the PnP BIOS
should do the configuring of all PnP serial ports &#045;&#045;not just the first
two.  An indirect way to control what the BIOS does (if you have
Windows 9x on the same PC) is to "force" a configuration under
Windows.  See Plug-and-Play-HOWTO and search for "forced".  It's
easier to use the CMOS BIOS menu which may override what you 
"forced" under Windows.  There could be a BIOS option that can set or
disable this "override" capability.
-->

<!-- from Serial-HOWTO -->

PnP OS を持っていないことを BIOS に設定してあれば、PnP BIOS は最初の 2 
つだけでなく全ての PnP シリアルポートの設定を行うはずです。 BIOS の動
作を間接的に制御する方法は(もし MS Windows9x を同じ PC で使っていれば)、
Windows における設定を「強制」することです。 Plug-and-Play-HOWTO を
「forced」で検索してください。Windows 上で「強制」した設定を CMOS BIOS 
メニューを使って上書きするのは簡単です。この「上書き」機能の設定・解除
が行える BIOS オプションがあると思います。

&lsqb;訳注 : JF プロジェクトによる日本語訳
<url url="http://www.linux.or.jp/JF/JFdocs/Plug-and-Play-HOWTO.html"
name="Plug-and-Play-HOWTO"> &rsqb;

<!--
If you add a new PnP device, the BIOS should change its PnP
configuration to accommodate it.  It could even change the io-irq of
existing devices if required to avoid any conflicts.  For this
purpose, it keeps a list of non-PnP devices provided that you have
told the BIOS how these non-PnP devices are io-irq configured.  One
way to tell the BIOS this is by running a program called ICU under
DOS/Windows.
-->

<!-- from Serial-HOWTO -->
新しい PnP デバイスが追加されると、BIOS は PnP 設定を変更して調整を行
わなければなりません。衝突を避ける必要が生じれば、既存のデバイスの I/O 
と IRQ の設定が変わることもあります。この目的のため、非 PnP デバイスの 
I/O と IRQ をどのように設定しているのかを BIOS に教えてあれば、BIOS は
非 PnP デバイスのリストを保存しています。これを BIOS に教える方法の一
つは、DOS/Windows 上で ICU と呼ばれるプログラムを実行することです。

<!--
But how do you find out what the BIOS has done so that you set up the
device drivers with this info?  The BIOS itself may provide some info,
either in it's setup menus of via messages on the screen when you turn
on your computer.  See <ref id="io-irq_in_hdw" name="What is set in my
serial port hardware?">
-->

<!-- from Serial-HOWTO -->
しかし、この情報でデバイスドライバを設定するために、BIOS が行った設定
を調べるにはどうすればよいでしょうか? BIOS 自身もある程度の情報を出し
ます。これは設定メニューや、コンピュータの起動時に画面に現われるメッセー
ジを通じて得られます。<ref id="io-irq_in_hdw" name="シリアルポートのハー
ドウェアの設定は?"> をご覧ください。

<!--
<sect1> Giving the IRQ and IO Address to Setserial
<p> Once you've set the IRQ and IO address in the hardware (or arranged
for it to be done by PnP) you also need to insure that the "setserial"
command is run each time you start Linux.  See the subsection <ref
id="sets_boot_time" name="Boot-time Configuration"> 
-->
<!-- configure.H end-->

<sect1> IRQ と I/O アドレスを setserial に与える

<p> ハードウェアの IRQ と I/O アドレスをいったん設定すると(あるいは 
PnP で割り当てられるようにすると)、Linux を起動する度に ``setserial'' 
コマンドを実行する必要があります。<ref id="sets_boot_time" name="起動
時の設定"> をご覧ください。

<!--
<sect1> Other Configuring

<sect2> Configuring Hardware Flow Control (RTS/CTS) 
<p> See <ref id="flow_control" name="Flow Control"> for an explanation of
it.  You should always use hardware flow control if possible.  Your
communication program or "<tt/getty/" should have an option for
setting it (and if you're in luck it might be enabled by default).  It
needs to be set both inside your modem (by an init string or default)
and in the device driver.  Your communication program should set both
of these (if you configure it right).
-->

<!-- from Serial-HOWTO -->
<sect1> その他の設定

<sect2> ハードウェアフロー制御 (RTS/CTS) の設定

<p> 解説が <ref id="flow_control" name="フロー制御"> にあるので、そち
らもご覧ください。可能ならば常にハードウェアフロー制御を使う方がいいで
しょう。通信プログラムあるいは ``<tt/getty/'' にはフロー制御を設定する
オプションがあります(運が良ければ、デフォルトでハードウェアフロー制御
が有効になっているでしょう)。フロー制御は(初期化文字列あるいはデフォル
ト設定により)モデムとシリアルドライバの両方に設定しなければなりません。
(設定が正しければ)通信プログラムは両方の設定を行うはずです。

<!--
If none of the above will fully enable hardware flow control.  Then
you must do it yourself.  For the modem, make sure that it's either
done by the init string or is on by default.  If you need to tell the
device driver to do it is best done on startup by putting a file that
runs at boot-time.  See the subsection <ref id="sets_boot_time"
name="Boot-time Configuration"> You need to add the following to such
a file for each serial port (example is ttyS2) you want to enable
hardware flow control on:
-->

上記の設定によりハードウェアフロー制御を完全に有効にできない場合、自分
でその設定を行わなければいけません。モデムでは初期化文字列あるいはデフォ
ルト設定により、ハードウェアフロー制御設定を行うことを確認してください。
デバイスドライバに設定を伝える必要がある場合、起動時に実行するファイル
に書きこむのが良いでしょう。<ref id="sets_boot_time" name="起動時の設
定"> をご覧ください。ハードウェアフロー制御を行いたい(例えば ttyS2 な
どの)シリアルポートそれぞれについて、こういったファイルに以下の記述を
追加する必要があります。

<tscreen><verb> 
stty crtscts < /dev/ttyS2 
</verb></tscreen> 

<!--
If you want to see if flow control is enabled do the following:  In
minicom (or the like) type AT&amp;V to see how the modem is configured and
look for &amp;K3 which means hardware flow control.  Then see if the
device driver knows about it by typing: stty -a < /dev/ttyS2  Look for
"crtscts" (without a disabling minus sign).
-->

フロー制御が有効になっているかどうか見たいなら、以下のようにしてくださ
い: minicom (あるいは類似の)ソフトウェアで、モデムの設定を見る際には 
<tt/AT&amp;V/ をタイプし、ハードウェアフロー制御を意味する 
<tt/&amp;K3/ の出力を見てください。デバイスドライバがフロー制御の設定
を知っているかどうか、<tt>stty -a < /dev/ttyS2</tt> をタイプし、(ハー
ドウェアフロー制御無効を示すマイナス符号がない) ``<tt/crtscts/'' を調
べてください。

<!--
<sect> Modem Configuration (excluding serial port) <label id="modem_conf">
-->
<sect> (シリアルポートを除く)モデムの設定 <label id="modem_conf">

<!--
<sect1> Finding Your Modem
<p> Before spending a lot of time configuring your modem, you need to
make sure it can be found and that AT commands and the like can be
sent to it.  So I suggest you first give it a very simple
configuration using the communication program you will be using on the
port and see it it works.  If so, then it's been found.  If not then
see <ref id="cant_find_modem" name="My Modem is Physically There but
Can't be Found">.  A winmodem may be hard to find and will not work
under Linux.
-->

<sect1> モデムの検出

<p> モデムの設定に多くの時間を費やす前に、モデムを検出できているか、そ
して AT コマンドなどをモデムへ送出できるかどうか確認する必要があります。
従って、まず最初に使用予定の通信プログラムを非常に単純な設定で動かして、
正常に動作するか確かめることを勧めます。動作しているなら、モデムを検出
できています。動作しなければ、<ref id="cant_find_modem" name="モデムが
物理的には存在するのに検出できません"> をご覧ください。ソフトウェアモ
デムは検出が難しく、Linux で動作しないかもしれません。

<!--
<sect1> AT Commands
<p> While the serial port on which a modem resides requires
configuring, so does the modem itself.  The modem is configured by
sending AT commands (or the like) to it on the same serial line that
is used to send data.
-->

<sect1> AT コマンド

<p> モデムを接続するシリアルポートの設定が必要であると同時に、モデム自
体にも設定が必要です。データを送信するのと同じシリアル回線へ AT コマン
ド(あるいはそれに類似したコマンド)を送って、モデムを設定します。

<!--
Most modems use an AT command set.  These are cryptic and short ASCII
commands where all command strings are prefaced by the letters AT.
For example: ATZ&amp;K3  There are two commands here Z and &amp;K3.
Unfortunately there are many different variations of the AT command
set so that what works for one modem may or may not work for another
modem.  Thus there is no guarantee that the AT commands given in this
section will work on your modem.  Another point is that to get the
modem to act on the AT command string, a return character must be sent
at the end of the string.  
-->

多くのモデムは AT コマンドセットを使用します。すべてのコマンド文字列は 
<tt/AT/ で始まり、暗号のような短い ASCII 文字のコマンドです。例:
<tt/ATZ&amp;K3/ これには <tt/Z/ と <tt/&amp;K3/ の 2 つのコマンドが含
まれています。不幸なことに、AT コマンドセットには多くの異なる種類があ
ります。そのため、あるモデムで動作するコマンドが、他のモデムでは動作し
ないことがあります。従って、本章で取り挙げる AT コマンドが、あなたのモ
デムで動作する保証はありません。もうひとつ気を付けることは、モデムが 
AT コマンドに従う動作をするためには、コマンド文字列の最後に改行文字を
送らなければいけないことです。

<!--
Such command strings are either automatically sent to the modem by
communication programs or are sent directly by you.  Most
communication programs provide a screen where you can type commands
directly to your modem.  This is good for setting up the modem as you
can have it remember how it was set even after its powered off.
-->

このようなコマンド文字列は通信プログラムが自動的に送るか、あるいはあな
たが直接入力します。多くの通信プログラムはモデムへ直接コマンドを送れる
画面を提供しています。電源を切ったあとでもモデムの設定を記憶しているの
で、この画面でモデムを設定することは良い方法です。

<!--
If you have a manual for your modem you can likely look up the AT
command set in it.  Otherwise, you may try to find it on the Internet.
One may use a search engine and include some actual commands in the
search terms to avoid finding sites that just talk about such commands
but fail to list them.  You might also try a few of the sites listed
in the subsection <ref id="web_sites" name="Web Sites">
-->

モデムのマニュアルを持っているのなら、恐らくそのモデムの AT コマンドセッ
トを調べることができます。その他に、インターネット上でコマンドセットを
探してみるのも良いでしょう。サーチエンジンを使い、コマンドに関して記述
しているけれどもコマンドリストを載せていないサイトの発見を避けるために、
実際のコマンドを検索語句に含めて検索することも良いかもしれません。<ref
id="web_sites" name="Web サイト"> に挙げるいくつかのサイトを見てみる
のも良いでしょう。

<!--
<sect1> Init Strings: Saving and Recalling
<p> The examples given in this subsection are from the Hayes AT modem
command set.  All command strings must be prefaced by the two letters
AT (for example: AT&amp;C1&amp;D3 ).  When a modem is powered on, it
automatically configures itself with one of the configurations it has
stored in its non-volatile memory.  If this configuration is
satisfactory there is nothing further to do.  
-->

<sect1> 初期化文字列: 保存および再呼出し

<p> ここでの例は Hayes AT モデムコマンドセットを取り上げます。すべての
コマンド文字列は AT の 2 文字で始めなければなりません(例えば、
<tt/AT&amp;C1&amp;D3/)。モデムの電源を入れると、不揮発性メモリ中に格納
済の設定を用いて、モデム自身が自動的に設定を行います。この設定で充分な
ら、もうすべきことはありません。

<!--
If it's not satisfactory, then one may either alter the stored
configuration or configure the modem each time you use it by sending
it a string of commands known as an "init string" (= initialization
string).  Normally a a communication program does this.  What it sends
will depend on how you configured the communications program or what
script you wrote for it if you use Kermit.  You can usually edit the
init string your communication program uses and change it to whatever
you want.  Sometimes the communications program will let you select
the model of your modem and then it will use an init string that it
thinks is best for that modem.
-->

充分でないのなら、格納済みの設定を変更するか、モデムを使うたびに「初期
化文字列」と呼ぶコマンド文字列を送って設定する人もいるでしょう。通常、
通信プログラムがこれを行います。どのような初期化文字列を送るのかは、通
信プログラムの設定、Kermit を使うならスクリプトの記述に依存します。た
いてい通信プログラムが使う初期化文字列は編集でき、どんな文字列にでも変
更できます。ときには、通信プログラムはユーザにモデムの型名を選択させ、
プログラムが最適だと考える初期化文字列を使用することもあります。

<!--
The configuration of the modem uses when it's first powered on could
be expressed by an init string.  You might think of this as the
default "string" (called a profile).  If your communications program
sends the modem another string (the init string), then this string
will modify the default configuration.  For example, if the init
string only contains two commands, then only those two items will be
changed.  However, some commands will recall a stored profile from
inside the modem so a single such command in the init string can
thereby change everything in the configuration.
-->

最初にモデムの電源を入れた際に使用する設定は、初期化文字列で表現できま
す。この文字列を(プロファイルと呼ぶ)デフォルト「文字列」だと考えても構
いません。通信プログラムがモデムへ(初期化文字列を含む)他の文字列を送る
と、この文字列はデフォルトの設定を変更します。例えば、初期化文字列が 2 
つのコマンドを含んでいたなら、この 2 つの項目だけが変更されます。しか
し、いくつかのコマンドはモデム内部の保存済みのプロファイルを呼び出し、
ひとつのコマンドで設定のすべてを変更できます。

<!--
Modern modems have a few different stored profiles to choose from that
are stored in the modem's non-volatile memory (it's still there when
you turn it off).  In my modem there are two factory profiles (0 and
1, neither of which you can change) and two user defined profiles (0
and 1) that the user may set and store.  Your modem may have more.
Which one of these user-defined profiles is used at power-up depends
on another item stored in the profile.  If the command &amp;Y0 is
given then in the future profile 0 will be used at power-on.  If it's
a 1 instead of a 0 then profile 1 will be used at power-on.
-->

最近のモデムには、(電源を切っても消えない)不揮発性メモリ中に保存する、
いくつかの異なったプロファイルがあります。著者のモデムには(変更できな
い 0 と 1 )ふたつの工場設定プロファイルがあります。そして、(0 と 1 の) 
ふたつのユーザ定義プロファイルもあって、ユーザが設定しそれを保存できま
す。あなたのモデムはより多くのプロファイルを持っているかもしれません。
電源を入れた際にユーザ定義プロファイルのうちどれを使用するかは、プロファ
イルに保存済みのもうひとつの項目に依存します。<tt/&amp;Y0/ コマンドを
使用すると、次回の電源投入時からプロファイル 0 を使用します。ここで 0 
ではなく 1 を入れると、電源を入れたときにプロファイル 1 を使用します。

<!--
There are also commands to recall (use it now) any of the 4 stored
profiles.  One may put such a command in an init string.  Of course if
it recalls the same profile as was automatically loaded at power-up,
nothing is changed unless the active profile has been modified since
power-up.  Since it could have been modified It's a good idea to use
some kind of an init string even if it does nothing more than
recalling a stored profile.
-->

4 つの格納済みプロファイルのいずれかを呼び出す(プロファイルを使用する) 
コマンドもあります。こういったコマンドを初期化文字列の中に入れる人もい
るでしょう。もちろん、電源投入時に自動的に読みこむプロファイルと同じ設
定を初期化文字列が再び呼び出したとしても、最初から有効になるプロファイ
ルが変わらない限り、設定は何も変わりません。たとえプロファイルを再び呼
び出すだけでも、設定を変更したあと、数種の初期化文字列を使うことは良い
考えです。

<!--
Recalling a saved profile (use 1 instead of 0 for profile 1):<newline>
Z0 recalls user-defined profile 0 and resets (hangs up, etc.)<newline>
&amp;F0 recalls factory profile 0
-->

保存済みのプロファイルの再呼出し (0 ではなく 1 を指定するとプロファイ
ル 1 を使用する):

<descrip>
<tag><tt/Z0/</tag>
 ユーザ定義プロファイル 0 を呼び出しリセットする(電話を切るなど)
<tag><tt/&amp;F0/</tag>
 工場出荷時プロファイル0を呼出す
</descrip>

<!--
Once you have sent commands to the modem to configure it the way you
want (including recalling a factory profile and modifying it a little)
you may save this as a user-defined profile:<newline>
&amp;W0 saves the current configuration to user-profile 0 
-->

モデムへコマンドを送って設定したら、(工場出荷時のプロファイルを呼び出
して若干変更する場合も含んで) その設定をユーザ定義プロファイルへ保存し
たくなるでしょう : <newline> <tt/&amp;W0/ は現在の設定をユーザ定義プロ
ファイル0へ保存します。

<!--
Many people don't bother saving a good configuration in their modem,
but instead, send the modem a longer init string each time the modem
is used.  Another method is to restore the factory default at the
start of the init string and then modify it a little by adding a few
other commands to the end of the init string.  By doing it this way no
one can cause problems by modifying the user-defined profile which is
loaded at power-on.
-->

多くの人はモデムを使う度に長い初期化文字列をモデムに送ることを面倒に思っ
て、代わりにモデムへ設定を保存します。また、初期化文字列で工場出荷時の
デフォルト設定を呼び出し、その後ろにコマンドを追加して設定を少し変更す
ることもできます。この方法により、電源投入時に読み込むユーザ定義プロファ
イルを変更したことで問題を引き起こすことがなくなります。

<!--
You may pick an init string supplied by someone else that they think
is right for your modem.  Some communication programs have a library
of init strings to select from.  The most difficult method (and one
which will teach you the most about modems) is to study the modem
manual and write one yourself.  You could save this configuration
inside the modem so that you don't need an init string.  A third
alternative is to start with an init string someone else wrote, but
modify it to suit your purposes.
-->

あなたのモデムに適切だと思う初期化文字列を人からもらい、それを使用する
のも良いでしょう。いくつかの通信プログラムは、その中から選択できるよう
に初期化文字列のライブラリを持っています。最も難しい方法(そして、あな
たがモデムに関する多くのことを学べること)は、モデムのマニュアルを研究
して初期化文字列を自分で書くことです。また、初期化文字列を不要にするた
め、設定をモデムの中に保存できます。3 つ目の代替手法は、他人が書いた初
期化文字列を目的に合わせて変更し、それを使ってモデムをスタートするこ
とです。

<!--
Now if you look at init strings used by communication programs you may
see symbols which are not valid modem commands.  These symbols are
commands to the communication program itself (such as ~ meaning to
pause briefly) and will not be sent to the modem.
-->

通信プログラムが使用する初期化文字列を見ると、モデムコマンドにはない文
字があるかもしれません。この文字は通信プログラム自身のコマンド (<tt/~/ 
は一時的なポーズの意味)であり、モデムへは送りません。

<!--
<sect1> Other Modem Commands <label id="modem_commands">
<p> Future editions of Modem-HOWTO may contain more AT commands but
the rest of this section is mostly what was in the old Serial-HOWTO.
All strings must start with AT.  Here's a few Hayes AT codes that
should be in the string (if they are not set by using a factory
default or by a saved configuration).
-->

<sect1> その他のモデムコマンド <label id="modem_commands">

<p> Modem-HOWTO の将来のバージョンには、より多くの AT コマンドを載せる
かもしれません。ですが、本節の残りのうち大部分は古い Serial-HOWTO のも
のです。すべてのコマンド文字列は <tt/AT/ で始めなければなりません。コ
マンド文字列中に含めるべき Hayes AT コマンドを挙げます。(含めなければ
工場出荷時のデフォルト設定、あるいは保存済みの設定を使用します。)

<!--
<tscreen><verb>
E1	 command echo ON	
Q0	 result codes are reported		
V1	 verbose ON
S0=0  	 never answer (uugetty does this with the WAITFOR option) 
</verb></tscreen>
-->

<tscreen><verb>
E1	 コマンドエコー ON	
Q0	 リザルトコードレポート有効
V1	 冗長出力 ON
S0=0  	 出力無し (WAITFOR オプションを用いて uugetty が行う) 
</verb></tscreen>

<!--
Here's some more codes concerning modem control lines DCD and DSR:
<tscreen><verb>
&ero;C1	DCD is on after connect only
&ero;S0	DSR is always on
</verb></tscreen>
These affect what your modem does when calls start and end.
What DTR does may also be set up but it's more complicated.
-->

モデム制御線の DCD と DSR に関係するコマンドを挙げます :
<tscreen><verb>
&ero;C1	接続後のみ DCD を on
&ero;S0	DSR 常時 on
</verb></tscreen>
このコマンドはモデムが電話をかけときと切るときの挙動に影響します。DTR 
がどのような動作をするのか設定しても構いませんが、その設定方法は更に複
雑になります。

<!--
<p> If your modem does not support a stored profile, you can set these
through the <tt/INIT/ string in a config file (or the like).  Some
older modems come with DIP switches that affect register settings.  Be
sure these are set correctly, too.
-->

<p> モデムにプロファイルを保存できないのなら、設定ファイルなどへ <tt/ 
初期化/ 文字列を使用して設定できます。古いモデムにはディップスイッチで
レジスタを設定するものもあります。正しく設定するよう、確認してください。

<!--
<p> Greg Hankins has a collection of modem setups for different types
of modems.  If you would like to send him your working configuration,
please do so: <url url="mailto:gregh@cc.gatech.edu"> You can
get these setups at <tt><htmlurl
url="ftp://ftp.cc.gatech.edu/pub/people/gregh/modem-configs"
name="ftp://ftp.cc.gatech.edu/pub/people/gregh/modem-configs"></tt>.
-->

<p> Greg Hankins さんはいろいろなモデムの設定集を持っています。あなた
の設定を彼に送りたいのなら、そうしましょう :
<url url="mailto:gregh@cc.gatech.edu">
<tt><htmlurl
url="ftp://ftp.cc.gatech.edu/pub/people/gregh/modem-configs"
name="ftp://ftp.cc.gatech.edu/pub/people/gregh/modem-configs"></tt> に
て、こういった設定ファイルを手に入れることができます。

<!--
<p> Note: to get his USR Courier V.34 modem to reset correctly when
DTR drops, Greg Hankins had to set <tt/&amp;D2/ and <tt/S13=1/ (this
sets bit 0 of register S13).  This has been confirmed to work on USR
Sportster V.34 modems as well.
-->

<p> 確認: DTR が落ちたとき USR Courier V.34 モデムを正しくリセットする
には、Greg Hankins さんは <tt/&amp;D2/ および <tt/S13=1/ を設定しなけ
ればなりませんでした(これは S13 レジスタを 0 に設定します)。この操作に
より、USR Sportster V.34 モデムも正常に動作することを確認しました。

<!--
<p> Note: some Supra modems treat DCD differently than other modems.
If you are using a Supra, try setting <tt/&amp;C0/ and <em/not/
<tt/&amp;C1/.  You must also set <tt/&amp;D2/ to handle DTR correctly.
-->

<p> 確認: いつかの Supra のモデムでは DCD の扱いが他のモデムと異なりま
す。Supra を使っているなら、<tt/&amp;C1/ <em/ではなく/ <tt/&amp;C0/ を
試してみてください。DTR を正しく扱うには、<tt/&amp;D2/ も設定する必要
があります。

<!--
<sect> Serial Port Devices /dev/ttyS2, etc. <label id="ttySN_">
-->
<sect> /dev/ttyS2 などのシリアルポートデバイス <label id="ttySN_">

<!-- device_dir.H begin
<sect> Serial Port Devices /dev/ttyS2, etc. -->

<!--
<p> For creating devices in the device directory see 
the Serial-HOWTO: "Creating Devices In the /dev directory". 
-->

<p> デバイスディレクトリにデバイスを作るには、Serial-HOWTO:
「<tt>/dev</tt> ディレクトリにおけるデバイスの作成方法」をご覧ください。

&lsqb; 訳注 : JF プロジェクトによる日本語訳 <url
 url="http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html"
 name="Serial-HOWTO"> &rsqb;

<!--
<sect1>Serial Port Device Names & Numbers <label id="dev_nos">
<p> Devices in Linux have major and minor numbers.  Each serial port
may have 2 possible names in the /dev directory: ttyS and cua.   Their
drivers behave slightly differently.  The cua device is deprecated and
will not be used in the future. See <ref id="cua_dev" name="The cua Device">.
-->

<sect1> シリアルポートデバイスの名前と番号 <label id="dev_nos">

<p> Linux ではデバイスにメジャー番号およびマイナー番号があります。
<tt>/dev</tt> ディレクトリにおいて、各々のシリアルポートは <tt/ttyS/ 
と <tt/cua/ の2 つの名前が可能です。これら 2 つのドライバはわずかに異
なるふるまいをします。cua デバイスは推奨しておらず、将来は使用しないこ
とになるでしょう。<ref id="cua_dev" name="cua デバイス"> をご覧くださ
い。

<!--
Dos/Windows use the COM name while the <tt/setserial/ program uses
tty00, tty01, etc.  Don't confuse these with dev/tty0, dev/tty1, etc.
which are used for the console (your PC monitor) but are not serial
ports.  The dos names (COM1, etc.) and IO address is shown below for
the "standard" case (but yours could be different).
-->

DOS/Windows は COM 名を使いますが、<tt/setserial/ プログラムは 
<tt/tty00/, <tt/tty01/ などを用います。(PC のモニタである)コンソールと
して使用する、シリアルポートではない <tt>/dev/tty0</tt>,
<tt>/dev/tty1</tt> などのデバイスと混同してはいけません。「標準的」な
場合の (COM1 など) DOS 上の名前と IO アドレスを以下に示します。(あなた
の場合では異なるかもしれません)

<tscreen><verb>
       set-				 		 IO
dos   serial	      major minor	  major minor  address
COM1  tty00  /dev/ttyS0  4,  64;  /dev/cua0  5,  64      3F8
COM2  tty01  /dev/ttyS1  4,  65;  /dev/cua1  5,  65      2F8
COM3  tty02  /dev/ttyS2  4,  66;  /dev/cua2  5,  66      3E8
COM4  tty03  /dev/ttyS3  4,  67;  /dev/cua3  5,  67      2E8
</verb></tscreen>

<!--
Note that all distributions should come with ttyS devices (and cua
devices until cua is finally abolished).  You can
verify this by typing: 
-->

すべてのディストリビューションは <tt/ttyS/ デバイスを用いることに注意
してください( <tt/cua/ デバイスも完全に廃止できるまでは使用します)。以
下のようにタイプすることで、上記のことを確かめられます:

<tscreen><verb>
linux% ls -l /dev/cua*
linux% ls -l /dev/ttyS*
</verb></tscreen>

<!--
<sect1> Link ttySN to /dev/modem ?
<p> On some installations, two extra devices will be created, 
<tt>/dev/modem</tt> for your modem and <tt>/dev/mouse</tt> for your 
mouse.  Both of these are symbolic links to the appropriate 
device in <tt>/dev</tt> which you specified during the 
installation (unless you have a bus mouse, then <tt>/dev/mouse</tt> 
will point to the bus mouse device).
-->

<sect1> ttySN を /dev/modem へリンク?

<p> いくつかのインストレーションでは、モデム用の <tt>/dev/modem</tt> 
およびマウス用の <tt>/dev/mouse</tt> という2つの特別なデバイスを作りま
す。両者とも、インストール時に明示した <tt>/dev</tt> 以下にある適切な
デバイスへのシンボリックリンクです(バスマウスを持っているなら、
<tt>/dev/mouse</tt> はバスマウスのデバイスを指しているでしょう)。

<!--
There has been some discussion on the merits of <tt>/dev/mouse</tt>
and <tt>/dev/modem</tt>.  The use of these links is discouraged.  In
particular, if you are planning on using your modem for dialin you may
run into problems because the lock files may not work correctly if you
use <tt>/dev/modem</tt>. Use them if you like, but <em/be sure they
point to the right device/.  However, if you change or remove this
link, some applications might need reconfiguration.
-->

<tt>/dev/mouse</tt> および <tt>/dev/modem</tt> の利点に関しては、いく
らかの議論がありました。これらのリンクを使用することは推奨しません。と
りわけ、ダイヤルインにモデムの使用を考えているのなら、
<tt>/dev/modem</tt> を使用するとロックファイルが正常に動作しないため、
問題が発生するかもしれません。好みでこれらのリンクを使うのなら、<em/リ
ンクが確実に正しいデバイスを指すようにしてください/。しかし、このリン
クを変更したり削除すると、再設定が必要となるアプリケーションがあるかも
しれません。

<!-- device_dir.H end -->

<!--
<sect1> The cua Device <label id="cua_dev">
<p> Each ttyS device has a corresponding cua device.  But the cua
device is to be abolish so it's best to use ttyS (unless cua is
required).  There is a difference between cua and ttyS but a savvy
programmer can make a ttyS port behave just like a cua port so there
is no real need for the cua anymore.  Except some older programs may
need to use the cua.
-->

<sect1> cua デバイス <label id="cua_dev">

<p> 各々の <tt/ttyS/ デバイスは <tt/cua/ デバイスと一致します。しかし、
<tt/cua/ デバイスは廃止すべきものであるため、(<tt/cua/ を必要としない
限り) <tt/ttyS/ を使うのが最も良いことです。<tt/cua/ と <tt/ttyS/ の間
には違いがありますが、精通したプログラマは <tt/ttyS/ ポートをあたかも 
<tt/cua/ ポートであるかのように振る舞わせることができ、<tt/cua/ ポート
はもはや全く必要ありません。いくつかの古いプログラムを除き、<tt/cua/ 
を使用する必要がありません。

<!--
What's the difference?  The  main difference between cua and ttyS has
to do with what happens in a C-program when an ordinary "open" command
tries to open the port. If a cua port has been set to check modem
control signals, the port can be opened even if the DCD modem control
signal says not to.  Astute programming (by adding additional lines to
the program) can force a ttyS port to behave this way also.  But a cua
port can be more easily programmed to open for dialing out on a modem
even when the modem fails to assert DCD (since no one has called into
it and there's no carrier).  That's why cua was once used for dial-out
and ttyS used for dial-in.
-->

何が違うのでしょうか?  <tt/cua/ と <tt/ttyS/ の間の主な違いは、通常の 
``oepn'' コマンドでポートを開こうとしたとき、C プログラム中でどのよう
に処置するのが異なります。<tt/cua/ ポートがモデム制御信号を確認するよ
うセットしたのなら、DCD モデム制御信号が上がっていなくても、ポートを開
けます。(追加コードを加えた)賢いプログラムは <tt/ttyS/ ポートに同様の
振舞いを強制することができます。しかし、<tt/cua/ ポートはモデムが DCD 
を ON にできなくとも(誰も電話をかけていない、キャリアがないときに) 電
話をかけるために簡単にポートを開くことができます。このことが、かつて 
<tt/cua/ を発信に用い、<tt/ttyS/ を着信に用いていた理由です。

<!--
Starting with Linux kernel 2.2, a warning message will be put in the
kernel log when one uses cua.  This is an omen that cua is on the way
out.
-->

<tt/cua/ を使っているならば、Linux カーネル 2.2 を起動するときに警告メッ
セージがカーネルログに書き込まれるでしょう。これは <tt/cua/ がなくなり
かけている兆しです。

<!--
<sect>Interesting Programs You Should Know About

<sect1>What is setserial ? <label id="set_serial">
-->

<sect> 知っていると良いおもしろいプログラム

<sect1> setserial とは何か? <label id="set_serial">

<!-- setserial.H  begin  (in MM TT SS)
<sect1>What is Setserial ? <label id="set_serial"> -->

<!--
<sect2> Introduction
<p> Don't ever use <tt/setserial/ with Laptops (PCMCIA).
<tt/setserial/ is a program which allows you to tell the device driver
software the I/O address of the serial port, which interrupt (IRQ) is
set in the port's hardware, what type of UART you have, etc.  It can
also show how the driver is currently set.  In addition, it can  probe
the hardware (if certain options are given).  
-->

<sect2> はじめに

<p> 決してノート PC (PCMCIA) で <tt/setserial/ を使ってはいけません。
ハードウェアでシリアルポートの I/O アドレスおよび割込み (IRQ) がどの番
号に設定してあるのか、あるいは UART の型名などを、<tt/setserial/ を使っ
てデバイスドライバに伝えることができます。また、現在のドライバの設定を
表示することもできます。更に、(特定のオプションを使えば)ハードウェアを
自動検出することもできます。

<!--
If you only have one or two serial ports, they will usually get set up
correctly without using setserial.  Otherwise (or if there are
problems with the serial port) you will likely need to deal with
setserial.  Besides the manual for <tt/setserial/, check out info in
<tt>/usr/doc/setserial.../</tt> or the like.  It should tell you how
setserial is handled in your distribution of Linux.  
-->

ひとつかふたつのシリアルポートしかないのなら、setserial を使わなくても
たいてい正しく設定できます。そうでなければ(あるいはシリアルポートに何
か問題があったなら)、setserial を使う必要があるでしょう。
<tt/setserial/ のマニュアル以外にも、<tt>/usr/doc/setserial.../</tt> 
などにある情報を調べてください。使用中の Linux のディストリビューショ
ンがどのように setserial を扱っているのかわかるでしょう。

<!--
<tt/Setserial/ is often run automatically at boot-time by a start-up
shell-script.  It will only work if the serial module is loaded.  If
you should for some reason unload the serial module later on, the
changes previously made by <tt/setserial/ will be forgotten by the
kernel (but not by /etc/serial.conf).  So <tt/setserial/ must be run
again to reestablish them.  In addition to running via a start-up
script, something akin to <tt/setserial/ runs when the serial module
is loaded.  Thus when you watch the start-up messages on the screen it
may look like it ran twice, and in fact it has.
-->

起動時にシェルスクリプトが <tt/setserial/ を自動的に動かすこともありま
す。シリアルドライバモジュールが読み込まれている場合にのみ、setserial 
が動作するでしょう。何らかの理由により後でシリアルドライバモジュールを
外したなら、<tt/setserial/ で事前に行った変更は 
(<tt>/etc/serial.conf</tt> を除き)カーネルが消してしまいます。従って、
設定を回復させるために <tt/setserial/ を再び動かさなければいけません。
起動シェルスクリプトから動かすことに加えて、シリアルドライバモジュール
が読み込まれた際には、<tt/setserial/ と類似した何らかのプログラムが動
きます。従って、画面上の起動時のメッセージを見ていると、setserial が 2 
回動いたように見えるでしょうし、実際に動いたのです。

<!--
With appropriate options, <tt/setserial/ can probe (at a given I/O
address) for a serial port but you must guess the I/O address.  If you
ask it to probe for /dev/ttyS2 for example, it will only probe at the
address it thinks ttyS2 is at.  If you tell setserial that ttyS2 is at
a different address, then it will probe at that address, etc.  See
<ref id="probing_ss" name="Probing">
-->

適切なオプションを使えば、<tt/setserial/ は(与えた I/O アドレスで) シ
リアルポートを検出できますが、その I/O アドレスを推測しなければなりま
せん。例えば <tt>/dev/ttyS2</tt> を検出させたいなら、setserial が推測
した <tt/ttyS2/ のアドレスでしか検出できないでしょう。もし setserial 
に <tt/ttyS2/ が異なるアドレスにあることを伝えたなら、そのアドレスで検
出するでしょう。<ref id="probing_ss" name="検出"> をご覧ください。

<!--
Setserial does not set either IRQ's nor I/O addresses in the serial
port hardware itself.  It's set in the hardware either by jumpers or
by plug-and-play.  You must tell setserial these identical values that
have been set in the hardware.  Do not just invent some values that
you think would be nice to use and then tell them to setserial.
However, if you know the I/O address but don't know the IRQ you may
command setserial to attempt to determine the IRQ.  
-->

setserial はシリアルポートのハードウェアに IRQ も I/O アドレスも設定し
ません。その値はジャンパあるいはプラグ&amp;プレイでハードウェアに設定
されます。ハードウェアに設定したものと同一の値を setserial に伝えなけ
ればなりません。あなたが使いやすいと思った数値を捏造したり、その数値を 
setserial に伝えることだけはやめてください。I/O アドレスを知っていて 
IRQ を知らない場合には、IRQ を見つけるために setserial を試してみるの
も良いでしょう。

<!--
You can see a list of possible commands to use (but not the one-letter
options such as -v for verbose &#045;&#045;which you should normally use when
troubleshooting) by just typing <tt/setserial/ with no arguments.
Note that setserial calls an I/O address a "port".  If you type:
-->

(通常トラブル解決の際に使用する、冗長出力の -v といった1 文字のオプショ
ンを除き)引数なしで <tt/setserial/ とだけタイプすると、使えるコマンド
の一覧を見れます。setserial は I/O アドレスを「ポート」と呼ぶことに注
意してください。以下のようにタイプすると、

<verb>
setserial -g /dev/ttyS*
</verb>

<!--
you'll see some info about how that device driver is configured for
your ports.  Add a "v" to the option "-g" to see more.  But this
doesn't tell you if the hardware actually has these values set in it.
If fact, you can run setserial and assign a purely fictitious I/O
address, any IRQ, and whatever uart type you would like to have.  Then
the next time you type "setserial ..." it will display these bogus
values without complaint.  Note that assignments made by setserial are
lost when the PC is powered down so it is usually run automatically
somewhere each time that Linux is booted.
-->

デバイスドライバがポートをどのように設定したか、若干の情報を見られるで
しょう。更に情報を見たければ、``<tt/-g/''オプションに ``<tt/v/'' を追
加してください。しかし、ハードウェアの中にこれらの値が実際に設定されて
いるかどうかは、このコマンドは教えてくれません。実際、全く嘘の I/O ア
ドレスやいかなる IRQ でも、またあなたが手に入れたいどんな UART の型で
も、setserial を動かして割り当てることができます。そして次に 
``<tt/setserial .../'' をタイプしたとき、文句もなしにこの偽物の値を表
示するでしょう。setserial による割当ては PC の電源を切ると失われるので、
Linux が起動する度に、たいていどこかで自動的に setserial を動かします。

<!--
<sect2> Probing <label id="probing_ss">

<p> In order to try to find out if you have a certain piece of serial
hardware you must first know (or guess) its I/O address (or the device driver
must have an I/O address for it, likely previously set by setserial).
To try to detect the physical hardware use the -v (verbose) and
<tt/autoconfig/ command to <tt/setserial/.  If the resulting message
shows a uart type such as 16550A, then you're OK.  If instead it shows
"<tt/unknown/" for the uart type, then there is supposedly no serial
port at all at that I/O address.  Some cheap serial ports don't
identify themselves correctly so if you see "<tt/unknown/" you still
might have a serial port there.  
-->

<sect2> 検出 <label id="probing_ss">

<p> シリアルポートのハードウェアを見つけ出すには、まず I/O アドレスを
知らなければなりません(あるいは推測しなければなりません)。またはデバイ
スドライバがハードウェアのために setserial で事前に適切に設定した I/O 
アドレスを知っていなければなりません。物理的なハードウェアを見つけるた
めには、<tt/setserial/ に <tt/-v/ (verbose : 冗長出力)および 
<tt/autoconfig/ コマンドを使ってください。出力メッセージが UART の型名
を 16550A といったように示しているのなら、問題ありません。そうではなく、
UART の型名を ``<tt/unknown/'' と示したなら、その I/O アドレスにはシリ
アルポートがないと推定できます。いくつかの安いシリアルポートには自分の
名前を正しく名乗れないものもあるため、``<tt/unknown/'' と出てもそこ
にシリアルポートがある可能性があります。

<!--
Besides auto-probing for uart type, setserial can auto-probe for IRQ's
but this doesn't always work right either.  In versions of setserial
>= 2.15, your last probe test may be saved and put into the
configuration file <tt>/etc/serial.conf</tt> which will be used next
time you start Linux.  The script that runs <tt/setserial/ at
boot-time does not usually probe, but you could change it so that it
does.  See the next section.
-->

UART の型名を検出するほかにも、setserial は IRQ を自動検出できますが、
常に正しくは動作しません。setserial のバージョンが 2.15 以上なら、最後
の検出結果を、Linux が次回の起動時に使用する設定ファイル
<tt>/etc/serial.conf</tt> へ格納するでしょう。起動時に <tt/setserial/ 
を動かすスクリプトは通常ポートを検出しないものの、検出するように変更で
きます。次節をご覧ください。

<!--
<sect2> Can Linux Configure The Serial Devices Automagically?
<p> Yes, but ...  Your distribution may already do this on startup.
But you may want to customize it.  It's easy to do for
setserial < 2.15.  Just add some lines to the file that runs setserial
on start-up.  See <ref id="old_sets_script" name="Old configuration
method: edit a script">   For example, for ttyS3 you would add:
-->

<sect2> Linux は自動的にシリアルデバイスを設定できますか?

<p> はい、しかし... 使用しているディストリビューションが起動時に既に設
定しているかもしれません。ですが、カスタマイズしたくなるかもしれません。
それは setserial の 2.15 未満を使えば簡単です。起動時に setserial を動
かすファイルへ、数行を追加してください。<ref id="old_sets_script"
name="古典的な設定手法: スクリプト編集"> をご覧ください。例えば、
<tt/ttyS3/ に関しては、起動時に setserial を動かすファイルへ以下のよう
に追加しましょう:

<!--
<tscreen><verb>
/sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig
</verb></tscreen> 
to the file that runs setserial on startup.
Do this for every serial port you want to auto configure.  Be sure to
give a device name that really does exist on your machine.  In some
cases this will not work right due to the hardware so you may want to
assign it an irq and/or a uart type.  For example
<tscreen><verb>
/sbin/setserial /dev/ttyS3 irq 5 uart 16550A  skip_test 
</verb></tscreen> 
-->

<tscreen><verb>
/sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig
</verb></tscreen>

自動的に初期化したいすべてのシリアルポートに関して、同様にしてください。
コンピュータ上に実際に存在するデバイス名を与えているか、確かめてくださ
い。いくつかのケースでは、ハードウェアが原因で正常に動作せず、IRQ ある
いは UART のタイプを指定した方が良いかもしれません。例えば、

<tscreen><verb>
/sbin/setserial /dev/ttyS3 irq 5 uart 16550A  skip_test 
</verb></tscreen> 

<!--
For versions >= 2.15 (provided your distribution implemented the
change, Redhat didn't) it's much harder to do since the file that runs
setserial on startup, /etc/init.d/setserial or the like was not
intended to be edited by the user.  There may be no helpful comments
in it like there were in earlier versions.
-->

(使用中のディストリビューションがこの変更を行っているなら) バージョン 
2.15 以上では、起動時に setserial を動かす 
<tt>/etc/init.d/setserial</tt> などのファイルをユーザが編集することは
想定していないので、自動検出の設定はもっと難しくなります。以前のバージョ
ンにはあったような役立つコメントがなくなっているかもしれません。

<!--
<sect2> Boot-time Configuration <label id="sets_boot_time"> 
<p> When the kernel loads the serial module (or if the "module" is
built into the kernel) then only <tt/ttyS{0-3}/ are auto-detected and
the driver is set to IRQs 4 and 3 (regardless of what the hardware is
actually set at).  You see this as a boot-time message just like as if
<tt/setserial/ had been run..  If you use 3 or more ports, this may
result in IRQ conflicts. 
-->

<sect2> 起動時の設定 <label id="sets_boot_time"> 

<p> カーネルがシリアルモジュールを読み込むと(あるいは「モジュール」が
カーネルに組み込まれていると)、<tt/ttyS{0-3}/ のみを自動的に検出し、
(ハードウェアが実際にどう設定されているかに関わらず) ドライバは IRQ を 
4 そして 3 に設定します。あなたはこれを、あたかも <tt/setserial/ の起
動メッセージだと考えてしまいす。もし、3 つ以上のポートを使うなら、この
シリアルモジュールによる自動設定は IRQ の衝突を引き起こします。

<!--
To fix such conflicts by telling setserial the true IRQs (or for other
reasons) there may be a file somewhere that runs <tt/setserial/ again.
This happens early at boot-time before any process uses the serial
port.  In fact, your distribution may have set things up so that the
setserial program runs automatically from a start-up script at
boot-time.  More info about how to handle this situation should be
found in /usr/doc/setserial.../ or the like.  
-->

setserial に本当の IRQ を伝えて、このような衝突(あるいは他の理由による
衝突) を解決できるような、<tt/setserial/ を再び動かすスクリプトがある
かもしれません。この現象は他のプロセスがシリアルポートを使用する前の、
起動時の初期に発生します。実際、起動時の初期化スクリプトが自動的に 
setserial プログラムを動かすので、ディストリビューションが既にこの設定
を行っているでしょう。この現象をどう扱うのか、
<tt>/usr/doc/setserial.../</tt> などに追加情報があります。

<!--
<sect2> New configuration method using /etc/serial.conf 
<p> Prior to setserial version 2.15, the way to configure setserial
was to manually edit the shell-script that ran setserial at boot-time.
Starting with version 2.15 (1999) of <tt/setserial/ this shell-script
is not edited but instead gets its data from a configuration file:
/etc/serial.conf.  Furthermore not even serial.conf is intended to be
edited.  Instead just use <tt/setserial/ on the command line.
-->

<sect2> /etc/serial.conf を用いた新しい設定手法

<p> バージョン 2.15 (1999年) 以前では、setserial の設定方法は起動時に 
setserial を動かすシェルスクリプトを手動で編集することでした。
<tt/setserial/ のバージョン 2.15 (1999年) 以降では、シェルスクリプトを
編集せず、設定ファイル <tt>/etc/serial.conf</tt> から設定情報を得ます。
しかし、<tt>serial.conf</tt> は通常は編集しません。その代わりに、
<tt/setserial/ をコマンドラインで使用します。

<!--
Normally, what you changed with the setserial command is saved to the
configuration file (serial.conf) when you shutdown (normally) or
reboot.  This only works if "###AUTOSAVE### or the like is on the
first line of serial.conf.  If you should use <tt/setserial/
experimentally and it doesn't work out right, then don't forget to
redo it so that the experimental settings don't get saved by mistake.
The file most commonly used to run setserial at boot-time (in
conformance with the configuration file) is now /etc/init.d/setserial
(Debian) or /etc/init.d/serial (Redhat), or etc.,  but it also should
not normally be edited.  
-->

setserial で変更したものは、通常シャットダウンあるいはリブート時に設定
ファイル (<tt/serial.conf/) へ保存されます。<tt/serial.conf/ の最初の
行で ``<tt/###AUTOSAVE###/'' などが on になっているときのみ動作します。
もし <tt/setserial/ を試しに使用して正常に動作しなかったなら、その試験
的な設定が誤って保存されないよう、忘れずに設定をやり直してください。
(設定に従って)起動時に setserial を動かすために一般的に使用するファイ
ルは、<tt>/etc/init.d/setserial</tt> (Debian) あるいは 
<tt>/etc/init.d/serial</tt> (Redhat) などです。しかし、通常はこのファ
イルも編集すべきでありません。

<!--
To disable a port, use <tt/setserial/ to set it to
"uart none".  The format of /etc/serial.conf appears to be just like
that of the parameters placed after "setserial" on the command line
with one line for each port.  If you don't use autosave, you may edit
/etc/serial.conf manually.  For 2.15, the Debian distribution installs
the system with autosave enabled, but Redhat 6.0 just had a file
/usr/doc/setserial-2.15/rc.serial which you have to move to
/etc/init.d/.
-->

シリアルポートを無効にするには、<tt/setserial/ を用いて ``<tt/uart
none/'' に設定してください。``setserial'' のあとに置く各ポートに対する
コマンドラインの 1 行パラメータに、<tt>/etc/serial.conf</tt> は似てい
ます。自動保存を使わないなら、<tt>/etc/serial.conf</tt> を手で編集する
のも良いでしょう。バージョン 2.15 に関しては、Debian は自動保存を有効
にしてシステムをインストールしますが、RedHat 6.0 は 
<tt>/usr/doc/setserial-2.15/rc.serial</tt> があるだけで、それを 
<tt>/etc/init.d/</tt> へ移動しなければなりません。

<!--
BUG: As of July 1999 there is a bug/problem since with ###AUTOSAVE###
only the setserial parameters displayed by "setserial -G /dev/ttyS?"
(where ? = 0, 1, 2, ...) get saved but the other parameters don't get
saved.  This will only affect a small minority of users since the
parameters not saved are seldom used anyway.  It's been reported as a
bug and may be fixed by now. 
-->

バグ : 1999 年 6 月現在では、次のようなバグおよび問題があります。
``<tt>setserial -G /dev/ttyS?</tt>'' (ここで <tt/?/ = 0, 1, 2, ...) に
より表示される setserial のパラメータは <tt/###AUTOSAVE###/ を用いて保
存できますが、それ以外のパラメータは保存できません。このパラメータはど
んな場合でもほとんど使用しないため、このバグはごく少数のユーザにしか影
響を与えません。このことはバグとして報告されていますが、今はもう修正済
みかもしれません。

<!--
In order to force the current settings set by setserial to be saved to
the configuration file (serial.conf) without shutting down, do what
normally happens when you shutdown: Run the shell-script
<tt>/etc/init.d/{set}serial stop</tt>.  The "stop" command will save
the current configuration but the serial ports still keep working OK.
-->

setserial でセットした現在の設定を、シャットダウンせずに設定ファイル 
(serial.conf) へ保存するには、シャットダウンの際に通常動作することを行
えば良いのです : シェルスクリプトを動かしてください。
<tt>/etc/init.d/{set}serial stop</tt>。``<tt/stop/'' コマンドはシリア
ルポートを正常に動作させたまま、現在の設定を保存します。

<!--
I some cases you may wind up with both the old and new configuration
methods installed but hopefully only one of them runs at boot-time.
Debian labeled obsolete files with "...pre-2.15".
-->

いくつかのケースでは、古典的な設定手法と新しい手法の双方を使えるように
してあるかもしれませんが、起動時にそのうちひとつのみを動かすことが望ま
しいです。Debian では ``...pre-2.15'' はすでに旧式だとしています。

<!--
<sect2> Old configuration method: edit a script 
 <label id="old_sets_script">
<p> Prior to 2.15 (1999) there was no /etc/serial.conf file to
configure setserial.   Thus you need to find the file that runs
"setserial" at boot time and edit it.  If it doesn't exist, you need
to create one (or place the commands in a file that runs early at
boot-time).   If such a file is currently being used it's likely
somewhere in the /etc directory-tree.  But Redhat <6.0 has supplied it
in /usr/doc/setserial/ although you need to move it to the /etc tree
before using it.   You might use "locate" to try to find such a file.
For example, you could type: locate "*serial*".   
-->

<sect3> 古典的な設定手法 : スクリプトの編集 <label id="old_sets_script">

<p> 2.15 (1999年) より前は、setserial の設定ファイル 
<tt>/etc/serial.conf</tt> がありませんでした。従って、起動時に 
setserial を動かしているファイルを探す必要があります。そのファイルが存
在しなかったら、それを作らなければなりません。(あるいは起動時の早い時
期に動くファイルへ追加する必要があります。) このようなファイルを現在使
用しているなら、多分 <tt>/etc</tt> ディレクトリのどこかにあります。し
かし、Redhat 6.0 より前ではそのファイルは <tt>/usr/doc/setserial/</tt> 
にあり、使う前に <tt>/etc</tt> へ移動しなければなりません。こういった
ファイルを探すために ``<tt/locate/'' を使うと良いでしょう。例えば、次
のようにタイプしてください : <tt/locate "*serial*"/

<!--
What you are looking for could be named  rc.serial, or 0setserial
(Debian).  If such a file is supplied, it should contain a number of
commented-out examples.  By uncommenting some of these and/or
modifying them, you should be able to set things up correctly.  Make
sure that you are using a valid path for <tt/setserial/, and a valid
device name.  You could do a test by executing this file manually
(just type its name as the super-user) to see if it works right.
Testing like this is a lot faster than doing repeated reboots to get
it right.  Of course you can also test a single <tt/setserial/ command
by just typing it on the command line.
-->

あなたが探しているものは <tt/rc.serial/ あるいは <tt/0setserial/
(Debian) という名前です。こういったファイルが提供されているなら、多く
のコメントアウトされた例が載っているでしょう。このコメントを外したり変
更することにより、正しく設定できるはずです。<tt/setserial/ の正しいパ
ス、そして正しいデバイス名を使用するよう、確かめてください。正常に動作
するかどうか確かめるため、手動でこのファイルを実行してテストできます
(スーパーユーザでファイル名をタイプするだけです)。正常に動作させるため
にリブートを繰り返すよりも、このようなテストはずっと高速です。もちろん、
コマンドラインからタイプして単独の <tt/setserial/ コマンドをテストする
こともできます。

<!--
The script <tt>/etc/rc.d/rc.serial</tt> was commonly used in the past.
The Debian distribution used <tt>/etc/rc.boot/0setserial</tt>.
Another file once used is <tt>/etc/rc.d/rc.local</tt> but it's
not a good idea to use this since it may not be run early enough.
It's been reported that other processes may try to open the serial
port before rc.local runs resulting in serial communication failure.
-->

昔は、<tt>/etc/rc.d/rc.serial</tt> を一般的に使用していました。Debian 
は <tt>/etc/rc.boot/0setserial</tt> を使います。かつて、
<tt>/etc/rc.d/rc.local</tt> を使用していました。しかし、充分に早い段階
で動かないので、これを使うことは良い方法ではありません。<tt/rc.local/ 
が動く前にシリアルポートを開こうとする他のプロセスが、シリアル通信の失
敗に終わるという報告があります。

<!--
<sect2> IRQs

<p> By default, both ttyS0 and ttyS2 share IRQ 4, while ttyS0 and
ttyS3 share IRQ 3.  But sharing serial interrupts is not permitted
unless you: 1. have kernel 2.2 or better, and 2. you've complied in
support for this, and 3. your serial hardware supports it.  See 
<ref id="int_share-2.2" name="Interrupt sharing and Kernels 2.2+">
If you only have two serial ports, ttyS0 and ttyS1, you're still OK
since IRQ sharing conflicts don't exist for non-existent devices.  
--> 

<sect2> 割込み (IRQ)

<p> デフォルトでは <tt/ttyS0/ および <tt/ttyS2/ は IRQ 4 を共有し、
<tt/ttyS1/ および <tt/ttyS3/ は IRQ 3 を共有します。しかし、シリアルの
割込みを共有することは、以下の条件を満たさなければ可能となりません。

&lsqb;訳注 : 原文は "ttyS0 and ttyS3 share IRQ 3" ですが、誤りでしょう
か。&rsqb;

<enum>
<item>カーネル 2.2 あるいはそれ以上
<item>IRQ 共有をサポートするようカーネルをコンパイルする
<item>シリアルのハードウェアが共有をサポートしている
</enum>

<ref id="int_share-2.2" name="割込みの共有とバージョン 2.2 以降のカーネル">
をご覧ください。シリアルポートが <tt/ttyS0/ と <tt/ttyS1/ の 2 つしか
ないなら、存在しないデバイスでは IRQ 共有の競合は発生しないので、問題
はありません。

<!--
If you add an internal modem and retain ttyS0 and ttyS1,
then you should attempt to find an unused IRQ and set it both on your
serial port (or modem card) and then use setserial to assign it to
your device driver.  If IRQ 5 is not being used for a sound card, this
may be one you can use for a modem.  To set the IRQ in hardware you
may need to use isapnp, a PnP BIOS, or patch Linux to make it PnP.  To
help you determine which spare IRQ's you might have, type "man
setserial" and search for say: "IRQ 11".  
-->

内蔵モデムを追加した上で <tt/ttyS0/ と <tt/ttyS1/ を残しておいたのなら、
未使用の IRQ を見つけてシリアルポート(およびモデムボード)にその IRQ を
設定し、setserial を用いドライバに対して IRQ を知らせるべきです。サウ
ンドカードが IRQ5 を使用していないならば、モデムのために使える IRQ に
なるかもしれません。ハードウェアに IRQ を設定するには isapnp, PnP BIOS 
を用いるか、あるいは Linux を PnP 対応にするパッチを当てる必要がありま
す。余っている IRQ の節約を決心するためには、``<tt/man setserial/'' を
タイプし ``IRQ 11'' の記述を探してください。

<!-- setserial.H  end -->
<!--
<sect1> What is isapnp ?
<p> <tt/isapnp/ is a program to configure Plug-and-Play (PnP) devices
on the ISA bus including internal modems.  It comes in a package
called "isapnptools" and includes another program, "pnpdump" which
finds all your ISA PnP devices and shows you options for configuring
them in a format which may be added to the PnP configuration file:
/etc/isapnp.conf.  It may also be used with the &#045;&#045;dumpregs option to
show the current IO address and IRQ of the modem's serial port.  The
isapnp command may be put into a startup file so that it runs each
time you start the computer and thus will configure ISA PnP devices.
It is able to do this even if your BIOS doesn't support PnP.  See
Plug-and-Play-HOWTO.
-->

<sect1> isapnp とは何でしょう?

<p> <tt/isapnp/ は内蔵モデムを含む ISA バス上のプラグ&amp;プレイ (PnP) 
デバイスを設定するプログラムです。isapnp は ``isapnptools'' というパッ
ケージに入っています。そして、すべての ISA プラグ&amp;プレイデバイスを
探し、PnP 設定ファイル <tt>/etc/isapnp.conf</tt> に追加できるフォーマッ
トでデバイスの設定を出力する ``pnpdump'' などの、他のプログラムも入っ
ています。モデム内部にあるシリアルポートの IO アドレスと IRQ を表示す
るために、<tt/--dumpregs/ オプションとともに pnpdump を使うこともある
でしょう。コンピュータを起動するごとに isapnp コマンドを動かすために、
isapnp を初期化ファイルに追加し、そして ISA PnP デバイスを設定すること
になります。BIOS が PnP をサポートしていなくても、この動作は可能です。

<!--
<sect1> What is wvdialconf ? <label id="wvdial_">
<p> <tt/wvdialconf/ will try to find which serial port has a modem on
it.  It also creates a configuration program for the wvdial program.
<tt/wvdial/ is used for simplified dialing out using the PPP protocol
to an ISP.  But you don't need to install PPP in order to use
<tt/wvdialconf/.  It will only find  modems which are not in use.  It
will also automatically devise a "suitable" init strings but sometimes
gets it wrong.  Since this command has no options, it's simple to use
but you must give it the name of a file to put the init string (and
other data) into.  For example type: wvdialconf my_config_file_name.
-->

<sect1> wvdialconf とは? <label id="wvdial_">

<p> <tt/wvdialconf/ はどのシリアルポートにモデムがつながっているかを探
します。そして、wvdial のために、設定プログラムを作ります。<tt/wvdial/ 
は PPP プロトコルを用いて ISP へ簡単に電話をかけるために用います。しか
し、<tt/wvdialconf/ を使うために PPP をインストールする必要はありませ
ん。wvdialconf は未使用のモデムを探し出すだけです。また、自動的に「適
切な」初期化文字列を考え出すものの、ときどき間違えます。このコマンドに
はオプションがないため簡単に使えますが、初期化文字列(および他のデータ)
を納めるファイル名を指定しなければなりません。例えば、次のように :
<tt/my_config_file_name/

<!--
<sect1> What is stty ?
<p> <tt/stty/ is like setserial but it sets the baud rate and other
parameters of a serial port.  Typing "stty -a < /dev/ttyS2" should show
you how ttyS2 is configured.  Most of the settings are for things that
you never need to use with modems (such as some used only for old
terminals of the 1970s).  Your communication package should
automatically set up all the setting correctly for modems.  But stty
is sometimes useful for trouble-shooting.
-->

<sect1> stty とは何でしょう?

<p> <tt/stty/ は setserial に似ていますが、シリアルポートのボーレート
および他のパラメータを設定します。``<tt>stty -a < /dev/ttyS2</tt>'' と
タイプすると、<tt/ttyS2/ の設定を表示するでしょう。設定の大部分は 
(1970 年代の古い端末でしか使わないような) モデムと一緒には用いる必要の
ないものです。通信プログラムはモデムを自動的に正しく設定するでしょう。
しかし、stty はトラブル解決のために場合によっては役に立ちます。

<!--
Two items set by stty are: 1. Hardware flow control by "crtscts" and
2. Ignore the DCD signal from the modem: "clocal".  If the modem is
not sending a DCD signal and clocal is disabled (stty shows -clocal)
then a program may not be able to open the serial port.  If the port
can't open, the program may just hang, waiting (often in vain) for a DCD
signal from the modem.
-->

stty は以下の 2 つの項目を設定します :

<enum>
<item>crtscts によるハードウェアフロー制御
<item>モデムからの DCD 信号 ``clocal'' を無効にする
</enum>

モデムが DCD 信号を送らず clocal が無効(つまり stty が -clocal を表示
する)ならば、プログラムはシリアルポートを開けません。ポートを開けない
と、プログラムはモデムからの DCD 信号を(ときには無駄に)待ち、動かなく
なってしまうかもしれません。

<!--
Minicom sets clocal automatically when it starts up so there is no
problem.  But version 6.0.192 of Kermit hung when I set -clocal and
tried to "set line ..." If -clocal is set and there is no DCD signal
then even the "stty" command will hang and there is seemingly no way
to set clocal (except by running minicom).  But minicom will restore
-clocal when it exits.  One way to get out of this is to use minicom
to send the "AT&amp;C" to the modem (to get the DCD signal) and then
exit minicom with no reset so that the DCD signal remains on.  Then
you may use stty again.
-->

minicom を動かすと自動的に clocal を設定するので、何も問題はありません。
しかし、-clocal で回線の設定をしようとすると、Kermit バージョン 
6.0.192 は動かなくなりました。-clocal を設定すると DCD 信号がなくなり、
``stty'' コマンドさえも動かず、表面上は clocal を設定する手段が(
minicom を動かすことを除き)なくなります。しかし、minicom は -clocal が
設定してあっても、それを元に戻します。-clocal が設定してある状態から脱
出するひとつの方法は、minicom を使って (DCD 信号を受け取るために) モデ
ムへ ``<tt/AT&amp;C/'' を送ることです。リセットせずに minicom を終了す
ると、DCD 信号が残ります。そして、再び stty を使えるようになるでしょう。

<!--
<sect>Trying Out Your Modem (Dialing Out) <label id="dialout">.  
<sect1> Are You Ready to Dial Out ?
<p> Once you've plugged in your modem and know which serial port it's
on you're ready to try using it.  Before you try to get the Internet
on it or have people call in to you, first try something simpler like
dialing out to some number to see if your modem is working OK.  Find a
phone number that is connected to a modem.  It you don't know what
number to call, ask at computer stores for such phone numbers of bulletin
boards, etc. or see if a local library has a phone number for their
on-line catalog.
-->

<sect> モデムを試す (電話をかける) <label id="dialout">
<sect1> 電話をかける準備ができていますか?

<p> モデムに電話線を差し込み、どのシリアルポートにつながっているのか分
かれば、試してみる準備ができました。インターネットへの接続を試す前に、
そして誰かがあなたに電話をかけてくる前に、ますモデムが正常に動作してい
るか調べましょう。そのためには、いくつかの番号へ電話をかけるなど、単純
なものから試してください。まず、モデムにつながる電話番号を探してくださ
い。電話番号が分からないなら、コンピュータショップで掲示板 (BBS) など
の電話番号を尋ねるか、地元の図書館にオンライン目録サービスの電話番号あ
るかどうか調べてください。

<!--
Then make sure you are ready to phone.  Do you know what serial port
(such as ttyS2) your modem is on?  You should have found this out when
you io-irq configured your serial ports.  Have you decided what speed
you are going to use for this port?  See <ref id="speed_table"
name="Speed Table"> for a quick selection or <ref id="speed_"
name="What Speed Should I Use"> for more details.  If you have no idea
what speed to set, just set it a few times faster than the advertised
speed of your modem.  Also remember that if you see a menu where an
option is "hardware flow control" and/or "RTS/CTS" or the like, select
it.  Is a live telephone cable plugged in to your modem?  You may want
to connect the cable to a real telephone to make sure that it can
produce a dial tone.
-->

電話をかける準備が整ったことを確認してください。(<tt/ttsS2/ などの)モ
デムのつながっているシリアルポートが分かっていますか?  シリアルポート
の I/O と IRQ を設定し、その設定を知っていなければなりません。そのポー
トで使う速度を決定しましたか?  素早い選択のためには <ref
id="speed_table" name="速度表"> を、詳細については <ref id="speed_"
name="モデムで使うべき速度は?"> をご覧ください。設定すべき速度がわから
ないなら、広告上のモデムの速度より 2-3 倍速い速度をシリアルに設定して
ください。「ハードウェアフロー制御」あるいは ``RTS/CTS'' といったオプ
ションを選択するメニューがどこにあるのかも、覚えておいてください。動作
する電話線をモデムに差し込みましたか?  ダイアルトーンが聞こえるか確か
めるために、この電話線を本物の電話機につないでみるのも良いでしょう。

<!--
Now you need to select a communication (dialing) program to use to
dial out.  Dialing programs include: minicom, seyon (X-windows), and
kermit.  See section <REF id="comms" name="Communications Programs">
about some communications programs.  Two examples are presented next:
<ref id="minicom_" name="Dialing Out with Minicom"> and <ref
id="kermit_" name="Dialing Out with Kermit">
-->

それから、電話をかける通信(ダイアル)プログラムを選ぶ必要があります。ダ
イアルプログラムには minicom, (X window system の) seyon および kermit 
もあります。通信プログラムに関しては、<REF id="comms" name="通信プログ
ラム"> をご覧ください。次に 2 つの例、<ref id="minicom_" name="Minicom 
で電話をかける">、および<ref id="kermit_" name="Kermit で電話をかける
"> を挙げます。

<!--
<sect1> Dialing Out with Minicom <label id="minicom_"> 
<p> Minicom comes with most Linux distributions.  To configure it you
should be the root user.  Type "minicom -s" to configure.  This will
take you directly to the configuration (set-up) menus.  Alternatively
you could just run "minicom" and then type ^A to see the bottom status
line.  This shows to type ^A Z for help (you've already typed the ^A
so just type z).  From the help menu go to the Configuration menu.
-->

<sect1> Minicom で電話をかける <label id="minicom_"> 

<p> Minicom は多くの Linux ディストリビューションに付属しています。設
定するには root にならなければいけません。設定するためには、``minicom
-s'' とタイプしてください。すると設定メニューが出てきます。あるいは、
``minicom'' を起動し、ステータスラインを表示させるために <tt/^A/ をタ
イプしても良いでしょう。<tt/^A Z/ をタイプすると、minicom はヘルプを表
示します。ヘルプメニューから設定メニューへ移動できます(既に <tt/^A/ を
タイプしていたら <tt/z/ とだけタイプしてください)。

<!--
Most of the options don't need to be set for just simply dialing out.
To configure you have to supply a few basic items: the name of the
serial port your modem is on such as /dev/ttyS2 and the speed such as
115200.  These are set at the serial port menu.  Go to it and set
them.  Also (if possible) set hardware flow control (RTS/CTS).  Then
save them.  When typing in the speed, you should also see something
like "8N1" which you should leave alone.  It means: 8-bit bytes, No
parity, 1 stop-bit appended to each byte.  If you can't find the speed
you want, a lower speed will always work for a test.   Exit (hit
return) when done and save the configuration as default (dfl) using
the menu.  You may want to exit minicom and start it again so it can
now find the serial port and initialize the modem, or you could go to
help and tell minicom to initialize the modem.
-->

オプションの多くは、単なる発信のためには設定する必要はありません。設定
しなければならない基本的な項目は、<tt>/dev/ttyS2</tt> といったモデムが
つながっているシリアルポートの名前、および 115200 などのシリアルポート
の速度です。これはシリアルポートメニューで設定します。シリアルポートメ
ニューへ移動し、設定してください。(可能なら)ハードウェアフロー制御 
(RTS/CTS) も設定してください。そして、設定を保存してください。速度の設
定をしている際、``<tt/8N1/'' といった文字を見るはずですが、そのままに
しておきましょう。これは 1 バイトが 8 ビットでパリティなし、各バイトご
とに 1 ビットのストップビットを付加すること意味します。設定したい速度
が見つからないなら、低めの速度なら動作するでしょう。設定が終わったら、
メニューを用いてその設定をデフォルト (<tt/dfl/) として保存し、(リター
ンキーをたたいて)終了してください。シリアルポートを探しモデムを初期化
する、あるいはヘルプを見たり、minicom にモデムを初期化させるために、
minicom を終了し再び動かしても良いでしょう。

<!--
Now you are ready to dial.  But first at the main screen you get
after you first type "minicom" make sure there's a modem there by
typing AT and then hit the &lt;enter&gt key.  It should display OK.
If it doesn't something is wrong and there is no point of trying to
dial.
-->

さあ、電話をかける準備が整いました。しかしまず、``<tt/minicom/'' とタ
イプして出てくるメインスクリーンで、<tt/AT/ そして &lt;enter&gt; キー
をたたき、モデムがつながっているのか確かめてください。<tt/OK/ と表示す
るはずです。そうならなかったら、どこかがうまくいっておらず、試しに電話
をかけても意味はありません。

<!--
If you got the "OK" go back to help and select the dialing directory.
You may edit it and type in a phone number, etc. into the directory
and then select "dial" to dial it.  Alternatively, you may just dial
manually (by selecting "manual" and then type the number at the
keyboard).  If it doesn't work, carefully note any error messages and
try to figure out what went wrong.  
-->

``<tt/OK/'' が返ってきたら、ヘルプへ戻りダイヤリングを選んでください。
それを編集して電話番号などを入力し、電話をかけるため ``<tt/dial/'' を
選択してください。あるいは、手動で電話をかけるかもしれません 
(``<tt/manual/'' を選択し、キーボードで電話番号を入力してください)。正
常に動作しなかったら、慎重にすべてのエラーメッセージを書き取り、何が悪
いのか理解するようにしてください。

<!--
<sect1> Dialing Out with Kermit <label id="kermit_">
<p> You can find the latest version of <tt/kermit/ at <tt><htmlurl
url="http://www.columbia.edu/kermit/"
name="http://www.columbia.edu/kermit/"></tt>.  For example, say your
modem was on <tt>ttyS3</tt>, and it's speed was 115200 bps.  You would
do the following: 
-->

<sect1> Kermit で電話をかける <label id="kermit_">

<p> <tt/kermit/ の最新バージョンは <tt><url
url="http://www.columbia.edu/kermit/"></tt> にあります。例えば、モデム
が <tt>ttyS3</tt> につながっており速度が 115200 bps のときには、以下の
ようにしましょう :

<tscreen><verb>
linux# kermit
C-Kermit 6.0.192, 6 Sep 96, for Linux
 Copyright (C) 1985, 1996, 
  Trustees of Columbia University in the City of New York.
Default file-transfer mode is BINARY
Type ? or HELP for help.
C-Kermit>set line /dev/ttyS3
C-Kermit>set carrier-watch off
C-Kermit>set speed 115200
/dev/ttyS3, 115200 bps
C-Kermit>c
Connecting to /dev/ttyS3, speed 115200.
The escape character is Ctrl-\ (ASCII 28, FS)
Type the escape character followed by C to get back,
or followed by ? to see other options.
ATE1Q0V1                           ; you type this and then the Enter key
OK                                 ; modem should respond with this
</verb></tscreen>

<!--
If your modem responds to <tt/AT/ commands, you can assume your modem 
is working correctly on the Linux side.  Now try calling another modem
by typing:
-->

<tt/AT/ にモデムが反応したなら、Linux でモデムが正常に動作していると判
断できます。次に、試しに他のモデムへ電話をかけてみましょう :

<tscreen><verb>
ATDT7654321
</verb></tscreen>

<!--
where 7654321 is a phone number.  Use ATDP instead of ATDT if you have
a pulse line.  If the call goes through, your modem is working.
-->

ここで、7654321 は電話番号です。もしダイヤル回線を使っているなら、
<tt/ATDT/ ではなく <tt/ATDP/ を使用してください。通話できたなら、モデ
ムは正常に動作しています。

<!--
<p>
To get back to the <tt/kermit/ prompt, hold down the Ctrl key, press 
the backslash key, then let go of the Ctrl key, then press the C key:
-->

<tt/kermit/ プロンプトへ戻り、コントロールキーを押したままバックスラッ
シュを押してコントロールキーを放し、そして C キーを押してください :

<tscreen><verb>
Ctrl-\-C
(Back at linux)
C-Kermit>quit
linux#
</verb></tscreen>

<!--
This was just a test using the primitive "by-hand" dialing method.  
The normal method is to let <tt/kermit/ do the dialing for you with 
its built-in modem database and automatic dialing features, for example 
using a US Robotics (USR) modem:
-->

これは原始的な「手動」ダイヤリング手法を用いたテストです。通常の方法で
は、内蔵モデムデータベースおよび自動的に電話をかける機能を用いて、
<tt/kermit/ に電話をかけさせます。

<tscreen><verb>
linux# kermit
C-Kermit 6.0.192, 6 Sep 1997, for Linux
 Copyright (C) 1985, 1996,
  Trustees of Columbia University in the City of New York.
Default file-transfer mode is BINARY
Type ? or HELP for help
C-Kermit>set modem type usr        ; Select modem type
C-Kermit>set line /dev/ttyS3       ; Select communication device
C-Kermit>set speed 115200          ; Set the dialing speed
C-Kermit>dial 7654321              ; Dial
 Number: 7654321
 Device=/dev/ttyS3, modem=usr, speed=115200
 Call completed.<BEEP>
Connecting to /dev/ttyS3, speed 115200
The escape character is Ctrl-\ (ASCII 28, FS).
Type the escape character followed by C to get back,
or followed by ? to see other options.

Welcome to ...

login:
</verb></tscreen>

<!--
<sect> Dial-In <label id="dialin_">
<sect1> Overview
<p> Dial-in is where you set up your PC so that others may dial in to
your phone number and use your PC.  The "point of view" is your PC.
When you dial out from your PC you are also dialing in to another
computer (but not dialing in to your own computer)
-->

<sect> ダイヤルイン <label id="dialin_">
<sect1> 概要

<p> ダイヤルインとは、あなたの電話番号をダイヤルしてあなたの PC を使え
るように、あなたの PC を設定することです。「視点」はあなたの PC 側にあ
ります。あなたの PC から発信すると、他のコンピュータへダイヤルインする
ことになります。(あなた自身のコンピュータへ電話をかけないでください)

<!--
Dial-in works like this.  Someone with a modem dials your telephone
number.  Your modem answers the call and connects.  Once the caller is
connected, your PC sends a login prompt to the caller.  Then the
caller logs in and uses your PC.  Using your PC may mean that the
caller has a shell account and can use your PC just as if they logged
in at the console (or text-terminal).  It could also mean that they
get connected to the Internet.   The program that you use at
your PC to handle dialin is called <tt/getty/.  
-->

ダイヤルインは以下のように動作します。誰かがモデムであなたの電話番号を
ダイヤルします。あなたのモデムは応答し、接続します。発信者とつながると、
あなたの PC はログインプロンプトを発信者へ送ります。そして、発信者はあ
なたの PC へログインします。あなたの PC を使うことは、発信者がシェルア
カウントを有し、コンソール(あるいはテキスト端末)からログインした場合と
全く同じように、あなたの PC を使えることを意味します。また、発信者がイ
ンターネットへ接続できることにもなります。あなたの PC 上でこのダイヤル
インを扱うプログラムを <tt/getty/ と呼びます。

<!--
Often, after login, another program is run, including programs to
connect the caller to the Internet.  This HOWTO doesn't cover such
programs that run after your login.  For connecting to the internet,
the PPP program is usually run (see PPP-HOWTO, a new revision is
expected soon).  Login may be automated so that the communication
program automatically types in a "name" and password each time.  
-->

ログインの後、発信者をインターネットへ接続するような他のプログラムが動
くこともあります。この HOWTO ではログインの後に動くこのようなプログラ
ムは対象としていません。インターネットへつなぐためには、たいてい PPP 
プログラムが動きます(もうすぐ新しいバージョンが出る予定の PPP-HOWTO を
ご覧ください)。通信プログラムがログイン名とパスワードを毎回自動的に入
力し、ログインを自動化しているかもしれません。

&lsqb;訳注 : JF プロジェクトによる日本語訳
<url url="http://www.linux.or.jp/JF/JFdocs/PPP-HOWTO.html"
name="PPP-HOWTO"> &rsqb;

<!--
If you expect that people will be able to dial-in to you at 56K, it
can't be done unless: 1. You have a digital connection to the
telephone company such as a trunkside-T1 or ISDN line.  and  2. You
use special digital-modems.  and 3. You have a "... concentrator", or
the like to interface your digital-modems to the digital lines of the
telephone company.  A "... concentrator" may  be called a "modem
concentrator" or a "remote access concentrator" or it could be included
in a "remote access server" which includes the modems, etc.  If you do
all of this you are like ISP (Internet Service Provider).
-->

56k でダイヤルインできるようにするつもりなら、以下のことをしない限り不
可能です :

<enum>
<item>電話会社へトランクサイド T1 あるいは ISDN などでデジタル接続する。
<item>特別なデジタルモデムを使用する。
<item>デジタルモデムに「コンセントレータ」などの、電話会社のデジタル回
 線へつなぐインタフェースがある。
</enum>

<!-- コンセントレータで良いんでしょうか -->
「コンセントレータ」を「モデムコンセントレータ」あるいは「リモートアク
セスコンセントレータ」とも呼びます。モデムがつながる「リモートアクセス
サーバ」にも、コンセントレータがあるかもしれません。もし上記の条件すべ
てを満たせるなら、あなたは ISP (プロバイダ)でしょう。

<!--
<sect1> Getty <label id="getty_">
<p> <tt/getty/ is the program you run for dialin.  You don't need it
for dialout.  In addition to presenting a login prompt, it also
answers the telephone.  Originally getty was used for logging in to a
computer from a dumb terminal.  It's currently used for logging in to a
Linux console).  There are a few different getty programs with
slightly different names.  Only certain ones work with modems for
dialin.  This <tt/getty/ program is usually started at boot-time.  It
must be called from the /etc/inittab file.  You may find an example in
this file of a call to getty which you will likely need to edit a bit.
If you use a different getty program than the one shown in such an
example, then you will need to edit it quite a bit since the options
will have a different format.
-->

<sect1> getty <label id="getty_">

<p> <tt/getty/ はダイヤルインを行うために動かすプログラムです。ダイヤ
ルアウトには必要ありません。ログインプロンプトを表示することに加え、電
話に応答します。もともと、getty はダム端末からコンピュータへログインす
るために使用していました。現在は Linux コンソールへのログインに使用し
ています。少しずつ異なった名前を持つ数種類の getty プログラムがありま
す。特定の getty がモデムでダイヤルインするために動作します。この 
<tt/getty/ プログラムはたいてい起動時に動きます。これは 
<tt>/etc/inittab</tt> が呼び出さなければなりません。このファイルの中に、
若干変更が必要となる getty を呼び出す例が見つかるかもしれません。例に
挙げたものとは異なる getty プログラムを使うのなら、オプションの形式が
異なるので、<tt>/etc/inittab</tt> を大幅に変更する必要があるでしょう。

<!--
<p> There are four different getty programs to choose from that may be
used with modems for dialin: <tt/mgetty/, <tt/uugetty/, <tt/getty_em/,
and <tt/agetty/.  A few details are given in the following
subsections.  <tt/agetty/ is the simplest (and weakest) of the four
and some consider it mainly for use with directly connected
text-terminals. <tt/mgetty/ has support for fax and voice mail but
<tt/Uugetty/ doesn't.  <tt/mgetty/ allegedly lacks a few of the features
of <tt/uugetty/.  <tt/getty_em/ is a simplified version of
<tt/uugetty/.  Thus <tt/mgetty/ is likely your best choice unless you
are already familiar with <tt/uugetty/ (or find it difficult to get
<tt/mgetty/).  The syntax for these getty programs differs, so be sure
to check that you are using the correct syntax in
<tt>/etc/inittab</tt> for whichever getty you use.
-->

<p> ダイヤルインのために使える、4 つの異なる getty プログラムがありま
す : <tt/mgetty/, <tt/uugetty/, <tt/getty_em/ および <tt/agetty/ です。
以下の節で、詳細について若干述べています。<tt/agetty/ は 4 つの中で最
も簡易(そして 貧弱)であり、主としてテキスト端末を直接接続するために使
用するものだと考える人もいます。<tt/mgetty/ は FAX およびボイスメール
をサポートしていますが、<tt/uugetty/ はサポートしていません。
<tt/mgetty/ は <tt/uugetty/ のいくつかの機能が不足しているようです。
<tt/getty_em/ は <tt/uugetty/ を簡易化したバージョンです。従って、既に 
<tt/uugetty/ に慣れている(あるいは <tt/mgetty/ を入手しにくい) という
ことでなければ、恐らく <tt/mgetty/ が最良の選択です。これら getty プロ
グラムの設定方法はそれぞれ異なるので、<tt>/etc/inittab</tt> で使用する 
getty に合った正しい文法を使うよう確認してください。

<!--
<sect2>About mgetty <label id="mgetty_">
<p>
<tt/mgetty/ was written as a replacement for <tt/uugetty/ which was
in existence long before <tt/mgetty/.  Both are for use with
modems.  Although <tt/mgetty/ may be also used for directly connected
terminals the documentation for this is hard to pinpoint and mgetty
will not (as of mid 1999) support software flow control (used on many
terminals) without recompiling.  This defect is listed as a bug.  In
addition to allowing dialup logins, <tt/mgetty/ also provides FAX
support and auto PPP detection.  There is a supplemental program
called <tt/vgetty/ which handles voicemail for some modems.
<tt/mgetty/ documentation is good (except for voice mail), and does
not need supplementing .  Please refer to it for installation
instructions.  You can find the latest information on <tt/mgetty/ at
<htmlurl url="http://www.leo.org/&tilde;doering/mgetty/"
name="http://www.leo.org/&tilde;doering/mgetty/"> and <url
url="http://alpha.greenie.net/mgetty">
-->

<sect2> mgetty について <label id="mgetty_">

<p> <tt/mgetty/ よりずっと前から存在していた <tt/uugetty/ を置き換える
ために <tt/mgetty/ は書かれました。双方ともモデムとともに使用します。
本文書で正確に述べるのは難しいですが、<tt/mgetty/ は端末を直接接続する
ためにも用いるものの、mgetty は (1999 年の半ばでは) 再コンパイルをしな
いと(多くの端末が使用する)ソフトウェアフロー制御をサポートしません。こ
の欠点はバグとして載っています。ダイヤルインでログインを可能にすること
に加え、<tt/mgetty/ は FAX のサポートおよび自動 PPP 検出も提供していま
す。モデムでボイスメールを扱う <tt/vgetty/ という追加プログラムもあり
ます。<tt/mgetty/ の文書は(ボイスメールの部分を除いて)よくできており、
追加情報がなくても問題ありません。インストール解説書を参照してください。
<tt/mgetty/ の最新情報は<url
url="http://www.leo.org/&tilde;doering/mgetty/"> および <url
url="http://alpha.greenie.net/mgetty"> で見つけられます。

<!--
<sect2>About uugetty <label id="uugetty_">
<p>	
<tt/getty_ps/  contains two programs: <tt/getty/ is used for console
and terminal devices, and <tt/uugetty/ for modems.  Greg Hankins
(former author of Serial-HOWTO) used <tt/uugetty/ so his writings
about it are included here.  See <ref id="uugetty_" name="Uugetty">.
The other gettys are well covered by the documentation that comes with
them.
-->

<sect2> uugetty について <label id="uugetty_">

<p> <tt/getty_ps/ は 2 つのプログラムを含んでいます : <tt/getty/ をコ
ンソールと端末装置のために用い、<tt/uugetty/ をモデムのために使用しま
す。(Serial-HOWTO の以前の著者である) Greg Hankins さんは、uugetty に
ついて書いていたので、<tt/uugetty/ を使っていました。<ref
id="uugetty_" name="uugetty"> をご覧ください。その他の getty はそれに
付属している文書で充分です。

<!--
<sect2> About getty_em <label id="getty_em_">
<p> This is a simplified version of ``uugetty''.  It was written by
Vern Hoxie after he became fully confused with complex support files
needed for getty_ps and uugetty.
-->

<sect2> getty_em について <label id="getty_em_">

<p> これは uugetty の簡易版です。getty_ps および uugetty に複雑なサポー
トファイルが必要になって完全に途方に暮れたので、Vern Hoxie さんが書き
ました。

<!--
It is part of the collection of serial port utilities and information
by Vern Hoxie available via ftp from <url
url="scicom.alphacdc.com/pub/linux">.  The name of the collection is
``serial_suite.tgz''.  When logging into ``scicom'' as "anonymous",
you must use your full e-mail address as the password.  For example:
greg.hankins@cc.gatech.edu
-->

getty_em は <url url="ftp://scicom.alphacdc.com/pub/linux"> において FTP で
入手可能な、Vern Hoxie さんのシリアルポートユーティリティおよび情報コ
レクションの一部です。このコレクションの名前は 
``<tt/serial_suite.tgz/'' です。``<tt/scicom/'' に ``<tt/anonymous/'' 
でログインする際には、パスワードとして完全なメールアドレスを使わなけれ
ばなりません。例えば、<tt/greg.hankins@cc.gatech.edu/ のように。

<!--
<sect2>About agetty and mingetty
<p>
<tt/agetty/ is a simple, completely functional implementation of
<tt/getty/ which is best suited for virtual consoles or terminals
rather than modems.  But it works fine with modems under favorable
conditions (except you cannot dial out when agetty is running and
waiting for a call).  <tt/agetty/ in the Debian distribution is just
named <tt/getty/.
-->

<sect2> agetty および mingetty について

<p> <tt/agetty/ は単純で、仮想コンソールあるいはモデムよりも端末に適し
た <tt/getty/ の、完全な実用本位の実装です。しかし、(agetty が稼動中あ
るいは着信待ちだと、発信できないことを除き) 状況が良ければモデムととも
にすばらしい働きをします。Debian の <tt/agetty/ は単に <tt/getty/ とい
う名前になっています。

<!--
<tt/mingetty/ is a small getty that will work only for consoles
(monitors) so you can't use it with modems for dialin.  
-->

<tt/mingetty/ はコンソール(画面)でのみ動く小さな getty なので、ダイヤ
ルイン用としてモデムとともに使用することはできません。

<!--
<sect1> What Happens when Someone Dials In ? 
<p> The caller runs some sort of communication program that dials your
telephone number and your telephone rings.  There are two different
ways that your PC can answer the phone.  One way is for the modem to
automatically answer the call.  The other way is for getty to sense
the ringing and send a command to the modem to answer the call.  Once
the call is answered, your modem sends tones to the other modem (and
conversely).  The two modems negotiate how they will communicate and
when this is done your modem sends a "CONNECTed" message (or the like)
to <tt/getty/.  When <tt/getty/ gets this message, it sends a login
prompt out the serial port.  Sometimes <tt/getty/ just calls on a
program named <tt/login/ to handle the logging in.  <tt/getty/ usually
starts running at boot-time but it must wait until a connection is
made before sending out a "login" prompt.
-->

<sect1> ダイヤルインの際に何が起こりますか?

<p> 発信者はあなたの電話番号をダイヤルする通信プログラムを動かし、あな
たの電話が鳴ります。ここで PC は 2 つの異なる方法で電話に応答できます。
ひとつはモデムが自動的に応答するものです。もうひとつは getty が着信を
感知し、モデムに応答するようコマンドを送るものです。いったん応答すると、
モデムは対向するモデムへ(逆方向に)信号を送出します。2 つのモデムはどの
ように通信するのか取り決め、それが済むとモデムは ``<tt/CONNECTed/'' な
どのメッセージを <tt/getty/ へ送ります。<tt/getty/ がこのメッセージを
受け取ると、シリアルポートへログインプロンプトを送出します。ときには、
<tt/getty/ はログインを扱う <tt/login/ という名のプログラムを呼び出し
ます。<tt/getty/ はたいてい起動時に動き始めます。しかし、ログインプロ
ンプトを送出するには、接続が確立するまで待たなければなりません。

<!--
Now for more details on the two methods of answering the call.  By
setting the S0 register of the modem to 3, the modem will
automatically answer on the 3rd ring.  If it's set to 0 then the modem
will only answer the call if getty sends it an "A" (= Answer) command
while the phone is ringing.  Actually an "ATA" is sent since all modem
commands are prefixed by "AT".  You might think it best to utilize the
ability of the modem to automatically answer the call, but it's
actually better if <tt/getty/ answers it.  If the modem doesn't
automatically answer, it's called manual answer (even though
<tt/getty/ automatically handles it).
-->

着信に応答する 2 つの方法をより詳しく述べます。モデムの S0 レジスタを 
3 に設定すると、モデムは 3 回目のベルで自動応答します。0 に設定すると、
電話が鳴っている間に getty がモデムに ``<tt/A/'' (= Answer) コマンドを
送ったときのみ、モデムが応答するようになります。正確には、すべてのモデ
ムコマンドは頭に ``<tt/AT/''が付くので、``<tt/ATA/'' を送ります。モデ
ムの自動応答機能を使うのが最も良いと考えるかもしれませんが、実際には 
<tt/getty/ が応答するほうが良いです。モデムが自動的に応答しないことを、
(たとえ <tt/getty/ が自動的に着信を扱ったとしても)手動応答と呼びます。

<!--
For the "manual" answer case, <tt/getty/ opens the port at boot-time and
listens.  When the phone rings, a "RING" message is sent to the
listening <tt/getty/.  Then if <tt/getty/ wants to answer this ring, it
sends the modem an "ATA" command.  The modem then makes a connection
and sends a "CONNECT ..." message to <tt/getty/ which then sends a login
prompt to the caller.
-->

「手動」応答では起動時に <tt/getty/ がポートを開き監視します。電話が鳴
ると、監視している <tt/getty/ へ ``<tt/RING/'' メッセージが送られます。
<tt/getty/ が応答するのなら、モデムへ ``<tt/ATA/'' コマンドを送出しま
す。そして、モデムは接続を確立し <tt/getty/ へ ``<tt/CONNECT .../'' メッ
セージを送り、<tt/getty/ は発信者へログインプロンプトを送出します。

<!--
The automatic answer case uses the CD (Carrier Detect) wire from the
modem to the serial port to detect when a connection is made.  It
works like this.  At boot-time <tt/getty/ tries to open the serial
port but the attempt fails since there is normally no CD signal from
the modem.  Then the <tt/getty/ program waits at the open statement in
the program until a CD signal appears.  When a CD signal arrives
(perhaps hours later) then the port is opened and <tt/getty/ sends the
login prompt.  While <tt/getty/ is waiting (sleeping) at the open
statement, other processes can run since Linux is a multiprocessing
operating system.  What actually wakes <tt/getty/ up is an interrupt
which is issued when the CD line from the modem changes state to on.
-->

自動応答時には、接続の確立を検知するため、モデムからシリアルポートへの
CD (Carrier Detect = キャリア検知)配線を使用します。これは以下のように
動作します。起動時に <tt/getty/ はシリアルポートを開くことを試みますが、
通常はモデムからの CD 信号がないので、それは失敗します。そして、
<tt/getty/ は CD 信号が現れるまで、ポートを開いた状態で待機します。(恐
らく数時間あとに) CD 信号が届くと、ポートが開かれ <tt/getty/ はログイ
ンプロンプトを送出します。Linux はマルチプロセスのオペレーティングシス
テムなので、<tt/getty/ が待機(スリープ)している間、他のプロセスは動く
ことができます。正確には、<tt/getty/ を動かすきっかけは、モデムからの 
CD 線の状態が ON に変わった際に発行される割込みです。

<!--
You may wonder how getty is able to open the serial port in the
manual-answer case since there is no CD signal.  Well, there's a way
to write a program to force the port to open even if there is no CD
signal present.
-->

手動応答時には CD 信号がないため、getty がどのようにしてシリアルポート
を開くのか不思議に思うかもしれません。たとえ CD 信号がなかったとしても、
ポートを開くよう強制するプログラムを書く方法があります。

<!--
<sect1> Why Manual Answer is Best
<p> The difference between the two ways of answering will show itself
when the computer happens to be down but the modem is still working.
For the manual case, the "RING" message is sent to getty but since the
computer is down, getty isn't there and the phone never gets answered.
There are no telephone charges when there is no answer.  For the
automatic answer case, the phone is answered but no login message is
ever sent since the computer is down.  The phone bill runs up as the
waiting continues.  If the phone call is toll-free, it doesn't make
much difference, although it may be frustrating waiting for a login
prompt that never arrives.  <tt/mgetty/ uses manual answer.  <tt/Uugetty/
can do this too using a configuration script.
-->

<sect1> なぜ手動応答が最も良いのか

<p> コンピュータが停止していてもモデムがまだ動作している場合、応答にお
ける 2 つの手法間で違いが現れます。手動応答では ``<tt/RING/'' メッセー
ジが getty へ送られますが、コンピュータが停止しているため getty は存在
せず、電話には決して応答しません。応答がないので電話料金はかかりません。
自動応答では、応答はあるもののコンピュータが停止しているので、ログイン
メッセージが来ないことになります。待機が続いているので、電話料金がかか
ります。永遠に来ないログインプロンプトを待ち続けるのはいらだたしいかも
しれません。もし電話料金が固定制ならばたいした違いはありません。
<tt/mgetty/ は手動応答を使用します。<tt/uugetty/ は設定スクリプトを使
用して、自動応答にできます。

<!--
<sect1> Callback
<p> Callback is where someone first dials in to your modem.  Then, you get a
little info from the caller and then call it right back.  Why would
you want to do this?  One reason is to save on telephone bills if you
can call the caller cheaper than the caller can call you.  Another is
to make sure that the caller really is who it claims to be.  If a
caller calls you and claims to be calling from its usual phone number,
then one way to verify this is to actually place a new call to that
number.
-->

<sect1> コールバック

<p> コールバックでは、誰かがあなたのモデムへまずダイヤルし、発信者の情
報を得て折り返し電話をかけます。なぜこんなことをしたいのでしょうか? 
ひとつには、発信者があなたに電話をかけるよりも、あなたが発信者にかける
ほうが料金が安いのならば、電話料金を節約できるからです。もうひとつは、
発信者が本当に接続してよい人物かどうかを確認するためです。発信者があな
たに電話をかけて、ある電話番号からかけていると主張したなら、これを確か
めるひとつの方法はその番号へ電話をかけなおすことです。

<!--
There's a program for Linux called "callback" that works with mgetty.
It's at <url url="ftp://ftp.icce.rug.nl/pub/unix/">.  Step-by-step
instructions on how someone installed it (and PPP) is at <url
url="http://www.stokely.com/unix.serial.port.resources/callback.html">
-->

Linux には mgetty とともに動作する ``callback'' という名のプログラムが
あります。<url url="ftp://ftp.icce.rug.nl/pub/unix/"> にあります。どの
ように callback (および PPP) をインストールしたのか、手順を追った解説
書が <url
url="http://www.stokely.com/unix.serial.port.resources/callback.html"> 
にあります。

<!--
<sect1> Voice Mail <label id="voice_">
<p> Voice mail is like an answering machine run by a computer.
To do this you must have a modem that supports "voice" and supporting
software.  Instead of storing the messages on tape, they are stored in
digital format on a disk.  When a person phones you, they hear a
"greeting" message and can then leave a message for you.  More
advanced systems would have caller-selectable mail boxes and
caller-selectable messages to listen to.  Free software is available in
Linux for simple answering, but doesn't seem to be available yet for
the more advanced stuff.
-->

<sect1> ボイスメール <label id="voice_">

<p> ボイスメールはコンピュータが動かす応答装置のようなものです。ボイス
メールを扱うためには、モデムが「音声」をサポートしていること、および補
助ソフトウェアが必要です。テープにメッセージを保存するのではなく、ディ
スク上にデジタル形式で保存します。誰かがあなたに電話をかけてきたときに、
応答メッセージを聴いてからメッセージを残せます。より高度なシステムは、
発信者がメールボックスや応答メッセージを選択できるでしょう。Linux にも
簡易な可能にするフリーソフトウェアがありますが、高性能なものはまだでき
ないようです。

<!--
I know of two different voicemail packages for Linux.  One is a very
minimal package (see <ref id="voice_sw" name="Voicemail Software">).
The other, more advanced, but currently poorly documented, is
<tt/vgetty/.  It's an optional addition to the well documented and
widely distributed <tt/mgetty/  program.  It supports ZyXEL-like voice
modem commands.  In the Debian distribution, you must get the
mgetty-voice package in addition to the mgetty package and mgetty-doc
package.  Obsolete documentation has been removed from mgetty but
replacement documentation is lacking (except if you use the -h (help)
option when running certain programs, etc.).  But one sees postings
about using it on the mgetty newsgroup.  See <ref id="mgetty_"
name="About mgetty"> and >.  It seems that <tt/vgetty/ is currently
not very stable but it's successfully being used and development of it
continues.  If this is the latest version of this HOWTO can someone
who is familiar with vgetty please let me know its current status.
-->

<!-- 原文に変なタグがついてる 消し忘れ? -->

著者は Linux の 2 つの異なるボイスメールソフトウェアを知っています。ひ
とつは非常に小さいものです(<ref id="voice_sw" name="ボイスメールソフト
ウェア"> をご覧ください)。もうひとつは <tt/vgetty/で、より高性能ですが
今はドキュメントが不充分です。vgetty は豊富なドキュメントがあり広く流
通している <tt/mgetty/ の、オプションの追加プログラムです。ZyXEL に似
たボイスモデムコマンドをサポートしています。Debian では mgetty および 
mgetty-doc パッケージに加えて、mgetty-voice パッケージを手に入れなけれ
ばなりません。時代遅れの文書は mgetty から削除されていますが、( プログ
ラムを動かし -h (help) オプションを使うことを除き) 代わりの文書が不足
しています。しかし、mgetty のニュースグループで使用法についての投稿を
見られます。<ref id="mgetty_" name="mgetty について"> をご覧ください。
現在 <tt/vgetty/ はそれほど安定していないようですが、幸運にも正しく動
作し、開発が進行中です。ご覧の HOWTO が最新バージョンなら、vgetty を良
く知っている人は著者に vgetty の現状を教えてくれませんか?

<!--
<sect> Uugetty for Dial-In (from the old Serial-HOWTO) <label id="uugetty_">
<p> Be aware that you could use mgetty as a (better?) alternative to
<tt/uugetty/.  <tt/mgetty/ is newer and more popular than uugetty.
See <ref id="getty_" name="What is getty?"> for a brief comparison of
these 2 gettys.
-->

<sect> ダイヤルイン用の uugetty (古い Serial-HOWTO から引用)
  <label id="uugetty_">

<p> mgetty を <tt/uugetty/ の(より良い?)代わりとして使えることを知って
ください。<tt/mgetty/ は uugetty よりも新しく、評判が良いです。2 つの 
getty の簡単な比較については <ref id="getty_" name="getty とは?"> をご
覧ください。

<!--
<sect1>Installing getty_ps
<p> Since uugetty is part of getty_ps you'll first have to install
getty_ps.  If you don't have it, get the latest version from <tt><htmlurl 
url="ftp://metalab.unc.edu:/pub/Linux/system/serial" 
name="metalab.unc.edu:/pub/Linux/system/serial"></tt>.  In particular,
if you want to use high speeds (57600 and 115200 bps), you must get
version 2.0.7j or later.  You must also have libc 5.x or greater.
-->

<sect1> getty_ps のインストール

<p> uugetty は getty_ps の一部なので、まず最初に getty_ps をインストー
ルしなければなりません。手元になければ、<tt><url
url="ftp://metalab.unc.edu:/pub/Linux/system/serial"></tt> から最新バー
ジョンを手に入れてください。特に、(57600 あるいは 115200 bps の)高速通
信をしたいなら、バージョン 2.0.7j 以降が必要です。また、libc 5.x 以降
も必要です。

<!--
<p> By default, <tt/getty_ps/ will be configured to be Linux FSSTND 
(File System Standard) compliant, which means
that the binaries will be in <tt>/sbin</tt>, and the config files
will be named <tt>/etc/conf.{uu}getty.ttyS</tt><em/N/.  This is not 
apparent from the documentation!  It will also expect lock files to go 
in <tt>/var/lock</tt>.  Make sure you have the <tt>/var/lock</tt> 
directory.  
-->

<p> デフォルトでは、<tt/getty_ps/ は FSSTND (File System Standard) に
従って設定されており、バイナリが <tt>/sbin</tt> に入っていて、設定ファ
イルは <tt>/etc/conf.{uu}getty.ttyS</tt><em/N/ という名前になっていま
す。このことは文書にはっきりと書いてはありません!  そして、ロックファ
イルを <tt>/var/lock</tt> に作ります。ディレクトリ <tt>/var/lock</tt> 
があることを確認してください。

<!--
<p>
If you don't want FSSTND compliance, binaries will go
in <tt>/etc</tt>, config files will go in 
<tt>/etc/default/{uu}getty.ttyS</tt><em/N/, and lock files will go in
<tt>/usr/spool/uucp</tt>.  I recommend doing things this way if you 
are using UUCP, because UUCP will have problems if you move
the lock files to where it isn't looking for them.
-->

<p> FSSTND に従いたくないなら、バイナリは <tt>/etc</tt> に、設定ファイ
ルは <tt>/etc/default/{uu}getty.ttyS</tt><em>N</em> になり、ロックファ
イルは、<tt>/usr/spool/uucp</tt> に入ります。もし UUCP を使うなら、こ
の方法を勧めます。なぜなら、UUCP は自分の知らないところへロックファイ
ルを移すと問題を起こすことがあるからです。

<!--
<p>	
<tt/getty_ps/ can also use <tt/syslogd/ to log messages.  See the man
pages for <tt/syslogd(1)/ and <tt/syslog.conf(5)/ for setting up
<tt/syslogd/, if you don't have it running already.  Messages
are logged with priority LOG_AUTH, errors use LOG_ERR, and debugging
uses LOG_DEBUG.  If you don't want to use <tt/syslogd/ you
can edit <tt/tune.h/ in the <tt/getty_ps/ source files to use a log 
file for messages instead, namely <tt>/var/adm/getty.log</tt> by 
default.
-->

<p> 更に、<tt>getty_ps</tt> は <tt>syslogd</tt> を使ってメッセージの記
録を取ります。もし、まだ <tt>syslogd</tt> を動かしていないのなら、
<tt>syslogd(1)</tt> と <tt>syslogd.conf(5)</tt> の man ページを見て設
定して下さい。メッセージは優先度付きで <tt/LOG_AUTH/、エラーは 
<tt/LOG_ERR/、デバッグは <tt/LOG_DEBUG/ へ記録されます。
<tt>syslogd</tt> を使いたくなければ、<tt>getty_ps</tt> のソースファイ
ルの中にある <tt>tune.h</tt> を編集してメッセージ出力やデバッグにはロ
グファイルを使用するように変更しましょう。省略時のログファイル名は 
<tt>/var/adm/getty.log</tt> になります。

<!--
<p>	
Decide on if you want FSSTND compliance and syslog capability.
You can also choose a combination of the two.  Edit the <tt/Makefile/,
<tt/tune.h/ and <tt/config.h/ to reflect your decisions.  Then 
compile and install according to the instructions included with the
package.
-->

<p> FSSTND 基準と syslogd の機能を採用するか決めてください。もちろん 2 
つを組み合わせることも出来ます。<tt>Makefile</tt>, <tt>tune.h</tt> お
よび <tt>config.h</tt> を、決定通りに編集します。パッケージに含まれる
説明に従ってコンパイルし、インストールします。

<!--
<sect1>Setting up uugetty
<p> With <tt/uugetty/ you may dial out with your modem while <tt/uugetty/
is watching the port for logins.  The original author of this HOWTO
said to use /dev/cuaN for dial-out (with uugetty running on
/dev/ttyN).  but others say you must use /dev/ttyN for both dial-in
and dial-out ??  
-->

<sect1> uugetty の設定

<p> <tt/uugetty/ がログインに使うポートを監視している間に、
<tt/uugetty/ を用いてモデムから電話をかけてもさしつかえありません。こ
の HOWTO の原著者は <tt>/dev/cuaN</tt> を電話をかけるために使うと述べ
ています (uugetty は <tt>/dev/ttyN</tt> で動いています)。しかし、他の
人はダイヤルインとダイヤルアウトの両方で <tt>/dev/ttyN</tt> を使わなけ
ればならないと言います。どちらが正しいのでしょう???

&lsqb;訳注 : <tt>/dev/cuaN</tt> と <tt>/dev/ttyN</tt> に関する議論は 
<ref id="cua_dev" name="cua デバイス"> にあります。&rsqb;

<!--
<tt/uugetty/ does important lock file checking.  Update 
<tt>/etc/gettydefs</tt> to include an entry for your modem.
When you are done editing <tt>/etc/gettydefs</tt>, you can verify
that the syntax is correct by doing:
-->

<tt/uugetty/ は重要なロックファイルの監視を行います。
<tt>/etc/gettydefs</tt> にモデムのエントリを追加します。
<tt>/etc/gettydefs</tt> の編集が終ったら、以下のようにして記述が正しい
か確認できます :

<tscreen><verb>
linux# getty -c /etc/gettydefs
</verb></tscreen>

<!--
<sect2> Modern Modems
<p> If you have a 9600 bps or faster modem with data compression, 
you can lock your serial port to one speed.  For example: 
-->

<sect2> 最近のモデム

<p> データ圧縮機能を持つ 9600 bps 以上のモデムでは、シリアルポートをひ
とつの速度へ固定できます。例えば :

<tscreen><verb>
# 115200 fixed speed
F115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #F115200
</verb></tscreen>

<!--
<p>	
If you have your modem set up to do RTS/CTS hardware flow control, you
can add <tt/CRTSCTS/ to the entries:  
-->

<p> RTS/CTS ハードウェアフロー制御を行うよう設定するなら、
<tt/CRTSCTS/ を追加します :

<tscreen><verb>
# 115200 fixed speed with hardware flow control
F115200# B115200 CS8 CRTSCTS # B115200 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F115200
</verb></tscreen>

<!--
<sect2> Old slow modems 
<p> If you have a slow modem (under 9600 bps) Then, instead of one
line for a single speed, your need several lines to try a number of
speeds.  Note the these lines are linked to each other by the last
"word" in the line such as #38400.  Blank lines are needed between
each entry.  
-->

<sect2> 古い低速のモデム

<p> (9600 bps 以下の)低速モデムでは、特定の速度用に 1 行記述する代わり
に、いくつかの速度を試すために複数の行が必要です。<tt/#38400/ といった
各行の最後の「単語」により、モデムのエントリはお互いにリンクしているこ
とを注意して下さい。また、各行の間には空白行が１行必要になることにも注
意して下さい。

<tscreen><verb>
# Modem entries
115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #57600

57600# B57600 CS8 # B57600 SANE -ISTRIP HUPCL #@S @L @B login: #38400

38400# B38400 CS8 # B38400 SANE -ISTRIP HUPCL #@S @L @B login: #19200

19200# B19200 CS8 # B19200 SANE -ISTRIP HUPCL #@S @L @B login: #9600

9600# B9600 CS8 # B9600 SANE -ISTRIP HUPCL #@S @L @B login: #2400

2400# B2400 CS8 # B2400 SANE -ISTRIP HUPCL #@S @L @B login: #115200
</verb></tscreen>
<p>

<!--
<sect2> Login Banner
<p> If you want, you can make <tt/uugetty/ print interesting things in
the login banner.  In Greg's  examples, he has the system name, the
serial line, and the current bps rate.  You can add other things:
-->

<sect2> ログインバナー

<p> お望みなら、<tt/uugetty/ に、ログイン時に面白そうなバナーを表示さ
せることもできます。Greg さんの例では、システムネームとシリアルライン
名、そして通信速度です。他にも以下のようなものがあります :

<!--
<tscreen><verb>
       @B    The current (evaluated at the time the @B is seen) bps rate.
       @D    The current date, in MM/DD/YY.
       @L    The serial line to which uugetty is attached.
       @S    The system name.
       @T    The current time, in HH:MM:SS (24-hour).
       @U    The number of currently signed-on users.  This is  a
             count of the number of entries in the /etc/utmp file
             that have a non-null ut_name field.
       @V    The value of VERSION, as given in the defaults file.
       To display a single '@' character, use either '\@' or '@@'.
</verb></tscreen>
-->

<tscreen><verb>
       @B   現在の通信速度 (bps, @B を変換するときに調べる)
       @D   MM/DD/YYであらわされる年月日
       @L   uugetty が属するシリアルライン (ttySN)
       @S   システム名
       @T   HH:MM:SS で表される時分秒 (24時間制).
       @U   現在の接続ユーザー数 
　　　      これは、 /etc/utmp ファイル内の ut_name フィールド
　　　      のうち有効なレコードの数です。
       @V   バージョン  デフォルトファイルで指定した OS バージョン
       '@' そのものを表示したければ、 '\@' か '@@' を使ってください。
</verb></tscreen>

<!--
<sect1>Customizing uugetty

<p> There are lots of parameters you can tweak for each port you have.  
These are implemented in separate config files for each port.
The file <tt>/etc/conf.uugetty</tt> will be used by <em/all/
instances of <tt/uugetty/, and <tt>/etc/conf.uugetty.ttyS</tt><em/N/
will only be used by that one port.  Sample default config files can 
be found with the <tt/getty_ps/ source files, which come with most
Linux distributions.  Due to space concerns, 
they are not listed here.  Note that if you are using older versions
of <tt/uugetty/ (older than 2.0.7e), or aren't using FSSTND, then the 
default file will be <tt>/etc/default/uugetty.ttyS</tt><em/N/.  Greg's 
<tt>/etc/conf.uugetty.ttyS3</tt> looked like this:
-->

<sect1> uugetty のカスタマイズ

<p> 各ポートを自在に制御できる数多くのパラメーターが揃っています。それ
ぞれのポートを個別に設定できるようポート単位の設定ファイルが用意されて
います。<tt>/etc/conf.uugetty</tt> は <tt>uugetty</tt> <em>共通の</em> 
設定ファイルで、<tt>/etc/conf.uugetty.ttyS</tt><em>N</em> がそのポート
だけの設定ファイルです。たいていの linux ディストリビューションに付属
している <tt>getty_ps</tt> のソースファイルの中に、これらのサンプルファ
イルが含まれています。スペースの関係で、ここには掲載しません。(2.0.7e
以前の)古いバージョンの <tt>uugetty</tt> を使っているか、FSSTND 互換に
しなかった場合は、設定ファイルは 
<tt>/etc/default/uugetty.ttyS</tt><em>N</em> になっていることに注意し
て下さい。著者の <tt>/etc/conf.uugetty.ttyS3</tt> は、次のようなもので
す。

<tscreen><verb>
# sample uugetty configuration file for a Hayes compatible modem to allow
# incoming modem connections
#
# alternate lock file to check... if this lock file exists, then uugetty is
# restarted so that the modem is re-initialized
ALTLOCK=cua3
ALTLINE=cua3
# line to initialize
INITLINE=cua3
# timeout to disconnect if idle...
TIMEOUT=60
# modem initialization string... 
# format: <expect> <send> ... (chat sequence)
INIT="" AT\r OK\r\n
WAITFOR=RING
CONNECT="" ATA\r CONNECT\s\A
# this line sets the time to delay before sending the login banner
DELAY=1
#DEBUG=010
</verb></tscreen>

<!--
<p>
Add the following line to your <tt>/etc/inittab</tt>, so that 
<tt/uugetty/ is run on your serial port, substituting in the correct
information for your environment - run-levels (2345 or 345, etc.)
config file location, port, speed, and default terminal type:
-->

次に、<tt>/etc/inittab</tt> へ以下に示す行を追加します。シリアルポート
に対して <tt>uugetty</tt> が動くよう、(2345 あるいは 345 といった)ラン
レベル、設定ファイルの場所、ポート、速度、そしてデフォルトの端末タイプ
などの環境に合わせて正しく設定してください。

<tscreen><verb>
S3:2345:respawn:/sbin/uugetty -d /etc/default/uugetty.ttyS3 ttyS3 F115200 vt100
</verb></tscreen>

<!--
Restart <tt/init/:
-->
<tt/init/ を再起動します :

<tscreen><verb>
linux# init q 
</verb></tscreen>

<!--
For the speed parameter in your <tt>/etc/inittab</tt>, you want to use 
the highest bps rate that your modem supports.
-->

<tt>/etc/inittab</tt> において、速度パラメータとしてモデムがサポートす
る最高速度を使いたいでしょう。

<!--
<p>
Now Linux will be watching your serial port for connections.
Dial in from another machine and login to you Linux system.
-->

<p> これで、シリアルポートへの接続を Linux が監視します。別のマシンから
電話をかけ、Linux へログインしてください。

<!--
<p> <tt/uugetty/ has a lot more options, see the man
page for <tt/uugetty)/ (often just called <tt/getty/) for a full
description.  Among other things there is a scheduling feature, and a
ringback feature.
-->

<p> <tt/uugetty/ は更に多くのオプションがあります。完全な説明は (しば
しば <tt>uugetty</tt> と呼ばれる) <tt>getty(1m)</tt> のマニュアルを見
てください。この他にもスケジューリング機能やコールバック機能があります。

&lsqb;訳注 : マニュアルの管理コマンドセクション <tt/1m/ は、現在は セ
クション <tt/8/ になっています。&rsqb;

<!--
<sect>What Speed Should I Use with My Modem? <label id="speed_">

<p> By "speed" we really mean the "data flow rate" but almost everybody
incorrectly calls it speed.  For all modern modems you have no choice
of the speed that the modem uses on the telephone line since it will
automatically choose the highest possible speed that is possible under
the circumstances.  But you do have a choice as to what speed will be
used between your modem and your computer.  This is sometimes called
"DTE speed" where "DTE" stands for Data Terminal Equipment (Your
computer is a DTE.)  You need to set this speed high enough so this
part of the signal path will not be a bottleneck.  The setting for the
DTE speed is the maximum speed of this link.  Most of the time it will
likely operate at lower speeds.
-->

<sect> モデムで使うべき速度は? <label id="speed_">

<p> 著者は「速度」を「データ転送速度」のつもりで使っていますが、ほとん
どの人は間違って速度と呼んでいます。最近のモデムは状況が許す最も高い速
度を自動的に選択するので、ユーザがモデムの電話回線上での速度を選べませ
ん。しかし、モデムとコンピュータ間の速度なら選べます。この速度を「DTE 
速度」と呼ぶこともあります。ここで、``DTE'' は Data Terminal Equipment 
を表します(コンピュータは DTE です)。信号が流れる経路の中でこの部分が
ボトルネックにならないよう、この速度を充分に速く設定する必要があります。
DTE 速度の設定は、この接続で可能な限り高い速度にします。多くの場合、恐
らくそれより低い速度でしか使わないでしょう。

<!--
For an external modem, DTE speed is the speed (in bits/sec) of the
flow over the cable between you modem and PC.  For an internal modem,
it's the same idea since the modem also emulates a serial port.  It
may seem ridiculous having a speed limit on communication between a
computer and a modem card that is directly connected inside the
computer to a much higher speed bus.  But it's that way since the
modem card probably includes a dedicated serial port which does have
speed limits (and settable speeds).
-->

外付けモデムでは、DTE 速度はモデムと PC の間のケーブルを流れるデータの
速度です (bit/sec で表現します)。内蔵モデムでは、シリアルポートのよう
に動作するので、外付けモデムと同じように考えます。モデムボードとコン
ピュータはかなり高速なバスで直接接続されているので、速度に限界があるこ
とはおかしいと感じるかもしれません。しかし、モデムボードには速度に限界
のある(そして速度を設定できる) 専用のシリアルポートがあるのです。

<!--
<sect1> Speed and Data Compression
<p> What speed do you choose?  If it were not for "data compression"
one might try to choose a DTE speed exactly the same as the modem
speed.  Data compression takes the bytes sent to the modem from your
computer and encodes them into a fewer number of bytes.  For example,
if the flow (speed) from the PC to the modem was 20,000 bytes/sec
(bps) and the compression ratio was 2 to 1, then only 10,000 bytes/sec
would flow over the telephone line.  Thus for a 2:1 compression ratio
you need to set the speed double the maximum modem speed on the phone
line.  If the compression ratio is 3 to 1 you need to set it 3 times
faster.  
-->

<sect1> 速度とデータ圧縮

<p> どのような速度を選びましたか?  「データ圧縮」がなければ、モデムの
速度とちょうど同じ DTE 速度を選ぶ人もいるでしょう。データ圧縮はコンピュー
タからモデムへ送るデータを扱い、より少ないデータへ符号化します。例えば、
PC からモデムへの速度が 20,000 bytes/sec (bps) で圧縮率が 2:1 なら、
10,000 bytes/sec のデータだけが電話回線上を流れます。従って、圧縮率が 
2:1 だと、電話回線上での最も高いモデムの速度の2 倍を設定する必要があり
ます。圧縮率が 3:1 なら、3 倍高速に設定しなければなりません。

<!--
<sect1> Where do I Set Speed ?
<p> This DTE speed is normally set by a menu in your communications
program or by an option given to the getty command if someone is
dialing in.  You can't set the DCE modem-to-modem speed.
-->

<sect1> どこで速度を設定するの?

<p> 通常、DTE 速度は通信プログラムのメニューや、ダイヤルインの際に使う 
getty コマンドのオプションで設定します。モデム間の DCE 速度は設定でき
ません。

<!--
<sect1> Can't Set a High Enough Speed
-->
<sect1> 充分に高い速度へ設定できない

<!-- high_speed.H begin  -->
<!--
<p> You need to find out the highest speed supported by your hardware.
As of late 1998 most hardware only supported speeds up to 115.2K bps.
A few 56K internal modems support 230.4K bps.  Recent Linux kernels
support high speeds (over 115.2K) but you might have difficulty using
it because of one or both of the following reasons:
-->

<p> ハードウェアがサポートする最も高い速度を知る必要があります。1998 
年の終りには、多くのハードウェアは 115.2K bps 程度の速度をサポートして
いました。そして、少数の 56K 内蔵モデムだけが 230.4K bps をサポートし
ていました。最近の Linux カーネルは (115.2K 以上の)速い速度をサポート
していますが、以下に挙げる複数の理由により、それを利用するには困難が伴
うかもしれません。

<!--
<enum>
<item> The application program (or stty) will not accept the high speed.
<item> Setserial has a default speed of 115,200 (but this default is
easy to change)
</enum>
-->

<enum>
<item> アプリケーションプログラム(あるいは stty) が
速い速度に対応できない。
<item> setserial のデフォルト速度は 115,200 bps である
(しかし、変更は簡単です)。
</enum>

<!--
<sect2> How speed is set in hardware: the divisor and baud_base <label
 id="divisor_">
<p> Here's a list of commonly used divisors and their corresponding
speeds (assuming a maximum speed of 115,200): 1 (115.2K), 2 (57.6K), 3
(38.4K), 6 (19.2K), 12 (9.6K), 24 (4.8K), 48 (2.4K), 96 (1.2K), etc.
The serial driver sets the speed in the hardware by sending the
hardware only a "divisor" (a positive integer).  This "divisor"
divides the maximum speed of the hardware resulting in a slower speed
(except a divisor of 1 obviously tells the hardware to run at maximum
speed).  
-->

<sect2> どのようにハードウェア中で速度が設定されているか :
除数とボーレート <label id="divisor_">

<p> ここに、通常使用する除数の一覧を挙げます。(最高速度が 115,200 なら) 
対応する速度は : 1 (115.2K), 2 (57.6K), 3(38.4K), 6 (19.2K), 12
(9.6K), 24 (4.8K), 48 (2.4K), 96 (1.2K) などです。シリアルドライバは
(正の整数の) 「除数」だけを送り、ハードウェアに速度を設定します。この
「除数」でハードウェアの最高速度を割り、より遅い速度になります(明らか
ですが、除数 1 はハードウェアに最高速度で動作するよう命令します)。

<!--
Normally, if you specify a speed of 115.2K (in your communication
program or by stty) then the serial driver sets the port hardware to
divisor 1 which obviously sets the highest speed.  If you happen to
have hardware with a maximum speed of say 230.4K, then specifying
115.2K will result in divisor 1 and will actually give you 230.4K.
This is double the speed that you set.  In fact, for any speed you
set, the actual speed will be double.  If you had hardware that could
run at 460.8K then the actual speed would be quadruple what you set.
-->

通常、(通信プログラムか stty で) 115.2k の速度を指定したなら、シリアル
ドライバはポートのハードウェアを、最も速い速度を指定する除数 1 に設定
します。最高速度が 230.4k のハードウェアをたまたま持っていたなら、
115.2k を指定すると除数が 1 となり、実際に設定される速度は 230.4k にな
ります。設定の 2 倍になります。事実、どの速度に設定しても、本当の速度
は設定の 2 倍になります。460.8k で動作するハードウェアでは、本当の速度
は設定した速度の 4 倍になります。

<!--
<sect2> Work-arounds for setting speed
<p> To correct this accounting (but not always fix the problem) you
may use "setserial" to change the baud_base to the actual maximal
speed of your port such as 230.4K.  Then if you set the speed (by your
application or by stty) to 230.4K, a divisor of 1 will be used and
you'll get the same speed as you set.  PROBLEM: stty and many
communication programs (as of mid 1999) still have 115.2K as their
maximum speed setting and will not let you set 230.4K, etc.  So in
these cases one solution is not to change anything with <tt/setserial/
but mentally keep in mind that the actual speed is always double what
you set.
-->

<sect2> 速度設定のおまけ

<p> (必ずしも問題を解決できるとは限りませんが)この状態を修正するため、
``setserial'' の <tt/baud_base/ オプションを使って 230.4k などポートの
正しい最高速度へ変更するのが良いでしょう。(アプリケーションや stty で)
速度を設定したなら、除数 1 を使い設定した通りの速度を使えるようになり
ます。問題 : (1999 年の中ごろでは) stty と多くの通信プログラムは最高速
度が 115.2k であり、230.4k などには設定できないでしょう。従って、この
ような場合でのひとつの解決法は、<tt/setserial/ で何も変更せず、正しい
速度は常に設定の 2 倍であると自分に言い聞かせることです。

<!--
There's another work-around which is not much better.  To use it you
set the baud_base (with setserial) to the maximal speed of your
hardware.  This corrects the accounting so that if you set say 115.2K
you actually get 115.2K.  Now you still have to figure out how to set
the highest speed if your communication program (or the like) will not
let you do it.  Fortunately, setserial has a way to do this: use the
"spd_cust" parameter with "divisor 1".  Then when you set the speed to
38400 in a communication program, the divisor will be set to 1 in the
port and it will operate at maximum speed.  For example:<newline>
setserial /dev/ttyS2 spd_cust baud_base 230400 divisor 1<newline>
Don't try using "divisor" for any other purpose other than the special
use illustrated above (with spd_cust).
-->

それほど好ましくはないのですが、もうひとつおまけがあります。(setserial 
で) <tt/baud_base/ をハードウェアの最高速度へ設定します。この操作は、
115.2k に設定したなら正確に 115.2k の設定になるよう、計算方法を修正し
ます。使っている通信プログラムなどがこの修正をしてくれないなら、どのよ
うにして最高速度へ設定するのか更に理解する必要があります。幸運にも、
setserial には修正の方法があります : ``<tt/divisor 1/'' とともに 
``<tt/spd_cust/'' パラメータを用います。通信プログラムで速度を 38400 
に設定すると、ポートの除数は 1 と設定され最高速度で動作します。例えば 
:

<tscreen><verb>
setserial /dev/ttyS2 spd_cust baud_base 230400 divisor 1
</verb></tscreen>

(<tt/spd_cust/ とともに用いる)上に挙げた特殊用途以外の目的には、
``<tt/divisor/'' オプションを試さないでください。

<!--
If there are two or more high speeds that you want to use that your
communication program can't set, then it's not quite as easy as above.
But the same principles apply.   You could just keep the default
baud_base and understand that when you set a speed you are really only
setting a divisor.  So your actual speed will always be your maximum
speed divided by whatever divisor is set by the serial driver.  See
<ref id="divisor_" name="How speed is set in hardware: the divisor and
baud_base">
-->

通信プログラムで設定できないような高速の設定を使いたいとしても、上の例
と同じくらい簡単にはいきません。しかし、同じ原理が適用できます。
<tt/baud_base/ をデフォルト設定のままにし、速度設定の際に除数のみを設
定します。従って、実際の速度はシリアルドライバに設定した除数で、モデム
の最高速度を割った値になります。<ref id="divisor_" name="どのようにハー
ドウェア中で速度が設定されているか : 除数とボーレート"> をご覧ください。

<!--
<sect2> Crystal frequency is not baud_base
<p> Note that the baud_base setting is usually much lower than the
frequency of the crystal oscillator in the hardware since the crystal
frequency is often divided by 16 in the hardware to get the actual top
speed.  The reason the crystal frequency needs to be higher is so that
this high crystal speed can be used to take a number of samples of
each  bit to determine if it's a 1 or a 0.
-->

<sect2> 水晶の振動数は baud_base ではありません

<p> たいてい、設定した <tt/baud_base/ はハードウェア中の水晶発振子の振
動数よりも、ずっと小さな値だということを知ってください。これは、正確な
最高速度を得るために、水晶の振動数を 1/16 にすることもあるからです。多
くのサンプル点の各ビットを 1 か 0 か決定するために、この高い水晶の振動
数を使用します。これが水晶の振動数を比較的高くしなければならない理由で
す。

<!-- high_speed.H end  -->
 
<!--
<sect1> Speed Table <label id="speed_table">
<p> It's best to have at least a 16650 UART for a 56K modem but few
modems support it.  Second best is a 16550 that has been tweaked to
give 230,400 bps.  Here are some suggested speeds to set your serial
line if your modem speed is:
-->

<sect1> 速度表 <label id="speed_table">

<p> 56k モデムがあるので、最低でも 16650 UART を使うのがもっとも良いで
す。しかし、ほとんどのモデムは 56k を出せません。次に良いのは、230,400
bps を出すよう 16650 UART を調整することです。モデムの速度によって異な
る、望ましいシリアルの速度をここに挙げます :

<!--
<itemize>
<item>  56K (V.90) use 115200 bps or 230400 bps (a few % faster ?) 
<item>  28.8K (V.34), 33.6K (V.34) use 115200 bps
<item> 14400 bps (V.32bis), with V.42bis data compression, use 57600 bps
<item> 9600 bps (V.32), with V.42bis data compression, use 38400 bps
<item> slower than a 9600 bps (V.32) modem, set your speed to the
 highest speed your modem supports.
</itemize>
-->

<itemize>
<item>  56K (V.90) モデムでは 115200 bps あるいは 230400 bps
 (もう数 % 速く ?) 
<item>  28.8K (V.34), 33.6K (V.34) モデムでは 115200 bps
<item> V.42bis データ圧縮付き 14400 bps (V.32bis) モデムでは 57600 bps
<item> V.42bis データ圧縮付き 9600 bps (V.32) モデムでは 38400 bps
<item> 9600 bps (V.32) より低速のモデムではモデムがサポートする最高速度
</itemize>

<!--
<sect>Communications Programs And Utilities<label id="comms">
<p> PPP is by far the most widely used.  It's used for Internet
access.  For dialing out to public libraries, bulletin boards, etc.
<tt/minicom/ is the most popular followed by <tt/Seyon/ (X-Windows
only) and <tt/Kermit/.
-->

<sect> 通信プログラムとユーティリティ <label id="comms">

<p> PPP は非常に広く使われており、インターネットへの接続に使用します。
公立図書館、あるいは掲示板などへ電話をかけるためには、<tt/Seyon/
(X-Window System のみ) に付属する <tt/minicom/ と <tt/Kermit/ がもっと
も一般的です。

<!--
<sect1> Minicom vs. Kermit
<p> Minicom is only a communications program while Kermit is both a
communications program and a file transfer protocol.  But one may use
the Kermit protocol from within Minicom (provided one has Kermit
installed on one's PC) .  Minicom is menu based while Kermit is
command line based (interactive at the special Kermit prompt).  While
the Kermit program is free software, the documentation is not all
free.  There is no detailed manual supplied and it is suggested that
you purchase a book as the manual.  However Kermit has interactive
online help which tells all but lacks tutorial explanations for the
beginner.  Commands may be put in a script file so you don't have to
type them over again each time.  Kermit (as a communications program)
is more powerful than Minicom. 
-->

<sect1> Minicom と Kermit

<p> Minicom はただの通信プログラムです。一方、Kermit は通信プログラム
でもありファイル転送プロトコルでもあります。しかし、(Kermit を PC にイ
ンストールしたなら) Minicom を使用中に Kermit プロトコルを使う人もいる
かもしれません。Minicom はメニューベースで、Kermit は(専用プロンプトで
の対話的な)コマンドラインベースです。Kermit はフリーソフトウェアですが、
ドキュメントはすべてがフリーと言うわけではありません。詳細なマニュアル
はなく、マニュアルとして書籍を購入するよう勧めています。しかし、Kermit 
はすべての項目について対話的なオンラインヘルプがあるものの、初心者向け
のチュートリアルがありません。コマンドはスクリプト中に記述するので、毎
回コマンドをタイプする必要がありません。(通信プログラムとしての)
Kermit は Minicom よりも強力です。

<!--
Although all Minicom documentation is free, it's not as extensive as
Kermit's.  Since permission is required to include Kermit in a
commercial distribution, and since the documentation is not entirely
free, some distributions don't include Kermit.  In my opinion it's
easier to set up Minicom and there is less to learn.  
-->

Minicom のドキュメントはすべてフリーであるものの、Kermit の文書ほど広
範囲にわたる記述はありません。商用ディストリビューションに Kermit を収
録するには許可が必要です。文書が完全にフリーではないため、Kermit を収
録しないディストリビューションもあります。著者の意見では、Minicom の設
定はより簡単で、学ばなければいけないことも少ないです。

<!--
<sect1> Lists of Programs 
<p> Here is a list of some communication software you can choose from,
available via FTP, if they didn't come with your distribution.  I
would like comparative comments on the dialout programs.  Are the
least popular ones obsolete?
-->

<sect1> プログラムのリスト

<p> FTP で入手できる通信プログラムの一覧を挙げます。ディストリビューショ
ンに含まれていないなら、この一覧から選んでください。まず、ダイヤルアウ
トを行うプログラムを比較したいと思います。最も人気のないものは既に時代
遅れなのでしょうか?

<!--
<sect2> Least Popular Dialout 
<p> <itemize>
<item><tt/ecu/ - a communications program
<item><tt/pcomm/ - <tt/procomm/-like communications program with zmodem
<item><tt/xc/ - xcomm communication package
</itemize>
-->

<sect2> 最も人気のないダイヤルアウトプログラム
<p>
<itemize>
<item><tt/ecu/   - 通信プログラム
<item><tt/pcomm/ - <tt/procomm/ に似た zmodem を含んでいる通信プログラム
<item><tt/xc/    - xcomm 通信プログラムパッケージ
</itemize>

<!--
<sect2> Most Popular Dialout
<p> <itemize>
<item><tt/minicom/ - <tt/telix/-like communications program.  Supports
 scripts, zmodem, kermit
<item><url url="http://www.columbia.edu/kermit/" name="C-Kermit"> - 
 portable, scriptable, serial and TCP/IP communications including file 
 transfer, character-set translation, and zmodem support
<item><tt/seyon/ - X based communication program
</itemize>
-->

<sect2> 最も人気のあるダイヤルアウトプログラム
<p>
<itemize>
<item><tt/minicom/ - スクリプト、zmodem, kermit をサポートした
 <tt/telix/ に似た通信プログラム。
<item><url url="http://www.columbia.edu/kermit/" name="C-Kermit"> - ファ
 イル転送、文字コード変換、そして zmodem をサポートする移植性の高いス
 クリプトが組めるシリアルと TCP/IP の通信プログラム
<item><tt/seyon/ - X ベースの通信プログラム
</itemize>

<!--
<sect2> Fax <label id="fax_">
<p> <itemize>
<item> <tt/efax/ a small fax program
<item> <tt/hylafax/ a large fax program based on the client-server
 model.
<item><tt/mgetty+fax/ handles fax stuff and login for dial-ins 
</itemize>
-->

<sect2> Fax <label id="fax_">
<p>
<itemize>
<item> <tt/efax/ 小さな FAX プログラム
<item> <tt/hylafax/ クライアント - サーバ モデルに基づいた
 巨大な FAX プログラム
<item><tt/mgetty+fax/ FAX も扱い、ダイヤルインのログインを処理するプログラム
</itemize>

<!--
<sect2> Voicemail Software <label id="voice_sw">
<p> <itemize>
<item> <url url=" http://www-internal.alphabet.ch/~schaefer/mvm/"
name="mvm"> is a Minimal VoiceMail for Linux

<item> vgetty is an extension to mgetty that handles voicemail for
 some modems.  It should come with recent releases of mgetty.
</itemize>
-->

<sect2> ボイスメールソフトウェア <label id="voice_sw">
<p>
<itemize>
<item> <url url=" http://www-internal.alphabet.ch/~schaefer/mvm/"
name="mvm"> は Linux 用の非常に小さいボイスメールソフトウェアです。
<item> vgetty はモデム用のボイスメールを扱う mgetty の拡張です。
 mgetty の新しいバージョンに同梱されています。
</itemize>

<!--
<sect2> Dial-in (uses getty)
<p> <itemize>
<item><tt/mgetty+fax/ is for modems and is well documented (except for
voicemail as of early 1999).  It also handles fax stuff and provides
an alternative to <tt/uugetty/.  It's incorporating voicemail (using
vgetty) features.  See <ref id="mgetty_" name="About mgetty">

<item> <tt/uugetty/ is also for modems.  It comes as a part of the
<tt/ps_getty/ package.  See <ref id="uugetty_" name="About
getty_ps"></itemize>
-->

<sect2> (getty を用いた) ダイヤルイン
<p>
<itemize>
<item> (1999 年の始めでは、ボイスメールに関する部分を除いて) モデム用
 の <tt/mgetty+fax/ はドキュメントが豊富です。FAX を扱い <tt/uugetty/ 
 の代わりに使えます。(vgetty を用いて)ボイスメール機能を統合しています。
 <ref id="mgetty_" name="mgetty について"> をご覧ください。
<item> <tt/uugetty/ もモデム用です。<tt/ps_getty/ パッケージの一部です。
 <ref id="uugetty_" name="getty_ps について"> をご覧ください。
</itemize>

<!--
<sect2> Other
<p> <itemize>
<item><tt/callback/ is where you dial out to a remote modem and then
 that modem hangs up and calls you back (to save on phone bills).

<item><tt/SLiRP/ and <tt/term/ provide a PPP-like service that you can
 run in user space on a remote computer with a shell account.
 See <ref id="term+slurp" name="term and SLiRP"> for more details

<item><tt/ZyXEL/ is a control program for ZyXEL U-1496 modems.  It 
 handles dialin, dialout, dial back security, FAXing, and voice
 mailbox functions.

<item>SLIP and PPP software can be found at
 <tt> <htmlurl url="ftp://metalab.unc.edu/pub/Linux/system/network/serial"
 name="ftp://metalab.unc.edu/pub/Linux/system/network/serial"></tt>.

<item>Other things can be found on 
 <tt><htmlurl url="ftp://metalab.unc.edu/pub/Linux/system/serial"
 name="ftp://metalab.unc.edu/pub/Linux/system/serial"></tt> and
 <tt><htmlurl url="ftp://metalab.unc.edu/pub/Linux/apps/serialcomm"
 name="ftp://metalab.unc.edu/pub/Linux/apps/serialcomm"></tt> or one of the 
 many mirrors.  These are the directories where serial programs are kept.
</itemize>
-->

<sect2> その他
<p>
<itemize>
<item> <tt/callback/ は他のモデムへ電話をかけ、(電話料金を節約するため
 に)電話を切ってコールバックします。
<item><tt/SLiRP/ と <tt/term/ は、シェルアカウントがある遠隔地のコン
 ピュータのユーザ空間で動作させ、 PPP に似たサービスを提供します。詳細
 は <ref id="term+slurp" name="term と SLiRP"> をご覧ください。
<item><tt/ZyXEL/ は ZyXEL U-1496 モデムの制御プログラムです。発着信、
 セキュリティのためのコールバック、FAX、そしてボイスメールの機能があり
 ます。
<item>SLIP と PPP のソフトウェアは<tt> <htmlurl
 url="ftp://metalab.unc.edu/pub/Linux/system/network/serial"
 name="ftp://metalab.unc.edu/pub/Linux/system/network/serial"></tt> で
 見つけられます。
<item>他には<tt><htmlurl
 url="ftp://metalab.unc.edu/pub/Linux/system/serial"
 name="ftp://metalab.unc.edu/pub/Linux/system/serial"></tt> と
 <tt><htmlurl url="ftp://metalab.unc.edu/pub/Linux/apps/serialcomm"
 name="ftp://metalab.unc.edu/pub/Linux/apps/serialcomm"></tt> あるい
 は多くのミラーサイトで見つけられます。これらはシリアル通信に関連した
 プログラムがあるディレクトリです。
</itemize>

<!--
<sect1> SLiRP and term <label id="term+slurp">
<p> <tt/SLiRP/ and <tt/term/ are programs which are of use if you only
have a dial-up shell account on a Unix-like machine and want to get
the equivalent of a PPP account (or the like) without being authorized
to have it (possibly because you don't want to pay extra for it, etc.).
<tt/SLiRP/ is more popular than <tt/term/ which is almost obsolete.
-->

<sect1> SLiRP と term <label id="term+slurp">

<p> UNIX 系のマシンにダイヤルアップのシェルアカウントしかなく、認証な
しで(あるいは追加料金を払いたくないなどの理由で) PPP アカウントと同等
の機能を使いたい場合、<tt/SLiRP/ と <tt/term/ を用います。<tt/SLiRP/ 
はほとんど廃れてしまった <tt/term/ よりも人気があります。

<!--
To use <tt/SLiRP/ you install it in your shell account on the remote
computer.  Then you dial up the account and run SLiRP on the remote
and PPP on your local PC.  You now have a PPP connection over which
you may run a web browser on your local PC such as Netscape, etc.
There may be some problems as SLiRP is not as good as a real PPP
account.  Some accounts may provide SLiRP since it saves on IP
addresses (You have no IP address while using SLiRP).
-->

<tt/SLiRP/ を使うためには、シェルアカウントのあるリモートのコンピュー
タへインストールします。そして、そのアカウントでダイヤルアップ接続し、
リモートマシンで SLiRP を動かし、ローカルの PC で PPP を動かします。す
ると、PPP 接続が実現し、Netscape などのウェブブラウザを動かせるでしょ
う。SLiRP は本当の PPP アカウントと同等ではないので、何らかの問題があ
るかもしれません。IP アドレスを節約できるので、SLiRP を使えるようにし
ているサイトもあるかもしれません。

<!--
<tt/term/ is something like SLiRP only you need to run <tt/term/ on
both the local and remote computer.  There is no PPP on the phone line
since <tt/term/ uses its own protocol.  To use <tt/term/ from your PC
you need to use a term-aware version of ftp to do ftp, etc.  Thus it's
easier to use SLiRP since the ordinary version of ftp works fine with
SLiRP.  There is an unmaintained Term HOWTO.
-->

<tt/term/ は SLiRP と似ていますが、ただしローカルとリモート双方のコン
ピュータで <tt/term/ を動かす必要があります。<tt/term/ は固有のプロト
コルを使用するので、電話回線上には PPP 接続はありません。<tt/term/ を 
PC で利用するためには、term に対応している (ftp などの)アプリケーショ
ンを使う必要があります。従って、SLiRP では ftp がそのまま正常に動作す
るので、SLiRP を使う方が簡単です。メンテナンスされていない Term-HOWTO 
があります。

<!--
<sect>What Are UARTs?  How Do They Affect Performance? <label id="uart_">
-->
<sect> UART って何ですか? 性能にどんな影響を与えますか? <label id="uart_">

<!-- uart.H begin
<sect>What Are UARTs?  How Do They Affect Performance? <label id="uart_"> -->

<!--
<sect1> Introduction to UARTS
<p> (This section is also in the Serial-HOWTO)
-->
<sect1> UART の概要
<p> (この節は Serial-HOWTO にもあります)

<!--
UARTs (<BF/U/niversal <BF/A/synchronous <BF/R/eceiver
<BF/T/ransmitter) are serial chips on your PC motherboard (or on an
internal modem card).   The UART function may also be done on a chip
that does other things as well.  On older computers like many 486's,
the chips were on the disk IO controller card.  Still older computer
have dedicated serial boards.
-->

UART (<BF/U/niversal <BF/A/synchronous <BF/R/eceiver <BF/T/ransmitter) 
とは、PC のマザーボード(あるいは内蔵モデムボード)に載っているシリアル
用チップのことです。他の用途のチップが兼用で UART の機能を実現してい 
ることもあります。多くの 486 マシンのような古いコンピュータでは、この 
チップはディスク I/O コントローラボードに載っていました。比較的古いコ 
ンピュータの中には、まだ専用のシリアルボードを載せているものもあります。

<!--
The UART's purpose is to convert bytes from the PC's parallel bus to a
serial bit-stream.  The cable going out of the serial port is serial
and has only one wire for each direction of flow.  The serial port
sends out a stream of bits, one bit at a time.  Conversely, the bit
stream that enters the serial port via the external cable is converted
to parallel bytes that the computer can understand.  UARTs deal with
data in byte sized pieces, which is conveniently also the size of
ASCII characters. 
-->

UART の目的は PC のパラレルバスからやってくるバイトデータを、シリアルの
ビットストリームに変換することです。シリアルポートから出ているケーブル
はデータをシリアルに送るようになっており、データが流れる方向それぞれ
について 1 つしか線がありません。シリアルポートは一度に 1 ビットずつ
ビットストリームを送ります。逆に、外付けケーブルを経由してシリアルポー
トに入ってきたビットストリームは、コンピュータが処理できるパラレルな
バイトデータに変換されます。UART はデータをバイト単位で扱います。この
単位は都合がいいことに ASCII 文字の大きさでもあります。

<!--
Say you have a terminal hooked up to your PC.  When you type a
character, the terminal gives that character to it's transmitter (also
a UART).  The transmitter sends that byte out onto the serial line,
one bit at a time, at a specific rate.  On the PC end, the receiving
UART takes all the bits and rebuilds the (parallel) byte and puts it
in a buffer.
-->

PC にぶら下がっている端末があるものとします。ユーザが文字を入力すると、
端末はその文字をトランスミッタに (UART にも)送ります。トランスミッタは
そのバイトデータをシリアル回線に送り、送信は 1 バイトずつ、特定の速度
で行います。PC 側では、受信を行う UART がビット列を全て受け取り、(パラ
レルの)バイトデータに復元し、これをバッファに入れます。

<!--
Along with converting between serial and parallel, the UART does some
other things as a byproduct (side effect) of it's primary task.  The
voltage used to represent bits is also converted (changed).  Extra
bits (called start and stop bits) are added to each byte before it is
transmitted.  See the Serial-HOWTO section, ``Voltage Waveshapes'' for
details.  Also, while the flow rate (in bytes/sec) on the parallel bus
inside the computer is very high, the flow rate out the UART on the
serial port side of it is much lower.  The UART has a fixed set of
rates (speeds) which it can use at its serial port interface.  
-->

シリアルとパラレルの変換に加えて、UART は主な処理の副産物(副作用)とし 
て他の処理もいくつか行います。ビット列を表すために使う電圧も変換(変更) 
します。バイトデータを送信する前に、それぞれのバイトに対して追加のビッ
ト(いわゆるスタートビットとストップビット)を加えます。詳しくは 
Serial-HOWTO の「電圧の波形」の節を見てください。また、コンピュータ内
部のパラレルバス上のフローレート(バイト/秒)は 非常に高く、シリアルポー
ト側の UART から出るフローレートはこれよりもずっと遅いです。UART はい
くつかの決められたフローレート(速度)の組を持っていて、これをシリアルポー
トインタフェースで使うことができます。

&lsqb; 訳注 : JF プロジェクトによる日本語訳 <url
 url="http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html"
 name="Serial-HOWTO"> &rsqb;

<!--
<sect1> Two Types of UARTs
<p> There are two basic types of UARTs: dumb UARTS and FIFO UARTS.
Dumb UARTs are the 8250, 16450, early 16550, and early 16650.  They
are obsolete but if you understand how they work it's easy to
understand how the modern ones work with FIFO UARTS ( late 16550,
16550A, 16c552, late 16650, 16750, and 16C950).
-->

<sect1> 2 種類の UART

<p> UART の基本的な種類は 2 つ(ダム UART と FIFO UART) あります。ダム 
UART は 8250, 16450, 初期型 16550, 初期型 16650 です。これらは時代遅れ 
のものですが、これらの動作の仕組みがわかれば、FIFO UART (最近の 16550,
16550A, 16c552, 最近の 16650, 16750, 16950) の動作を理解するのも容易で 
す。

<!--
There is some confusion regarding 16550.  Early models had a bug and
worked properly only as 16450's (no FIFO).  Later models with the bug
fixed were named 16550A but many manufacturers did not accept the name
change and continued calling it a 16550.  Most all 16550's in use
today are like 16550A's.  Linux will report it as being a 16550A even
though your hardware manual (or a label note) says it's a 16550.  A
similar situation exists for the 16650 (only it's worse since the
manufacturer allegedly didn't admit anything was wrong).  Linux will
report a late 16650 as being a 16650V2.  If it reports it as 16650 it
is bad news and only is used as if it had a one-byte buffer.
-->

16550 については紛らわしい点がいくつかあります。初期モデルにはバグがあ
り、(FIFO を持たない) 16450 としてしか正しく動作しません。バグが修正さ
れた最近のモデルには 16550A という名前が付いていますが、多くのメーカー
は名前を変更しておらず、16550 と呼び続けています。現在使われている
16550 の大部分は 16550 のようです。ハードウェアのマニュアルに 16550 で
あると書かれていても(あるいはラベルにそのように刻印されていても)、
Linux は 16550A であると認識してくれます。同様の事情が 16650 にもあり
ます(こちらの方が深刻です。というのも、聞いた話ではメーカーがバグを認
めなかったからです)。Linux は最近の 16650 を 16650V2 として認識します。
16650 と認識された場合には残念ながら、1 バイトのバッファしか持ってい
ないように動作します。

<!--
<sect1> FIFOs <label id="fifo_">
<p> To understand the differences between dumb and FIFO (First In,
First Out queue discipline) first let's examine what happens when a
UART has sent or received a byte.  The UART itself can't do anything
with the data passing thru it, it just receives and sends it.  For the
original dumb UARTS, the CPU gets an interrupt from the serial device
every time a byte has been sent or received.  The CPU then moves the
received byte out of the UART's buffer and into memory somewhere, or
gives the UART another byte to send.  The 8250 and 16450 UARTs only
have a 1 byte buffer.  That means, that every time 1 byte is sent or
received, the CPU is interrupted.  At low transfer rates, this is OK.
But, at high transfer rates, the CPU gets so busy dealing with the
UART, that is doesn't have time to adequately tend to other tasks.  In
some cases, the CPU does not get around to servicing the interrupt in
time, and the byte is overwritten, because they are coming in so fast.
This is called an "overrun" or "overflow".
-->

<sect1> FIFO <label id="fifo_">

<p> ダムと FIFO (キューの動作がファーストイン・ファーストアウト (First
In, First Out) である)の違いを説明するために、まずは UART が 1 バイト
のデータを送受信した場合のことを調べてみましょう。UART 本体は自分を通
るデータに関しては何も行わず、単にデータを送受信するだけです。元々のダ
ム UART の場合は、バイトデータが送受信される度に CPU がシリアルデバイ
スから割込みを受け取ります。CPU はこれを受けて、受信したバイトデータ
を UART のバッファから取り出してメモリ上のどこかに置くか、送信すべき次
のバイトデータを UART に渡すかの、どちらか動作を行います。8250 と 
16450 UART には 1 バイトしかバッファがありません。つまり、1 バイトのデー
タを送受信する度に CPU に割込みがかかります。転送速度が低ければこれ
でも大丈夫です。しかし、転送速度が高速である場合には、UART の処理の負
荷が CPU にかかりすぎるため、他の処理をうまく行えるだけの時間がなくなっ
てしまいます。場合によっては、CPU の割込み処理が間に合わなくなってし
まい、バイトデータが上書きされてしまいます。なぜなら、データが入ってく
るのが速過ぎるからです。これは「オーバーラン (overrun)」あるいは「オー
バーフロー (overflow)」と呼ばれます。

<!--
That's where the FIFO UARTs are useful.  The 16550A (or 16550) FIFO
chip comes with 16 byte FIFO buffers.  This means that it can receive
up to 14 bytes (or send 16 bytes) before it has to interrupt the CPU.
Not only can it wait for more bytes, but the CPU then can transfer all
14 (or more) bytes at a time.  This is a significant advantage over
the other UARTs, which only have 1 byte buffers.  The CPU receives
less interrupts, and is free to do other things.  Data is not lost,
and everyone is happy.  Note that the interrupt threshold of FIFO
buffers (trigger level) may be set at less than 14.  1, 4 and 8 are
other possible choices.  
-->

これが FIFO UART が役立つ理由です。16550A (あるいは 16550) の FIFO チッ
プには 16 バイトの FIFO バッファが付いています。つまり、CPU に割込み
がかかるまでに 16 バイトまでを受け取る(送る)ことができるのです。たくさ
んのバイトデータを待つことができるだけではなく、CPU は 14 バイト(また
はそれ以上)のバイトデータを同時に転送できます。これは、バッファを 1 バ
イトしか持っていない他の UART に対して特に優れている点です。CPU が受け
る割込みも少なく他の処理に回せますし、データがなくなることもなく皆幸
せになれます。FIFO バッファの割込みの閾値(トリガレベル)には 14 以下
の値が設定できる点に注意してください。この他には 1, 4, 8 が選べます。

<!--
While most PC's only have a 16550 with 16-byte buffers, better UARTS
have even larger buffers.  Note that the interrupt is issued slightly
before the buffer get full (at say a "trigger level" of 14 bytes for a
16-byte buffer).  This allows room for a few more bytes to be received
during the time that the interrupt is being serviced.  The trigger
level may be set to various permitted values by kernel software.  A
trigger level of 1 will be almost like a dumb UART (except that it
still has room for 15 more bytes after it issues the interrupt).
-->

大抵の PC には 16 バイトのバッファを持つ 16550 しか付いていませんが、
高級な UART にはもっと大きなバッファがあります。割込みはバッファがいっ
ぱいになる直前 (16 バイトのバッファでは 14 バイトのいわゆる「トリガレ
ベル」の時点)に発行される点に注意してください。こうすることにより、割
込みサービスが実行される間にも何バイトかのデータを受け取れる余裕が残り
ます。このトリガレベルには、カーネルのソフトウェアが許可した色々な値を
設定することができます。トリガレベルを 1 にすると、ダム UART とほぼ同
等になります (ただし、割込みを発行した後にもさらに 15 バイトを受け取る
空きが残っている点が異なります)。

<!--
If you type something while visiting a BBS, the characters you type go
out thru the serial port.  Your typed characters that you see on the
screen are what was echoed back thru the telephone line thru your modem
and then thru your serial port to the screen.  If you had a 16-byte
buffer on the serial port which held back characters until it had 14
of them, you would need to type many characters before you could see
what you typed (before they appeared on the screen).  This would be
very confusing but there is a "timeout" to prevent this.  Thus you
normally see a character on the screen just as soon as you type it.
-->

BBS に入っているときに何か文字を入力した場合、入力した文字はシリアルポー
ト経由で送り出されます。入力した文字が画面に表示されるのは、その文字が
電話回線・モデム・シリアルポート経由で画面にエコーバックされているから
です。シリアルポートに 16 バイトのバッファが付いている場合(これは 14 
バイト集まるまで文字を送ってくれません)、入力した文字が表示されるまで
には文字をたくさん入力しなければならないでしょう。とても紛らわしいので
すが、これを防ぐための「タイムアウト」があります。従って、普通は文字を
入力すると、その文字はすぐに画面に表示されます。

<!--
The "timeout" works like this for the receive UART buffer: If
characters arrive one after another, then an interrupt is issued only
when say the 14th character reaches the buffer.  But if a character
arrives and the next character doesn't arrive soon thereafter, then an
interrupt is issued.  This happens even though there are not 14
characters in the buffer (there may only be one character in it).
Thus when what you type goes thru this buffer, it acts almost like a
1-byte buffer even though it is actually a 16-byte buffer (unless
your typing speed is a hundred times faster than normal).  There
is also "timeout" for the transmit buffer as well.
-->

UART の受信バッファの場合、この「タイムアウト」は 以下のように動作しま
す : 文字が次々とやってきても、割込みは発行されるのは、バッファに例え
ば 14 個文字がたまったときだけです。しかし、ある文字が届いた後にしばらく
次の文字が届かなくても割込みが発行されます。この割込みはたとえバッ
ファに 14 個文字が入っていなくても発行されます (1 文字でも入っていれば
発行されます)。したがって、このバッファを通して文字を入力すると、バッ
ファの大きさが実際には 16 バイトであっても(あなたが文字を打ち込む速さ
が普通の 100 倍でなければ) 1 バイトのバッファのように動作します。同様
の「タイムアウト」が送信バッファにもあります。

<!--
<sect1> UART Model Numbers
<p> Here's a list of UARTs.  <em/TL/ is <em/T/rigger <em/L/evel
<itemize>
<item> 8250, 16450, early 16550: Obsolete with 1-byte buffers
<item> 16550, 16550A, 16c552: 16-byte buffers, TL=1,4,8,14 
<item> 16650:  32-byte buffers. Speed up to 460.8 Kbps
<item> 16750:  64-byte buffer for send, 56-byte for receive.  Speed up
 to 921.6 Kbps
<item> Hayes ESP: 1K-byte buffers. 
</itemize>
-->

<sect1> UART のモデル番号

<p> 以下の UART の一覧を示します。<em/TL/ はトリガレベル(<em/T/rigger
<em/L/evel) です。

<itemize>
<item> 8250, 16450, 初期の 16550: バッファの大きさが 1 バイトである時代遅れの UART です
<item> 16550, 16550A, 16c552: 16 バイトのバッファがあります (TL=1,4,8,14)
<item> 16650: 32 バイトのバッファがあります。460.8 Kbps までの速度に対
応しています
<item> 16750: 16750: 64 バイトの送信バッファ、56 バイトの受信バッファ
があり ます。921.6 kbps までの速度に対応しています
<item> Hayes ESP: 1K バイトのバッファがあります
</itemize>

<!--
The obsolete ones are only good for modems no higher than 14.4k (DTE
speeds up to 38400 bps).  For modern modems you need at least a 16550
(and not an early 16550).  For V.90 56k modems, it may be a several
percent faster with a 16650 (especially if you are downloading
uncompressed files).  The main advantage of the 16650 is its larger
buffer size as the extra speed isn't needed unless the modem
compression ratio is high.  Some 56k internal modems may come with a
16650 ?? 
-->

時代遅れの UART がうまく動作するのは 14.4k より遅いモデム (DTE 速度は 
38400 bps まで)の場合だけです。最近のモデムでは、少なくとも 16550 (初
期型 16550 は含みません)が必要です。V.90 規格の 56k モデムの場合に は、
16650 を使うと数パーセント速くなることがあります(特に圧縮されていない
ファイルをダウンロードするとき)。16650 を使う主な利点はバッファのサイズ
が大きいことであり、モデムの圧縮比が高くなければ必要以上の速度が必要
ない点です。一部の 56k 内蔵モデムには 16650 が載っていないものがあり
ます(筆者は確かめていません)。

<!--
Non-UART, and intelligent multiport boards use DSP chips to 
do additional buffering and control, thus relieving the CPU
even more.  For example, the Cyclades Cyclom, and Stallion
EasyIO boards use a Cirrus Logic CD1400 RISC UART, and many 
boards use 80186 CPUs or even special RISC CPUs, to handle the
serial IO.
-->

UART でなくインテリジェントなマルチポートボードでは、DSP チップを使っ
てさらなるバッファリングと制御を行っています。したがって、CPU の負荷は
さらに軽くなっています。例えば、Cyclades 社製の Cyclom や Stallion 社
製のEasyIO ボードは Cirrus Logic CD1400 RISC UART を使って、これ以外の
多くのボードは 80186 CPU や特殊な RISC CPU さえ使ってシリアル I/O を処
理します。

<!--
Most newer PC's (486's, Pentiums, or better) come with 16550A's
(usually called just 16550's).  If you have something really old the
chip may unplug so that you may be able to upgrade by buying a 16550A
chip and replacing your existing 16450 UART.  If the functionality has
been put on another type of chip, you are out of luck.  If the UART is
socketed, then upgrading is easy (if you can find a replacement).  The
new and old are pin-to-pin compatible.  It may be more feasible to
just buy a new serial board on the Internet (few retail stores stock
them today).
-->

最近の PC のほとんど (486, Pentium 以降のマシン)には 16550A (普通は単
に16550 と呼ばれます)が載っています。実は古いチップが載っていたという
場合には、既存の 16450 チップを外して、新しく買った 16550A チップと置
き換えることにより、アップグレードすることができます。他のタイプのチッ
プが載っていた場合は、残念ながらあきらめてください。UART がソケット形
式ならば、(置き換えるチップさえあれば)アップグレードは簡単でしょう。新
しいチップと古いチップのピン配置は互換です。新しいシリアルボードをイン
ターネットで購入することもできるかもしれません(現在はシリアルボードを
扱っている小売店はほとんどありません)。

<!-- uart.H end -->

<!--
<sect>Troubleshooting <label id="trouble_shoot">
-->
<sect> トラブルシューティング <label id="trouble_shoot">

<!--
<sect1> My Modem is Physically There but Can't be Found <label
id="cant_find_modem">
-->
<sect1> モデムが物理的には存在するのに検出できません <label
id="cant_find_modem">

<!--
<p> If you have installed an internal modem or are using an external
one and don't know what serial port it's connected to then the problem
is to find the serial port.  See <ref id="cant_find_port" name="My
Serial Port is Physically There but Can't be Found"> This section is
about finding out which serial port has the modem on it.
-->

<p> 内蔵モデムを既に取り付けた、あるいは外付けモデムがつながっているシ
リアルポートがわからない場合は、次の課題はシリアルポートを検出すること
です。<ref id="cant_find_port" name="シリアルポートが物理的には存在す
るのに検出できません"> をご覧ください。この節では、モデムが接続してい
るシリアルポートを検出することに関して述べます。

<!--
There's a program that looks for modems on commonly used serial ports
called "wvdialconf".  Just type "wvdialconf &lt;a-new-file-name&gt;".
It will create the new file as a configuration file but you don't need
this file unless you are going to use "wvdial" for dialing.
See <ref id="wvdial_" name="What is wvdialconf ?">  
-->

``wvdialconf'' という使用中のシリアルポートからモデムを探し出すプログ
ラムがあります。``<tt/wvdialconf &lt;a-new-file-name&gt;/'' とだけタイ
プしてください。新しいファイルを設定ファイルとしてつくります。しかし、
``wvdial'' を電話をかけるために使わない限り、このファイルを使う必要は
ありません。<ref id="wvdial_" name="wvdialconf とは?"> をご覧ください。

<!--
Your problem could be due to a winmodem (or the like) which can't be
used with Linux.  See <ref id="soft_modem" name="Avoid most software
modems"> The "setserial program may be used to detect serial ports but
will not detect modems on them.  Thus "wvdialconf" is best to try
first.
-->

Linux では使えないソフトウェアモデムなどが原因の問題かもしれません。
<ref id="soft_modem" name="ソフトウェアモデムの大部分は避ける"> をご覧
ください。``setserial'' はシリアルポートを検出するために使いますが、ポー
トにつながっているモデムの検出はしません。従って、まず ``wvdialconf'' 
を試すのが最も良い方法です。

<!--
Another way to see if there's a modem on a port is to start "minicom"
on the port (go to the setup menus with ^AO).  Then type "AT" and you
should see OK (or 0 if it's set for "digit result codes").  If it
takes many seconds to get a response (including only the cursor moving
down one line) then see <ref id="slow_" name="Extremely	Slow: Text 
appears on the screen slowly after long delays">
-->

ポート上にモデムがあるかどうか確かめるもうひとつの方法は、``minicom'' 
を起動することです (<tt/C-A O/ で設定メニューへ行きます)。``<tt/AT/'' 
とタイプすると、<tt/OK/ と返ってくるはずです(リザルトコードを数字で表
示しているなら 0 です)。(カーソルを移動するだけの場合を含み) 応答が返っ
てくるまでに時間がかかりすぎるようなら、<ref id="slow_" name="この上な
く遅い: テキストがすごく遅れてゆっくり画面に表示されます"> をご覧くだ
さい。

<!--
<sect1> I can't get near 56K on my 56K modem
<p> There must be very low noise on the line for it to work at even
close to 56K.  Some phone lines are so bad that the speeds obtainable
are much slower than 56K (like 28.8K or even slower).  Sometimes
extension phones connected to the same line can cause problems.  To
test this you might connect your modem directly at the point where the
telephone line enters the building with the feeds for everything else
on that line disconnected (if others can tolerate such a test).
-->

<sect1> 56k モデムで 56k に近い速度が出ません

<p> 56k 近い速度で通信するには、回線のノイズが非常に低いことが必要です。
電話回線の品質が非常に悪く、56k よりもずっと遅い (28.8k あるいは更に遅
い) 速度しか得られないことがあります。同一の回線に接続した内線電話は、
問題を引き起こすこともあります。これを確かめるため、(他の人が許してく
れるなら)回線に何もつながっていない状態で、回線がビルの中へ引き込まれ
ている場所に直接モデムを接続してみるのも良いでしょう。

<!--
<sect1> Uploading (downloading) files is broken/slow 
<p> Flow control (both at your PC and/or modem) may not be enabled.
If you have set a high DTE speed (like 115.2K) then flow from your
modem to your PC may work OK but a lot of flow in the other direction
will not all get thru due to the telephone line bottleneck.  This will
result in many errors and the resending of packets.  It may thus take
far too long to send a file.  In some cases, files don't make it thru
at all.  If you're downloading long uncompressed files or web pages
(and your modem uses data compression) or you've set a low DTE speed,
then downloading may also be broken due to no flow control.
-->

<sect1> アップロード(ダウンロード)したファイルが壊れる、あるいは遅い

<p> (PC あるいはモデムで)フロー制御が有効になっていないかもしれません。
(115.2k などの)速い DTE 速度を設定したなら、モデムから PC への流れは正
常に動作するでしょう。しかし、逆方向では電話回線がボトルネックになるの
で、多くのデータが正常に送れないかもしれません。従って、多くのエラーと
パケット再送が発生します。ファイルを送るのに非常に長い時間がかかる、あ
るいは送れないかもしれません。また、ファイルを全く作れない場合もあるで
しょう。(モデムのデータ圧縮を使いながら) 大きな無圧縮ファイルやウェブ
ページをダウンロードしているとき、フロー制御がないためにダウンロードも
うまくいかないこともあります。

<!--
<sect1>For Dial-in I Keep Getting "line NNN of inittab invalid"
<p>
Make sure you are using the correct syntax for your version of 
<tt/init/.  The different <tt/init/'s that are out there use different 
syntax in the <tt>/etc/inittab</tt> file.  Make sure you are using the 
correct syntax for your version of <tt/getty/. 
-->

<sect1> ダイヤルインの際に ``line NNN of inittab invalid'' と出続ける

<p> <tt/init/ のバージョンに合った正しい記述法を使っていることを、確か
めてください。<tt/init/ により <tt>/etc/inittab</tt> の記述法は異なり
ます。また、<tt/getty/ のバージョンにあった記述法を用いているか、確認
してください。

<!--
<sect1>I Keep Getting: ``Id "S3" respawning too fast: disabled for 5 minutes''
<p> Id "S3" is just an example.  In this case look on the line which
starts with "S3" in <tt>/etc/inittab</tt>.  This is causing the problem.
Make sure the syntax for this line is correct and that the device
(ttyS3) exists and can be found.

Make sure your modem is configured correctly.  Look at registers
<tt/E/ and <tt/Q/.  
This can occur when your modem is chatting with <tt/getty/.
-->

<sect1> ``Id "S3" respawning too fast: disabled for 5 minutes'' と出続ける

<p> Id ``S3'' はただの例です。この場合には、<tt>/etc/inittab</tt> の 
``S3'' で始まる行を見てください。この行が問題を引き起こしています。こ
の行の記述方法が正しいか、デバイス (<tt/ttyS3/) が存在し見つけられるか
どうか、確認してください。

モデムが正しく設定してあることを確認してください。<tt/E/ レジスタと 
<tt/Q/ レジスタを見てください。表題に示す現象はモデムが <tt/getty/ と
通信する際に起こります。

<!--
<p>
If you use uugetty, verify that your <tt>/etc/gettydefs</tt> syntax is
correct by doing the following:
-->

uugetty を使っているのなら、<tt>/etc/gettydefs</tt> の記述を、以下に示
すような方法で確かめてください。

<tscreen><verb>
linux# getty -c /etc/gettydefs
</verb></tscreen>

<!--
<p>
This can also happen when the <tt/uugetty/ initialization is failing.
See section <REF id="nowork" name="uugetty Still Doesn't Work">.
-->

<tt/uugetty/ の初期化に失敗するときにも、表題の現象は起こり得ます。
<REF id="nowork" name="uugetty がいまだに動作しない"> の節をご覧くださ
い。

<!--
<sect1>My Modem is Hosed after Someone Hangs Up, or uugetty doesn't respawn
<p>	
This can happen when your modem doesn't reset when DTR is dropped. 
Greg Hankins saw his RD and SD LEDs go crazy when this happened.
You need to have your modem reset.  Most Hayes compatible modems
do this with <tt/&amp;D3/, but on his USR Courier, he had to set
<tt/&amp;D2/ and <tt/S13=1/.  Check your modem manual (if you have
one).
-->

<sect1> 誰かが電話を切ったあとモデムが止まる、あるいは uugetty が再生
成しない

<p> DTR 信号が切れたときにモデムがリセットされないと、この現象が起きま
す。Greg Hankins さんはこの現象が起きたとき、RD と SD の LED がおかし
くなるのに気付きました。モデムをリセットする必要があります。多くの 
Hayes 互換モデムは <tt/&amp;D3/ でリセットを行います。しかし、彼の USR
Courier 社製のモデムは <tt/&amp;D2/ と <tt/S13=1/ を使わなければ行けま
せんでした。(もしあるなら)モデムのマニュアルを確認してください。

<!--
<sect1> uugetty Still Doesn't Work <label id="nowork">
<p>
There is a <tt/DEBUG/ option that comes with <tt/getty_ps/.  Edit your 
config file 
<tt>/etc/conf.{uu}getty.ttyS</tt><em/N/ and 
add <tt/DEBUG=/<em/NNN/.  Where <EM/NNN/ is one of the following
combination of numbers according to what you are trying to debug:
-->

<sect1> uugetty がいまだに動作しない <label id="nowork">

<p> <tt/getty_ps/ には <tt/DEBUG/ オプションがあります。設定ファイル 
<tt>/etc/conf.{uu}getty.ttyS</tt><em/N/ を編集し、<tt/DEBUG=/<em/NNN/ 
を追加してください。何をデバッグするのかによって、<em/NNN/ は以下に挙
げる数字の組合わせになります :

<!--
<tscreen><verb>
D_OPT   001            option settings
D_DEF   002            defaults file processing
D_UTMP  004            utmp/wtmp processing
D_INIT  010            line initialization (INIT)
D_GTAB  020            gettytab file processing
D_RUN   040            other runtime diagnostics
D_RB    100            ringback debugging
D_LOCK  200            uugetty lockfile processing
D_SCH   400            schedule processing
D_ALL   777            everything 
</verb></tscreen>
Setting <tt/DEBUG=010/ is a good place to start.
-->

<tscreen><verb>
D_OPT   001            オプションの設定
D_DEF   002            デフォルトのファイル処理
D_UTMP  004            utmp/wtmp の処理
D_INIT  010            回線の初期化 (INIT)
D_GTAB  020            gettytab ファイルの処理
D_RUN   040            他の実行時診断
D_RB    100            リングバック-デバッグ
D_LOCK  200            uugetty ロックファイル処理
D_SCH   400            スケジュール処理
D_ALL   777            すべて
</verb></tscreen>

まずは <tt/DEBUG=010/ の設定が良いでしょう。

<!--
<p>
If you are running <tt/syslogd/, debugging info 
will appear in your log files.  If you aren't running <tt/syslogd/
info will appear in <tt>/tmp/getty:ttyS</tt><em/N/ for debugging 
<tt/getty/
and <tt>/tmp/uugetty:ttyS</tt><em/N/ for <tt/uugetty/, and in 
<tt>/var/adm/getty.log</tt>.  Look at the 
debugging info and see what is going on.  Most likely, you will need 
to tune some of the parameters in your config  
file, and reconfigure your modem.
<p>
You could also try <tt/mgetty/.  Some people have better luck with
it.
-->

<p> <tt/syslogd/ を動かしているなら、デバッグ情報はログファイルへ出力
されます。<tt/syslogd/ を動かしていないなら、
<tt>/tmp/getty:ttyS</tt><em/N/ に<tt/getty/ デバッグ時の情報を出力しま
す。そして、 <tt/uugetty/ は <tt>/tmp/uugetty:ttyS</tt><em/N/ と
<tt>/var/adm/getty.log</tt> に載ります。デバッグ情報を見て何が起きてい
るのか調べてください。恐らく、設定ファイルでいくつかのパラメータを調整
し、モデムを再設定する必要があります。

<p> <tt/mgetty/ も試せます。これでうまくいった人もいます。

<!-- currently in <sect>Troubleshooting -->
<!-- troubleshooting.H begin -->
<!--
<sect1> The following subsections are in both the Serial and Modem HOWTOs:

<sect1> My Serial Port is Physically There but Can't be Found 
<label id="cant_find_port">
-->
<sect1> 以下の節は Serial-HOWTO にも Modem-HOWTO にもあります : 
<sect1> 物理的にはシリアルポートがあるのに、検出されません
<label id="cant_find_port">

<!--
<p> If a device (such as a modem) works on a serial port, then
obviously the port has been found.  If it doesn't work at all, then
you need to make sure your serial port can be found.  
-->

<p> (モデムなどの)装置がシリアルポート上で動作しているなら、明らかにポー
トを検出できています。全く動作しないなら、シリアルポートを検出できるよ
うに、手当てする必要があります。

<!--
Check the BIOS menus and BIOS messages.  If it's an ISA bus PnP serial
port, try "pnpdump &#045;&#045;dumpregs" and/or see Plug-and-Play-HOWTO.  For
the PCI bus use lspci.  You may try probing with setserial.  See <ref
id="probing_ss" name="Probing"> If nothing seems to get thru the port
it may be there but have a bad interrupt.  See <ref id="slow_"
name="Extremely Slow: Text appears on the screen slowly after long
delays">.
-->

BIOS のメニューと出力メッセージを確認しましょう。ISA バス上の PnP シリ
アルポートの場合には、``<tt/pnpdump &#045;&#045;dumpregs/'' を試したり、 
Plug-and-Play-HOWTO をご覧になってください。PCI バスの場合には 
<tt>lspci</tt> を使用してください。setserial を使って検出を行ってもよ
いでしょう。 <ref id="probing_ss" name="検出"> の項目を参照してくださ
い。シリアルポー トにデータが何も流れていないようであれば、シリアルポー
トはあっても割込みが間違っているかもしれません。 <ref id="slow_"
name="この上なく遅い: テキストがすごく遅れてゆっくり画面に表示されます
"> の節をご覧ください。

&lsqb;訳注 : JF プロジェクトによる日本語訳 <url
url="http://www.linux.or.jp/JF/JFdocs/Plug-and-Play-HOWTO.html"
name="Plug-and-Play-HOWTO"> &rsqb;

<!--
<sect1> Extremely Slow: Text appears on the screen slowly after long delays 
 <label id="slow_">
-->
<sect1> この上なく遅い: テキストがすごく遅れてゆっくり画面に表示されます
 <label id="slow_">
<!--
<p> It's likely mis-set/conflicting interrupts.  Here are some of the
symptoms which will happen the first time you try to use a modem,
terminal, or printer.  In some cases you type something but nothing
appears on the screen until many seconds later.  Only the last
character typed may show up.  It may be just an invisible
&lt;return&gt character so all you notice is that the cursor jumps
down one line.  In other cases where a lot of data should appear on
the screen, only a batch of about 16 characters appear.  Then there is
a long wait of many seconds for the next batch of characters.  You
might also get "input overrun" error messages (or find them in logs).
-->

<p> これは割込みの設定が間違っているか、衝突しているためでしょう。
初めてモデムや端末、プリンタを使おうとしたときに出会うような現象をいく
つか示します。場合によっては、入力した文字が何秒も経たないと表示されな
いことがあります。入力した最後の文字しか表示されないこともあります。
また、その文字が単に目に見えない&lt;改行&gt;文字で、カーソルが 1 行下
に移動したことしかわからないこともあります。また別の場合としては、
画面にデータはたくさん表示されるのですが、16 文字ごとのかたまりでしか
表示されないこともあります。そして、あるかたまりの次のかたまりが表示さ
れるまでには何秒もの長い待ち時間が続きます。
「input overrun (入力オーバーラン)」のエラーメッセージが表示される(ある
いはログに残る)こともあります。

<!--
For more details on the symptoms and why this happens see
the Serial-HOWTO section: "Interrupt Problem Details".

If it involves Plug-and-Play devices, see also Plug-and-Play-HOWTO. 
-->

詳しい症状とそれが起こる理由については、Serial-HOWTO の「割込みの問
題に関する詳しい説明」の節を見てください。

プラグ&amp;プレイデバイスがある場合には、Plug-and-Play-HOWTO も見てく
ださい。

&lsqb;訳注 : JF プロジェクトによる日本語訳 <url
url="http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html"
name="Serial-HOWTO"> および <url
url="http://www.linux.or.jp/JF/JFdocs/Plug-and-Play-HOWTO.html"
name="Plug-and-Play-HOWTO"> &rsqb;

<!--
As a quick check to see if it really is an interrupt problem, set the
IRQ to 0 with "setserial".  This will tell the driver to use
polling instead of interrupts.  If this seems to fix the "slow"
problem then you had an interrupt problem.  You should still try to
solve the problem since polling uses excessive computer resources and
sometimes drastically decreases your thruput.
-->

本当に割込みの問題かどうかを簡単に調べるには、``setserial'' で IRQ を 
0 に設定してください。これにより、ドライバは割込みではなくポーリングを
使うようになります。これで「遅い」問題が解決するようであれば、割込みの
問題が起きています。しかし、ポーリングはコンピュータの資源を大量に消費
して処理速度を低下させることもあります。ポーリングに頼らず、きちんと割
込みの問題を解決すべきです。

<!--
Checking to find the interrupt conflict may not be easy since Linux
supposedly doesn't permit any interrupt conflicts and will send you a
<ref id="busy_err" name="/dev/ttyS?: Device or resource busy"> error
message if it thinks you are attempting to create a conflict.  But a
real conflict can be created if "setserial" has incorrect information.
Thus using "setserial" will not reveal the conflict (nor will looking
at /proc/interrupts which bases its info on "setserial").  You still
need to know what "setserial" thinks so that you can pinpoint where
it's wrong and change it when you determine what's really set in the
hardware.
-->

割込みの衝突を見つけだすのは容易ではないかもしれません。というのも、
Linux は割込みの衝突を全く許さず、衝突を起こそうとすると <ref
id="busy_err" name="/dev/ttyS?: Device or resource busy"> エラーを送っ
てくるようです。しかし、``setserial'' が誤った情報を持っていると、本当
の衝突が発生します。このように、``setserial'' を使っただけでは衝突は発
生しないでしょう (``setserial'' の情報に基づく 
<tt>/proc/interrupts</tt> を見ることもないでしょう)。どこが悪いのか指
摘するためには、やはり ``setserial'' の設定を知る必要があります。ハー
ドウェア中の本当の設定がわかったら、設定を変更してください。

<!--
What you need to do is to check how the hardware is set by checking
jumpers or using PnP software to check how the hardware is actually
set.  For PnP run either "pnpdump &#045;&#045;dumpregs" or run "lspci".  Compare
this to how Linux (e.g. "setserial") thinks the hardware is set.
-->

こういった場合に行うべき作業は、ジャンパや PnP 設定ソフトウェアを使っ
て、ハードウェアに実際に設定されている情報を調べることです。PnP の場合
は、``<tt/pnpdump &#045;&#045;dumpregs/'' または ``lspci'' を実行しま
しょう。そして、この結果を Linux 側の (``setserial'' などの)設定と比べ
るのです。

<!--
<sect1> Somewhat Slow: I expected it to be a few times faster
<p> One reason may be that whatever is on the serial port (such as a
modem, terminal, printer) doesn't work as fast as you thought it did.
A 56k Modem seldom works at 56k and the Internet often has
congestion and bottlenecks that slow things down.
-->

<sect1> なぜか遅い: あと数倍は速いはずなのですが

<p> 考えられる理由の一つは、シリアルポートを使っているデバイス(モデム
や端末、プリンタ)が、あなたが考えているほど速く動作していないことです。
56k モデムはほとんど 56k で動作することはなく、そしてインターネットは
ときには輻輳を起し、速度を低下させるボトルネックが発生します。

<!--
Another possible reason is that the serial driver thinks you have an
obsolete serial port (UART 8250,16450 or early 16550).  See <ref
id="uart_" name="What Are UARTs?">.  Use "setserial -g /dev/ttyS*".
If it shows anything less than a 16550A, this is likely your problem.
Then if "setserial" has it wrong, change it.  See <ref id="set_serial"
name="What is Setserial"> for more info.  Of course if you really do
have an obsolete serial port, lying about it to setserial will only
make things worse.
-->

考えられる別の理由は、あなたが使っているシリアルポートが古い(UART
8250, 16450 や初期の 16550)とシリアルドライバが認識していることです。
<ref id="uart_" name="UART って何ですか?">を参照し、``<tt>setserial -g
/dev/ttyS*</tt>'' を使ってください。その結果として 16550A より性能がよ
くない UART が表示されたら、これは多分設定の問題です。この場合は、
``setserial'' の設定に問題があれば、これを変更します。詳しくは <ref
id="set_serial" name="setserial とは何か?">を見てください。当然のこと
ですが、実際は古いシリアルポートを使っているのに setserial をだまそう
としても、単に事態が悪化するだけです。

<!--
<sect1>The Startup Screen Show Wrong IRQs for the Serial Ports.
<label id="irqs_shown_wrong"> 
<p> Linux does not do any IRQ detection on startup.  When the serial
module loads it only does serial device detection.  Thus, disregard
what it says about the IRQ, because it's just assuming the standard
IRQs.  This is done, because IRQ detection is unreliable, and can be
fooled.  But if and when setserial runs from a start-up script, it
changes the IRQ's and displays the new (and hopefully correct) state
on on the startup screen.  If the wrong IRQ is not corrected by a
later display on the screen, then you've got a problem.
-->

<sect1>システム起動時の画面で、シリアルポートの IRQ が間違っていると
表示されます

<p> Linux カーネルはシステムの起動時に IRQ の検出は全く行いません。
serial モジュールがロードされたときに、シリアルデバイスの検出が行われる
だけです。したがって、カーネルが IRQ に関して行う表示は無視してくださ
い。なぜなら、この時点では標準の IRQ を決め打ちしているからです。この
ようになっているのは、IRQ 検出は当てにならず、間違うことがあるからです。
しかし setserial が起動スクリプトから実行された場合には、setserial は 
IRQ を変更し、新しい(そして多分正しい)状態を起動画面に表示します。間違っ
た IRQ が後で訂正されて画面に表示されなければ、何か問題が起こっていま
す。

<!--
So, even though I have my <tt/ttyS2/ set at IRQ 5, I still see
-->
よって、IRQ 5 に設定されている <tt/ttyS2/ がある場合であっても、Linux 
の起動時には
<tscreen><verb>
ttyS02 at 0x03e8 (irq = 4) is a 16550A
</verb></tscreen>
<!--
at first when Linux boots.  (Older kernels may show "ttyS02" as "tty02")
You have to use <tt/setserial/ to tell Linux the IRQ you are using.
-->
と表示されます(古いカーネルでは ``<tt/ttyS02/'' のところが ``tty02'' 
となります)。実際に使う IRQ を Linux に知らせるには、<tt/setserial/ を
使わなければなりません。

<!--
<sect1> "Cannot open /dev/ttyS?: Permission denied"
<p> Check the file permissions on this port with "ls -l /dev/ttyS?"_
If you own the ttyS? then you need read and write permissions: crw
with the c (Character device) in col. 1.  It you don't own it then it
should show rw- in cols. 8 & 9 which means that everyone has read and
write permission on it.  Use "chmod" to change permissions.  There are
more complicated ways to get access like belonging to a "group" that
has group permission.
-->

<sect1> "Cannot open /dev/ttyS?: Permission denied" というエラーが出ます

<p> ``<tt/ls -l /dev/ttyS?/'' を実行してそのポートのファイルのパーミッ
ションを調べてみましょう。<tt/ttyS?/ の所有者が自分であれば、読み書き
のパーミッションとして <tt/crw/ が必要です。最初の桁は <tt/c/ (キャラ
クタデバイス)です。ポートの所有者でなければ、8 桁目と 9 桁目が 
<tt/rw-/ でなければなりません。つまり誰でもそのポートを読み書きできな
ければなりません。アクセス権限を得る方法としては、グループパーミッショ
ンを持っている「グループ」に所属するといったもっと複雑なものもあります。

<!--
<sect1> "Operation not supported by device" for ttyS?
<p> This means that an operation requested by setserial, stty, etc.
couldn't be done because the kernel doesn't support doing it.
Formerly this was often due to the "serial" module not being loaded.
But with the advent of PnP, it may likely mean that there is no modem
(or other serial device) at the address where the driver (and
setserial) thinks it is.  If there is no modem there, commands (for
operations) sent to that address obviously don't get done.  See <ref
id="io-irq_in_hdw" name="What is set in my serial port hardware?">
-->

<sect1> ttySx について "Operation not supported by device"

<p> このエラーは、カーネルがサポートしていないために、setserial や 
stty 等が要求した操作が行えないという意味です。以前は ``serial'' モジュー
ルがロードされてないことが原因の場合が多かったのですが、PnP の登場によ
り、このエラーはドライバ(および setserial)が考えているアドレスにモデム
(あるいは他のシリアルデバイス)がないことを示すことが多くなりました。こ
ういったアドレスにモデムがなければ、そのアドレスに送られた(操作のため
の)コマンドは当然ながら処理されません。
<ref id="io-irq_in_hdw" name="シリアルポートのハードウェアの設定は?">
の節をご覧ください。

<!--
If the "serial" module wasn't loaded but "lsmod" shows you it's now
loaded it might be the case that it's loaded now but wasn't loaded
when you got the error message.  In many cases the module will
automatically loaded when needed (if it can be found).  To force
loading of the "serial" module it may be listed in the file:
/etc/modules.conf or /etc/modules.  The actual module should reside
in: /lib/modules/.../misc/serial.o.
-->

``serial'' モジュールがロードされていないのに、そのモジュールはさっき
ロードしたと ``<tt/lsmod/'' が表示する場合は、モジュールは現在はロード
されているけれど、エラーが出たときにはロードされていなかったのかもしれま
せん。多くの場合、モジュールは必要なときに自動的にロードされます(もし見
つけることができれば)。``serial'' モジュールを強制的にロードさせるには、
<tt>/etc/modules.conf</tt> または <tt>/etc/modules</tt> に記述しておき
ます。モジュールそのものは <tt>/lib/modules/.../misc/serial.o</tt> に
あるはずです。

<sect1> "Cannot create lockfile. Sorry"

<!--
<p> When a port is "opened" by a program a lockfile is created in
/var/lock/.  Wrong permissions for the lock directory will not allow a
lockfile to be created there.  Use "ls -ld /var/lock" to see if the
permissions are OK: usually rwx for everyone (repeated 3 times).  If
it's wrong, use "chmod" to fix it.  Of course, if there is no "lock"
directory no lockfile can be created there.  For more info on
lockfiles see the Serial-HOWTO subsection: "What Are Lock
Files". 
-->

<p> 何らかのプログラムがポートを「オープン」するとき、ロックファイルが 
<tt>/var/lock/</tt> に作られます。<tt/lock/ ディレクトリのパーミッショ
ンが間違っていると、ここにロックファイルを作れません。パーミッションが
正しいかどうかを確認するには ``<tt>ls -ld /var/lock</tt>'' を使います。
普通は全員に対して<tt/rwx/ です(<tt/rwx/ が 3 度繰り返されます)。パー
ミッションが間違っている場合には、``<tt/chmod/'' コマンドを使って修正
します。もちろん、``<tt/lock/'' ディレクトリがなければ、そこにロックファ
イルを作ることはできません。ロックファイルに関する、より詳しい情報につ
いては Serial-HOWTO の「ロックファイルとは何ですか?」の節をご覧くださ
い。

&lsqb;訳注 : パーミッションを設定するには <tt>chmod 1777
/var/lock</tt> を実行してください。詳細は chmod(1) をご覧ください。

JF プロジェクトによる日本語訳 <url
url="http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html"
name="Serial-HOWTO"> &rsqb;

<!--
<sect1> "Device /dev/ttyS? is locked."
<p> This means that someone else (or some other process) is supposedly
using the serial port.  There are various ways to try to find out what
process is "using" it.  One way is to look at the contents of the
lockfile (/var/lock/LCK...).  It should be the process id.  If the
process id is say 261 type "ps 261" to find out what it is.  Then if
the process is no longer needed, it may be gracefully killed by "kill
261".  If it refuses to be killed use "kill -9 261" to force it to be
killed, but then the lockfile will not be removed and you'll need to
delete it manually.  Of course if there is no such process as 161 then
you may just remove the lockfile but in most cases the lockfile should
have been automatically removed if it contained a stale process id
(such as 261).
-->

<sect1> "Device /dev/ttyS? is locked."
 (デバイス /dev/ttyS? がロックされています)

<p>このメッセージが出た場合にはおそらく、誰か他の人(あるいは他のプロセ
ス)がシリアルポートを使っています。このポートを「使用中」のプロセスを
見つける方法はいくつもあります。一つの方法は、ロックファイル
(<tt>/var/lock/LCK...</tt>)の中身を見ることです。これは、ポートを使っ
ているプロセスの ID のはずです。プロセス ID が 例えば 261 ならば、
``<tt/ps 261/'' を実行し、それが何かを調べましょう。そして、そのプロセ
スが不要であれば、``<tt/kill 261/'' で優しく kill してもいいでしょう。
これで終了しないなら、``<tt/kill -9 261/'' を実行して強制的に kill し
てください。ただし、この場合にはロックファイルが消されずに残るので、手
で消す必要があるでしょう。もちろん、261 のようなプロセスが存在しなけれ
ば単にロックファイルを消してかまいません。しかし、ロックファイルが示す
プロセス ID (261 等)が無効であれば、多くの場合そのロックファイルは自動
的に削除されるはずです。

<!--
<sect1> "/dev/ttyS?: Device or resource busy" <label id="busy_err">
<p>  This problem can arise when you are trying to dial out with a modem
when DCD or DTR are not implemented correctly.  DCD should only be on
(asserted) when there is an actual connection (ie someone has dialed
in), not when <tt/getty/ is watching the port.  Check to make sure
that your modem is configured to only assert DCD when there is a
connection.  DTR should be on (asserted)  whenever something is using,
or watching the line, like <tt/getty/, <tt/kermit/, or some other comm
program.  
-->

<sect1> "/dev/ttyS?: Device or resource busy" <label id="busy_err">

<p> モデムで電話をかけようとしたときにDCD あるいは DTR が正常に動作し
ないと、この問題が起こります。DCD は <tt/getty/ がポートを監視している
ときではなく、実際に回線がつながったとき(例えば誰かがダイヤルインした
とき)だけ ON になるべきです。接続時にだけ DCD を ON にするようモデムを
設定しているか、確かめてください。<tt/getty/ や <tt/kermit/ などの通信
プログラムが回線を監視しているなど、使用中はいつでも DTR は ON になっ
ているべきです。

<!--
``resource busy'' often means (for the case of ttyS2) ``You can't use
ttyS2 since another device is using ttyS2's interrupt.''  The potential
interrupt conflict is inferred from what "setserial" thinks.  A more
accurate error message would be ``Can't use ttyS2 since the setserial
data indicates that another device is using ttyS2's interrupt''.
-->

``resource busy'' は多くの場合、(ttyS2 の場合)「他のデバイスが ttyS2 
の割込みを使用中なので、ttyS2 を使うことはできません」という意味です。
``setserial'' の設定による割込みの衝突の可能性があります。このエラーメッ
セージをもっと正確に言うと、「ttyS2 を使えません。setserial のデータが、
他のデバイスが ttyS2 の割込みを使っていると示しています」となるでしょ
う。

<!--
Thus there are two possibilities.  There may be a real interrupt
conflict that is being avoided.  But if setserial has it wrong,
there may be no reason why ttyS2 can't be used, except that setserial
erroneously predicts a conflict.  What you need to do is to find the
interrupt setserial thinks ttyS2 is using by looking at boot-time
messages (using setserial will not work since it gives the "device
busy" error message).  Then check to see if anything else uses this
interrupt or if the interrupt reported is the same as set in the
hardware.
-->

これには 2 つの可能性があります。ひとつは割込みが実際に衝突している場
合で、これは修正しなければなりません。しかし、setserial が誤った割込み
を設定しているのなら、<tt/ttyS2/ を使えない理由はないでしょう。ただし、
衝突を間違って伝えるような setserial は除きます。起動メッセージを見て、
<tt/ttyS2/ が使用していると setserial が考えている割込みを知る必要があ
ります (setserial はエラーメッセージ ``device busy'' を出すので、正常
には動作しないでしょう)。そして、この割込みを他のデバイスが使っていな
いか、あるいはハードウェアで設定している割込みと等しいかどうか、確かめ
てください。

<!--
<sect1> Troubleshooting Tools
<p> These are some of the programs you might want to use in
troubleshooting: 
-->
<sect1> トラブル対処のためのツール
<p> トラブルに対処する時に使うとよいプログラムがいくつかあります:

<!--
<itemize>
<item> "lsof /dev/ttyS*" will list serial ports which are open.
<item> "setserial" shows and sets the low-level hardware configuration
 of a port (what the driver thinks it is).  See <ref id="set_serial"
 name="What is Setserial"> 
<item> "stty" shows and sets the configuration of a port (except for
 that handled by "setserial").
 See the Serial-HOWTO section: "Stty". <item> "modemstat" or "statserial" will show the current state of
 various modem signal lines (such as DTR, CTS, etc.)
<item> "irqtune" will give serial port interrupts higher
 priority to improve performance.
<item> "hdparm" for hard-disk tuning may help some more.
<item> "lspci" shows the actual IRQs, etc. of hardware on the PCI bus.
<item> "pnpdump &#045;&#045;dumpregs" shows the actual IRQs, etc. of hardware for
 PnP devices on the ISA bus.
<item> Some "files" in the /proc tree (such as ioports and
 interrupts).
</itemize>
-->

<p> 
<itemize>

<item> ``<tt>lsof /dev/ttyS*</tt>'' は開いているシリアルポートを表示し
ます。
<item> ``setserial'' は(ドライバが存在すると考えた)ポートの低レベルハー
ドウェア設定の表示と設定を行います。<ref id="set_serial"
name="setserial とは何ですか"> をご覧ください。
<item> ``stty'' は (``setserial'' が扱う部分を除き) ポートを設定し、表
示します。Serial-HOWTO の ``stty'' の節をご覧ください。
<item> ``modemstat'' と ``statserial'' は、モデムの各種信号線(DTR, CTS 
など)の現在の状態を表示します
<item> ``irqtune'' を使えば、シリアルポートの割込みの優先度を上げて
性能を向上させることができます
<item> ハードディスクのチューニングを行う ``hdparm'' もいくらか役に立
つかもしれません
<item> ``lspci'' は PCI バス上のハードウェアに実際に設定されている IRQ 
などを表示します。
<item> ``pnpdump --dumpregs'' は ISA バス上の PnP デバイスについて、ハー
ドウェア中に実際に設定されている IRQ を表示します。
<item> <tt>/proc</tt> にある (<tt/ioports/, <tt/interrupts/ などの)
「ファイル」。
</itemize>

<!-- troubleshooting.H end -->

<!--
<sect> Flash Upgrades
<p> Many modems can be upgraded by reprogramming their flash memories
with an upgrade program which you get from the Internet.  By sending
this "program" from the PC via the serial port to the modem, the modem
will store this program in its non-volatile memory (it's still there
when the power is turned off).  The instructions on installing it are
usually on how to do in under Windows so you'll need to figure out how
to do the equivalent under Linux (unless you want to install the
upgrade under Windows).  Sending the program to the modem is often
called a download.
-->

<sect> フラシュメモリのアップグレード

<p> 多くのモデムでは、インターネットから手に入れたアップグレードプログ
ラムを使い、フラッシュメモリ中にあるプログラムを入れ替えることができま
す。PC からシリアルポートを通してモデムへこの「プログラム」を送り、こ
のプログラムを(電源を切っても内容が消えない)不揮発性メモリに記憶します。
たいていインストール説明書には Windows での方法が書いてあるので、
(Windows でアップグレードを行いたい場合を除き) どのようにして Linux で
同等の作業を行うのか理解する必要があります。モデムにプログラムを送るこ
とを、ダウンロードと呼ぶこともあります。

<!--
If the latest version of this HOWTO still contains this request (see
<ref id="new_vers" name="New Versions of this HOWTO">) please send me
your experiences with installing such upgrades that will be helpful to
others.
-->

HOWTO の最新バージョン(<ref id="new_vers" name="この HOWTO の新しいバー
 ジョン"> をご覧ください)でもこの依頼文が載っていたなら、他の人の役に
 立つのでアップグレードの体験談を著者まで送ってください。

<!--
Here's the general idea of doing an upgrade.  First, there may be a
command that you need to send your modem to tell it that what follows
is a flash ROM upgrade.  In one case this was AT**  You can do this by
starting a communications program (such as minicom) and type.  First
type AT &lt;enter&gt to see if your modem is there and answers "OK".
-->

アップグレードの一般的な考えをここに挙げます。次に来るデータはフラッシュ
メモリのアップグレードデータだとモデムへ伝えるコマンドが、まず必要にな
るでしょう。<tt/AT**/ コマンドがこれにあたります。(minicom のような)通
信プログラムを起動し、タイプしてください。モデムが存在するかどうか確か
めるため、まず <tt/AT/ &lt;enter&gt; とタイプし、モデムは ``<tt/OK/'' 
と応答します。

<!--
Next, you need to send an file (sometimes two files) directly to the modem.
Communication programs (such as minicom) often use zmodem or kermit to
send files to the modem (and beyond) but these put the file into
packets which append headers and you want the exact file sent to the
modem, not a modified one.  But the kermit communications program has
a "transmit" command that will send the file directly (without using
the kermit packets) so this is one way to send a file directly.
Minicom didn't have this feature in 1998.
-->

次に、モデムへ直接ファイル(ときには 2 つのファイル)を送る必要がありま
す。(minicom のような)通信プログラムは、モデムへ(そしてモデムを越えて)
ファイルを送るために、zmodem や kermit を使用することもあります。しか
し、これらはファイルへへッダを追加してパケットにします。ファイルを変更
せずに正確にモデムへ送りたいのです。通信プログラム kermit には( kermit 
パケットを使わずに) ファイルを直接送る ``<tt/transmit/'' コマンドがあ
るので、これを使うことがファイルを直接送るひとつの方法です。minicom は 
1998 年までこの機能を持っていませんでした。

<!--
Another way to send the file(s) would be to escape from the
communications program to the shell (in minicom this is ^AJ) and then:
<tt>cat upgrade_file_name > /dev/ttyS2 </tt> (if your serial port is
ttyS2).  Then go back to the communication program (type fg at the
command line prompt in minicom) to see what happened.
-->

ファイルを送るもうひとつの方法があります。通信プログラムから離れてシェ
ルへ移行し (minicom では <tt/^AJ/)、(シリアルポートが <tt/ttyS2/ の場
合) <tt>cat upgrade_file_name > /dev/ttyS2 </tt> とタイプします。そし
て、(minicom のコマンドプロンプトで <tt/fg/ とタイプして) 通信プログラ
ムへ戻り、何が起きたのかを確認してください。

<!--
Here's an example session for a certain Rockwell modem (C-a is ^A):
-->

特定の Rockwell 社製モデムでの例を挙げます (<tt/C-a/ は <tt/^A/ を表しま
す):

<!--
<verb>
- Run minicom
- Type AT** : see "Download initiated .."
- C-a J
- cat FLASH.S37 > /dev/modem
- fg : see "Download flash code .."
- C-a J
- cat 283P1722.S37 > /dev/modem
- fg : see "Device successfully programmed"
</verb>
-->

<verb>
- minicom を起動する
- AT** をタイプする : "Download initiated .." を得る
- C-a J
- cat FLASH.S37 > /dev/modem
- fg : "Download flash code .." を得る
- C-a J
- cat 283P1722.S37 > /dev/modem
- fg : "Device successfully programmed" を得る
</verb>

<!--
<sect>Other Sources of Information
<sect1> Misc
-->
<sect> 他の情報源
<sect1> その他

<p>
<itemize>
<!--
<item>man pages for: <tt/agetty(8)/, <tt/getty(1m)/, <tt/gettydefs(5)/, 
 <tt/init(1)/, <tt/isapnp(8)/, <tt/login(1)/, <tt/mgetty(8)/,
 <tt/setserial(8)/
-->
<item>マニュアル : <tt/agetty(8)/, <tt/getty(1m)/, <tt/gettydefs(5)/, 
 <tt/init(1)/, <tt/isapnp(8)/, <tt/login(1)/, <tt/mgetty(8)/,
 <tt/setserial(8)/
<!--
<item>Your modem manual (if it exists).  Some modems come without manuals.
-->
<item>(もしあるのなら)モデムのマニュアル。マニュアルのないモデムもあります。
<!--
<item> <url url="ftp://scicom.alphacdc.com/pub/linux" name="Serial
 Suite"> by Vern Hoxie is a collection of blurbs about the care and
 feeding of the Linux serial port plus some simple programs.  
-->
<item> Vern Hoxie さんによる <url
 url="ftp://scicom.alphacdc.com/pub/linux" name="Serial Suite"> は 
 Linux のシリアルポートの扱いに関する推薦品のコレクションで、いくつか
 の簡単なプログラムがあります。
<!--
<item>The Linux serial mailing list.  To join, send email to
 <tt><htmlurl url="mailto:majordomo@vger.rutgers.edu"
 name="majordomo@vger.rutgers.edu"></tt>, with
 ``<tt/subscribe linux-serial/'' in the message body.  If you
 send ``<tt/help/'' in the message body, you get a help
 message.  The server also serves many other Linux lists.  Send
the ``<tt/lists/'' command for a list of mailing lists.
-->
<item>Linux のシリアルポートに関するメーリングリスト。
 参加するには、本文に ``<tt/subscribe linux-serial/'' と書いた
 メールを <tt><htmlurl url="mailto:majordomo@vger.rutgers.edu"
 name="majordomo@vger.rutgers.edu"></tt> へ送ってください。
 本文に ``<tt/help/'' と書いてメールを出すと、
 ヘルプメッセージが届きます。 このサーバは Linux に関する多くの
 メーリングリストを提供しています。メーリングリスト一覧を得る
 ``<tt/lists/'' コマンドを送ってください。
</itemize>

<!--
<sect1> Books
<p> I've been unable to find a good up-to-date book on modems.
-->
<sect1> 書籍
<p> モデムに関する新しくて良い書籍を見つけられませんでした。

<itemize>
<!--
<item>The Complete Modem Reference by Gilbert Held, 1997.
Contains too much info about obsolete topics.  More up-to-date info
may be found on the Internet.
-->
<item>Gilbert Held さんの The Complete Modem Reference, 1997.
 時代遅れの話題に関する多くの情報が載っています。
 インターネットでもっと新しい情報が見つかるでしょう。
<!--
<item>Modems For Dummies by Tina Rathbone, 1996.  (Have never seen it.)
-->
<item>Tina Rathbone さんの Modems For Dummies, 1996.
 (一度も見たことがありません)
<!--
<item>Ultimate Modem Handbook by Cass R. Lewart, 1998. 
-->
<item>Cass R. Lewart さんの Ultimate Modem Handbook, 1998. 
</itemize>

<!--
<sect1> HOWTOs
-->
<sect1> HOWTO

<p> <itemize>
<item>Cable-Modem mini-howto
<!--
<item>ISDN Howto (not a LDP Howto) <url
url="http://www.suse.de/Support/sdb_e/isdn.html">: drivers for ISDN 
"Modems".  Much related info on this is in German.
-->
<item>ISDN Howto (LDP の Howto ではありません) <url
url="http://www.suse.de/Support/sdb_e/isdn.html">: ISDN 「モデム」のド
ライバ非常に関連のある情報が載っていますが、ドイツ語です。
<!--
<item>Modems-HOWTO: In French (Not used in creating this Modem-HOWTO)
-->
<item>Modems-HOWTO: フランス語です。
 (この Modem-HOWTO を書くために参考にしていません)
<!--
<item>NET-3-4-HOWTO: all about networking, including SLIP, CSLIP, and PPP
-->
<item>NET-3-4-HOWTO: SLIP, CSLIP および PPP を含むネットワーク全般
<!--
<item>PPP-HOWTO: help with PPP including modem set-up
-->
<item>PPP-HOWTO: モデム設定を含む PPP のヘルプ
<!--
<item> Serial-HOWTO has info on Multiport Serial Cards used for both
terminals and banks of modems.  Covers the serial port in more detail
than in the HOWTO.
-->
<item> Serial-HOWTO には端末と集合モデム双方のために、
 マルチポートシリアルボードを使用する情報が載っています。
 この HOWTO よりも詳細なシリアルポートに関する記述があります。
<!--
<item>Serial-Programming-HOWTO: for some aspects of serial-port programming 
-->
<item>Serial-Programming-HOWTO: シリアルポートプログラミングの
 観点からのものです。
<!--
<item>Text-Terminal-HOWTO: (including connecting up with modems)
-->
<item>Text-Terminal-HOWTO: モデムとの接続に関する記述もあります。
<!--
<item>UUCP-HOWTO: for information on setting up UUCP
-->
<item>UUCP-HOWTO: UUCP 設定のための情報
</itemize>

&lsqb;訳注 : JF プロジェクトによる日本語訳 <url
url="http://www.linux.or.jp/JF/JFdocs/Cable-Modem.html"
name="Cable-Modem-mini-HOWTO">, <url
url="http://www.linux.or.jp/JF/JFdocs/NET-3-HOWTO.html"
name="NET-3-HOWTO">, <url
url="http://www.linux.or.jp/JF/JFdocs/PPP-HOWTO.html"
name="PPP-HOWTO">, <url
url="http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html"
name="Serial-HOWTO">, <url
url="http://www.linux.or.jp/JF/JFdocs/Serial-Programming-HOWTO.html"
name="Serial-Programming-HOWTO">, <url
url="http://www.linux.or.jp/JF/JFdocs/Text-Terminal-HOWTO.html"
name="Text-Terminal-HOWTO"> および
<url url="http://www.linux.or.jp/JF/JFdocs/UUCP-HOWTO.html" name="UUCP-HOWTO">
&rsqb;

<!--
<sect1> Usenet newsgroups
<p> <itemize>
<item> comp.os.linux.answers
FAQs, How-To's, READMEs, etc. about Linux.
<item> comp.os.linux.hardware    
Hardware compatibility with the Linux operating system.
<item> comp.os.linux.setup       
Linux installation and system administration.
<item> comp.dcom.modems
Modems for all OS's
</itemize>
-->

<sect1> ニュースグループ
<p>
<itemize>
<item> comp.os.linux.answers
Linux に関する FAQ, How-To, README など
<item> comp.os.linux.hardware    
Linux オペレーティングシステムでのハードウェア互換性について
<item> comp.os.linux.setup       
Linux のインストールとシステム管理
<item> comp.dcom.modems
すべての OS でのモデムの話題
</itemize>

&lsqb;訳注 : 次のようなニュースグループがあります。
<itemize>
<item>fj.os.linux
Linux 一般
<item>fj.os.linux.setup
Linux のインストールおよび設定について
<item>fj.os.linux.networking
Linux のネットワークについて
<item>fj.net.modems
モデムについて
<item>fj.net.modems.fax
FAX モデムについて
</itemize>
&rsqb;

<!--
<sect1> Web Sites <label id="web_sites">
-->
<sect1> Web サイト <label id="web_sites">
<p> <itemize>
<!--
<item>Hayes AT modem commands 
-->
<item>Hayes AT モデムコマンド
<url url="http://www.hayes.com/TechSupport/techref/"
name= "Technical Reference for Hayes (tm) Modem Users">
<item><url url="http://www.rss.rockwell.com/techinfo/"
name= "Rockwell-based modem commands">
<item>Modem FAQs:<newline>
<url url="http://web.aimnet.com/&tilde;jnavas/modem/faq.html" 
 name="Navas 28800 Modem FAQ">
<item>  <url url="http://www.teleport.com/&tilde;curt/modems.html" 
 name="Curt's High Speed Modem Page">
<!--
<item> Much info on 56k modems <url url="http://808hi.com/56k/"
 name= "56k Modem = v.Unreliable">
-->
<item> 56k モデムに関する多くの情報 <url url="http://808hi.com/56k/"
 name= "56k Modem = v.Unreliable">
<item> <url url="http://www.56k.com/links/Modem_Manufacturers/"  
 name="Links to modem manufacturers">
<item> <url url="http://www.sbsdirect.com/fccenter.html" 
name="Identifying modems by FCC ID"> 
<!--
<item> Partial list of  modems which work/don't_work under Linux
 <url url="http://www.o2.net/~gromitkc/winmodem.html" name="modem
list">
-->
<item> Linux で動作する/しないモデムの不完全な一覧
 <url url="http://www.o2.net/~gromitkc/winmodem.html" name="modem
list">
</itemize>

&lsqb;訳注 : <url url="http://www.linux.or.jp/link/peripheral.html"
 name="周辺機器"> に、シリアルポートやモデムに関する情報へのリンク集が
あります。&rsqb;

<!--
<sect> Appendix A:  How Modems Work (technical) (unfinished)
<label id="how_modems_work">
<sect1> Modulation Details <label id="modulate_"> 
-->
<sect> 付録 A: (技術的に)モデムがどのように動作するのか (未完成)
<label id="how_modems_work">
<sect1> 変調の詳細 <label id="modulate_"> 

<!--
<sect2> Intro to Modulation
<p> This part describes the modulation methods used for conventional
modems.  It doesn't cover the high speed methods (modulus conversion)
sometimes used by <ref id="56k_modems" name="56k Modems (v.90)">.  But
56k modems also use the modulation methods described here.
-->

<sect2> 変調の序論

<p> この章では通常のモデムがどのようにして変調を行うのか、その手法を述
べます。<ref id="56k_modems" name="56k モデム (v.90)"> がときどき使用
する、高速モデムが使う(係数変換などの)手法については記述しません。しか
し、56k モデムは以下に述べる変調手法も使用しています。

<!--
Modulation is the conversion of a digital signal represented by binary
binary (0 or 1) into an analog signal something like a sine wave.
The modulated signal consists pure sine wave "carrier" signal which
is modified to convey information.  A pure carrier sine wave,
unchanging in frequency and voltage, provides no flow of information
at all (except that a carrier is present).  To make it convey
information we modify (or modulate) this carrier.  There are 3 basic
types of modulation: frequency, amplitude, and phase.  They will be
explained next.
-->

変調とは (0 か 1 の)二進法で表現しているデジタル信号を、正弦波のような
アナログ信号へ変換することです。情報を伝えるために調整された正弦波の
「キャリア」から、変調した信号はできあがっています。周波数と電圧を変更
していないキャリア正弦波は、(キャリアが存在するという事実を除き)全く情
報を伝達しません。情報を伝えるために、このキャリアを変更(あるいは変調)
します。変調には 3 つの基本的な形式、周波数変調、振幅変調、そして位相
変調があります。次節で説明します。

<!--
<sect2> Frequency Modulation
<p> The simplest modulation method is frequency modulation.  Frequency
is measured in cycles per second (of a sine wave).  It's the count
of the number of times the sine wave shape repeats itself in a second.
This is the same as the number of times it reaches it peak value
during a second.  The word "Hertz" (abbreviated Hz) is used to mean
"cycles per second".
-->

<sect2> 周波数変調

<p> 最も単純な変調方式は周波数変調です。周波数は正弦波が 1 秒間に何回
周期を成すかで測ります。それは 1 秒間に正弦波形が繰り返した回数です。
これは 1 秒間に最高値へ達した回数と同じです。「へルツ」(省略して Hz) 
は「1 秒間の周期数」の意味で使います。

<!--
A simple example of frequency modulation is where one frequency means
a binary 0 and another means a 1.  For example, for some obsolete 300
baud modems 1070 Hz meant a binary 0 while 1270 Hz meant a binary 1.
This was called "frequency shift keying".  Instead of just two
possible frequencies, more could be used to allow more information to
be transmitted.  If we had 4 different frequencies (call them A, B, C,
and D) then each frequency could stand for a pair of bits.  For
example, to send 00 one would use frequency A.  To send 01, use
frequency B; for 10 use C; for 11 use D.  In like manner, by using 8
different frequencies we could send 3 bits with each shift in
frequency.  Each time we double the number of possible frequencies we
increase the number of bits it can represent by 1.
-->

周波数変調の簡単な例は、ある周波数が二進数の 0 を表し、それ以外が 1 を
表すものです。例えば、時代遅れの 300 ボーのモデムでは、1070 Hz は 0 を
表し、1270 Hz は 1 を表していました。これを「周波数移動方式」と呼びま
す。たった 2 つの周波数ではなくより多くの周波数を使えば、更に多くの情
報を送信できます。(A, B, C そして D という) 4 つの異なる周波数があった
なら、それぞれの周波数は 2 ビットを表現します。例えば、00 を送るために
周波数 A を用います。01 には B、10 には C、11 には D を使用します。同
様に、8 個の異なる周波数を用い、周波数シフト 1 回で 3 ビットを送ること
ができます。使用する周波数の数を 2 倍にするごとに、送信できるビット数
は 1 ずつ増えます。

<!--
<sect2> Amplitude Modulation
<p> Once one understands frequency modulation example above including
the possibilities of representing a few bits by a single shift in
frequency, it's easier to understand both amplitude modulation and
phase modulation.  For amplitude modulation, one just changes the height
(voltage) of the sine wave analogous to changing the frequency of the
sine wave.  For a simple case there could only be 2 allowed amplitude
levels, one representing a 0-bit and another representing a 1-bit.  As
explained for the case of frequency modulation, having more possible
amplitudes will result in more information being transmitted per
change in amplitude.
-->

<sect2> 振幅変調

<p> 上記の周波数変化 1 回で複数のビットが表現できる周波数変調の例を理
解したなら、振幅変調および位相変調とも簡単に理解できます。正弦波の周波
数を変更するのと似たように、振幅変調は正弦波の高さ(電圧)を変更します。
単純な場合では、ひとつが 0、もうひとつが 1 を表現するように 2 つの振幅
を使用します。周波数変調についての説明と同様に、より多くの振幅を用いれ
ば 1 回の振幅変調でより多くの情報を送れるようになります。

<!--
<sect2> Phase Modulation
<p> To change the phase of a sine wave at a certain instant of time,
we stop sending this old sine wave and immediately begin sending a new
sine wave of the same frequency and amplitude.  If we started sending
the new sine wave at the same voltage level (and slope) as existed
when we stopped sending the old sine wave, there would be no change in
phase (and no detectable change at all).  But suppose that we started
up the new sine wave at a different point on the sine wave curve.
Then there would likely be a sudden voltage jump at the point in time
where the old sine wave stopped and the new sine wave began.  This is
a phase shift and it's measured in degrees (deg.)  A 0 deg. (or a 360
deg.) phase shift means no change at all while a 180 deg. phase shift
just reverses the voltage (and slope) of the sine wave.  Put another
way, a 180 deg. phase shift just skips over a half-period (180 deg.)
at the point of transition.  Of course we could just skip over say 90
deg. or 135 deg. etc.  As in the example for frequency modulation, the
more possible phase shifts, the more bits a single shift in phase can
represent.
-->

<sect2> 位相変調

<p> 正弦波の位相を変更するために、ある瞬間にそれ以前の正弦波の送信を止
め、すぐに同一の周波数と振幅の新しい正弦波を送り出します。古い正弦波の
送信を止めたときと同じ電圧レベル(そして勾配)で新しい正弦波を送り始めた
なら、位相に変化はありません(そして変化も検知できません)。しかし、正弦
波形の異なる点から、新しい正弦波を開始すると考えてください。すると、古
い正弦波を止めて新しい正弦波を開始する際、突然電圧が変化するでしょう。
これが位相の変化であり、角度の単位「度」で測ります。0 度(あるいは 360 
度)の位相変化は何も変化しないことを意味し、180 度の位相変化は正弦波の
電圧(と勾配)が逆転します。言い換えると、180 度の位相変化は送信の瞬間に
半周期 (180 度)だけとばします。もちろん、90 度や 135 度などの変調もで
きます。周波数変調の例では、更に位相の変更も可能であり、1 回の位相変化
でより多くの情報を表現できます。

<!--
<sect2> Combination Modulation
<p> Instead of just selecting either frequency, amplitude, or phase
modulation, we may chose to combine modulation methods.  Suppose that
we have 256 possible frequencies and thus can send a byte (8 bits) for
each shift in frequency (since 2 to the 8 power is 256).  Suppose also
that we have another 256 different amplitudes so that each shift in
amplitude represents a byte.  Also suppose there are 256 possible
phase shifts.  Then a certain points in time we may make a shift in
all 3 things: frequency, amplitude and phase.  This would send out 3
bytes for each such transition.
-->

<sect2> 複合変調

<p> 周波数変調、振幅変調、あるいは位相変調からひとつを選択するだけでは
なく、複数の変調方法を混用することもできるでしょう。256 の周波数があれ
ば、1 回の変調で 1 バイト (8 ビット)を送れます(なぜなら、2 の 8 乗は 
256 です)。また、256 の異なる振幅があれば、各々の変調で 1 バイトを表現
できます。更に、256 の位相が使える場合を考えてください。すると、やがて
ある人が、周波数、振幅、そして位相の 3 種類の変調ができるかもしれない
と、指摘するでしょう。これで一回の送信で 3 バイトを送れます。

<!--
No modulation method in use today actually does this.  It's not
practical due to the relatively long time it would take to detect all
3 types of changes.  The main problem is that frequent shifts in phase
can make it appear that a shift in frequency has happened when it
actually didn't.  
-->

現在、実際にこれを行っている変調方式はありません。3 種類の変化をすべて
検出するには比較的長い時間がかかり、現実的ではありません。位相の頻繁な
変化が、実際にはない周波数の変化を引き起こしてしまうのです。

<!--
To avoid this difficulty one may simultaneous change only the phase
and amplitude (with no change in frequency).  This is called
phase-amplitude modulation (sometimes also called quadrature amplitude
modulation = QAM).  This method is used today for the common modem
speeds of 14.4k, 28.8k, and 33.6k.  The only significant case where
this modulation method is not used today is for 56k modems.  But even
56k modems exclusively use QAM (phase-amplitude modulation) in the
direction from your PC out the telephone line.  Sometimes even the
other direction will also fall back to QAM when line conditions are
not good enough.  Thus QAM (phase-amplitude modulation) still remains
the most widely used method on ordinary telephone lines.
-->

この難点を避けるため、(周波数は変化させず)位相と振幅だけを同時に変化さ
せる方法もあるでしょう。これを位相 - 振幅変調と呼びます(ときには 
Quadrature Amplitude Modulation = QAM と呼びます)。現在、この手法は 
14.4k, 28.8k, そして 33.6k のモデムで一般的に使われています。現在、こ
の変調手法を使っていない重要な例は 56k モデムです。しかし、56k モデム
も PC から電話回線への方向ではもっぱら QAM (位相 - 振幅変調)を使用して
います。回線の状態が良くないときは、逆方向も QAM に戻ります。このよう
に、今でも QAM (位相 - 振幅変調)は通常の電話回線では最も広く使用され続
けています。

<!--
<sect1> 56k Modems (v.90) <label id="56k_modems">
<p> The "modulation" method used above 33.6k is entirely different than
the common phase-amplitude modulation.  Since ordinary telephone calls
are converted to digital signals at the local offices of the telephone
company, the fastest speed that you can send digital data by an
ordinary telephone call is the same speed that the telephone company
uses over its digital portion of the phone call transmission.  What is
this speed?  Well, it's close to 64Kbps.  It would be 64k but
sometimes bits are "stolen" for the purposes of signalling.  But if
the phone Co. knows that the link is digital, bits may not get stolen. 
The case of 64k will be presented and then it will be explained why
the actual speed is lower (56k or less &#045;&#045;usually significantly less).
-->

<sect2> 56k モデム (v.90) <label id="56k_modems">

<p> 上に挙げた 33.6k モデムが使用する「変調」方式は、通常の位相 - 振幅
変調と完全に異なるわけではありません。一般的な通話は電話会社の市内局で
デジタル信号に変換されます。従って、通常の電話で送れる最高速度は、電話
会社が使うデジタル伝送部分と同じ速度になります。この速度はどのくらいな
のでしょうか?  それはほぼ 64kbps です。64k ではあるのですが、同期の目
的のためときどきビットが「抜け落ち」ます。しかし、電話会社が回線はデジ
タルだと分かっているなら、情報の損失はないかもしれません。64k の場合を
示し、そしてなぜ本当の速度が低いのか説明します(56k かそれ以下 
&#045;&#045;たいていかなり少ないです)。

<!--
Thus 64k is the absolute top speed possible for an ordinary 
telephone call using the digital portion of the circuit that was
designed to send digital encodings of the human voice.  In order to
use 64k, the modem must know exactly how the telephone company is
doing its digital encoding of the analog signals.  This task is far
too complicated if both sides of a telephone call have only an analog
interface to the telephone company.  But if one side has a digital
interface, then it's possible (at least in one direction).  Thus if
your ISP has a digital interface to the phone company, the ISP may
send out a certain digital signal over the phone lines toward your PC.
The digital signal from the ISP gets converted to analog at the local
telephone office near your PC's location (perhaps near your home).
Then it's your modem's task to try to figure out exactly what that
digital signal was.  If it can do this then transmission at 64k (the
speed of the telephone company's digital signal) is possible in this
direction.
-->

通常の電話はデジタル音声を送るよう設計されたデジタル回線を使用しており、
絶対的な最高速度は 64k です。64k を使うためには、電話会社がアナログ信
号をどのようにデジタル信号へ変換しているかを、モデムが正確に知らなけれ
ばなりません。この仕事は両側の端末がアナログインターフェイスだけしか持っ
ていないと、非常に複雑になります。しかし、一方にデジタルインターフェイ
スがあるなら、(少なくとも一方向に関しては)可能になります。ISP に電話会
社へのデジタルインターフェイスがあるなら、ISP は PC へ向けて電話回線を
通じ一定のデジタルデータを送っても問題ありません。ISP からのデジタル信
号は PC に近い(恐らく自宅にも近い)市内局で、アナログ信号に変換されます。
従って、もとのデジタル信号が何なのかを正確に見つけることが、あなたのモ
デムの仕事になります。これができれば、(電話会社のデジタル信号の速度で
ある) 64k の送信がこの方向については可能になります。

<!--
What method does the telephone company use to digitally encode analog
signals?  It uses a method of sampling the amplitude of the analog
signal at a rate of 8000 samples per second.  Each sample amplitude is
encoded as a 8-bit (ASCII-like) byte.  (Note: 8 x 8000 = 64k)  This is
called "Pulse Code Modulation" = PCM.  These bytes are then sent
digitally on the telephone company's digital circuits where many calls
share a single circuit using a time-sharing scheme known as "time
division multiplexing".  Then finally at the local telephone office
near your home, the digital signal is de-multiplexed resulting in the
same digital signal as was originally created by PCM.  This signal is
then converted back to analog and sent to your home.  Each 8-bit byte
creates a certain amplitude of the analog signal.  Your modem's task
is to determine just what that PCM 8-bit byte was based on the
amplitude it detects.
-->

アナログ信号をデジタルへ符号化するために、電話会社はどんな手法を使うの
でしょうか?  電話会社はアナログ信号の振幅を毎秒 8000 回の割合で標本化
します。各々の標本化した振幅は 8 ビットの (ASCII に似た)バイトへ変換し
ます(確認 : 8 x 8000 = 64k)。 この操作を「パルス符合変換 (Pulse Code
Modulation)」 = PCM と呼びます。そして、このバイト列を電話会社のデジタ
ル回路で送ります。この回路は「時分割多重」として知られている仕組みを使っ
て、複数の回線が一本の回路を共有しています。最後に自宅に近い電話局でデ
ジタル信号を分流し、PCM で作成したもとのデジタル信号と同じものを得ます。
この信号をアナログ信号に変換し、自宅まで送ります。各バイトはアナログ信
号の特定の振幅を生成します。モデムの仕事は検出した振幅に基づいて、 PCM 
信号 1 バイトを決定することです。

<!--
This is (sort of) "amplitude demodulation" but not really.  It's not
amplitude demodulation because there is no carrier.  Actually, it's
called "modulus conversion" which is the inverse of PCM.  In order to
determine the digital codes the telephone Co. used to create the
analog signal, the modem must sample this analog signal amplitude at
residual 4kHz signal on the analog phone line.  The creation of
amplitudes to go out to your home/office at 8k amplitudes/sec sort of
creates a 4kHz signal.  Suppose every other amplitude was of opposite
polarity.  Then there would be a 4kHz sine-like wave created.  Each
amplitude is in a sense a 8-bit symbol and when to sample amplitudes
is known as "symbol timing".
-->

<!-- ***ここの内容が良く分かりません。なぜ 4k ができるのか?*** -->
これは「振幅復調」の類ですが、本来の振幅復調というわけではありません。
キャリアがないので、振幅復調ではありません。正しくは、PCM の逆変換で
「係数変換」と呼びます。電話会社がアナログ信号生成に使ったもとのデジタ
ル信号を決定するためには、アナログ信号を生成する際に、モデムは電話会社
と全く同じ瞬間にアナログ信号の振幅を標本化しなければなりません。これを
実現するため、アナログ電話回線を流れる残りの 4 kHz 信号から、同期信号
を生成します。自宅あるいは事務所へ 8k サンプル/秒 で送る信号列は、4kHz 
の信号を生成します。他のサンプルそれぞれが逆極性だと考えてみてください。
すると、4kHz の正弦波に似た波形ができあがります。ある意味、各々のサン
プル点は 8 ビットを表現するシンボルであり、振幅を標本化することは「シ
ンボルタイミング」として知られています。

<!--
Now the encoding of amplitudes in PCM is not linear.  At low
amplitudes an increment of 1 in the PCM byte represents a much smaller
increment in analog signal amplitude than would be the case if the
amplitude being sampled were higher.  Thus for low amplitudes it's
difficult to distinguish between adjacent byte values.  To make it
easier to do this certain PCM codes representing very low amplitudes
are not used.  This give a larger delta between possible amplitudes
and makes correct detection of them by your modem easier.  Thus half
the amplitude levels are not used by v.90.  This is tantamount to each
symbol (allowed amplitude level) representing 7 bits instead of 8.
This is where 56k comes from: 7 bits/symbol x 8k symbols/sec = 56k
bps.  Of course each symbol is actually generated by 8-bits but only
128 bytes of the possible 256 bytes are actually used.  There is a
code table mapping these 128 8-bit bytes to 128 7-bit bytes.
-->

PCM 符号化は線型ではありません。振幅が小さい場合には、信号が大きい場合
と比べると、PCM の値が 1 増えてたとしてもアナログ信号の振幅は非常に小
さくしか増加しません。従って、振幅が小さいと、隣接したサンプル値と識別
することが難しくなります。その識別を容易にするために、非常に小さな振幅
になるような特定の PCM 符号は使用しません。これより、各々の振幅間でよ
り大きな差を作ることができ、モデムは正確な振幅を容易に検出できるように
なります。v.90 では使用できる振幅のうち半数を使いません。これは(各々の
振幅に割り当てた)それぞれのシンボルが、8 ビットではなく 7 ビットを表現
することと等価です。つまり、7 ビット/シンボル × 8k シンボル/秒 = 56k
bps となります。もちろん、実際には各シンボルは 8 ビットで生成します。
しかし、使用可能な 256 バイトのうち 128 バイトのみを使用します。つまり、
8 ビット表現の 128 バイトを 7 ビット表現の 128 バイトへ変換する表があ
るのです。

&lsqb;訳注 : 電話網の PCM 符号化は対数圧縮(μ-law 圧縮)を使用するので、
振幅が小さい場合には量子化の間隔が小さくなります。&rsqb;

<!--
But it's a little more complicated that this.  If the line conditions
are not nearly perfect, then even fewer possible levels (symbols) are
used resulting in speeds under 56k.  Also due to US government rules
prohibiting high power levels on phone lines, certain high amplitudes
levels can't be used resulting in only about 53.3k at best for "56k"
modems.
-->

しかし、これは少々複雑です。回線の状態がそれほど良くなかったら、使用で
きる振幅レベル数(シンボル数)がより少なくなり、転送速度は 56k を下回り
ます。また、アメリカ合衆国政府の規則が電話回線に高出力を流すことを禁じ
ているため大きな振幅を使用できず、``56k'' モデムなのに最高でも約 53.3k 
しか出なくなります。

<!--
Note that the digital part of the telephone network is bi-directional.
Two such circuits are used for a phone call, one in each direction.
The direction from your home/office to the ISP is only a single
circuit analog connection.  It uses the conventional phase-amplitude
modulation scheme with a maximum of 36.6kbps (and not 53.3kbps).  Yet
due to sophisticated cancellation methods (not explained here) it's
able to send simultaneously in both directions.
-->

電話回線網のデジタル回線部分は双方向であることに注意してください。この 
2 つの回路は送受信それぞれについて、1 つづつ使用します。家庭や事務所か
ら ISP への方向にはひとつのアナログ接続回路しかありません。この方向に
は(53.3k ではなく)最大 36.6k の伝統的な位相振幅変調方式を使います。(こ
こでは説明しませんが)高度なキャンセレーション手法により、同時に双方向
の通信を実現できます。

&lsqb;訳注 : 通常、一対しかない電話線でデータの送受信を行います。その
まま受信したのでは、受信信号中に送信信号が混入してしまいます。しかし、
端末は自身が送信した信号を知っているので、受信信号から自身が送信した信
号を減算します。すると、受信信号のみを取り出せます。このようにして、一
対の電話線で双方向の通信を行います。&rsqb;

<!--
<sect>Appendix B: "baud" vs. "bps"
<sect1> A simple example
-->
<sect>付録 B: ``ボー'' と ``bps''
<sect1> 簡単な例

<!--
<p> ``baud'' and ``bps'' are perhaps one of the most misused terms in
the computing and telecommunications field.  Many people use these
terms interchangeably, when in fact they are not!  bps is simply the
number of bits transmitted per second.  The baud rate is a measure of
how many times per second a signal changes (or could change).  For a
typical serial port a 1-bit is -12 volts and a 0-bit is +12 v (volts).
If the bps is 38,400 a sequence of 010101... would also be 38,400 baud
since the voltage shifts back and forth from positive to negative to
positive ... and there are 38,400 shifts per second.  For another
sequence say 111000111... there will be fewer shifts of voltage since
for three 1's in sequence the voltage just stays at -12 volts yet we
say that its still 38,400 baud since there is a possibility that the
number of changes per second will be that high.
-->

<p> 恐らく、コンピュータおよび電気通信の分野で、``ボー'' と ``bps'' は
最も誤用が多い単語のひとつです。多くの人がこの 2 つの単語は同じ意味だ
と考えて使います。しかし、実際にはそうではありません!  単に、bps は 1 
秒間に転送するビット数です。ボーレートは 1 秒間に何回信号が変化するか
を表す尺度です。典型的なシリアルポートでは、1 のビットは -12 ボルトで、
0 のビットは +12 ボルトになります。38,400bps なら 010101... の連鎖は、
電圧が毎秒 38,400 回正負の間を往復するので、38,400 ボーになります。ま
た、111000111... の連鎖では、連鎖中に 3 つの 1 があるので電圧は -12 ボ
ルトに留まったままになるので、電圧変化はより少なくなるでしょう。この場
合でも、1 秒間に 38,400 回の電圧変化が可能なので、やはり 38,400 ボーに
なります。

<!-- at が 2 こある -->
<!--
Looked at another way, put an imaginary tic mark separating each bit
(even thought the voltage may not change).  38,400 baud then means
38,400 tic marks per second.  The tic marks at at the instants of
permitted change and are actually marked by a synchronized clock
signal generated in the hardware but not sent over the external cable.
-->

別の方法で考えてみましょう。(電圧が変化していないと思っても) 各ビット
を区切る架空の記号を置いてみてください。38,400 ボーは 1 秒間に 38,400 
個の記号が置けることを意味します。変化できる瞬間に存在するこの記号は、
実際にハードウェアの生成する同期信号が印を付けます。この同期信号は外部
に取り付けたケーブルには出ていきません。

<!--
Suppose that a "change" may have more than the two possible outcomes
of the previous example (of +- 12 v).  Suppose it has 4 possible
outcomes, each represented by a unique voltage level.  Each level may
represent a pair of bits (such as 01).  For example, -12v could be 00,
-6v 01, +6v 10 and +12v 11.  Here the bit rate is double the baud rate.
For example, 3000 changes per second will generate 2 bits for each
change resulting in 6000 bits per second (bps).  In other words 3000
baud results in 6000 bps.
-->

前の例で挙げた(±12 ボルト) 2 種類の「変化」より、電圧が多くの種類に変
化できる場合を考えてみてください。判別可能な 4 種類の電圧に変化できる
と仮定しましょう。各々の電圧は (01 のような) 2 ビットを表現できます。
例えば、- 12v は 00、-6v は 01、+6v は 10、そして +12v が 11 を表しま
す。この例では、ビットレートがボーレートの 2 倍になります。毎秒 3000 
回の変化がそれぞれ 2 ビットを生成すると、6000 bps になります。言い換え
ると、3000 ボーが 6000 bps になります。

<!--
<sect1> Real examples 
<p> The above example is overly simple.  Real examples are more
complicated but based on the same idea.  This explains how a modem
running at 2400 baud, can send 14400 bps (or higher).  The modem
achieves a bps rate greater than baud rate by encoding many bits in
each signal change (or transition).  Thus, when 2 or more bits are
encoded per baud, the bps rate exceeds the baud rate. If your
modem-to-modem connection is at 14400 bps, it's going to be sending 6
bits per signal transition (or symbol) at 2400 baud.  A speed of 28800
bps is obtained by 3200 baud at 9 bits/baud.  When people misuse the
word baud, they may mean the modem speed (such as 33.6K). 
-->

<sect1> 実際の例

<p> 上に挙げた例は非常に簡単です。実際にはもっと複雑ですが、同じ考え方
に基づいています。2400 ボーで動作しているモデムが、どのようにして 
14400 bps (あるいはそれ以上の)速度を出せるのか、ここで説明します。モデ
ムは 1 回の変調(変化)で多くのビットを符号化することにより、ボーレート
より高いビットレートを出せます。従って、1 回の変調で 2 ビットあるいは
それ以上のビットを符号化すると、ビットレートはボーレートの値を越えます。
モデム間の接続速度が 14400 bps だったなら、2400 ボーで一回の変調につき 
6 ビットを送っています。28800 bps では、9 bit/ボー で 3200 ボーで動作
しています。ボーという単語を誤用する人は、(33.6K といった)モデム速度の
意味で使っているかもしれません。

<!--
Common modem bps rates were formerly  50, 75, 110, 300, 1200,
2400, 9600.  These were also the bps rates over the
serial_port-to-modem cables.  Today the bps modem-to-modem rates are
14.4K, 28.8K, 33.6K, and 56K, but the common rates over the
serialPort-to-modem cables are not the same but are: 19.2K, 38.4K,
57.6K, 115.2K.  Using modems with V.42bis compression (max 4:1
compression), rates up to 115.2K bps are possible for 33.6K modems
(230.4K is possible for 56K modems). 
-->

以前はモデムのビットレートは 50, 75, 110, 300, 1200, 2400, そして 9600
bps でした。シリアルポートとモデム間のビットレートも同様でした。現在、
モデム間のビットレートは 14.4k, 28.8k, 33.6k, そして 56k です。しかし、
シリアルポートとモデム間のビットレートは等しくはなく、19.2k, 38.4k,
57.6k, 115.2k になります。(最高 1/4 の圧縮を行う) V.42bis データ圧縮で
モデムを使用すると、33.6k モデムでも 115.2kbps に達するビットレートが
可能になります(56k モデムでは 230.4kbps が可能になります)。

<!--
Except for the 56k modems, most modems run at 2400, 3000, or 3200
baud.  Because of the bandwidth limitations on voice-grade phone
lines, baud rates greater than 2400 are harder to achieve, and only
work under conditions of good phone line quality.  
-->

56k モデムを除き、多くのモデムは 2400, 3000 あるいは 3200 ボーで動作し
ます。音声品質の電話回線では帯域に限界があるため、2400 ボー以上のボー
レートを出すのは難しく、回線品質が良いときだけ使用します。

<!--
How did this confusion between bps and baud start?  Well, back when
antique low speed modems were high speed modems, the bps rate actually
did equal the baud rate.  One bit would be encoded per phase change.
People would use bps and baud interchangeably, because they were the
same number.  For example, a 300 bps modem also had a baud rate of
300. This all changed when faster modems came around, and the bit rate
exceeded the baud rate.  ``baud'' is named after Emile Baudot, the
inventor of the asynchronous telegraph printer.  One way this problem
gets resolved is to use the term "symbol rate" instead of "baud" and
thus avoid using the term "baud".
-->

ビットレートとボーレートの混同はどのようにして始まったのでしょうか? 
さて、旧式の低速モデムが高速モデムと呼ばれていた頃に戻ってみましょう。
ビットレートとボーレートは実際に等しかったのです。1 ビットはひとつの位
相変化で符号化していました。ビットレートもボーレートも同じ値だったので、
みんな bps とボーを区別なく使っていました。例えば、300 bps のモデムは 
300 ボーでした。高速モデムが世に出たとき、大きな変化がありました。ビッ
トレートがボーレートを上回ったのです。``ボー'' は非同期電報プリンタを
発明した Emile Baudot さんにちなんで名付けられました。この問題を解決す
るひとつの方法は、「ボー」ではなく「シンボルレート(変調速度)」を使うこ
と、そして「ボー」という単語の使用を避けることです。

<!--
<sect> Appendix C: Terminal Server Connection
<p> This section was adapted from Text-Terminal-HOWTO.
-->

<sect> 付録 C: 端末サーバ接続
<p> この章は Text-Terminal-HOWTO を編集したものです。

<!--
A terminal server is something like an intelligent switch that can
connect many modems (or terminals) to one or more computers.  It's
not a mechanical switch so it may change the speeds and protocols of
the streams of data that go thru it.  A number of companies make
terminal servers: Xyplex, Cisco, 3Com, Computone, Livingston, etc.
There are many different types and capabilities.  Another HOWTO is
needed to compare and describe them (including the possibility of
creating your own terminal server with a Linux PC).  Most are used for
modem connections rather than directly connected terminals.
-->

端末サーバは多くのモデム(あるいは端末)を複数のコンピュータへ接続できる、
賢いスイッチのようなものです。これは機械的なスイッチではないので、通過
するデータの速度とプロトコルを変換できます。Xyplex, Cisco, 3Com,
Computone, Livingston などの、多くの企業が端末サーバを作っています。多
くの種類と特性を持つがあります。(Linux PC で自分のターミナルサーバを作
る可能性を含み) 他の HOWTO にはそれらの比較と説明をする必要があります。
多くの人は直接端末へ接続するよりも、モデムを用いて接続しています。

<!--
One use for them is to connect many modems (or terminals) to a high
speed network which connects to host computers.  Of course the
terminal server must have the computing power and software to run
network protocols so it is in some ways like a computer.  The
terminal server may interact with the user and ask what computer to
connect to, etc. or it may connect without asking.  One may sometimes
send jobs to a printer thru a terminal server.
-->

端末サーバの使用法のひとつは、ホストコンピュータに接続する高速ネットワー
クへ多くのモデムを接続することです。もちろん、端末サーバには高い演算能
力とネットワークプロトコルを動作させるソフトウェアが必要です。端末サー
バはユーザと互いに会話し、どのコンピュータと接続するかなどを尋ねます。
あるいは、何も尋ねずに接続するかもしれません。端末サーバを通じて、プリ
ンタへ印刷ジョブを送る人もいるでしょう。

<!--
A PC today has enough computing power to act like a terminal server
except that each serial port should have its own hardware interrupt.
PC's only have a few spare interrupts for this purpose and since they
are hard-wired you can't create more by software.  A solution is to
use an advanced multiport serial card which has its own system of
interrupts (or on lower cost models, shares one of the PC's interrupts
between a number of ports).  See Serial-HOWTO for more info.  If such
a PC runs Linux with getty running on many serial ports it might be
thought of as a terminal server.  It is in effect a terminal server if
it's linked to other PC's over a network and if its job is mainly to
pass thru data and handle the serial port interrupts every 14 (or so)
bytes.  Software called "radius" is sometimes used.
-->

現在、各シリアルポートにハードウェア割込みが必要なことを除いて、PC は
ターミナルサーバを務めるには充分な演算能力を持っています。PC には追加
するシリアルポート用の予備の割込みが 2-3 しかありません。そして、ソフ
トウェアではハードウェアの割込みを作れません。その解決法は、自分自身に
割込みを持っている上等なマルチポートシリアルボードを使用することです。
(また、安いモデルでは、複数のポートが PC のひとつの割込みを共有してい
ます。) 詳細は Serial-HOWTO をご覧ください。こういった PC 上で Linux 
が動作し、多くのシリアルポートで getty が動いていたなら、端末サーバと
考えることができるでしょう。ネットワークを通じて他の PC と接続したり、
データを通過させ 14 バイト毎などにシリアルポートの割込みを処理するなら、
事実上端末サーバになります。``radius'' というソフトウェアを使用するこ
ともあります。

<!--
Today real terminal servers serve more than just terminals.  They also
serve PC's which emulate terminals, and are sometimes connected to a
bank of modems connected to phone lines.  Some even include built-in
modems.  If a terminal (or PC emulating one) is connected directly to
a modem, the modem at the other end of the line could be connected to
a terminal server.  In some cases the terminal server by default
expects the callers to use PPP packets, something that real text
terminals don't generate.
-->

現在、実際の端末サーバはただの端末以上のサービスを提供します。端末をエ
ミュレートする PC にサービスを提供したり、ときには電話回線につないだ集
合モデムと接続します。モデムを内蔵したものさえあります。端末(あるいは 
PC がエミュレートする端末)が直接モデムに接続しているなら、回線の反対側
にあるモデムは端末サーバへ接続できます。テキスト端末が生成しない PPP 
パケットを、端末サーバがデフォルトで待ち受けていることもあります。

&lsqb;訳注 : JF プロジェクトによる日本語訳 <url
url="http://www.linux.or.jp/JF/JFdocs/Text-Terminal-HOWTO.html"
name="Text-Terminal-HOWTO">, <url
url="http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html"
name="Serial-HOWTO"> &rsqb;

<!--
<sect> Appendix D:  Other Types of Modems <label id="other_modems">
<p> This HOWTO currently only deals with the common type of modem used
to connect PC's to ordinary analog telephone lines.  There are various
other types of modems, including devices called modems that are not
really modems.
-->

<sect> 付録 D:  他の種類のモデム <label id="other_modems">

<p> 現時点では、この HOWTO は通常のアナログ電話回線でPC を接続するため
に使う、一般的なタイプのモデムしか扱っていません。他にもモデムにはいろ
いろな種類があります。モデムと呼ぶものの実際にはモデムではないものもあ
ります。

<!--
<sect1> Digital-to-Digital "Modems"
<p> The standard definition of a modem is sometimes broadened to
include "digital" modems.  Today direct digital service is now being
provided to many homes and offices so a computer there sends out
digital signals directly (well almost) into the telephone lines.  But
a device is still needed to convert the computer digital signal into
type allowed on telephone circuits and this device is sometimes called
a modem.  This HOWTO doesn't cover such modems but some links to
documents that do may be found at the start of this HOWTO.  The next 3
sections: ISDN, DSL and 56k, concern digital-to-digital "modems".
-->

<sect1> デジタル「モデム」

<p> モデムの標準的な定義は、場合によっては「デジタル」モデムを含むまで
に拡張されます。現在、デジタル接続サービスが多くの家庭や事務所に提供さ
れ、コンピュータは電話回線にデジタル信号を直接送り出せます。しかし、コ
ンピュータのデジタル信号を、電話回線が許容する形式へ変換する装置が必要
です。ときにはこの装置はモデムと呼ばれます。この HOWTO ではこういった
モデムは扱いませんが、この HOWTO の最初にリンクを載せています。次の 3 
つの節は ISDN, DSL および 56k のデジタル接続「モデム」についての解説で
す。

<!--
<sect1> ISDN "Modems"
<p> The "modem" is  really a Terminal Adapter (TA).  A Debian package
"isdnutils" is available.  There is a ISDN Howto in German with an
English translation: <url
url="http://www.suse.de/Support/sdb_e/isdn.html">.  It's put out by
the SuSE distribution of Linux and likely is about drivers available
in that distribution.  There is an isdn4linux package and a newsgroup:
de.alt.comm.isdn4linux.  Many of the postings are in German.  You
might try using a search engine (such as DejaNews) to find
"isdn4linux".
-->

<sect1> ISDN 「モデム」

<p> この「モデム」は正しくはターミナルアダプタ (TA) です。Debian の 
``isdnutils'' パッケージが利用できます。ドイツ語の ISDN HOWTO が英語に
翻訳され、<url url="http://www.suse.de/Support/sdb_e/isdn.html"> にあ
ります。Linux の SuSE ディストリビューションがこれを公開しており、恐ら
く SuSE で使えるドライバに関するものです。isdn4linux パッケージとニュー
スグループ de.alt.comm.isdn4linux があります。投稿の多くはドイツ語です。
(DejaNews のような)サーチエンジンで、``isdn4linux'' をキーワードにして
探してみてください。

<!--
<sect1> Digital Subscriber Line (DSL)
<p> DSL uses the existing twisted pair line from your home (etc.) to
the local telephone office.  This can be used if your telephone line
can accept higher speeds than an ordinary modem (say 56k) sends over
it.  It replaces the analog-to-digital converter at the local
telephone office with a converter which can accept a much faster flow
of data (in a different format of course).  The device which converts
the digital signals from your computer to the signal used to represent
digital data on the local telephone line is also called a modem.
-->

<sect1> デジタル加入者線 (Digital Subscriber Line = DSL)

<p> DSL は自宅から最寄りの電話局まで、既存のより対導線を使います。(56k 
の)通常のモデムがよりも高速の送信を電話回線が許容するなら、DSL を使え
ます。近くの電話局にあるアナログ-デジタルコンバータを、より高速でデー
タ転送が可能なコンバータへ置き換えます(もちろん、送信形式は異なります)。
コンピュータのデジタルデータを電話回線で使用するデジタル信号へ変換する
装置もまた、モデムと呼びます。

&lsqb;訳注 : デジタル加入者線 (ADSL) の HOWTO があります。JF プロジェ
クトによる日本語訳 <url
url="http://www.linux.or.jp/JF/JFdocs/ADSL.html" name="ADSL-HOWTO">
&rsqb;

<!--
<sect1> 56k Digital-Modems
<p> For any 56k modem to work as a 56k modem in your home or office
the other end must be connected directly to the digital system of the
telephone company.  Thus ISPs at the other end of the line must obtain
special digital modems to provide customers with 56k service.  There's
more to it than this since banks of many modems are multiplexed onto a
high capacity telephone cable that transports a large number of phone
calls simultaneously (such as a T1, E1, ISDN PRI, or better line).
This requires a concentrator or "remote access server".  This has
usually been done by stand-alone units (like PC's but they cost much
more and have proprietary OSs).  Now there are some cards one may
insert into a PC's PCI bus to do this.
-->

<sect1> 56k デジタルモデム

<p> 家庭や事務所で動いている 56k モデムに対向するモデムはすべて、電話
会社のデジタルシステムへ直接接続していなければいけません。従って、回線
のもう一端にある ISP は、顧客へ 56k サービスを提供する特別なデジタルモ
デムを入手する必要があります。それに加えて、(T1, E1, ISDN PRI あるいは
より高速な) 同時に多数の回線を提供できる高速回線へ集合モデムで多重化し
ます。これにはコンセントレータや「リモートアクセスサーバ」が必要です。
たいてい、(PC ににているけれど非常に効果で専用の OS を使う) スタンドア
ローンの装置がこの役割を果たしていました。現在は、PC の PCI バスに挿し
て同様な処理を行う、いくつかのボードがあります。

<!--
<sect1> Leased Line Modems
<p> These are analog and not digital modems.  These special modems are
used on lines leased from the telephone company or sometimes on just a
long direct wire hookup.  Ordinary modems for a telephone line will
not normally work on such a line.  An ordinary telephone line has
about 40-50 volts (know as the "battery) on it when not in use and the
conventional modem uses this voltage for transmission.  Furthermore,
the telephone company has special signals indicating a ring, line busy,
etc.  Conventional modems expect and respond to these signals.
Connecting two such modems by a long cable will not provide the
telephone signals on the cable and thus the modems will not work. 
-->

<sect1> 専用線モデム

<p> これはデジタルモデムではなく、アナログモデムです。この特別なモデム
は電話会社から借りあげた回線で使用します。場合によっては長距離接続を行
います。通常の公衆回線用モデムは、こういった回線では正常に動作しません。
通常の回線では、使用していないときには約 40〜50 ボルトの電圧がかかって
いて、モデムは送信にこの電圧を用います。そして、電話会社には着信や通話
中などを知らせる特別な制御信号があります。通常のモデムはこの制御信号を
待ち受けて、応答します。長距離回線には制御信号がないので、こういったモ
デムを 2 つ接続しても動作しません。

<!--
A common type of leased line used two pairs of wires (one for each
direction) using V.29 modulation at 9600 baud.  Some brands of leased
line modems are incompatible with other brands.
-->

通常の専用線は 9600 ボーで V.29 を使用する、(各方向に 1 本づつ使う) 4 
線式の回線です。他社のモデムと互換性のない専用線モデムもあります。

&lsqb;訳注 : 専用線に関する mini-HOWTO があります。JF プロジェクトによ
る日本語訳 <url
url="http://www.linux.or.jp/JF/JFdocs/Leased-Line.html"
name="Leased-Line mini-HOWTO"> &rsqb;

<sect> 日本語訳について

<p> 日本語訳は Linux Japanese FAQ Project において行いました。翻訳に関
するご意見は JF プロジェクト <tt/&lt;JF@linux.or.jp&gt;/ 宛に連絡して
ください。

改訂履歴を以下に示します。

<descrip>
<tag>v0.08j, 23 Jan. 2000</tag>
翻訳 : さいとうかん <tt/&lt;can-s@geocities.co.jp&gt;/
</descrip>

<!--
END OF Modem-HOWTO
-->
</article>
