
ヘイズコマンドセット(ATコマンドセットとも呼ばれる)は、1981年に デール・ヘザーリントンとデニス・ヘイズ[1] [2]によってヘイズスマートモデム用に開発された特定のコマンド言語です。
コマンド セットは、ダイヤル、切断、接続パラメータの変更などの操作のコマンドを生成するために組み合わせることができる一連の短いテキスト文字列で構成されています。ダイヤルアップ モデムの大半は、さまざまなバリエーションの Hayes コマンド セットを使用しています。
コマンドセットは、最も初期の300 ビット/秒のモデム。より高速なモデムの追加機能を制御するために新しいコマンドが必要になったとき、各主要ベンダーからさまざまな個別標準が登場しました。これらは、基本的なコマンド構造と構文を共有し続けましたが、何らかのプレフィックス文字を使用して、 &Hayes およびUSRobotics用、 Microcom\用などの新しいコマンドを多数追加しました。これらの多くは、 SupraFAXModem 14400の導入とそれに続く市場の統合
の後、Hayes 拡張機能で再標準化されました
「ヘイズ互換」という用語は[3] [1]、2018年現在でも[アップデート]業界内では重要な意味を持っています。[4]
歴史
背景
掲示板システム(BBS)が導入される前は、モデムは通常、両端に既知のモデムがある直通電話回線で動作していました。モデムは「発信」モードまたは「応答」モードで動作し、データ転送用に 2 セットの周波数を手動で切り替えます。通常、電話をかけるユーザーはモデムを「発信」モードに切り替えてから、手動で番号をダイヤルします。リモート モデムが応答すると (すでに「応答」モードに設定されています)、電話の受話器がオフになり、発信者が手動で切断するまで通信が継続されます。
自動化が必要な場合、通常は応答側でのみ必要でした。たとえば、銀行では、終業処理のために複数の支店からの電話を受ける必要がある場合があります。この役割を果たすために、一部のモデムには、応答モードのときに自動的に電話に応答し、他のユーザーが手動で切断したときに回線を切断する機能が含まれていました。自動発信ダイヤルの必要性はかなり少なく、別の周辺機器である「ダイヤラー」によって処理されていました。これは通常、コンピューターの別の入出力ポート(通常はRS-232ポート) に接続され、モデム自体とは別にプログラムされていました。
この操作方法は、1960 年代から 1970 年代初頭にかけては問題なく機能しました。当時は、モデムはコンピュータ端末(発信) などの低機能デバイスをスマートメインフレーム コンピュータ(応答) に接続するために一般的に使用されていました。しかし、 1970 年代のマイクロコンピュータ革命により、低価格のモデムが導入され、半専用ポイントツーポイント リンクというアイデアはもはや適切ではなくなりました。潜在的に何千人ものユーザーが他の何千人ものユーザーのいずれかにダイヤルする可能性があり、当時の唯一の解決策は、ユーザーが手動でダイヤルすることでした。
コンピュータ業界では、ソフトウェアを通じてモデムにダイヤルする番号を指示する方法が必要でした。以前の個別のダイヤラーにはこの機能がありましたが、別のポートが必要で、マイクロコンピュータではそのポートを利用できない可能性がありました。別の解決策としては、コマンドの送受信専用の「コマンド ピン」のセットを使用することや、モデムが受信データをコマンドとして解釈する必要があることを示す信号ピンを使用することが考えられました。これらは両方とも、RS-232標準でハードウェア サポートされていました。ただし、マイクロコンピュータ上の RS-232 ポートの実装の多くは非常に基本的なものであり、コスト削減のためにこれらのピンの多くを削除したものもありました。
ヘイズの解決策
Hayes Communications は、 1981 年のSmartmodemで、既存のデータ ピンを変更せずに使用するソリューションを導入しました。代わりに、モデム自体を次の 2 つのモードのいずれかに切り替えることができました。
- モデムがデータをリモート モデムに送信するデータ モード。(データ モードのモデムは、コンピューターから受信したすべてのデータをデータとして扱い、電話回線を介して送信します)。
- データがローカル モデムへのコマンド (ローカル モデムが実行する必要があるコマンド) として解釈されるコマンド モード。
データ モードからコマンド モードに切り替えるには、セッションは3 つのプラス記号 ( ) のエスケープ シーケンス文字列+++と、それに続く約 1 秒の休止を送信します。エスケープ シーケンスの最後の休止は、帯域内シグナリングによって発生する問題を軽減するために必要でした。つまり、3 つのプラス記号の 1 秒以内に他のデータが受信された場合、それはエスケープ シーケンスではなく、データとして送信されます。元に戻すには、オンラインコマンド を送信しますATO。実際の使用では、多くのコマンドは完了後に自動的にオンライン モードに切り替わり、ユーザーがオンライン コマンドを明示的に使用することはまれです。
ヘイズの特許のライセンス供与を避けるため、一部のメーカーは、タイムガードインターバルなしのエスケープシーケンス(時間独立エスケープシーケンス(TIES))を実装しました。これは、コンピュータがデータモードでバイトシーケンスを送信しようとするとモデムが接続を切断するという重大なサービス拒否セキュリティ上の+++ATH0意味合いを持っていました。このようなモデムを介してインターネットに接続されているコンピュータの場合、ペイロードにシーケンスを含むping of death要求を送信することで、これを簡単に悪用できます。モデムはICMPデータペイロードをヘイズコマンドとして+++ATH0解釈するため、コンピュータのオペレーティングシステムは自動的に同じペイロードで送信者に返信しようとし、インターネットから直ちに切断されます。 [5]たとえば、コンピュータのユーザーが前述の文字列を含む電子メールを送信しようとした場合にも、同じエラーが発生します。
コマンド
Hayes コマンド セットには、ダイヤルや切断など、さまざまな電話回線操作用のコマンドが含まれています。また、モデムを設定するためのさまざまなコントロールも含まれており、その中には、オリジナルの Hayes モデムのさまざまなメモリ位置をユーザーが直接設定できるレジスタコマンドのセットも含まれています。このコマンド セットは、レジスタの意味を含め、初期の 300 ボー モデム製造業者のほぼすべて (かなりの数に上りました) によってほぼそのままコピーされました。
1200および2400ボーへの拡張には、新しいコマンドの追加が必要であり、その一部には新機能専用であることを示すアンパサンド(&)が先頭に付けられていました。ヘイズ自身も、1200の直後に2400ボーモデルを急いで導入せざるを得なくなり、時間節約のためコマンドセットは同一でした。[6]本質的には偶然ですが、これにより既存の1200ボーモデムのユーザーは、ソフトウェアを変更することなく新しいヘイズ2400モデルを使用できるようになりました。これにより、これらのコマンドのヘイズバージョンの使用が強化されました。数年後、米国電気通信工業会(TIA)/米国電子工業会(EIA)は、2400ボーのコマンドセットをデータ伝送システムおよび装置–シリアル非同期自動ダイヤルおよび制御(TIA/EIA-602)として正式に標準化しました。
しかし、ヘイズコミュニケーションズは、より高速な速度や圧縮をサポートするモデムのリリースが遅く、他の3社、マイクロコム、USロボティクス、テレビットが先導しました。これら3社はそれぞれ独自の追加コマンドセットを使用していました。1990年代初頭までに、4つの主要なコマンドセットが使用され、これらのうちの1つに基づいたバージョンがいくつかありました。14.4と15.0の広範な導入により、状況は再び単純化されました。1990 年代初頭に28.8 kbit/sモデムが登場しました。徐々に、オリジナルの Hayes 拡張コマンド セットをベースとしたコマンド セットが&普及し、その後、広く普及しました。現在も人気のあるコマンド セットは、US Robotics の人気モデム ラインのコマンド セットのみです。
説明
次のテキストは、Hayes コマンド セットの一部 ( AT コマンドとも呼ばれる) を示しています。「AT」は「注意」を意味します。各コマンド文字列の先頭には「AT」が付き、複数の個別のコマンドを「AT」の後に連結できます。
Hayes コマンド セットは、次の 4 つのグループに分けられます。
- 基本コマンド セット – 大文字の後に数字が続きます。たとえば、M1 などです。
- 拡張コマンド セット - 「&」(アンパサンド) と大文字の後に数字が続きます。これにより、基本コマンド セットが拡張されます。たとえば、&M1 です。M1 は &M1 とは異なることに注意してください。
- 独自のコマンド セット – 通常はバックスラッシュ (“\”) またはパーセント記号 (“%”) で始まります。これらのコマンドはモデムの製造元によって大きく異なります。
- レジスタ コマンド – Sr=n。ここで、r は変更するレジスタの番号、n は割り当てられる新しい値です。レジスタはメモリ内の特定の物理的な位置を表します。モデムには少量のメモリが搭載されています。4 番目のコマンド セットは、特定のレジスタ (メモリ位置) に値を入力するために使用します。たとえば、S7=60 はモデムに「レジスタ #7 を値 60 に設定する」ように指示します。レジスタは通常、モデムの動作の側面 (送信強度、変調パラメータなど) を制御し、通常は特定のモデルに固有です。
コマンド セット構文では、ほとんどのコマンドが文字と数字の組み合わせ (L0、L1 など) で定義されていますが、ゼロの使用はオプションです。この例では、「L0」は単なる「L」に相当します。以下の表を読むときは、この点に留意してください。
データ モードでは、エスケープ シーケンスによってモデムをコマンド モードに戻すことができます。通常のエスケープ シーケンスは 3 つのプラス記号 ("+++") で、実際のデータと区別するためにガード タイマーが使用されます。ガード タイマーの前には一時停止が必要であり、プラス記号の間に一時停止があってはならず、その後に一時停止が必要です。デフォルトでは、「一時停止」は 1 秒で、「一時停止なし」はそれより短い時間です。
構文上の定義
以下の文法定義が適用されます: [7]
<CR>キャリッジ リターン文字は、コマンド ラインと結果コードの終端文字であり、その値は 0 ~ 255 の 10 進 ASCII でレジスタ S3 に指定されます。デフォルト値は 13 です。<LF>ラインフィード文字は、ラインフィード文字として認識される文字です。その値は、0 ~ 255 の 10 進 ASCII で、レジスタ S4 で指定されます。デフォルト値は 10 です。詳細な結果コードが使用されている場合 (V1 オプションが使用されている場合)、ラインフィード文字は復帰文字の後に出力されます。それ以外の場合、数値形式の結果コードが使用されている場合 (V0 オプションが使用されている場合)、ラインフィード文字は結果コードに表示されません。<...>山括弧で囲まれた名前は構文要素です。コマンド ラインには表示されません。[...]コマンドのオプションのサブパラメータまたは AT 情報応答のオプション部分は、角括弧で囲まれます。括弧自体はコマンド ラインには表示されません。読み取りコマンドを持つ AT コマンドでサブパラメータが指定されていない場合、新しい値は以前の値と同じになります。サブパラメータの値を格納せず、読み取りコマンドを持たない AT コマンド (アクション タイプ コマンドと呼ばれる) では、サブパラメータの推奨されるデフォルト設定に基づいてアクションを実行する必要があります。
モデムの初期化
文字列には、モデムがダイヤルアウトまたは応答するのを最適に準備できるように、複数のヘイズ コマンドをまとめて含めることができます (例: ) 。ほとんどのモデム ソフトウェアは、ユーザー指定の初期化文字列(通常は長い連結されたAT コマンド) をサポートしており、起動時にモデムに送信されます。[8] V.250 仕様では、すべてのDCE が少なくとも 40 文字の連結コマンドの本体 (「AT」の後) を受け入れることを要求しています。[9]AT&F&D2&C1S0=0X4
セッション例
次の図は、モデムが接続された 2 台のコンピュータ (コンピュータ A とコンピュータ B) と、ターミナル エミュレータソフトウェアを使用してモデムを制御するユーザーを示しています。ターミナル エミュレータ ソフトウェアを使用すると、通常、ユーザーは Hayes コマンドをモデムに直接送信し、応答を確認できます。この例では、コンピュータ A のユーザーがモデムにモデム B の電話番号 (212) 555-0100 (長距離) をダイヤルさせます。すべてのコマンドと応答の後に、コマンドを完了するために キャリッジ リターンが送信されます。
互換性
オリジナルの Hayes コマンド セットはモデム ベースの通信に大きな進歩をもたらしましたが、時間が経つにつれて多くの問題が発生しました。そのほとんどは Hayes自体に起因するものではありませんでした。
- 文書化された標準がなかったため、他のモデム製造業者は外部から見えるコマンドと (大まかに) 基本的な動作をコピーしただけでした。その結果、モデムの状態の変化や、エラー状態、ハングアップ、タイムアウトの処理方法に、さまざまな微妙な違いが生じました。
- 各メーカーは、新たなニーズに対応するために新しいコマンドを追加する傾向があり、他のモデムとは互換性がないことが多々ありました。たとえば、ハードウェア ハンドシェイクまたはソフトウェア ハンドシェイクの設定には、モデムごとに異なるコマンドが必要になることがよくありました。これにより、基本的なHayes コマンド セットの便利な汎用性が損なわれました。
- Hayes 互換モデムの多くには、事実上互換性がない重大な癖がありました。たとえば、多くのモデムは、「AT Z」リセット コマンドを受信した後、数秒間の一時停止を必要としました。コマンド間にスペースが必要なモデムもあれば、そうでないモデムもありました。一部のモデムは、役に立たないボー レートを勝手に変更し、コンピューターが受信データをどのように処理すればよいか分からなくなってしまうこともありました。
こうしたすべての結果、最終的に多くの通信プログラムは、すべての「ヘイズ互換」モデムと通信できるという感覚をあきらめざるを得なくなり、代わりにプログラムは応答からモデムの種類を判別するか、特定のモデムを適切に動作させるために必要な特別なコマンドを入力できるオプションをユーザーに提供しなければならなくなりました。
オートボー
Hayes コマンド セットは、 "A" と "T" が非常に規則的なビット パターンを持っているため、自動ボー レート検出を容易にしました。"A" は "100 0001" であるため、先頭と末尾に 1 ビットがあり、"T" は "101 0100" であるため、(ほぼ) 1 つおきのビットが設定されたパターンを持っています。[10] RS-232 インターフェイスは最下位ビットを最初に送信するため、 8-N-1 (8 つのデータ ビット、パリティ ビットなし、1 つのストップ ビット)の対応するライン パターンは0 10000010 10 00101010 1 (スタート ビットとストップ ビットは斜体で表示) となり、これが同期ワードとして使用されます。
基本的なヘイズコマンドセット
次のコマンドは、古いものでも新しいものでも、AT コマンド セットをサポートするほぼすべてのモデムで認識されます。
注: コマンド文字列はCR (\r)文字で終了します。
コマンドセットの一部ではないが、チルダ文字~ はモデムコマンドシーケンスでよく使用される。~ は多くのアプリケーションでデバイスへのコマンドストリームの送信を一時停止する(通常は 0.5 秒)、たとえばリセット後などに発生する。~はモデムに送信されない。[11]
モデムSレジスタの定義
V.250
ITU -T は、コマンド セットの標準を再度確立する試みとして、1995 年にVシリーズ勧告V.25 terで標準を確立しました。これは 1998 年にV.250に改名され、ヘイズ コマンド セットに関係のない付録がV.251に改名されました。V.250 準拠のモデムは、標準で指定された方法で A、D、E、H、I、L、M、N、O、P、Q、T、V、X、Z、&C、&D、および &F コマンドを実装します。また、S レジスタを実装する必要があり、標準で指定された目的のためにレジスタ S0、S3、S4、S5、S6、S7、S8、および S10 を使用する必要があります。また、プラス記号 "+" で始まり、その後に A から Z までの任意の文字が続くコマンドは、ITU 勧告に従ってのみ実装する必要があります。モデムの製造元は、必要に応じて他のコマンドや S レジスタを自由に実装でき、標準コマンドにオプションを追加することもできます。
グローバル
ETSI GSM 07.07 (3GPP TS 27.007) は、 GSM電話またはモデムを制御するための AT スタイルのコマンドを指定します。ETSI GSM 07.05 (3GPP TS 27.005) は、GSM のショート メッセージ サービス(SMS) 機能を管理するための AT スタイルのコマンドを指定します。
GSMコマンドの例: [12] [13]
GSM/3G モデムは通常、ETSI GSM 07.07/3GPP TS 27.007 AT コマンド セット拡張をサポートしますが、実装されるコマンドの数は異なります。
Huawei、Sierra Wireless、Option などのほとんどの USB モデム ベンダーは、無線モード選択 (GSM/3G 優先) などの独自の拡張機能も定義しています。最近の高速モデムの中には、パフォーマンス上の理由から、データ接続にポイントツーポイント プロトコル(PPP) を使用する代わりに仮想イーサネット インターフェイスを提供するものもあります (PPP 接続はコンピューターとモデムの間でのみ使用され、ネットワーク経由では使用されません)。セットアップには、ベンダー固有の AT コマンド拡張機能が必要です。これらの拡張機能の仕様は公開されている場合もあれば、ベンダーがこれらの拡張機能にアクセスするために NDA を要求する場合もあります。[14]
音声コマンドセット
音声または留守番電話機能を備えたモデムは、これらのコマンドのスーパーセットをサポートし、デジタル オーディオの再生と録音を可能にします。
参照
- アクセスポイント名(APN)
- コマンドおよびデータ モード (モデム)
- ITU-T勧告:
注釈と参考文献
- ^ ab Victoria Shannon (1999年1月7日)。「モデム王の興亡」ニューヨークタイムズ。
パートナーと共著
- ^ Georgi Dalakov (2021年1月4日). 「The Modem of Dennis Hayes and Dale Heatherington」 . 2015年1月8日閲覧。
- ^ 「ヘイズ互換」。Computerworld 1987年3月30日、61ページ。
- ^ 「Hayes互換モデムの設定方法」。IBM 。 2018年6月17日。
- ^ Max, Schau (1998 年 9 月 27 日). 「1+2=3, +++ATH0=Old school DoS」. Bugtraqメーリング リスト. 2012 年12 月 8 日閲覧。
- ^ Frank Durda IV、「AT コマンド セット リファレンス - 履歴」、Wayback Machineで 2008-04-15 にアーカイブ、1993 年
- ^ AT コマンド リファレンス ガイド[リンク切れ ]
- ^ 「初期化文字列: 理由、内容、場所」。2009 年 3 月 10 日時点のオリジナルよりアーカイブ。2008年4 月 9 日閲覧。
- ^ 「5.2.1 コマンドライン一般フォーマット」(PDF)、V.250: シリアル非同期自動ダイヤルおよび制御 (05/99、07/03)、ITU-T /電気通信標準化局
- ^ 「シリアルインターフェース」。PICList 。 2016年5月15日閲覧。
- ^ 「その他のモデムコマンド」。Chebucto Community Net 。 2016年9月12日閲覧。
- ^ ab 「開発者ガイドライン 2010 年 6 月 Sony Ericsson 携帯電話用 AT コマンド」。2011 年 9 月 29 日時点のオリジナルよりアーカイブ。090505 開発者.sonyericsson.com
- ^ 「UC864-E ソフトウェア ユーザー ガイド」(PDF) 。2011 年 7 月 14 日時点のオリジナル(PDF)からアーカイブ。090505 m2m-platforms.com
- ^ 「ダン・ウィリアムズのブログ – そのとき私はリボルバーに手を伸ばします…」 2009年3月20日。
外部リンク
- AT コマンドのリスト: 基本 (Hayes)、拡張、独自
- Hayes AT コマンド リファレンス マニュアル
- Hayes AT コマンドのリスト 2008-07-10 にWayback Machineでアーカイブされました
- 3gpp.org、ユーザー機器向け3GPP AT コマンド セット
- モデム初期化文字列 2009-03-10 にWayback Machineでアーカイブ
- SMS 用の拡張 Hayes AT コマンド パラメータ (廃止)
- FAX/モデムのクラスの決定
- Openmoko: AT コマンド
- セルモデムコマンド 2007-10-28 にWayback Machineでアーカイブ
- ITU 標準 V.250
- Telitの AT コマンド リファレンス ガイド(終了)
