[Armadillo:08107] Re: PPP接続中のモデムからの"NO CARRIER"受信

東浦 孝文 email@hidden
2012年 6月 29日 (金) 09:30:04 JST


東浦です。

とし様、ご返答有り難うございます。

> > 1)pppdの設定等(/etc/ppp/optionなど)で、 "NO CARRIER"を受信時にpppdを
> >  ダウンさせる方法があるのでしょうか?
> pppd のチャットスクリプト処理が完了すると、以降はPPPのHDLC的な
> フレーム単位の送受信に移行するはずですので、モデムからの
>  "NO CARRIER" 文字列が来ても、pppd はそれは分からないかと思います。
やはりそうですか。ATコマンド系の処理は「chat」が引き受けていますので・・・
pppコネクション中には、データ受信する関数があったのですが、接続完了(papの認証
完了)と共にぴたりとデータが止まりました。
何処か、IP関連データとATコマンド的なデータを受信するところがあるのではと考えて
あちらこちらにデバッグプリントを仕掛けましたが、見つからずメーリングリストに投
稿させて貰いました。

> > 2)上記1)が無い場合、モデムからの"NO CARRIER"の文字列を受信するpppd内部の関
> >  数が存在するのでしょうか? (存在すれば、"NO CARRIER"を受信時に自分自身に
> >  signalを送信してダウンさせられます)
> 回答にはならないのですが、別解として、"NO CARRIER" 文字列ではなく、
> モデム(MF111)の制御信号にあたる情報は変化しないでしょうか?
> 例えばCD(DCD)信号です。
> もちろん、USBモデムですので、昔のモデムの様にステータスLEDは無いと
> 思いますが、モデムである限りは、モデムの制御ライン(DCD/DSR/DTR/RI)
> あたりは何かしらそれらしく(USBドライバが)見せかけてくれてるかなと
> 思ったりしています。
> "NO CARRIER" と同時にモデム制御ラインが変化すれば、その制御ラインを
> 見張ればよいかと思っています。
/etc/ppp/optionsにモデム制御線関連のオプションを設定してみましたが、駄目でした。
もしかしたら、何かあるのかも知れませんが、コネクションが切れるまで20分ほど掛か
るので5,6パターンを試して諦めてしまいました。
これは、USBモデムドライバ側がMF111のチップに完全対応していない為の可能性もありま
す。純正のUSBモデムドライバのある製品だと、 制御線で切断検出してくれるかも知れま
せんね。

> あるいは、http://linuxjm.sourceforge.jp/html/ppp/man8/pppd.8.html に記載のある、
> lcp-echo-failure あたりを設定すれば、pppd と対向にあたるPPPサーバ間で
> LCP echo-reply の応答が無ければ回線断と pppd が判断してくれそうにも思います。
> この場合、LCP echo が pppd と対向にあたるPPPサーバ間で交換されるので、
> 無通信とは見なされず、回線が繋がったままになるかも知れません。
> 課金の形態は分かりませんが、課金に関わるかも知れません。
なるほど、こんな手があるのですか。定期的にデータが送信出来るので、回線切断防止
で実験をしましたが、切断まで待っていませんでしたので結果がどうなるか知りません
でした。
ただ、パケット代が掛かるので最後の手と考えております。(接続時のpppパケットは無
料ですが多分これにはパケット代が掛かるのでしょうね。)


結局は4)のUSBモデムドライバ側で"NO CARRIER"検出でpppdへシグナルを送る方法で対応
しました。
これで何とか、常時接続(20分毎位に回線断がありますが・・・・)を確立できそうです。
汎用性が無くて、行儀が悪いそうなのが困りものですが。

ユーザープログラムでpppdのプロセスIDを取得するプログラムは作っていたのでドライバ
に入れたらコンパイルすら通りませんでした。
カーネルプログラムに出来ること>ユーザープログラムに出来ることと考えていたので、
これは予想外で大変慌てました。

まだまだ組み込みLinuxには素人なので、これからもお世話になると思います。
(只今、iptables関連で格闘中です)

> ではこれにて。
これからもよろしくお願い致します。


ではでは




armadillo メーリングリストの案内