Armadilloフォーラム

pppdによるFOMAアダプター初期接続不良

n.yamamoto

2015年1月25日 21時59分

Yamamotoと言います。

Armadillo-460でFOMAアダプターを使用してpppdによりメールやソケット通信を行っていますが
起動直後に接続出来ないか、接続に時間がかかります。

pppdはプロセスに有るのですが、FOMAアダプターと通信している形跡がありません。
psによるプロセスはありますが、/var/run/ppp0.pidはありません。

一度pppdプロセスをKillしてから再度pppd接続すると何度でもスムーズに繋がります。

何か初回起動時にあるのでしょうか?

コメント

n.yamamoto

2015年1月26日 13時48分

Yamamotoと言います。

追加で解ったことがあります。

シリアルモニターを繋いで、起動直後のpppdとFOMAアダプターのシリアル通信を確認しましたが
なぜか何も通信していません。

一旦pppdをKillして再度接続させるとシリアル通信が実施されています。

初回は何かを見ていて通信をしないのでしょうか?

y.nakamura

2015年1月26日 16時58分

中村です。

> シリアルモニターを繋いで、起動直後のpppdとFOMAアダプターのシリアル通信を確認しましたが
> なぜか何も通信していません。

違う原因かもしれませんが、もしかしたら・・・
以前、FOMA UM02-F専用アダプタセットでpppをするときに、
pppdのオプションにcrtsctsを設定したらモデムとの通信が
できなくなった、というトラブルにあったことがあります。

crtsctsは使ってますか?
それから、FOMAアダプタの型番は?

--
なかむら

n.yamamoto

2015年1月26日 17時55分

Yamamotoです。

pppdのオプションにcrtsctsは設定しています。

FOMAアダプターはUM03-K0を使用しています。

crtsctsはハードウェアフロー制御設定のようですが、無しにした方が良いのでしょうか?
でも、一旦最初のpppdを殺して再度pppdを起動すると繋がるのはなぜでしょうか?

よろしくお願いします。

y.nakamura

2015年1月26日 18時24分

中村です。

> FOMAアダプターはUM03-K0を使用しています。

私の場合は、03が出るより前の"UM02-F専用アダプタセット"でした。

> crtsctsはハードウェアフロー制御設定のようですが、無しにした方が良いのでしょうか?

ためしに、pppdのオプションからcrtsctsを削除して
やってみてもらえますか?

あるいは、pppdを起動する前に、
stty -F /dev/ttymxc1 crtscts
を実行です。
(この場合はpppdのcrtsctsは付けたまま)

もしこのどちらででも解決できるなら、私の遭遇したトラブルと
同じ原因かもしれません。

> でも、一旦最初のpppdを殺して再度pppdを起動すると繋がるのはなぜでしょうか?

上の2つ目の解決方法、事前にsttyでcrtsctsを設定すると
回避できるのと同じ理由だと思います。

以下は、もし同じ原因だとするなら・・・です。
当時の詳細な作業(ソース解析)メモを紛失してしまっていて、
記憶を頼りにするしかない(あるいは、もう一度実機で
調べなおすしかない)のですけど、ドライバのバグが
原因であることには間違いありません。

ML時代の
[Armadillo:08293] Armadillo-400 シリーズのハードウェアフロー制御関連の問題修正
http://lists.atmark-techno.com/pipermail/armadillo/2012-September/00829…
の本文の説明と、この投稿に添付したパッチ(ソース)に記載した
メモ(コメント)を参考にしてください。

上で2種類の回避方法を書きましたが、根本的な解決方法は、
MLの投稿に添付したパッチをあててバグを修正することです。

--
なかむら

izawa

2015年1月26日 18時40分

毎度お世話様、伊澤@ITTOです。
うちではA420 + UM03でやってますが、pppdで繋がらないことはありませんでした。
なかむらさんの書き込みで気づきましたが、うちではsttyでcrtsctsを設定してからpppdをcrtsctsつきで動かしています。
逆にpppdからcrtsctsを外すと、忘れた頃に詰まってエラーが起きたりしますからフロー制御は必要なのでしょう。

この他Yamamotoさんの件とは直接関係ありませんが、pppd使用後に直接デバイスを操作するプログラムを動かすと
open()から帰ってこなくなる現象が観測されました。
これももしかしたら、なかむらさん言う処のドライバのバグなのかも知れません。
またなかむらさんに助けられました。この場を借りて、ありがとうございます。

尚、現状では(諸事情から)ドライバのバグには手を入れず、sttyとpppd以外では触らないようにしています。
今の処、これで安定しているようです。

n.yamamoto

2015年1月27日 11時11分

Yamamotoです。

中村様、izawa様

アドバイス有難うございます。

> あるいは、pppdを起動する前に、
> stty -F /dev/ttymxc1 crtscts
> を実行です。

rcに上記を追加して、pppdオプションはそのままで試したところ初回に正常接続できることが確認できました。
私も、izawa様同様に元システムはあまり触らずに、上記追加で対応しようと思います。

有難うございました。

y.nakamura

2015年1月27日 14時59分

中村です。

> > stty -F /dev/ttymxc1 crtscts
>
> rcに上記を追加して、pppdオプションはそのままで試したところ初回に正常接続できることが確認できました。
> 私も、izawa様同様に元システムはあまり触らずに、上記追加で対応しようと思います。

実は私も、あの調査の前に作ったシステムでは、
この方法で回避して、そのままになっています。

あのパッチに自信がないわけではないですけど(
それとは別のシステムでは動いていますので)、
すでに動作していてトラブルのない物は、
触らないほうがいいですからね。

--
なかむら