Armadilloフォーラム

Node.JS環境(D Bus)でのBlutooth接続にて連続動作が出来なき

yukimi.kushi

2022年8月22日 14時58分

node-bleを使用して、REX-BTPM25の測定値を5分毎に取得する処理を走らせております。
Armadillo-X1で上記ソフトを動作させたところ、2~4時間程度で測定が出来ない状況になってしまいます。

問題が発生した場合に、「bluetoothctl power off」と一旦し、「bluetoothctl power on」とすると再度REX-BTPM25との通信が復活する様です。
また、同じソフトを「Armadillo-IoT G3L」や「ThinkerBoardS」で動作させた場合には1週間連続動作をさせても問題は発生しない状況です。

各動作環境
〇Armadillo-X1
 Debian GNU/Linux 10 (buster) イメージファイル:v20220617
 node-ble:1.7.0をベースに不具合個所を修正(dbus-nextの不具合も併せて修正)

〇Armadillo-IoT G3L
 Debian GNU/Linux 10 (buster) イメージファイル:v20220531
 node-ble:1.7.0をベースに不具合個所を修正(dbus-nextの不具合も併せて修正)

〇ThinkerBoardS
 Tinker_Board-Debian-Buster-v3.0.11-20211026.img
 node-ble:1.7.0をベースに不具合個所を修正(dbus-nextの不具合も併せて修正)

〇問題が発生している状況でのdbusの状況
 「dbus-monitor --system "type='signal',sender='org.bluez'"」にてモニターをすると以下の様なログを繰り返し続けています。

signal time=1661141535.388891 sender=:1.12 -> destination=(null destination) serial=438505 path=/org/bluez/hci0; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.bluez.Adapter1"
   array [
      dict entry(
         string "Discovering"
         variant             boolean false
      )
   ]
   array [
   ]
signal time=1661141536.668016 sender=:1.12 -> destination=(null destination) serial=438514 path=/org/bluez/hci0; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.bluez.Adapter1"
   array [
      dict entry(
         string "Discovering"
         variant             boolean true
      )
   ]
   array [
   ]
コメント

at_akihito.irie

2022年8月23日 10時38分

入江です。

過去に、BluetoothデバイスがNetworkManagerの管理下にある際に、稀に接続
できなくなる場合があることがありました。

https://armadillo.atmark-techno.com/forum/armadillo/8617

上記フォーラムでの私の回答のように、NetworkManagerの管理デバイスから
Bluetoothを除外した上で、再度ランニング試験をしてみていただけますでしょ
うか。

また、可能であれば、測定できなくなったときのsyslogを送っていただければ
何かわかるかもしれません。

お手数おかけしますが、よろしくお願いいたします。

ご助言ありがとうございます。
NetworkManager.confの修正を試してみましたがやはり3時間程度で止まってしまいました。
※止まった後にPower off→Power onで復活するのも同じ状況でした。

syslog、user.log、kern.log、messagesを添付いたします。
・特に何か問題なところも見受けられずです。
・ syslog内の一部情報は、弊社の情報が含まれるためカットしてあります。
・2022-08-23T20:14:45+09:00~2022-08-23T20:18:13+09:00の間でおかしくなったと推測されます。

ファイル ファイルの説明
syslog.zip syslog、user.log、kern.log、messages

at_akihito.irie

2022年8月26日 14時24分

入江です。

回答が遅くなってしまい申し訳ございません。

一応ですが、以下のコマンドを実行した後に再度ランニング試験してみていた
だけますでしょうか。

[armadillo]# echo on > /sys/devices/soc0/soc/30800000.aips-bus/30b30000.usb/ci_hdrc.1/usb2/2-1/2-1.1/2-1.1:1.0/bluetooth/hci0/power/control
[armadillo]# echo on > /sys/devices/soc0/soc/30800000.aips-bus/30b30000.usb/ci_hdrc.1/usb2/2-1/2-1.1/2-1.1:1.0/bluetooth/hci0/rfkill1/power/control

お手数おかけしますがよろしくお願いいたします。

ご助言頂いた「2点の設定」+「NetworkManager修正」の環境で試させていただきましたが
しばらく時間が経過すると動作しなくなってしまいました。

色々と試していたのですが、以下の方法であれば24時間以上の稼働でも動作し続けております。
・NetworkManagerの修正を行う(これは必須ではないかもしれません)。
・WiFi+BTコンボモジュールを取り外す。
・USBポートにUSBドングルタイプのBTモジュールを接続する(手元にあったBUFFALOのBSBT4D205BKを使用)
・これまで質問させていただいていた環境と同じソフトウェア
→上記構成ですと24時間以上連続動作させていますが問題は発生しません。

X1のWiFi+BTコンボモジュールの時のみ問題が発生するのですが、対策方法はありますでしょうか。
※G3Lが発生しなかったのは、WiFi+BTコンボモジュールでは無かったのが良かったのではと見ています。

> 入江です。
>
> 回答が遅くなってしまい申し訳ございません。
>
> 一応ですが、以下のコマンドを実行した後に再度ランニング試験してみていた
> だけますでしょうか。
>
>

> [armadillo]# echo on > /sys/devices/soc0/soc/30800000.aips-bus/30b30000.usb/ci_hdrc.1/usb2/2-1/2-1.1/2-1.1:1.0/bluetooth/hci0/power/control
> [armadillo]# echo on > /sys/devices/soc0/soc/30800000.aips-bus/30b30000.usb/ci_hdrc.1/usb2/2-1/2-1.1/2-1.1:1.0/bluetooth/hci0/rfkill1/power/control
> 

>
> お手数おかけしますがよろしくお願いいたします。
>

ファイル ファイルの説明
実行ログ.zip

at_akihito.irie

2022年8月31日 10時39分

入江です。

原因の切り分けの為に、お使いのUSBドングルタイプのBTモジュールを
Armadilloに接続した状態で、以下のコマンドを実行してその出力を送ってい
ただけますでしょうか。

[armadillo]# usb-devices

また、当社もREX-BTPM25を所有しております。
そのため、可能であれば現象が再現できる最小構成のソフトウェアを送ってい
ただければ、何かわかるかもしれません。

以上、お手数おかけしますがよろしくお願いいたします。

テスト環境ソフトを切り出しましたのでご確認頂ければと思います。
使用方法等は添付ファイルの方をご参照頂ければと思います。

ファイル ファイルの説明
usb-devices.txt usb-devicesの実行結果
使い方.txt 添付のテスト環境について
testBle.zip テスト環境のセット

本件についてですが状況が長らく更新されておりませんが対策方法は無い(不明)と言う事でよろしいでしょうか。

at_akihito.irie

2022年9月22日 15時02分

入江です。

お返事が遅くなってしまい申し訳ございません。

頂いたソフトで当方でも現象を再現できたのですが、原因の究明にお時間を頂
いております。
BTモジュールのファームウェアやドライバを新しいものに切り替えてみるなど
試していますが、原因の特定が出来ておりません。

現在のところ確実なアドバイスを差し上げることはできませんが、傾向として
デバイスのconnect時にエラーが発生しやすく見えます。

お客様の実装では、scan→connect→値の取得
→disconnect→scan→connect→…を繰り返しているようですが、
scan→connect→値の取得→wait→値の取得…のように毎回disconnectしない
ようにしてみるなど、ソフトウェアの実装でカバーできる部分もあるかもしれ
ませんので、お手数おかけしますが、可能であればお試しいただければと思い
ます。

調査に進展がありましたらご連絡します。

ご不便おかけして申し訳ございませんが、よろしくお願いいたします。