モデムの認識

Linux 活用日記

Last modified: Nov 1th, 2001


Table of Contents


PPP接続が出来ない(内蔵モデムを認識しない)


手持ちのモデムが認識できるかどうかですが, 基本的に Winmodem であれば簡単には認識できません. Winmodem の判別方法は後述しますが, モデム名に "Win" や "Winmodem" という名前が付いているかどうか Windows の「コントロールパネル」>「デバイスマネージャー」でモデム名を確認してみましょう. これら Winmodem については後述します. また TA は初期化コマンドが必要なので TA のマニュアルなどを参照して下さい.

そもそも内蔵モデムの認識が出来ているかどうかすらわからない場合は, マシンが実際にモデムを認識しているかどうか確認してみましょう. 先ず, 事前に BIOS の設定で Plug and Play OS を NO (無効)にしておきます. その後, Linux を起動し, 以下のコマンドを実行して下さい.

# less /var/log/messages | grep tty

これで ttyS0 以外に以下のように表示されていますでしょうか?あればとりあえず内蔵モデムの存在は認識されています.

ttyS03 at 0x02e8 (irq = 3) is a 16550A
ttyS00 at 0x03f8  (irq = 4) is a 16550A

ここでの I/O ポートと IRQ は以下のようになります.

I/OポートとIRQ
COMポート Kernel2.2.xの場合 Kernel2.0.xの場合 I/O IRQ
COM1 /dev/ttyS0 /dev/cua0 0x3f8 4
COM2 /dev/ttyS1 /dev/cua1 0x2f8 3
COM3 /dev/ttyS2 /dev/cua2 0x3e8 4
COM4 /dev/ttyS3 /dev/cua3 0x2e8 3

* Kernel2.0.x の場合は /dev/ttyS* ではなく /dev/cua0, /dev/cua1 などとなります.

認識の設定をしてみましょう.
モデムが COM4 に接続されている場合はシリアルポートは /dev/ttyS3 になります. その場合は以下のようにします. もしわからなければ Windows がインストールされているのであれば「デバイスマネージャー」で確認しておきましょう.

# setserial /dev/ttyS3 irq 4 autoconfig
または,
# setserial /dev/ttyS3 port 0x03e8 irq 4 uart 16550A

と入力し, その後に

# setserial -g /dev/ttyS3

と入力します. ここで以下のように表示されたら次に進みます.

/dev/ttyS3, UART: 16550A, Port: 0x03e8, IRQ: 3

もしも以下のように [unknown] と表示されたら残念ながらそのモデムは利用できない可能性が高いと言えます.

/dev/ttyS3, UART: unknown, Port: 0x03e8, IRQ: 3

次に認識の確認をします.
その前に /dev/modem へのリンクを張っておきます.

# ln -s /dev/ttyS3 /dev/modem
# chmod 660 /dev/modem

認識を確認します.

# cu -l /dev/modem -s 9600
または
# cu -l modem
または
# cu -l ttyS0〜3

として, AT コマンドを受け付けるかどうか確認してみてください.

AT ---> 入力
OK ---> 出力

ということです.

OK が出たら実際にプロバイダのアクセスポイントに掛けてコールするか確認します.

ATDT072-876-5432
(ATDT はプッシュ回線, ATDP がダイヤル回線)

cu を終了させるには ~. とします.

もしも以下のエラーが発生したりフリーズした場合はシンボリックリンクがちゃんと出来ているか確認して下さい.

# cu -l /dev/modem -s 9600
(# cu -l modem)
....

Disconnected. -->エラー
または
# cu -l /dev/modem
cu: /dev/modem: Line in use -->エラー

このようなエラーの場合, いくつか原因が考えられますが, 例えば上記のデバイスファイル (/dev/ttyS*) が間違っているか, アクセス権限がないなどです. アクセス権限が無い場合は以下のように /etc/group を編集してみます.

uucp:x:14:uucp

これを以下のように使用するユーザー名を追加します. 例えば,

uucp:x:14:uucp,jiro

これでうまく認識できれば ダイヤルアップ接続の設定を行います. その時に念のためもう一度 /dev/modem へリンクを必ず張るようにしてください. 尚, ダイヤルアップ接続には PPxP を使うことをおすすめします. 特に TA (ターミナルアダプタ) を使用する場合は PPxP ならばいくつかの機種の初期化コマンドの設定などがありますのでおすすめします.


WinModem とは?


WinModem とは, Windows でしか動作しないモデムのことです. また, Linux で動作しないと言われるものに PCI バス接続のボードなどがあります. ISA バス接続のモデムボードはかなりの確率で動作するようです. 外付けモデムとなれば動作する可能性が非常に高く, PCMCIA カードモデムはほとんど動作しているそうです. Winmodem は最近, 特に多くのノートパソコンに搭載されるようになりました. 代表的なものに MWave や Lucent LT WinModem などがあります. この WinModem とは簡単に言えば Windows の機能を利用して動作するものです. このような UART をエミュレートするタイプのモデムは Linux 上では動作しない可能性大です. 例えば, setserial コマンドで認識状態を確認した場合, UART が" Unknown "であれば Winmodem の可能性大です.

# setserial -g /dev/ttyS1

と入力してどのようなメッセージが出るか確認してみましょう. 他の識別方法としては, Windows を起動して, 「システムのプロパティ」から Modem の「ドライバ」を見て, 拡張子が .vxd の仮想デバイスドライバがあれば Winmodem である可能性大です. 「モデムのプロパティ」や, パソコン添付のマニュアルを確認して” Winmodem ”という名前が入っていないか, チェックしてみた方がいいでしょう. ただ, 最近は Winmodem を Linux で動かそうという動きが活発なようで, こちらでは Lucent Modem が認識できるバイナリが公開されていますし, IBM からは MWave のドライバも公開されているそうです. Lucent Modem 用のドライバについては私自身の環境でも試してみましたが, 動作させることは出来ませんでした. しかし, 実際に動作報告もあることから試してみる価値はあると言えるのではないでしょうか.


モデムの認識例


TLJBBS で以下のようなご質問を受けました.

「私のモデム (OMRONのME5614ISA) はドライバに ".vxd" ファイルを使っているようです. これは Winmodem と判断して良いのでしょうか?」

実際に modem を認識していないのなら状況から考えて WINMODEM の可能性がかなり高いでしょう. ただし, ".vxd" を使っていればすべてそうだと言い切れるものではありません. この件に関して, TLJBBS で以下の回答をされた方がいらっしゃいました.

--------------------
■ TLJBBS より
Re: OMRON ME5614ISA 使ってます.

OMRON の ME5614 ISA 問題なく使えてます.
OS は TLJ 4.0 です.
まずモデム本体のジャンパー SW を以下のように設定
しました.
JP16 OFF
JP17 1-2 ON

これで Non-PNP にしておいて, IRQ3, COM2
を使うように設定しました.
JP1のみON, (JP1, 2)
JP3 ON, (JP3 - 11)

これですんなりと使えました.
IRQ と COM ポートの設定は自分の環境に合わせて設定
してくださいね.
isapnp に頼るより最初から Non-PNP で使ったから上手
くいったのかも知れず.
-------------------------





モデムを認識しなくなった


今まで Linux で使えていたモデムを認識してくれなくなった, これは起動時のログを見て確認しなければなりませんが, IRQ が衝突してる可能性があります. 以下のコマンドを実行してみて下さい.

# setserial /dev/ttyS1 irq 3 autoconfig

PC カードモデムの場合は,

# /etc/rc.d/init.d/pcmcia restart

また, /etc/pcmcia/config.opts で IRQ について設定することができます.

また, 起動デーモンを止めることによりうまく認識することがあります.




PHS で高速データ通信


Linux をモバイルで利用するとなるとリアルタイムなデータ通信は必要不可欠です. そうなると PHS 回線での 64K/32K データ通信をということになります. 例えば私が使っている PHS(NTT Docomo P-in Comp@ct) もPC カードソケットに挿入すれば何の問題もなく自動認識されますので出先に居てもすぐにデータのダウンロードやメールの送受信など高速なデータ通信が可能です.




HOME