Armadilloフォーラム

3G 停波対応に伴いmodemmanagerを1.10.0-1atmark3→1.10.0-1atmark5へのアップデートしたところLTE接続が失敗する

masaya_yoshitomi

2023年9月29日 14時35分

3G 停波対応に伴いmodemmanagerを1.10.0-1atmark3→1.10.0-1atmark5へのアップデートさせたところ、
LTE設定のnmcli connection upが失敗するようになってしまいました。

2022年の10月時点で取得したイメージファイルをベースとしてfixupにて独自の変更を加えています。
at-debian-builderはv2.4.0を使用しています。
この時点のでのmodemmanagerは1.10.0-1atmark3です。
3G 停波対応に伴い、今までのイメージファイルにmodemmanagerのみを1.10.0-1atmark3→1.10.0-1atmark5へのアップデートさせたイメージ作成し
動作確認を行っていたところ本現象が発生しました。
ルートファイルシステムにはoverlayを適用しています。

LTE接続を行うために、プログラムにて以下のコマンドを発行します。
gsm-ttyCommModemのコネクションがある/なしにかかわらず一度ダウンさせて削除し、
新たにLTEの回線情報を設定し直すようにしています。

【コマンド】----------------
nmcli connection down gsm-ttyCommModem
systemctl stop connection-recover.service
nmcli connection delete gsm-ttyCommModem
systemctl disable connection-recover.service
nmcli connection add type gsm ifname ttyCommModem apn [APN] user [USER] password [PASSWORD]
systemctl enable connection-recover.service
nmcli connection up gsm-ttyCommModem
 ★★★ここでコマンドが失敗します Error: Connection activation failed: No carrier could be established★★★(syslog_①)
systemctl start connection-recover.service
mmcli -m 0 --set-allowed-modes=ANY
----------------------------

現状わかっていることは以下です。

 ・nmcli connection addのあとに「sleep 3」を追加して【コマンド】を投入すると、nmcli connection upに成功する(syslog_②)
  →nmcli connection addでaddされるのに時間がかかっているのでしょうか?

 ・インストールディスクイメージ(Debian GNU/Linux 10 M1モデル用)install_disk_sd_buster_20230726_iotg3_m1.imgでも同じ事象を確認
  →【コマンド】を投入するとLTE接続に失敗します。(syslog_③)
   nmcli connection addのあとに「sleep 3」を追加して【コマンド】を投入すると成功します(syslog_④)
  ※ログ③④はそれぞれSD焼き後、/etc/ModemManager/symlink.confの「quectel-ec25-symlink」を有効化して再起動後実施しています

 ・modemmanagerのアップデートさせる前(1.10.0-1atmark3)は【コマンド】を実施して問題なくLTE接続できていた
  →今回の事象はmodemmanagerを1.10.0-1atmark5にアップデートしたことによる影響でしょうか?

 ・overlayを解除後、1度だけnmcli connection addを実施して再起動すると、【コマンド】が成功するようになる
  →overlayを解除したことによって、情報が保持できるようになることで成功するようになったのでしょうか?

mmcli -G DEBUGを実施した後取得したsyslogを添付いたしますので、
どこに問題があるかご教授いただけないでしょうか。なお、一部SIMに関する情報は●で伏せています。

 syslog_① 1.10.0-1atmark5へアップデートしたことにより【コマンド】が失敗する
 syslog_② nmcli connection addのあとに「sleep 3」を追加して【コマンド】を投入すると成功する
 syslog_③ インストールディスクイメージそのままを使用。【コマンド】が失敗する
 syslog_④ インストールディスクイメージそのままを使用。nmcli connection addのあとに「sleep 3」を追加して【コマンド】を投入すると成功する

ファイル ファイルの説明
syslog_①LTE接続失敗.log 1.10.0-1atmark5へアップデートしたことにより【コマンド】が失敗したときのログ
syslog_②LTE接続成功_sleep3.log nmcli connection addのあとに「sleep 3」を追加して【コマンド】を投入すると成功したときのログ
syslog_③オリジナルイメージLTE接続失敗.log インストールディスクイメージそのままを使用。【コマンド】が失敗したときのログ
syslog_④オリジナルイメージLTE接続成功_sleep3.log インストールディスクイメージそのままを使用。nmcli connection addのあとに「sleep 3」を追加して【コマンド】を投入すると成功したときのログ
コメント

at_mitsuhiro.yoshida

2023年9月29日 15時04分

吉田です。

お手数おかけします。
nmcli connection add の時点で既に接続を開始しています。

nmcli connection add に connection.autoconnect no のオプションを付与しますと、
nmcli connection up のタイミングで接続を開始しますので設定してもらえませんでしょうか。

masaya_yoshitomi

2023年10月2日 16時58分

> 吉田です。
>
> お手数おかけします。
> nmcli connection add の時点で既に接続を開始しています。
>
> nmcli connection add に connection.autoconnect no のオプションを付与しますと、
> nmcli connection up のタイミングで接続を開始しますので設定してもらえませんでしょうか。

ご提示いただいた方法で解決しました。
ありがとうございました。

masaya_yoshitomi

2023年10月3日 19時16分

> > 吉田です。
> >
> > お手数おかけします。
> > nmcli connection add の時点で既に接続を開始しています。
> >
> > nmcli connection add に connection.autoconnect no のオプションを付与しますと、
> > nmcli connection up のタイミングで接続を開始しますので設定してもらえませんでしょうか。
>
> ご提示いただいた方法で解決しました。
> ありがとうございました。
>
すみません、ご提示いただいた方法(「 nmcli connection add に connection.autoconnect no のオプションを付与」)で現象は改善されたのですが、何が原因で本処理の追加で改善されたのかがわかりません。何に対する対策となったのかご教示いただけないでしょうか?
お手数おかけしますが、よろしくお願いいたします。

at_mitsuhiro.yoshida

2023年10月4日 7時58分

吉田です。

> すみません、ご提示いただいた方法(「 nmcli connection add に connection.autoconnect no のオプションを付与」)で現象は改善されたのですが、何が原因で本処理の追加で改善されたのかがわかりません。何に対する対策となったのかご教示いただけないでしょうか?
> お手数おかけしますが、よろしくお願いいたします。

nmcli connection add のタイミングで接続動作を開始した直後に再度 nmcli connection up で接続動作を開始しようとしたため ModemManager 内でタイミング的にエラーとなっていたのを、 nmcli connection add のタイミングで接続動作を開始しないようにし、nmcli connection up のタイミングで始めて接続動作を開始することで接続動作開始直後に再度接続要求を実行した際にエラーとなる現象を回避しております。

masaya_yoshitomi

2023年10月4日 8時53分

> 吉田です。
>
> > すみません、ご提示いただいた方法(「 nmcli connection add に connection.autoconnect no のオプションを付与」)で現象は改善されたのですが、何が原因で本処理の追加で改善されたのかがわかりません。何に対する対策となったのかご教示いただけないでしょうか?
> > お手数おかけしますが、よろしくお願いいたします。
>
> nmcli connection add のタイミングで接続動作を開始した直後に再度 nmcli connection up で接続動作を開始しようとしたため ModemManager 内でタイミング的にエラーとなっていたのを、 nmcli connection add のタイミングで接続動作を開始しないようにし、nmcli connection up のタイミングで始めて接続動作を開始することで接続動作開始直後に再度接続要求を実行した際にエラーとなる現象を回避しております。

1.10.0-1atmark6で失敗していた理由、対策の内容は理解できました。ありがとうございます。
しかし、1.10.0-1atmark3では修正前のやり方で問題なく接続できておりました。
これについては何が影響しているでしょうか?ご教示お願いいたします。

masaya_yoshitomi

2023年10月10日 11時03分

> > 吉田です。
> >
> > > すみません、ご提示いただいた方法(「 nmcli connection add に connection.autoconnect no のオプションを付与」)で現象は改善されたのですが、何が原因で本処理の追加で改善されたのかがわかりません。何に対する対策となったのかご教示いただけないでしょうか?
> > > お手数おかけしますが、よろしくお願いいたします。
> >
> > nmcli connection add のタイミングで接続動作を開始した直後に再度 nmcli connection up で接続動作を開始しようとしたため ModemManager 内でタイミング的にエラーとなっていたのを、 nmcli connection add のタイミングで接続動作を開始しないようにし、nmcli connection up のタイミングで始めて接続動作を開始することで接続動作開始直後に再度接続要求を実行した際にエラーとなる現象を回避しております。
>
> 1.10.0-1atmark6で失敗していた理由、対策の内容は理解できました。ありがとうございます。
> しかし、1.10.0-1atmark3では修正前のやり方で問題なく接続できておりました。
> これについては何が影響しているでしょうか?ご教示お願いいたします。

上記の質問について回答のほどお願いいたします。
↓↓↓この部分です。
> 1.10.0-1atmark6で失敗していた理由、対策の内容は理解できました。ありがとうございます。
> しかし、1.10.0-1atmark3では修正前のやり方で問題なく接続できておりました。
> これについては何が影響しているでしょうか?ご教示お願いいたします。

"修繕前のやり方"は以下のコマンドの流れを指しています。
【コマンド】----------------
nmcli connection down gsm-ttyCommModem
systemctl stop connection-recover.service
nmcli connection delete gsm-ttyCommModem
systemctl disable connection-recover.service
nmcli connection add type gsm ifname ttyCommModem apn [APN] user [USER] password [PASSWORD]
systemctl enable connection-recover.service
nmcli connection up gsm-ttyCommModem
 ★★★ここでコマンドが失敗します Error: Connection activation failed: No carrier could be established★★★(syslog_①)
systemctl start connection-recover.service
mmcli -m 0 --set-allowed-modes=ANY
----------------------------

回答にあたり不明点がありましたらご指摘ください。
回答のほどよろしくお願いいたします。

at_mitsuhiro.yoshida

2023年10月10日 17時03分

吉田です。

atmark4 より 3G 停波対応のため入力する AT コマンドのシーケンスと入力するコマンドを変更しております。
そのため、タイミングが変化し接続動作直後の接続コマンドに対してエラーとなる状況になっております。

masaya_yoshitomi

2023年11月10日 14時38分

> 吉田です。
>
> atmark4 より 3G 停波対応のため入力する AT コマンドのシーケンスと入力するコマンドを変更しております。
> そのため、タイミングが変化し接続動作直後の接続コマンドに対してエラーとなる状況になっております。

すみません、追加で確認させてください。
「connection.autoconnect no」のオプションを追加し、modemmanagerを1.10.0-1atmark6にアップデートした環境で動作確認をしております。

mmcli -m 0で確認した際のSIMの状態が「registered」の状態で
connection upを行った際に①②で挙動に差異があるのですが、どのような要因が考えられるでしょうか

 ①起動直後1回目のconnection up        ⇒成功
 ②1度connection upに失敗後、再度connection up ⇒失敗
  ※具体的には、docomoSIMでLTE通信をしている状態で電源をOFFし、SIMをKDDIに交換して電源をONします。
   再起動後、1度docomoSIMの情報で1度connection upを行い(SIMを差し替えたのでここはconnection upに失敗します)
   再度KDDIの正しい認証情報でconnection upを実施という手順になります

①も②も以下の接続コマンドを実施します。
②の場合は、※に記載している通り、事前に認証を失敗させる情報(APN/USER/SPASSWORD誤り)を設定して一度接続に失敗した状態から再度正しい情報でconnection upを行います。
-----
【接続コマンド】
nmcli connection add type gsm ifname ttyCommModem apn [APN] user [USER] password [PASSWORD]
systemctl enable connection-recover.service
nmcli connection up gsm-ttyCommModem
-----

②のパタンで一度接続に失敗した場合は、以下の一連の切断処理を行った後に上記接続コマンドを実施することで成功します。
-----
【切断コマンド】
nmcli connection down gsm-ttyCommModem
systemctl stop connection-recover.service
nmcli connection delete gsm-ttyCommModem
systemctl disable connection-recover.service
-----

②のパタンの場合は、一度切断を挟む必要があるのでしょうか?
①②のそれぞれのログを添付しますのでご確認よろしくお願いいたします。

SIMの認証情報については一部●●●(正しい認証情報)、×××(不正な認証情報)で伏せています。

ファイル ファイルの説明
syslog_②.txt ②を実行した際のsyslog
syslog_①.txt ①を実行した際のsyslog

at_mitsuhiro.yoshida

2023年11月10日 15時12分

吉田です。

SIM を入れ替えていますので、接続に少々時間がかかる可能性はあります。

まず connection-recover は、
初期設定では 120 秒周期で LTE のネットワーク経由で 8.8.8.8 に ping の導通確認を行うサービスですので
LTE が接続する前の動作には影響がありません。

影響があるのは、Armadillo 起動後
nmcli connetion delete [ドコモ網 SIM の設定]
nmcli connetion add [KDDI網 SIM の設定]
になりますが、この delete → add のみの手順を実施した場合にはどうなりますでしょうか。

masaya_yoshitomi

2023年11月10日 17時11分

> 吉田です。
>
> SIM を入れ替えていますので、接続に少々時間がかかる可能性はあります。
>
> まず connection-recover は、
> 初期設定では 120 秒周期で LTE のネットワーク経由で 8.8.8.8 に ping の導通確認を行うサービスですので
> LTE が接続する前の動作には影響がありません。
>
> 影響があるのは、Armadillo 起動後
> nmcli connetion delete [ドコモ網 SIM の設定]
> nmcli connetion add [KDDI網 SIM の設定]
> になりますが、この delete → add のみの手順を実施した場合にはどうなりますでしょうか。

docomo→KDDIへSIMを入れ替え、再起動後以下のコマンドを実施しました。

---
root@armadillo:~# nmcli connection delete gsm-ttyCommModem
Error: unknown connection 'gsm-ttyCommModem'.
Error: cannot delete unknown connection(s): 'gsm-ttyCommModem'.
root@armadillo:~#nmcli connection add connection.autoconnect no type gsm ifname ttyCommModem apn [KDDI:APN] user [KDDI:USER] password [KDDI:PASS]
Connection 'gsm-ttyCommModem' (1e32ed54-6b27-4b04-8d3f-1ee4241f0754) successfully added.
root@armadillo:~#
---

mmcli -m 0 でStatusを確認するとconnectedとなります。

ログを添付します。SIMの認証情報については●●●(KDDI)伏せています。

ファイル ファイルの説明
syslog.txt delete→add実行時のsyslog

masaya_yoshitomi

2023年11月14日 9時26分

こちら進捗いかがでしょうか?
目的としてはSIM交換時にもエラーなくAPN情報などを変更できるようにしたいです。
SIMのキャリアを変更する場合はdelete→addの手順が必要ということでしょうか?
ご教示のほどお願いいたします。

masaya_yoshitomi

2023年11月16日 18時49分

> こちら進捗いかがでしょうか?
> 目的としてはSIM交換時にもエラーなくAPN情報などを変更できるようにしたいです。
> SIMのキャリアを変更する場合はdelete→addの手順が必要ということでしょうか?
> ご教示のほどお願いいたします。

五月雨で申し訳ありません。

追加情報です。
modemmanagerのバージョンを確認しようと以下コマンドを実行したところ、modemmanagerのライブラリのバージョンが"1.10.0-1atmark3"であることがわかりました。
modemmanager自体はversion6に上げていますが、ライブラリはそのままです。これは問題ないでしょうか?
上記問い合わせと併せてご回答のほどお願いいたします。

----------------------------------
root@armadillo:~# dpkg -l | grep modem
ii libmm-glib0:armhf 1.10.0-1atmark3 armhf D-Bus service for managing modems - shared libraries
ii lrzsz 0.12.21-10 armhf Tools for zmodem/xmodem/ymodem file transfer
ii modemmanager 1.10.0-1atmark6 armhf D-Bus service for managing modems
----------------------------------

at_mitsuhiro.yoshida

2023年11月17日 9時05分

吉田です。

> 五月雨で申し訳ありません。
>
> 追加情報です。
> modemmanagerのバージョンを確認しようと以下コマンドを実行したところ、modemmanagerのライブラリのバージョンが"1.10.0-1atmark3"であることがわかりました。
> modemmanager自体はversion6に上げていますが、ライブラリはそのままです。これは問題ないでしょうか?
> 上記問い合わせと併せてご回答のほどお願いいたします。
>
> ----------------------------------
> root@armadillo:~# dpkg -l | grep modem
> ii libmm-glib0:armhf 1.10.0-1atmark3 armhf D-Bus service for managing modems - shared libraries
> ii lrzsz 0.12.21-10 armhf Tools for zmodem/xmodem/ymodem file transfer
> ii modemmanager 1.10.0-1atmark6 armhf D-Bus service for managing modems
> ----------------------------------

ご連絡ありがとうございます。

確かに apt update → apt install modemmanager でバージョンをアップデートすると
libmm-glib0:armhf は atmark3 のままとなりますね。
libmm-glib0:armhf 自体は atmark3 と atmark6 で変更ありませんので動作には影響がありませんが、
apt install libmm-glib0:armhf
を実行していただければ atmark6 にアップデートされます。

確認いたします。

> > こちら進捗いかがでしょうか?
> > 目的としてはSIM交換時にもエラーなくAPN情報などを変更できるようにしたいです。
> > SIMのキャリアを変更する場合はdelete→addの手順が必要ということでしょうか?
> > ご教示のほどお願いいたします。

手順を把握できていないのですが、
SIM を挿し替えるということは APN も変化するので
別な nmcli connection が必要になる認識です。

そうすると、ドコモ SIM 向けの nmcli connection の削除 → KDDI SIM 向けの nmcli connection の追加が
接続手順としては早いかと思っているのですが、違う手段で実現される方向でしょうか。

masaya_yoshitomi

2023年11月20日 8時45分

> 確認いたします。
よろしくお願いいたします。

> 手順を把握できていないのですが、
> SIM を挿し替えるということは APN も変化するので
> 別な nmcli connection が必要になる認識です。
>
> そうすると、ドコモ SIM 向けの nmcli connection の削除 → KDDI SIM 向けの nmcli connection の追加が
> 接続手順としては早いかと思っているのですが、違う手段で実現される方向でしょうか。

アプリケーションにてLTEの接続を制御するようにしています。
nmcli connectionの削除は「コネクションの状態がConnected」の場合のみと実施するようにしていたため、
今回のようにSIM交換した場合(Connectedではないが削除が必要な場合)の動きを考慮できていませんでした。

SIM交換が行われた場合にはnmcli connection の削除が必要な旨理解しました。

追加で確認させていただきたいです。
 ①SIM交換の場合にはなぜconnection upが必要ないのでしょうか?
  connection upのコマンドを打たずに、nmcli connectionの削除⇒nmcli connectionの追加だけででconnectedとなりました
  
 ②LTEの設定を行う場合には必ず、nmcli connectionの削除をしても問題ないでしょうか?
  以下のコマンドをLTEの設定の度に実施するイメージです。
   -----
   nmcli connection down gsm-ttyCommModem
   systemctl stop connection-recover.service
   nmcli connection delete gsm-ttyCommModem
   systemctl disable connection-recover.service
   nmcli connection add connection.autoconnect no type gsm ifname ttyCommModem apn [APN] user [USER] password [PASS]
   systemctl enable connection-recover.service
   nmcli connection up gsm-ttyCommModem
   systemctl start connection-recover.service
   -----

at_mitsuhiro.yoshida

2023年11月22日 8時41分

吉田です。

> > 確認いたします。
> よろしくお願いいたします。

modemmanager は依存するパッケージとして
Depends: libmm-glib0 (>= 1.10.0)
と既に依存関係を満たしているので libmm-glib0 はアップデートされないようになっております。
特に問題はありませんが、気になるようでしたら別途上げていただければと思います。

>  ①SIM交換の場合にはなぜconnection upが必要ないのでしょうか?
>   connection upのコマンドを打たずに、nmcli connectionの削除⇒nmcli connectionの追加だけででconnectedとなりました

connection add の時点で autoconnect が true になるので、自動的に接続動作を行います。
autoconnect に関する説明は本トピックの以前の投稿で記載しております。

>  ②LTEの設定を行う場合には必ず、nmcli connectionの削除をしても問題ないでしょうか?
>   以下のコマンドをLTEの設定の度に実施するイメージです。

はい、問題ないと思います。ご検証の上採用ください。
connection-recover は対象となる 3G/LTE の nmcli connection の設定がないと稼働しませので、停止しなくても問題ありません。

よろしくお願いします。

masaya_yoshitomi

2023年11月22日 17時08分

>>connection add の時点で autoconnect が true になるので、自動的に接続動作を行います。
>>autoconnect に関する説明は本トピックの以前の投稿で記載しております。
前提に誤解があったようですので改めて質問させていただきます。
こちらの質問の意図としてはご指示いただいたように「connection.autoconnect no」オプションを付けてaddしているのでupを実行するまではconnectedされてない認識です。
何もSIM情報が端末内に設定されていない初期状態では、add connection.autoconnect noオプション → connection upの手順で接続できているのですが、
キャリア変更時の再接続の際はnmcli connection add connection.autoconnect noオプションでconnectedまで完了しているようです。これはなぜでしょうか?という質問になります。
ご回答のほどお願いいたします。

at_mitsuhiro.yoshida

2023年11月28日 16時47分

吉田です。

connection.autoconnect no を付与して、以下の動作は確認しました。
(1) SIM A の設定で nmcli connection add → 接続されない
(2) SIM A nmcli connection up → 接続される
(3) Armadillo poweroff
(4) SIM B に挿し替え
(5) Armadillo の電源オン
(6) SIM A の nmcli connection delete
(7) SIM B の設定で nmcli connection add → 接続されない
(8) SIM B nmcli connection up → 接続される

が、再接続サービス(connection-recover) が稼働している状況で、
(5)(7) のタイミングで connection-recover が再接続を実施している可能性はあります。
このケースに関して考慮が抜けておりました。

確かに以前記載いただいた通り、(6) の前から (8) の間は
connection-recover を停止した方が確実です。

よろしくお願いします。