Armadilloフォーラム

Armadillo-IoT G3でダイヤルアップ再接続が出来ない

skn

2016年9月9日 16時39分

お世話になります、関根です。

●現状●
Armadillo-IoT G3でダイヤルアップを登録し、接続して定期的にデータを送信しています。
運用していると、不定期(数日や数週間)にダイヤルアップから切断する時があり、通信出来ない状態になります。
安定して通信を行うためにはどのようにすればよいかご助力を頂きたく思います。

切断状態の際に以下のコマンドを実行してもErrorとなり再接続は出来ませんでした。
root@armadillo-iotg:~# nmcli connection up gsm-ttyACM3
Error: Connection activation failed.

添付ファイルに切断時のsyslogを添付させていただきます。
「Aug 6 02:18:09」あたりに切断され、その後通信ができていません。

●疑問●
1.ダイヤルアップが切断された場合はNetworkManagerなどで自動再接続が行われないのでしょうか。
また、以下のログは、接続リトライをして失敗しているのでしょうか?
Aug 6 02:20:14 armadillo-iotg NetworkManager[396]: (ttyACM3): modem state changed, 'registered' --> 'connecting' (reason: user-requested)
Aug 6 02:20:14 armadillo-iotg ModemManager[397]: Modem /org/freedesktop/ModemManager1/Modem/0: state changed (connecting -> registered)
Aug 6 02:20:14 armadillo-iotg NetworkManager[396]: (ttyACM3): modem state changed, 'connecting' --> 'registered' (reason: user-requested) 

2.上記にて自動再接続が行われないとした場合、手動で再接続を行うためにはどのようにすれば良いでしょうか。

3.もし今回の件がダイヤルアップで常時接続していたためキャリア側から切断されたとした場合、
通信のたびに接続、切断をするためには以下の方法で良いでしょうか。
・nmcli connection up [ID]
・mmcli -m 0
 ※statusがconnectedになるまで待機
・データを送信
・nmcli connection down [ID]

以上、ご協力を頂けますようお願い致します。

ファイル ファイルの説明
停止時syslog.txt
コメント

ippei

2016年9月9日 17時27分

お世話になっております。舩原と申します。
こちらでの確認でも、同様の症状が出ております。

syslogを見ると、
Aug 6 02:19:35 armadillo-iotg pppd[769]: Modem hangup
というものがあり、
これ以降に不調が起きているようです。

ModemManagerのlogを--log-level=DEBUGにして取得したログをアップいたします。

[1473264068.113093] (ttyACM3) unexpected port hangup!
[1473264068.119663] (ttyACM3) forced to close port
[1473264068.125189] Disconnected bearer '/org/freedesktop/ModemManager1/Bearer/0'

というログが残っており、
これから先はttyACM3が開けなくなっています。
G3内部のモデムとの通信がうまくいっていないような症状です。

ModemManager側の問題なので、
systemctl restart ModemManager.service
でModemManagerを再起動した後、
nmcli device connect ttyACM3
として再接続させれば通信は復帰するようです。

なぜこのような症状が起きるかは解析できておりません。
どうぞよろしくお願いいたします。

ファイル ファイルの説明
modem.log ModemManagerLog

skn

2016年9月13日 10時04分

松原様
お世話になります、関根です。
ご回答有り難うございます。

同様の症状が出ているということですので、ご回答を参考にさせていただき、
パッチを仕込んでしばらくテストをしてみます。

ただ、IoT端末と謳っているのに3Gが安定稼働しないのは残念ですね。
アットマークテクノ様には根本的な対応を希望します。

at_koseki

2016年9月13日 21時48分

古関です。

ご迷惑をお掛けして申し訳ありません。

> ●疑問●
> 1.ダイヤルアップが切断された場合はNetworkManagerなどで自動再接続が行われないのでしょうか。
切断の仕方によっては自動再接続ができないケースがあるようです。
具体的には、電波環境には問題がない状況で、
MVMOの都合など(メンテナンスなど)でデータ通信を切断された場合です。

> 2.上記にて自動再接続が行われないとした場合、手動で再接続を行うためにはどのようにすれば良いでしょうか。
> 3.もし今回の件がダイヤルアップで常時接続していたためキャリア側から切断されたとした場合、
> 通信のたびに接続、切断をするためには以下の方法で良いでしょうか。
> ・nmcli connection up [ID]
> ・mmcli -m 0
>  ※statusがconnectedになるまで待機
> ・データを送信
> ・nmcli connection down [ID]
切断の仕方によってstatusがconnectedになっているにも関わらず、
実際は通信できないというケースが起こりうるため、
定期的にpingなどを実行し、通信できなければ再スタート、とするのがベータです。

ModemManager側の修正等も検討しておりますが、製品アップデートまでは時間かかりそうですので、
上記のように自動再接続を行うスクリプトを作成しました。添付いたします。

スクリプトのインストール先などは暫定的な場所ですが、自動再接続が可能になると思います。

使用方法は下記になります。
* 添付のアーカイブを展開
[armadillo~ ]# tar xzvf g3-3g-recover.tar.gz

* "3g-recover","3g-recover-daemon" をArmadillo-IoTの "/usr/bin" にコピー
[armadillo~ ]# cd g3-3g-recover
[armadillo~ ]# cp 3g-recover* /usr/bin/

* 3G再接続デーモン開始方法
[armadillo~ ]# 3g-recover start

* 3G再接続デーモン停止方法
[armadillo~ ]# 3g-recover stop

pingの宛先や、ポーリング周期などは変数にしておりますので、
必要に応じて"3g-recover-daemon"をチューニングいただければと思います。

よろしくおねがいします。

ファイル ファイルの説明
g3-3g-recover.tar.gz

skn

2016年9月14日 13時55分

古関様
お世話になります、関根です。

スクリプトまで作成いただき助かります。
早速使用させていただきます。

>舩原様
申し訳ありません、お名前を間違えておりました。
大変失礼致しました。