Armadilloフォーラム

Bluetoothの機能が使えない

inokuchi

2023年5月23日 18時12分

Armadillo-IoT G3LをSDブートで起動し、IoTセンサーのデータをbluepyを使い取得するシステムを作成しています。
sdカードに第三パーティションをext4でフォーマットし自動マウント設定をしてarmadilloを起動させると、Bluetoothctlでarmadillo内のBluetoothモジュールを認識しなくなりました。(showコマンドを実行すると「No default controller available」と出ます。)
そして、下記エラーが出るようになりセンサーのデータが取得できません。
(エラー内容)Failed to execute management command 'le on' (code: 17, error: Invalid Index)
自動マウント設定を無くすと、Bluetoothが正常に動作し、IoTセンサーのデータを取得することが出来ます。
他のArmadilloを使っても同じエラーが出たのでハードの問題ではないと思います。
Bluetoothが使えなくなり、このエラーが出る原因と対応策についてご教示頂けますか。
起動したときのsyslogを添付いたしますが、他に必要な情報があればご回答頂きますと幸いです。
よろしくお願いいたします。

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

古関です。

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

・正常時、異常時のdmesgコマンドの結果をいただけますでしょうか?

・SDカード第3パーティションの自動マウントに依存しているようですが
 どのようにマウントしているでしょうか?(/etc/fstabに記載?)
 手順、又は設定いただけますでしょうか?

・こちらでも環境を合わせて再現確認をしたいと思います
 以下3つのコマンド結果をいただけますでしょうか?
 uname -a
 cat /etc/debian_version
 dpkg -l|grep bluez

ご返信ありがとうございます。
下記3点について資料を添付いたします。
>
> ・正常時、異常時のdmesgコマンドの結果をいただけますでしょうか?
>
> ・SDカード第3パーティションの自動マウントに依存しているようですが
>  どのようにマウントしているでしょうか?(/etc/fstabに記載?)
>  手順、又は設定いただけますでしょうか?
>
> ・こちらでも環境を合わせて再現確認をしたいと思います
>  以下3つのコマンド結果をいただけますでしょうか?
>  uname -a
>  cat /etc/debian_version
>  dpkg -l|grep bluez
>
ご確認の程、よろしくお願いいたします。

ファイル ファイルの説明
正常時のdmesg.txt
異常時のdmesg.txt
自動マウント手順.txt
環境.txt

古関です。

諸々ご対応ありがとうございます。こちらでも同様の症状が発生しました。
解析中ですので少々お時間ください。

古関です。

以下2つのどちらかの対処を行い、
問題が改善されるかご確認お願いできますでしょうか。

■ 案1 systemd unitファイル修正

[Unit]
Description=SDCard
After=ti-uim.service ★これを追加
 
[Mount]
What=/dev/mmcblk0p3
Where=/mnt/sd
Type=ext4
Options=noatime
 
[Install]
WantedBy=multi-user.target

■ 案2 Linux-Kernel修正
以下のLinux-Kernelイメージファイルを使って起動するか
https://download.atmark-techno.com/~koseki/g3l-fix-bt/uImage
https://download.atmark-techno.com/~koseki/g3l-fix-bt/armadillo_iotg_g3…

添付のパッチ「fix-bt.patch」を当てたLinux-Kernelイメージをビルドして使用する。

■ 原因
systemdでmount処理を追加したことで、BT動作に必要な
ti-uim.serviceサービスが起動するタイミングが変わり
BTデバイスの初期化がタイムアウトしてしまっているようです。

案1の場合、ti-uim.servicの後にSDのmount処理をするようにしているため
SDのmountタイミングが遅くなり、お客様のアプリの動きに問題が出るかもしれません。
問題がある場合、案2を試す方が良いと思います。
(案2は、タイムアウト時間を延ばしたものです。。)

案2を対策として製品アップデートで入れるか検討いたします。

ファイル ファイルの説明
fix-bt.patch Linux-4.9用パッチファイル

お世話になっております。
> ■ 原因
> systemdでmount処理を追加したことで、BT動作に必要な
> ti-uim.serviceサービスが起動するタイミングが変わり
> BTデバイスの初期化がタイムアウトしてしまっているようです。
>
> 案1の場合、ti-uim.servicの後にSDのmount処理をするようにしているため
> SDのmountタイミングが遅くなり、お客様のアプリの動きに問題が出るかもしれません。
> 問題がある場合、案2を試す方が良いと思います。
> (案2は、タイムアウト時間を延ばしたものです。。)
>
> 案2を対策として製品アップデートで入れるか検討いたします。
>

案1を試したところ、エラーが出ず目的の動作をすることが確認できました。
運用上特に問題なさそうなので案1を採用しようと思います。
今回のエラーについてご対応頂きありがとうございます。
アップデートの検討の方もよろしくお願いいたします。