Armadilloフォーラム

LTE通信が可能な状態でも接続ができなくなる

akihito

2025年3月10日 14時18分

==========
製品型番:Armadillo-IoT ゲートウェイ A6E +Di8+Ai4
Debian/ABOSバージョン:3.20.5-at.8
カーネルバージョン:5.10.233-0-at
3G/LTE モジュール情報 (Debianのみ):EMS31-J:REVISION 04.014, A-REVISION 01.001.10
その他:
==========

LTE通信ができる状況(※1)であっても突然LTE通信ができない状況に陥る(※2)ことがあります。
LTE再接続サービスにて復旧できることもあるのですが、そもそもなぜそのような状態に陥るのか腑に落ちません。
※1 直前のRSRQが -9.0, RSRPが -90.0 となっている状況で判断しております。
※2 /var/log/messages には 「wwan-led: sim or modem not found or startup...」を繰り返す。

”突然LTE通信ができない状況に陥る”原因を調べる方法や原因ごとの対策はございますでしょうか?

なお、検証段階であるため複数台での挙動までは確認できておらず、
特定の機器で発生している問題なのか、LTEモジュールの特性上でそのような挙動になることがあるのか判断できていません。

コメント

佐藤です。

現象発生時の /var/log/messages を添付してもらえますでしょうか。

> 佐藤です。
>
> 現象発生時の /var/log/messages を添付してもらえますでしょうか。

messages を添付いたします。
現象発生は 3/4 となりますが、それ以前でも同様の現象は発生しております。
よろしくお願いいたします。

ファイル ファイルの説明
messages.txt

佐藤です。

ログありがとうございます。
該当のArmadilloで以下のように ping を打つとどうなりますでしょうか。

ping -I ppp0 -c 3 8.8.8.8

また、以下のコマンドの実行結果はどうなってますでしょうか

mmcli -m 0 -K | awk '$1 == "modem.generic.signal-quality.value" { print $3 }'

返信ありがとうございます。
pingやmmcliの実行する状況は①・②のどちらになるかお聞かせください。
 ①現象が再現した時に実行する。
 ②該当機種であればいつでも実行しても良い。

おそくら①だと思っておりますので、再現するまでお時間を下さい。
もし、②であれば返信をお願いします。

本件投稿時と全く同じ現象かが判断できておりませんが、LTEが接続できない現象が多発しておりますのでご報告いたします。
可能であれば、御社でも複数台で通信状況が悪化するようなことが発生しないかご確認頂けますでしょうか?
また根本的な改善方法について何かございましたらご教示頂けると助かります。

なお、LTE再接続サービスを用いて再接続できるようにしたり、通信不良時にリトライを設けたりすることで、
どこかのタイミングでサーバへ通信できるに対策を講じております。

[環境]
本機器は 10分に1度 起床して サーバへ取得したデータを送信しています。
スリープは SMSあり です。

[検証①]
1台の動作だと1時間に1度 not found modems が出るか出ないかで、
出たとしてもリトライ(アプリケーションで実施)中に接続して通信できています。

[検証②]
2台(※)の動作だと15分~30分に1度 not found modems となり、
リトライ中に復旧することなくその起床ではデータを送信できません。
※15cm程度の間隔で配置。

[実施結果]
以前に確認する方法として提示頂いたコマンドを実行しましたので合わせて提供いたします。
閉域網のSIMを使用しているため、8.8.8.8のIPアドレスは 閉域網のPING応答するサーバのIPアドレスに置き換えて実施しております。

現象発生時は以下の通りです。

ping -I ppp0 -c 3 8.8.8.8
ping: bad address 'ppp0'
mmcli -m 0 -K | awk '$1 == "modem.generic.signal-quality.value" { print $3 }'
error: couldn't find modem

正常時は以下の通りです。

ping -I ppp0 -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=62 time=376.431 ms
64 bytes from 8.8.8.8: seq=1 ttl=62 time=174.611 ms
64 bytes from 8.8.8.8: seq=2 ttl=62 time=161.413 ms
 
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 161.413/237.485/376.431 ms
mmcli -m 0 -K | awk '$1 == "modem.generic.signal-quality.value" { print $3 }'
77

佐藤です。

先日頂いたログを改めて確認しますと、LTE が繋がらなくなった思われるタイミング辺りから
"imx-sdma 20ec000.dma-controller: All bds consumed,restart now."
というログが大量に出ているのが気になります。
LTE が繋がらなくなって、復旧もしない場合は毎回このログが出ていますでしょうか?

一度 sdma を無効にする dtb を作成してみて、それでも発生するかどうか確認していただけますでしょうか。
sdma を無効にする手順は以下です。
1. 以下を参照してカーネルのビルドを行ってください。
https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…
2. カーネルソースディレクトリに移動し、以下のように dts ファイルを編集してください

[ATDE9]$ vi arch/arm/boot/dts/armadillo-iotg-a6e-ems31.dts
(省略)
 
/* EMS31(LTE) */
&uart4 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart4>;
        status = "okay";
        uart-has-rtscts;
        dma-names = ""; // ★この行を追加
};

3. 保存した後、以下のコマンドで dts をビルドしてください

[ATDE9]$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

4. "arch/arm/boot/dts/armadillo-iotg-a6e-ems31.dtbo" ファイルを armadillo 上へコピーしてください。

armadillo 上では以下のように "armadillo-iotg-a6e-ems31.dtbo" を配置してください。

[armadillo]# cp -f armadillo-iotg-a6e-ems31.dtbo /boot/armadillo-iotg-a6e-ems31.dtbo
[armadillo]# persist_file /boot/armadillo-iotg-a6e-ems31.dtbo

この後、armadillo を再起動して現象が発生するかどうか確認お願いします。

佐藤様、返信ありがとうございます。
sdma を無効にする dtb を作成して検証してみます。

佐藤様
SDMAを無効にするdtbを作成して検証中となりますが、明らかに改善した様子(2時間でnot found modemsによる通信不良なし)です。
(平行して動作させているSDMAを無効していない方と比べております。)
ご助力ありがとうございます。

一方でSDMAを無効がどのように作用して改善に繋がったのかが分かっておりません。
原因と解決方法(SDMA無効との関連性など)についてご教示頂けますでしょうか?

使用しているSIMカードが原因なのか、ArmadilloのLTEモジュール特有の問題なのかも気になっております。
よろしくお願いいたします。

佐藤です。

> 一方でSDMAを無効がどのように作用して改善に繋がったのかが分かっておりません。
> 原因と解決方法(SDMA無効との関連性など)についてご教示頂けますでしょうか?
armadilloになにかシリアル通信する機器(センサーなど)を接続してお使いでしょうか?
もしそうである場合、armadilloとその機器との通信量が多くて DMA の処理が間に合わなくなってしまい、今回の現象が発生しているのかもしれません。
(なので、LTEモデムのDMAを無効にしたら改善されたと思われます)

早速の回答、ありがとうございます!

> armadilloになにかシリアル通信する機器(センサーなど)を接続してお使いでしょうか?
> もしそうである場合、armadilloとその機器との通信量が多くて DMA の処理が間に合わなくなってしまい、今回の現象が発生しているのかもしれません。
> (なので、LTEモデムのDMAを無効にしたら改善されたと思われます)

なるほど、他のシリアル通信の機器を接続したことでDMAの処理が間に合わなくなったのですね。
たしかに RS485にて 115200bpsで動作ログを出力(数秒に数行ほど出力、最大で秒間 約 2 [KB]です。)しております。
また現段階では AI1 からのみですがアナログ値も取得しているため、こちらもシリアル通信(SPI?I2C?)に含まれる理解でよろしいでしょうか?
その場合どの程度の接続数、RS485の場合は通信速度であれば、LTEに影響でないかなど把握されていますでしょうか?

質問攻めになって恐縮ですが、今後本製品に接続するセンサー類の制限事項やRS485の通信速度は省電力性などに影響が出てくるため、把握しておきたく。。。
ご回答のほどよろしくお願いいたします。

--
ちなみに SDMA は Serial DMA の略でよろしかったでしょうか?

佐藤です。

> なるほど、他のシリアル通信の機器を接続したことでDMAの処理が間に合わなくなったのですね。
> たしかに RS485にて 115200bpsで動作ログを出力(数秒に数行ほど出力、最大で秒間 約 2 [KB]です。)しております。
ありがとうございます。
その程度で処理が間に合わなくなるのは考えにくいためもう少しこちらでも確認してみます。
ただ、現状 SDMA を無効にすると改善したという事実から、SDMA を完全に無効にして動作確認いただき、
問題ないようであればそれで使用していただくというのが良いかもしれません。
以下の手順で完全に無効にできます。
1. カーネルソースディレクトリに移動し、以下のように dts ファイルを編集してください

[ATDE9]$ vi arch/arm/boot/dts/armadillo-600-customize.dts
(省略)
 
// Replace this empty section by your configuration
&{/} {};
&sdma { status="broken"; }; // ★この行を追加

2. 保存した後、以下のコマンドで dts をビルドしてください

[ATDE9]$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

3. "arch/arm/boot/dts/armadillo-600-customize.dtbo" ファイルを armadillo 上へコピーしてください。

armadillo 上では以下のように "armadillo-600-customize.dtbo" を配置してください。

[armadillo]# cp -f armadillo-600-customize.dtbo /boot/armadillo-600-customize.dtbo
[armadillo]# persist_file /boot/armadillo-600-customize.dtbo

4. "/boot/overlays.txt" に "armadillo-600-customize.dtbo" を追加してください。

[armadillo]# vi /boot/overlays.txt
fdt_overlays=armadillo-iotg-a6e-ems31.dtbo armadillo-600-customize.dtbo
 
[armadillo]# persist_file /boot/overlays.txt

> また現段階では AI1 からのみですがアナログ値も取得しているため、こちらもシリアル通信(SPI?I2C?)に含まれる理解でよろしいでしょうか?
こちらは含まれません。

> その場合どの程度の接続数、RS485の場合は通信速度であれば、LTEに影響でないかなど把握されていますでしょうか?
すいません、現状ではそのような情報は持ち合わせておりません。

> ちなみに SDMA は Serial DMA の略でよろしかったでしょうか?
Smart の略となります。

返信ありがとうございます。

> > なるほど、他のシリアル通信の機器を接続したことでDMAの処理が間に合わなくなったのですね。
> > たしかに RS485にて 115200bpsで動作ログを出力(数秒に数行ほど出力、最大で秒間 約 2 [KB]です。)しております。
> ありがとうございます。
> その程度で処理が間に合わなくなるのは考えにくいためもう少しこちらでも確認してみます。
お手数をお掛けしますが、よろしくお願いいたします。

> ただ、現状 SDMA を無効にすると改善したという事実から、SDMA を完全に無効にして動作確認いただき、
> 問題ないようであればそれで使用していただくというのが良いかもしれません。
そうですね、現状ではSDMA無効で進めようと思います。

回答頂いた内容で分からない点がございます。
A6E +Di8+Ai4で「armadillo-600-customize.dtbo」を使用する意図を教えて下さい。
Armadilloの該当ファイルを確認すると以下となっており、「armadillo-600-customize.dtbo」を使用しておりません。
差し替えて問題ないものでしょうか。

armadillo:~# cat /boot/overlays.txt 
fdt_overlays=armadillo-iotg-a6e-ems31.dtbo armadillo-iotg-a6e-di8ai4-1st.dtbo

また以前 ems31.dtbo を変更しましたが、こちらは元々あるものを使用して良いのでしょうか?
その点もご教示をお願いいたします。

佐藤です。

> 回答頂いた内容で分からない点がございます。
> A6E +Di8+Ai4で「armadillo-600-customize.dtbo」を使用する意図を教えて下さい。
> Armadilloの該当ファイルを確認すると以下となっており、「armadillo-600-customize.dtbo」を使用しておりません。
> 差し替えて問題ないものでしょうか。
説明不足ですいません、差し替えではなく追加するイメージです。
sdmaを無効にしたarmadillo-600-customize.dtboを追加します。
以下のように追加してください。

armadillo:~# cat /boot/overlays.txt 
fdt_overlays=armadillo-iotg-a6e-ems31.dtbo armadillo-iotg-a6e-di8ai4-1st.dtbo armadillo-600-customize.dtbo

> また以前 ems31.dtbo を変更しましたが、こちらは元々あるものを使用して良いのでしょうか?
> その点もご教示をお願いいたします。
こちらは元々あるものを使用してください。

佐藤様

回答ありがとうございます。
SDMA無効化の方法を実践して検証してみます。