gt777
2023年5月8日 10時38分
Armadillo-IoTゲートウェイ G4 LTE+WLANモデルを使用しています。
製品マニュアル「9.4.5. 近距離通信を行う」を参考に、コンテナ内からBluetoothデータを取得しようとしているのですが、
add_devicesでコンテナに渡すデバイスファイルについて、Armadillo内にCON5(UART1)用の/dev/ttymxc0が存在しません。
armadillo:~# ls /dev/ttymxc* /dev/ttymxc1 /dev/ttymxc3 armadillo:~# cat /etc/atmark/containers/bt_example.conf set_image docker.io/alpine set_command sleep infinity set_network host add_devices /dev/ttymxc3 add_args --cap-add=NET_ADMIN
試しにttymxc1,ttymxc3それぞれをadd_devicesに設定してみましたが、コンテナ内からbluetoothctlコマンドを実行しても「No default controller available」と表示されてしまい、うまくデータが取得できませんでした。(ttymxc1はシリアルコンソール用(CON6)と接続されているようでした。)
既存のデバイスファイルを設定するわけではなく、デバイスツリーを変更してttymxc0を作成する必要があるのでしょうか?
なお、ホストOS側では製品マニュアル「7.1.8. BT」の手順でBluetooth通信ができることを確認済みです。
知識不足で申し訳ありませんが、助言いただけますと幸いです。
コメント
gt777
アットマークテクノ マルティネさん
ご回答ありがとうございます。
confファイルへのadd_devicesの指定と「btattach」コマンドの実行は不要で承知しました。
> ホストOS側ですでに確認済とのことですが、もしかしたら bluetoothd がホスト側でまだ実行中でしょうか?
> bluetoothd は専用ロックを取得しているため、ホスト側で起動された場合はコンテナで使用できません。
> (共有する必要がある場合は dbus で一つの bluetoothd を共有するしかないです)
ご指摘通り、ホストOS側でbluetoothdサービスが起動されておりました。
ホスト側のbluetoothdを停止し、記載いただいたコマンドに従って確認したところ、コンテナ内から正常にbluetoothctlを使用できました。
ありがとうございました。
at_dominique.m…
2023年5月8日 11時10分
gt777さん
お世話になっています、
アットマークテクノのマルティネです。
> 製品マニュアル「9.4.5. 近距離通信を行う」を参考に、コンテナ内からBluetoothデータを取得しようとしているのですが、
> add_devicesでコンテナに渡すデバイスファイルについて、Armadillo内にCON5(UART1)用の/dev/ttymxc0が存在しません。
申し訳ございません、マニュアルにかかれてある手順は発売前の調査の段階でかかれていて、確認不足で更新し忘れていました。
リリースされた Armadillo Base OS では /dev/ttymxc0 が存在しないのは正常です。その次の実行例での「btattach」コマンドも不要となります。
NXPからいただいたソフトウェアでは btattach が必要でしたが、使いやすくするために DTS で認識されるように修正しました。その際にマニュアルを更新しなくてお手数をおかけしました。
このマニュアルの問題があっても、
set_network host
とadd_args --cap-add=NET_ADMIN
で BT が認識されるはずです。こちらの環境でただいま確認しました:
ホストOS側ですでに確認済とのことですが、もしかしたら bluetoothd がホスト側でまだ実行中でしょうか?
bluetoothd は専用ロックを取得しているため、ホスト側で起動された場合はコンテナで使用できません。
(共有する必要がある場合は dbus で一つの bluetoothd を共有するしかないです)
これ以外の問題でしたらもう少し考えてみますので、また聞いてください。
よろしくお願いします。