はじめに
Armadillo-IoT G4およびArmadillo-IoT A6EにはWLAN+BTコンボモジュールが搭載されたモデルがあり、
BLE通信機能を持った機器などと通信させることが出来ます。
alpine linuxのコンテナ上での通信については製品マニュアルに手順の掲載がありますが、
Armadillo-IoT A6E製品マニュアル3.6.4. BT を使用する
この記事ではDebianコンテナを使う場合の手順についてご案内します。
概要
Debianコンテナの場合、bluezがインストールされていて、ネットワークへのアクセス権限があればBLE機器との通信を行う事が出来ます。
また、bluetoothctlコマンド等を使用するためにbluetoothデーモンを動作させるため、dbusとsystemdもインストールしておく必要があります。
Dockerfileを使ってあらかじめ上記がインストールされたDebianコンテナイメージを作成し、このイメージを使ったコンテナ上で動作を確認します。
手順
コンテナイメージの作成にあたって、この記事ではArmadillo上で直接コンテナイメージをビルドする手順をご紹介していますが、Armadillo上で動作するコンテナイメージの生成方法はこれ以外にも様々な方法がございます。
ATDE上のVSCodeを使ったコンテナイメージの生成などの方法においてもこの記事で紹介するDockerfileの内容は有効になりますので、それぞれの手法に沿った使い方で応用してください。
コンテナイメージ作成
以下のようにDockerfileを作成します。
[armadillo ~]# vi Dockerfile #Armadillo-IoT G4の場合 FROM docker.io/arm64v8/debian:bullseye-slim #Armadillo-IoT A6Eの場合 FROM docker.io/arm32v7/debian:bullseye-slim RUN apt update && apt upgrade -y && apt -y install bluez dbus systemd
Dockerfileを元にコンテナイメージをビルドします。
[armadillo ~]# podman build -t localhost/debian:ble .
コンテナ起動ファイル作成
podman_startコマンドによるコンテナ起動のためのconfファイルを作成します。
[armadillo ~]# vi /etc/atmark/containers/ble_test.conf set_image localhost/debian:ble #コンテナ起動時にsystemdを動作させる set_command /lib/systemd/systemd set_network host add_args --cap-add=NET_ADMIN [armadillo ~]# persist_file /etc/atmark/containers/ble_test.conf
コンテナ起動
コンテナを起動してみましょう
[armadillo ~]# podman_start ble_test
動作確認
コンテナに入ってコマンドを実行し、動作確認を行います。
btmgmtコマンドを使用する場合
#コンテナに入る [armadillo ~]# podman exec -ti ble_test /bin/bash #btmgmtを実行 [container ~]# btmgmt Index list with 1 item hci0: Primary controller addr XX:XX:XX:XX:XX:XX version 9 manufacturer 305 class 0x000000 supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy configuration static-addr phy-configuration current settings: br/edr name CYW94373 UART 37.4MHz Class 1 wlbga sLNA-0102 short name hci0: Configuration options supported options: public-address missing options: public-address #hci0を選択 [mgmt]# select hci0 Selected index 0 [hci0]# power on hci0 Set Powered complete, settings: powered br/edr [hci0]# le on hci0 Set Low Energy complete, settings: powered br/edr le #周辺のbleデバイスを検索 [hci0]# find Discovery started hci0 type 7 discovering on hci0 dev_found: XX:XX:XX:XX:XX:XX type LE Random rssi -76 flags 0x0004 AD flags 0x00 eir_len 8 #以下、周辺のデバイスが表示されます。
bluetoothctlコマンドを使用する場合
#コンテナに入る [armadillo ~]# podman exec -ti ble_test /bin/bash #bluetoothデーモンを再起動 [container ~]# systemctl restart bluetooth root@armadillo:/# bluetoothctl Agent registered [CHG] Controller XX:XX:XX:XX:XX:XX Pairable: yes [bluetooth]# scan on Discovery started [CHG] Controller XX:XX:XX:XX:XX:XX Discovering: yes [NEW] Device XX:XX:XX:XX:XX:XX XXXXXXX #以下、周辺のデバイスが表示されます。
このように作成したコンテナを応用し、BLEデバイスと通信するアプリケーションを開発してみて下さい。