Armadilloフォーラム

iot-g4 bluetoothctl スキャンができない。

nishioka

2023年9月5日 9時47分

お世話になっております。

iot-g4でluetoothctl スキャンができません。
"製品マニュアル 6.15.8.BT"を参照し行ったところ以下のようになります。

root@armadillo:/home# service bluetooth start
Starting bluetooth: bluetoothd.
root@armadillo:/home# bluetoothctl
Waiting to connect to bluetoothd...dbus[42]: arguments to dbus_connection_get_object_path_data() were incorrect, assertion "connection != NULL" failed in file ../../../dbus/dbus-connection.c line 5905.
This is normally a bug in some application using the D-Bus library.
 
  D-Bus not built with -rdynamic so unable to print a backtrace
Aborted

以前に動作確認で同様の作業を行ったのですが、その際は何事もなくスキャン出来ました。
以前と異なる点は、kernelのアップデートの有無ぐらいです。

他に設定が必要なのでしょうか。
以上、よろしくお願いいたします。

コメント

at_dominique.m…

2023年9月5日 9時59分

nishiokaさん、

お世話になっています、
マルティネです。

> iot-g4でbluetoothctl スキャンができません。
> "製品マニュアル 6.15.8.BT"を参照し行ったところ以下のようになります。

https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro… の「apk add bluez; service bluetooth start; bluetoothctl」ですね。

> Waiting to connect to bluetoothd...dbus[42]: arguments to dbus_connection_get_object_path_data() were incorrect, assertion "connection != NULL" failed in file ../../../dbus/dbus-connection.c line 5905.
> This is normally a bug in some application using the D-Bus library.

>
> 以前に動作確認で同様の作業を行ったのですが、その際は何事もなくスキャン出来ました。
> 以前と異なる点は、kernelのアップデートの有無ぐらいです。

このメッセージはカーネルの問題ではないと思いますが、一応確認しましょう:Armadillo に /sys/class/bluetooth/hci0 が存在してますか?
あったら、bluetooth デバイスが認識されています。

このメッセージの原因がいくつかあると思いますが、以前このフォーラムのスレッドで発見されていました:
https://armadillo.atmark-techno.com/forum/armadillo/15637
当時の理由は、しばらく立ったら dbus の接続が増えて dbus側の設定で接続を拒否していたのが原因でしたが、今回は起動したばかりであれば考えにくいですね。
他の理由で dbus に接続できない心当たりはありますか?他の dbus を使っているコマンド、例えば「nmcli c」でもエラーしていますか?

また、こちらで再現してみたいと思っていますので、Armadillo BaseOS のバージョンを教えてください。具体的に、この三つのコマンドの出力を提供していただければ助かります:

armadillo:~# cat /etc/atmark-release 
3.18.3-at.2
armadillo:~# apk list --installed dbus bluez
bluez-5.66-r5 aarch64 {bluez} (GPL-2.0-or-later AND BSD-2-Clause AND MIT) [installed]
dbus-1.14.8-r0 aarch64 {dbus} (AFL-2.1 OR GPL-2.0-or-later) [installed]
armadillo:~# uname -r
5.10.191-0-at

よろしくお願いします。

nishioka

2023年9月5日 10時21分

マルティネ様

ありがとうございます。

> このメッセージはカーネルの問題ではないと思いますが、一応確認しましょう:Armadillo に /sys/class/bluetooth/hci0 が存在してますか?
> あったら、bluetooth デバイスが認識されています。

存在を確認しました。

armadillo:~# ls /sys/class/bluetooth/
hci0

三つのコマンド出力です。

armadillo:~# cat /etc/atmark-release
3.17.4-at.8
 
armadillo:~# apk list --installed dbus bluez
WARNING: Ignoring https://download.atmark-techno.com/alpine/v3.17/atmark: No such file or directory
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.17/main: No such file or directory
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.17/community: No such file or directory
dbus-1.14.8-r0 aarch64 {dbus} (AFL-2.1 OR GPL-2.0-or-later) [installed]
 
armadillo:~# uname -r
5.10.180

以上、よろしくお願いいたします。

at_dominique.m…

2023年9月5日 10時48分

nishiokaさん、

早速の返事ありがとうございます。

同じ Armadillo Base OS 3.17.4-at.8 をインストールしてみて、同じ dbus のバージョンで「apk add bluez」を行って(現時点、bluez 5.66-r1)問題なく bluetoothctl を起動できました。

カーネルのバージョンが違いますが、確認したとおりに bluetooth のデバイスが存在していますので問題なく認識されています。

お手数ですが、試した環境についてもう少し教えていただけますでしょうか?開発中のアプリケーションでスキャンの問題があったので、bluez をインストールして試したということでしょうか?dbus もコンテナで起動していますか?
そのアプリケーションはコンテナ内で bluetoothd を起動して使用していますでしょうか?
(ちなみに、コンテナー内でも bluetoothd を起動して、2つ目の bluetoothd 側で bluetoothctl がデバイスを認識してないだけでこういうエラーが出力されてないですね…)

また、Armadillo を再起動した直後でも同じエラーが発生しないと思いますが、あっていますか?
発生している場合、コンテナを一旦停止して(podman kill -a) 再び実行するとどうでしょうか?

よろしくお願いします。

nishioka

2023年9月5日 13時08分

マルティネ様

申し訳ありません。
armadilloで「apk add bluez」を行っておりませんでした。コンテナ内で作業していたのが原因だと思います。
armadilloで「apk add bluez」を行った後、「bluetoothctl」の起動し動作も確認出来ました。

ペアリング設定を保存したいのですが、どのようにすればよいでしょうか。
見当違いだと思いますが、"persist_file /sys/class/bluetooth/hci0"は行いました。

また、今回の「apk add bluez」からペアリングの設定までをATDE側で設定し、swuインストールすることは可能でしょうか。

以上、よろしくお願いいたします。

at_dominique.m…

2023年9月5日 14時11分

nishiokaさん

> 申し訳ありません。
> armadilloで「apk add bluez」を行っておりませんでした。コンテナ内で作業していたのが原因だと思います。
> armadilloで「apk add bluez」を行った後、「bluetoothctl」の起動し動作も確認出来ました。

いえいえ、改めて確認したら確かに分かりにくいと思います。
この内容は以前のバージョンに「動作確認方法」にありましたが、今の「コマンドラインからネットワーク設定をする」で本来の使い方にしか見えません…
こちらの確認不足で時間を使わせていただいてすみません。
これから使い分けをはっきりしたいと思いますので、今度のマニュアルの更新で改善させていただきます。

話を戻します。
動作確認ではなく、bluetooth を使う分に関してはコンテナで bluetoothctl 等を起動するのは正しいです。
マニュアルの違うところに説明されています:
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

今回は、dbus サービスが起動していないことが原因ですね。試していませんでしたが、dbus が起動していなければ同じエラーメッセージが表示されます… dbus-daemon を実行してから bluetoothd を起動していれば、その後に bluetoothctl を使えるようになるはずです:

[container ~]# dbus-daemon --system
[container ~]# /usr/lib/bluetooth/bluetoothd &
[container ~]# bluetoothctl

また、コンテナの場合はコンテナのコンフィグファイルに 「set_network host<code>」と「<code>add_args --cap-add=NET_ADMIN」を指定して、コンテナに bluetooth インタフェースを見えるようにする必要がありますので、デバイスが表示されていなければその設定を確認してください。

> ペアリング設定を保存したいのですが、どのようにすればよいでしょうか。
> 見当違いだと思いますが、"persist_file /sys/class/bluetooth/hci0"は行いました。
>
> また、今回の「apk add bluez」からペアリングの設定までをATDE側で設定し、swuインストールすることは可能でしょうか。

パッケージを swu でインストールできますが、アットマークテクノが提供している Armadillo Base OS のアップデートを使うとパッケージの内容がなくなりますのであまりおすすめできません。
大変お手数ですが、コンテナでもう一度試してみていただければ幸いです。

よろしくお願いします。

nishioka

2023年9月5日 14時50分

マルティネ様

ありがとうございます。

>コンテナの場合はコンテナのコンフィグファイルに 「set_network host<code>」と「<code>add_args --cap-add=NET_ADMIN」を指定して、コンテナに bluetooth インタフェースを見えるようにする必要がありますので、デバイスが表示されていなければその設定を確認してください。

Error: cannot set multiple networks without bridge network mode, selected mode host: invalid argument
error: Could not start

となってしまいコンテナが起動しなくなりました。

以上、よろしくお願いいたします。

at_dominique.m…

2023年9月5日 15時01分

nishiokaさん

> >コンテナの場合はコンテナのコンフィグファイルに 「set_network host<code>」と「<code>add_args --cap-add=NET_ADMIN」を指定して、コンテナに bluetooth インタフェースを見えるようにする必要がありますので、デバイスが表示されていなければその設定を確認してください。
>

> Error: cannot set multiple networks without bridge network mode, selected mode host: invalid argument
> error: Could not start
> 

> となってしまいコンテナが起動しなくなりました。

コンテナコンフィグにすでに「add_args --network=host」(か別の値)を設定されていますでしょうか?
set_network も結局その引数を設定しているだけで、podman に --network を複数回指定するとエラーしてしまいますのでどれかを削除すれば起動できると思います。

起動できなかったら、お手数ですがコンテナのコンフィグを見せていただけたら確認します。

よろしくお願いします。

nishioka

2023年9月5日 15時25分

マルティネ様

ありがとうございます。

> コンテナコンフィグにすでに「add_args --network=host」(か別の値)を設定されていますでしょうか?
> set_network も結局その引数を設定しているだけで、podman に --network を複数回指定するとエラーしてしまいますのでどれかを削除すれば起動できると思います。
add_args --net=hostをコメントアウトしたところ、コンテナが正常に起動しました。

その後、コンテナ内にてdbusを行ったところ以下の様になりました。

root@armadillo:/home# dbus-daemon --system
dbus-daemon[33]: Failed to start message bus: Failed to bind socket "/run/dbus/system_bus_socket": No such file or directory

コンテナのコンフィグを添付します。
以上、よろしくお願いいたします。

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

at_dominique.m…

2023年9月5日 15時41分

nishiokaさん

マルティネです。

> その後、コンテナ内にてdbusを行ったところ以下の様になりました。

> root@armadillo:/home# dbus-daemon --system
> dbus-daemon[33]: Failed to start message bus: Failed to bind socket "/run/dbus/system_bus_socket": No such file or directory

>
> コンテナのコンフィグを添付します。

度々すみません、 /run/dbus ディレクトリを生成すればエラーがなくなります。
alpine 3.18 の仕様の変更(詳細: https://gitlab.alpinelinux.org/alpine/aports/-/commit/c90315e03a8648316… )で、以前はパッケージのインストールだけでディレクトリが生成されていましたが、もうパッケージに頼れなくなりましたね。

最新の alpine コンテナで、mkdir の後に dbus を起動できました。

/ # apk add bluez
fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/main/aarch64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/community/aarch64/APKINDEX.tar.gz
(1/16) Installing dbus-libs (1.14.8-r0)
(2/16) Installing libexpat (2.5.0-r1)
(3/16) Installing dbus (1.14.8-r0)
Executing dbus-1.14.8-r0.pre-install
Executing dbus-1.14.8-r0.post-install
(4/16) Installing dbus-daemon-launch-helper (1.14.8-r0)
(5/16) Installing libffi (3.4.4-r2)
(6/16) Installing libintl (0.21.1-r7)
(7/16) Installing libblkid (2.38.1-r8)
(8/16) Installing libmount (2.38.1-r8)
(9/16) Installing pcre2 (10.42-r1)
(10/16) Installing glib (2.76.4-r0)
(11/16) Installing json-c (0.16-r3)
(12/16) Installing ncurses-terminfo-base (6.4_p20230506-r0)
(13/16) Installing libncursesw (6.4_p20230506-r0)
(14/16) Installing readline (8.2.1-r1)
(15/16) Installing eudev-libs (3.2.11-r8)
(16/16) Installing bluez (5.66-r5)
Executing busybox-1.36.1-r2.trigger
Executing dbus-1.14.8-r0.trigger
Executing glib-2.76.4-r0.trigger
OK: 19 MiB in 31 packages
/ # mkdir /run/dbus
/ # dbus-daemon --system
/ # /usr/lib/bluetooth/bluetoothd &
/ # bluetoothctl
Agent registered
[CHG] Controller 34:6F:24:C0:C6:F5 Pairable: yes

この点もマニュアルに修正しておきます。

よろしくお願いします。

nishioka

2023年9月5日 17時03分

マルティネ様

ありがとうございます。
ディレクトリを作成したところ、エラーがなくなりました。

ですが、コンテナ内から/usr/lib/bluetoothを見ることが出来ません。
コンフィグの設定は先程の添付したものです。

root@armadillo:/home# /usr/lib/b
bfd-plugins/ binfmt-support/ binfmt.d/

以上、よろしくお願いいたします。

at_dominique.m…

2023年9月5日 17時18分

nishiokaさん

> ですが、コンテナ内から/usr/lib/bluetoothを見ることが出来ません。
> コンフィグの設定は先程の添付したものです。

root@armadillo:/home# /usr/lib/b
bfd-plugins/ binfmt-support/ binfmt.d/

なぜかコンテナが alpineベースだと思い込んでいましたが、debianですね。
debian の場合に bluetoothd のバイナリが違うパスでインストールされています。
/usr/libexec/bluetooth/bluetoothd & で起動できると思います。

よろしくお願いします。

nishioka

2023年9月6日 10時50分

マルティネ様

ありがとうございます。

> なぜかコンテナが alpineベースだと思い込んでいましたが、debianですね。
> debian の場合に bluetoothd のバイナリが違うパスでインストールされています。
> /usr/libexec/bluetooth/bluetoothd & で起動できると思います。
無事にコンテナ内で"bluetoothctl"が起動できました。

ペアリング後にコンテナをcommitし、電源を入れ直すとペアリングした機器が再接続されませんでした。

root@armadillo:/home# dbus-daemon --system
dbus-daemon[33]: Failed to start message bus: The pid file "/run/dbus/pid" exists, if the message bus is not running, remove this file

ペアリングの設定を保存するには別の手順で行う必要があるのでしょうか。
以上、よろしくお願いいたします。

at_dominique.m…

2023年9月6日 12時53分

nishiokaさん

マルティネです。

> ペアリング後にコンテナをcommitし、電源を入れ直すとペアリングした機器が再接続されませんでした。
>

> root@armadillo:/home# dbus-daemon --system
> dbus-daemon[33]: Failed to start message bus: The pid file "/run/dbus/pid" exists, if the message bus is not running, remove this file
> 

>
> ペアリングの設定を保存するには別の手順で行う必要があるのでしょうか。

commit で前に実行していた dbus の pid ファイルまで保存して、次の実行でエラーしてしまいますね。「/run/dbus/pid」ファイルを削除しておいて再び commit すれば問題がなくなりますが、更新する度に dbus を停止させて pid ファイルを削除するのは手間なので、それでしたらコンテナ内に実行しているスクリプトでディレクトリを作り直した方が楽だと思います。
(コンテナで /run まで保存しない方がよさそうですが、dbus が /run/dbus を作ってくれないのでちょっとややっこしいですね…どの道 pid ファイルの削除かディレクトリの生成を管理しないといけないらしい…)

また別の方法になりますが、コンテナのコンフィグファイルに「add_args --tmpfs /run/dbus」を追加すると、コンテナを起動する度に空なディレクトリが生成されますので、そのディレクトリの管理しなくても dbus を起動できるようになるはずです。

よろしくお願いします。

nishioka

2023年9月6日 14時00分

マルティネ様

> また別の方法になりますが、コンテナのコンフィグファイルに「add_args --tmpfs /run/dbus」を追加すると、
コンテナを起動する度に空なディレクトリが生成されますので、そのディレクトリの管理しなくても dbus を起動できるようになるはずです。
上記方法で解決出来ました。ありがとうございます。

電源の入り切りを行っても先程の現象は起こらなくなったのですが、
接続した機器の接続がON/OFFを繰り返している状態になっています。
カーネル設定の問題でしょうか。

使用している機器は"inateck BCST-70"です。
以上、よろしくお願いいたします。

at_dominique.m…

2023年9月6日 15時30分

nishiokaさん

> 接続した機器の接続がON/OFFを繰り返している状態になっています。
> カーネル設定の問題でしょうか。

これだけの情報ではちょっと判断しにくいですね。切断の理由は Armadillo からの切断、機器からの切断も分からない状態です。

まず、この状態は最初から起きていましたか?それか Armadillo を再起動した時からだけでしょうか?
最初の接続で問題なかった場合は機器をリセットしてみるのもいいかもしれません。
また、英語のマニュアルしか読んでませんが https://images-na.ssl-images-amazon.com/images/I/91ht8Mk1IPL.pdf によると「auto sleep」機能があります。「disable auto-sleep mode」で無効化できるらしいので、問題を解決するまでは試してもいいかもしれません。

簡単に解決できなかった場合は情報が欲しいので、二つのところから取得していただければ助かります。コンテナから、ファイルで保存します。以下は「/mnt/USB/disk/*.log」として書きますが、ファイルを取得できる場所に変更してください。
1/ btmon -w /mnt/USB/disk/btmon.log >/dev/null & で bluetooth のトレースを取得します (生成されたファイルは 「btmon -r btmon.log」で表示できます)
2/ bluetoothd を起動する時は /usr/libexec/bluetooth/bluetoothd -d -n > /mnt/USB/disk/bluetoothd.log 2>&1 & で起動して、bluetoothd のログも取得します

接続できて、何回か切断されていると確認してらコンテナを停止等してファイルをここに添付していただければ拝見します。

よろしくお願いします。

nishioka

2023年9月6日 16時56分

マルティネ様

ありがとうございます。

> まず、この状態は最初から起きていましたか?それか Armadillo を再起動した時からだけでしょうか?
・ 最初(ペアリングを設定した時)は問題ないのですが、再起動を行ってから起こっています。

> 最初の接続で問題なかった場合は機器をリセットしてみるのもいいかもしれません。
> また、英語のマニュアルしか読んでませんが https://images-na.ssl-images-amazon.com/images/I/91ht8Mk1IPL.pdf によると「auto sleep」機能があります。「disable auto-sleep mode」で無効化できるらしいので、問題を解決するまでは試してもいいかもしれません。
・ リセットを行いましたが、リセットした時は問題ないですが再起動すると同じ状態になってしまいます。
・ スリープ無効も変化はありませんでした。

> 簡単に解決できなかった場合は情報が欲しいので、二つのところから取得していただければ助かります。コンテナから、ファイルで保存します。以下は「/mnt/USB/disk/*.log」として書きますが、ファイルを取得できる場所に変更してください。
> 1/ btmon -w /mnt/USB/disk/btmon.log >/dev/null & で bluetooth のトレースを取得します (生成されたファイルは 「btmon -r btmon.log」で表示できます)
> 2/ bluetoothd を起動する時は /usr/libexec/bluetooth/bluetoothd -d -n > /mnt/USB/disk/bluetoothd.log 2>&1 & で起動して、bluetoothd のログも取得します
>
> 接続できて、何回か切断されていると確認してらコンテナを停止等してファイルをここに添付していただければ拝見します。

・ btmon.logとbluetooth.logを添付しました。btmon.logの方が文字化けしています。
・ 「btmon -r btmon.log」を行うとBluetooth monitor ver 5.55と出力されました。

以上、よろしくお願いいたします。

ファイル ファイルの説明
bluetooth.log
btmon.log

at_dominique.m…

2023年9月6日 17時42分

nishiokaさん、

> ・ 最初(ペアリングを設定した時)は問題ないのですが、再起動を行ってから起こっています。
> ・ リセットを行いましたが、リセットした時は問題ないですが再起動すると同じ状態になってしまいます。
> ・ スリープ無効も変化はありませんでした。

リセットや最初のペアリングで問題ないですね。ありがとうございます。
スリープも関係なさそうですね。確認ありがとうございます。

> ・ btmon.logとbluetooth.logを添付しました。btmon.logの方が文字化けしています。
> ・ 「btmon -r btmon.log」を行うとBluetooth monitor ver 5.55と出力されました。

ログもありがとうございました。
btmon.log の方に diconnect の理由がありました:

> HCI Event: Disconnect Complete (0x05) plen 4            #332 [hci0] 80.865192
        Status: Success (0x00)
        Handle: 128 Address: AC:2B:00:01:27:CA (OUI AC-2B-00)
        Reason: Authentication Failure (0x05)
@ MGMT Event: Device Disconnected (0x000c) plen 8     {0x0001} [hci0] 80.865230
        LE Address: AC:2B:00:01:27:CA (OUI AC-2B-00)
        Reason: Connection terminated due to authentication failure (0x04)

日本語にすると、最後まで接続はできておらずデバイスの認証は通ってないですね。
恐らく何かのファイルを保存がたりないと思います。

手元にこういう認証の必要なデバイスがないので、少し時間をください。
明日確認して再び連絡します。

よろしくお願いします。

at_dominique.m…

2023年9月7日 11時31分

nishiokaさん、

お待たせしました、
マルティンです。

> 日本語にすると、最後まで接続はできておらずデバイスの認証は通ってないですね。
> 恐らく何かのファイルを保存がたりないと思います。

こちらで debian bullseye で確認したところ(bluez 5.55-3.1) 認証の鍵はペアリング情報と同じファイルに保存されています。
具体的に、トレースによれば「/var/lib/bluetooth/B4:8C:9D:9D:79:27/AC:2B:00:01:27:CA/info」のファイルがあるはずで、そちらに SlaveLongTermKey などの鍵が保存されているはずですが、btmon のログによるとその SlaveLongTermKey の鍵が認識されていないらしいです。

確認しますが、再起動する時はコンテナを再びほぞのした後でしょうか?
ちょっとややっこしいですので、/var/lib/bluetooth もボリュームで保存できるようにしてみたいと思いました。

以下の手順で確認してもらえますでしょうか?
1/ コンテナのコンフィグファイルに「add_volumes /var/app/volumes/bluetooth:/var/lib/bluetooth」を追加して、bluetooth のステートディレクトリを eMMC で保存するようにします
2/ 「podman_start -a」 でコンテナをリスタートします
3/ バーコードリーダーを初期化して、再び接続します。(bluetoothctl に pair + trust ですね?)
4/ 動作に問題ないと確認した後に Armadillo を再起動してください。念のため、最初に試すのは電源を切るのではなく「reboot」などで綺麗に再起動してください(後で、電源を落とすテストもいいと思いますが、一歩ずつに確認しましょう)
5/ 再起動の後に再び確認します

よろしくお願いします。

nishioka

2023年9月7日 13時21分

マルティネ様

ありがとうございます。

> 以下の手順で確認してもらえますでしょうか?
> 1/ コンテナのコンフィグファイルに「add_volumes /var/app/volumes/bluetooth:/var/lib/bluetooth」を追加して、bluetooth のステートディレクトリを eMMC で保存するようにします
> 2/ 「podman_start -a」 でコンテナをリスタートします
> 3/ バーコードリーダーを初期化して、再び接続します。(bluetoothctl に pair + trust ですね?)
> 4/ 動作に問題ないと確認した後に Armadillo を再起動してください。念のため、最初に試すのは電源を切るのではなく「reboot」などで綺麗に再起動してください(後で、電源を落とすテストもいいと思いますが、一歩ずつに確認しましょう)
> 5/ 再起動の後に再び確認します
手順通りに行ったところ、on/offを繰り返すことなく接続が可能になりました。

完全に頼りっぱなしになっていて申し訳ないのですが、
bluetoothのコマンドをシェルスクリプト内に追記しました。ですが、ソフトは立ち上がりますが追記したコマンドが認識されていないのかbluetoothが機能しません。コンテナ内に入って、コマンドを入力すると問題なく機能します。

他にやり方があるのでしょうか。
以上、よろしくお願いいたします。

ファイル ファイルの説明
start-TMC.sh 指定先のsh
tmc.conf ソフト起動のconf

at_dominique.m…

2023年9月7日 14時35分

nishiokaさん

> 完全に頼りっぱなしになっていて申し訳ないのですが、

そうですね、私も説明しすぎる傾向がありますが、ハードウェアの問題の可能性があった時と違って、今の質問は「普通」の linux の開発の問題なので、Armadillo固有の問題ではありません。
ある程度は答え続けますが本格的なサポートが必要でしたら弊社パートナーのご紹介も可能です。営業部までお問い合わせください。

> ソフトは立ち上がりますが追記したコマンドが認識されていないのかbluetoothが機能しません。コンテナ内に入って、コマンドを入力すると問題なく機能します。

start-TMC.sh をみた限り、すでにあったスクリプトの最後に BT 関係のコマンドを追加しただけですね。
おそらく、TMC000 のプログラムがずっと実行されている物なので(でなければコンテナがすぐ停止されていたはずです)、その後のコマンドが実行されないと思います。
また、bluetoothctl は人間が使うインターフェースなので、スクリプトでの実行は不要です。

なので、今回は FTP サーバーと同じく TMC000 の前に dbus/bluetoothd を実行すれば使えると思います。

(あるいは、このリーダーはキーボードとして認識されると思いますので、別のコンテナで管理してもいいですが;サービスを綺麗に切り分けるとまた少し複雑になりますのでそこまでしなくていいと思っています)

よろしくお願いします。

nishioka

2023年9月8日 9時42分

マルティネ様

ありがとうございます。

> start-TMC.sh をみた限り、すでにあったスクリプトの最後に BT 関係のコマンドを追加しただけですね。
> おそらく、TMC000 のプログラムがずっと実行されている物なので(でなければコンテナがすぐ停止されていたはずです)、その後のコマンドが実行されないと思います。
> また、bluetoothctl は人間が使うインターフェースなので、スクリプトでの実行は不要です。
>
> なので、今回は FTP サーバーと同じく TMC000 の前に dbus/bluetoothd を実行すれば使えると思います。
以下の様に記述したところ、再起動後に接続されることを確認しました。

#Bluetooth
/etc/init.d/dbus start
/usr/libexec/bluetooth/bluetoothd &

参考URL:https://armadillo.atmark-techno.com/blog/750/1552

ありがとうございました。

nishioka

2023年9月21日 13時49分

デバグ作業が完了し実機にインストールを始めたのですが、bluetoothの自動接続が出来なくなりました。

デバグ時と異なる点はSDカードです。デバグ中は初期化用のSDカードを挿していましたが、現在は保存データなどが入ったものを挿しています。
fstabで自動マウントの設定はしていますが、最初に質問をさせていただいた時から設定していたので関係はないと思いますが一応添付しておきます。

SDカードのフォーマット方法などが関係しているのでしょうか。

以上、よろしくお願いいたします。

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

nishioka

2023年9月21日 15時08分

confファイル内の

add_volumes /var/app/volumes/bluetooth:/var/lib/bluetooth
 
// 下記へ変更
 
add_volumes /var/app/rollback/volumes/bluetooth:/var/lib/bluetooth

変更したところBluetoothの自動接続が可能になりました。

申し訳ありませんでした。

at_dominique.m…

2023年9月21日 15時50分

nishiokaさん、

マルティネです。

> fstabで自動マウントの設定はしていますが、最初に質問をさせていただいた時から設定していたので関係はないと思いますが一応添付しておきます。
>
> SDカードのフォーマット方法などが関係しているのでしょうか。

fstab を見たところ sd カードを /var/app/volumes にマウントしています。
更新スクリプトで直接に /var/app/volumes をアクセスしていないですが、別のディレクトリ(/var/app/volumes/mnt 等)を生成してそちらにマウントしていただいた方が無難だと思います。

> confファイル内の /var/app/volumes/bluetooth -> /var/app/rollback/volumes/bluetooth に 変更したところBluetoothの自動接続が可能になりました。

bluetoothd が fat ディレクトリを対応してないですね。
FAT では長いファイル名を生成できませんのと、symbolic link 等他の機能も使用できませんのでどこかでエラーしていると思います。

windows でその sd カードをマウントする予定がなければ、ext4 か xfs でフォーマットした方がいいと思いますが、ディレクトリを別けていれば fat のままでも問題ありません。

よろしくお願いします。

nishioka

2023年9月22日 8時56分

マルティネ様

> fstab を見たところ sd カードを /var/app/volumes にマウントしています。
> 更新スクリプトで直接に /var/app/volumes をアクセスしていないですが、別のディレクトリ(/var/app/volumes/mnt 等)を生成してそちらにマウントしていただいた方が無難だと思います。

ディレクトリを分けることによって自動接続されることを確認出来ました。ありがとうございます。

> bluetoothd が fat ディレクトリを対応してないですね。
> FAT では長いファイル名を生成できませんのと、symbolic link 等他の機能も使用できませんのでどこかでエラーしていると思います。
>
> windows でその sd カードをマウントする予定がなければ、ext4 か xfs でフォーマットした方がいいと思いますが、ディレクトリを別けていれば fat のままでも問題ありません。

Bluetoothはfatに対応していなかったのですね。ありがとうございます、勉強になります。

ありがとうございました。