はじめに
皆さんはお手持ちの携帯電話でダイヤルアップ接続をすることはありますでしょうか? 私はよく NTT ドコモの FOMA のパケット通信でダイヤルアップ接続をしています。普段は FOMA P902i とノートパソコンを Bluetooth 接続していますが、今回は USB ケーブルで接続した場合に一挙に3つも認識される COM ポートについて書きたいと思います(USB モードを通信にしている場合のみ COM ポートは使用できます。ストレージモードでは COM ポートは使用できません)。このメモで例として使用しているのは FOMA P902i ですが、他の FOMA でもほとんどの機種で同様です。
3つのポート
FOMA P902i を Windows XP に接続してドライバをインストールした後にデバイスマネージャで表示すると、以下の3つのデバイスとして認識されていることが確認できます(該当部分のみに編集済み)。
この例ではポートとして FOMA P902i Command Port が COM13 として、FOMA P902i OBEX Port が COM12 として認識されていることがわかります。モデムとして認識されている FOMA P902i は、プロパティで確認すると COM11 として認識されていました。
モデムは FOMA P902i が携帯電話であることから直感的にダイヤルアップをする際に選択すればよいということがわかるかと思いますが、他の2つのポートはいったい何なのでしょうか。
FOMA P902i Command Port
このポートはモデムとして認識されるポートと同様に AT コマンドを受け付けるためのポートです。モデムとは別になぜこのポートが用意されているのかというと、モデムによる通信とは別に、常に FOMA(以下、移動機)の状態を制御したりモニタリングするためです。モデムとして接続中に AT コマンドを発行することは仕様上不可能ではありません(無手順でパソコン通信接続をしていた方はわかるかもしれませんが、接続中のモデムに対していったん AT コマンドを受け付けるモードに戻すことができます。この状態で AT コマンドをいろいろと使うことができます。そして必要な AT コマンドの発行を終了したら元の通信モードに戻るための AT コマンドを発行します。これでまた通信ができる状態に戻ります)が、現実的にはダイヤルアップ接続を OS が管理している関係上、そこへ割り込むことは困難です。また AT コマンドモードと通信モードを頻繁に行き来するのは速度的なペナルティもかなりのものです。
そこで常に AT コマンドによる制御をするための専用のポートが用意されました。それがこの Command Port です。ほぼモデムとしての移動機と Command Port としての移動機では同じ AT コマンドを使用することができますが、一部はそれぞれのポート専用のものも存在しています。
このポートは、主にカーナビゲーションシステムのような外部機器が使用することを想定していますが、Windows でも対応ソフトウェアを用意することで、きめ細かく移動機の状態を表示したり制御したりすることも可能です。
FOMA P902i OBEX Port
このポートは移動機とアプリケーションが通信するためのものです。移動機に記録されている、電話帳、メール、画像、映像などの情報をアプリケーションが取得したり書き込んだりすることができます。また、一部の電話機固有情報の取得をするためにも使用します。この際のプロトコル(通信手順)は OBEX(Object Exchange) を用い、移動機側がサーバーで、アプリケーション側がクライアントの関係となります。
単純にアプリケーションが1個のデータを移動機へ送信する場合は、通常の OBEX による接続(CONNECT
)、データ送信(PUT
)、切断(DISCONNECT
)を行うだけです。データは一般的な vCard や vCalendar などの形式を使用します。一部キャリア規定および移動機固有のデータについては vNote 形式にラップして独自形式のデータを送信することになります。通信によってデータを受け取った移動機はユーザーに対して該当データの種類と保存の可否確認を求め、許可がでればそれを受け入れます。
電話帳やメールなどの一括取得や一括書き込みや移動機固有データの取得を行う際には、認証を伴う OBEX を使用します。これは接続(CONNECT
)時に移動機とアプリケーションソフトウェアの間で共通のパスワードに基づく認証を行うことを指します。認証を伴う接続(CONNECT
)を行うと電話帳やメール等の一括取得、移動機固有データの取得(GET
)が行えるようになります。また、電話帳やメール等の一括書き込み(PUT
)も行えるようになります。
メーカーおよびキャリアが配布しているツールや、市販のツールもこのポートを経由して移動機の各種情報にアクセスしています。
余談になりますが、この OBEX による情報のやり取りは赤外線ポートを経由しても行われています。ただし、認証を伴う各種操作については現在の機種ではできないように制限されています。以前の機種(例えば FOMA N2051)ではできたことを考えると、セキュリティ上の懸念で無効化されているのだろうとは思うのですが、できれば赤外線通信でこれらの情報をやり取りの可否を移動機のメニュー操作でオン・オフできるようにならないものでしょうか。このメモを移動機開発を行っておられる方が見ているとは思えませんが、もしも見ていらっしゃったらご検討いただけるとうれしいです。・・・と、ここまで書いてから思ったんですが、もしかしたら機種によっては現在でもできたりするんでしょうか??
まとめ
このように FOMA を Windows に認識させると一気に3つも増える COM ポートはそれぞれ意味があるものです。複数機種を接続している人はすごい数のポート数になっておられる方もいるでしょう。また、Windows 2000 では接続する USB ポートを変更すると、同一の機器でも新たな COM ポート番号が割り当てられることからさらにすごいことになっておられる方もいらっしゃるかもしれません(Windows XP では異なる USB ポートに接続しても同一機器に対しては同一の COM ポート番号を割り当てます)。しかし、理解を深めることで少しは邪魔という感じが減るとかもしれません?
おまけ
FOMA は USB 標準仕様に従って USB 機能が実装されています。関連する仕様は USB 仕様の Communications Device Class の Class Definitions for Communication Devces 1.1 と CDC Subclass Specifiction for Wirelsss Mobile Communication Devices です(こちらのページからダウンロードすることができます)。また、NTT ドコモ自身も FOMA の USB 仕様「FOMA USBインタフェースを利用するための技術参考資料 第1.0版」を公開しています(こちらのページからダウンロードすることができます)。これらを参照することでドライバが用意されていない環境でも FOMA を USB 接続で活用するためのドライバや独自の全機種対応ユニバーサル FOMA ドライバのようなものを作成することも可能です(一部の携帯電話メモリ操作ソフトウェアでは、このような独自のユニバーサルドライバ(主に AMI 製の汎用 DSCDMA ドライバ)を採用しているところもあるようです)。