12.3. AT コマンドでモデムを設定する

今では、たいていのモデムはヘイズモデムとそのコマンドセットに基づく、 スマートモデムです。しかし先に論じたように、 Linux のシリアルコンソールは、 ダムモデムで動作するように設計されています。

したがって、スマートモデムをダムモデムと同じになるまで、 機能を落とします。 高価なモデムの中には、DIP スイッチや、 ボードジャンパーがあり、 それらを使ってダムモードにするものもあります。

そのモデムの AT コマンドを解説しているマニュアルは必携です。 たいていのモデムは、より一般的な AT コマンドでは一致していますが、 もっと専門的なコマンドに関しては違っています。

12.3.1. ポート速度を設定する

ヘイズの AT 互換モデムでは、 電話しているモデムがどんな速度を使っていても、 コンピュータ・モデム間は一定の速度を維持できます。

ほとんどのモデムでは、電源投入後最初に受信する文字の速度に基づいて、 自動的にこの速度を設定します。

そこで、 モデムの電源を切り、またすぐに電源を入れて下さい。そして minicom -o console コマンドでそのモデムに接続してください。 それから Enter を何回か押します。 これでモデムは Minicom が使っているのと同じビットレートで動作します。 この速度は、Section 12.1 で、シリアルコンソールに設定した速度です。

モデムになにかを出力するよう要求すれば、ポートの速度は確認できます。

モデムによってはポート速度を再設定する AT コマンドがあります。 お使いのモデムのマニュアルで、AT&B1 コマンドをちょっと調べてみてください。 また明示的にポート速度を設定するコマンドがあるモデムもあるので、 モデムのマニュアルで、 ざっと ATB コマンドを調べてみてください。

12.3.2. アンサーモードを設定する

ATS0=2 コマンドを使えば、 モデムは 2 回目の呼出音で着信に応えます。

電話会社によっては、1 回目の呼出音で応えると、 モデムを識別できなくなる場合があるので、 そのような設定にはしないで下さい。

12.3.3. CTS/RTS のハンドシェークを設定する

CTS/RTS のハンドシェークを使うと、 文字落ちしなくなります。

AT&K3 がその AT コマンドです。

12.3.4. "Data Carrier Detect" を設定する

"Data Carrier Detect" は、電話しているモデムの有無に従うようにしてください。

この AT コマンドは AT&C1 です。

12.3.5. "Data Terminal Ready" を設定する

モデムは "Data Terminal Ready" が制御するようにしてください。 もし DTR が上がっていれば、 そのモデムは着信を受け付ける状態になっています。 DTR が落ちている場合は、 それ以上はどのような着信も受け付けないようにし、 既に着信している場合は、 いずれもハングアップさせてください。

この AT コマンドは AT&D2 です。

12.3.6. CONNECT メッセージを出さないように設定する

ヘイズの AT 互換モデムは、 着信すると普通はメッセージを出力します。 例えば次のようなものです。

モデムにはこういったメッセージ出力を無効にする、 ‘quiet mode’ があります。

この AT コマンドは ATQ1 です。 このコマンドに対応する応答の OK は表示されません。

12.3.7. コマンドをエコーバックしないように設定する

コマンドのエコーを返すとコンソールが混乱することがあります。 ですから、コマンドのエコーバックは無効にして下さい。

この AT コマンドは ATE0 です。

12.3.8. 静かに接続するように設定する

ほとんどのモデムにはスピーカーがあります。デフォルトでは、モデムが 接続中でしかも一般的なプロトコルと速度でネゴシエートしている間は、 スピーカーから音が出続けています。 こうしておけば、間違えて何度も人を呼ばずに済むので、 発信しているモデムにとっては非常に役立ちます。 しかし、モデムが応答中の場合は、スピーカーの音が邪魔になることがあります。

もっと静かなコンピュータルームがお望みなら、 ATM0 コマンドを使ってスピーカを切って下さい。

12.3.9. オプションで、DTR の遅延を設定する

RS-232 をサポートしている半導体がリセットされると、 "Data Terminal Ready" が落ち、 このため、モデムがハングアップしてしまいます。 これにはいらつくことがあります。 もし mgettytoggle-dtr-waittime と似たパラメータを、 getty でもサポートしていれば、モデムが DTR を無視する時間を延長できます。 強制的にハングアップさせるために、 gettyDTR を落としたままにしておく時間を、 モデムに設定した値以上に延長するわけです。 結果的には、この半導体をリセットしても、 モデムはハングアップしなくなりますが、 それでもログインセッションの終りに getty がモデムをハングアップさせる可能性はあります。

ですからお使いのモデムのドキュメントを調べてください。 この例のモデムでは、 S レジスタ 25 を使って、 DTR の変化を検知するしきい値を入れています。この値は 100 分の 1 秒単位です。 モデムを ATS25=150 (1.5 秒) に設定し、さらに mgettytoggle-dtr-waittime 2000 (2 秒) と設定することで、 DTR の瞬間的な低下を無視するようにします。

12.3.10. アテンションシーケンスを無効にするよう設定する

モデムを正しく設定して順調に動作していれば、 モデムのコマンドモードにアクセスできるようにする、 +++ シーケンスを無効にして下さい。

この AT コマンドは ATS2=255 です。

たまたまこのコマンドを実行してしまった場合は、 Section 12.3.12を見て、 そのモデムを工場出荷時のデフォルトパラメータにリセットして、 再起動して下さい。

12.3.11. 設定例

12.3.12. モデムをリセットする

これ以上の AT コマンドをモデムに出す必要がある場合は、 一旦モデムの電源を切り、それからまた電源を入れて下さい。 こうすればモデムはコマンドモードになるはずです。

では次のコマンドを出して、モデムを工場出荷時設定に戻してみましょう。

もしこれが失敗した場合は、モデムの設定メモリをクリアする必要があります。 この手順はモデムの製造業者によって様々だし、 たぶんモデムを分解する必要があるでしょう。