概要
WisGate Developer Base RAK7371 と Armadillo-IoT ゲートウェイ A9E を組み合わせて簡単にLoRaWANゲートウェイを作ってみる。
まさにこういうことがやりたいので、USB接続可能なLoRaWAN Concentratorを探していたし欲しかった。
ここではA9Eを組み合わせているが、ぶっちゃけ他のArmadilloでも同じ。
準備物
- WisGate Developer Base RAK7371
- Armadillo-IoT ゲートウェイ A9E
- AWS IoTをはじめ何らかのCUPS/LNSサーバーの接続情報
- ここではAWS IoTを例にとってるが、別になんでもよし
参考資料
注意
RAKのLoRaWANデバイスは技適を取ってないケースが多い。必ず技適の有無を確認し、もし未認証の場合には、シールドルームの中で作業するとか、特例申請を出すなどして違法状態にならないよう事前に準備しておくこと。
やること
既にdocker-composeを使う形でLoRaWAN ゲートウェイの構築には成功している。
A9Eに搭載されたArmadillo Base OSの中で動かすには、それをpodmanライクに書けばいいだけ。
また、実運用を考えたときに永続稼働を考えると、 podman_startコマンドを使ってArmadilloらしく起動したい。
同じくAWS IoTにつながるまでを目指す。
デバイスの存在確認
環境によって異なるかもしれないが、手元の環境だとACM4として認識された。
[ 126.928567] usb 1-1: new full-speed USB device number 2 using ci_hdrc
[ 127.099548] cdc_acm 1-1:1.0: ttyACM4: USB ACM device
Armadillo用のコンフィグを作る
あまり難しくはなくて成功編の記事で言及しているdocekr-compose.ymlの内容を書き直せばいいだけ。
ざっくりこんな感じ。
set_image docker.io/xoseperez/basicstation:latest
set_pull missing
set_autostart yes
set_restart always
add_devices /dev/ttyACM4
add_args -e=INTERFACE="USB"
add_args -e=DEVICE="/dev/ttyACM4"
add_args -e=USE_CUPS=1
add_args -e=CUPS_URI="https://HOGEHOGE.cups.lorawan.ap-northeast-1.amazonaws.com:443"
add_args -e=CUPS_TRUST="-----BEGIN CERTIFICATE----- MIIE... -----END CERTIFICATE-----"
add_args -e=CUPS_CRT="-----BEGIN CERTIFICATE----- MIID... -----END CERTIFICATE-----"
add_args -e=CUPS_KEY="-----BEGIN RSA PRIVATE KEY----- MIIE... -----END RSA PRIVATE KEY-----"
ポイント
podmanの参照先レジストリをイジってるなら話は別だが、そうでなければArmadilloはdockerhubを見に行ってくれない。そのため、明示的に docker.ioをくっつける
set_image docker.io/xoseperez/basicstation:latest
コンテナイメージがないならpullするし、基本的には起動/再起動してほしい、というよくあるおまじない。
set_pull missing
set_autostart yes
set_restart always
すごい大事な部分。deviceファイルを明示的にバインドさせてあげることで特権権限を不要にする。
リポジトリに含まれているサンプルのdocker-compose.ymlだと —privilegedを使うようになっていたりNWもホスト側を使うようになっているが、ちゃんと設定すればぶっちゃけ要らない。
add_devices /dev/ttyACM4
つまり、これは不要。もちろんあっても動くが、なくても動くので、それならないほうがいい。
#add_args --privileged --net=host
その他、CUPS関連のパラメーターなどは環境変数につっこめばとりあえずOK.
別記事でも言及したが、実運用時は直接やるべきじゃないので何かしら対策を講じるべし。
add_args -e=INTERFACE="USB"
add_args -e=DEVICE="/dev/ttyACM4"
add_args -e=USE_CUPS=1
add_args -e=CUPS_URI="https://HOGEHOGE.cups.lorawan.ap-northeast-1.amazonaws.com:443"
add_args -e=CUPS_TRUST="-----BEGIN CERTIFICATE----- MIIE... -----END CERTIFICATE-----"
add_args -e=CUPS_CRT="-----BEGIN CERTIFICATE----- MIID... -----END CERTIFICATE-----"
add_args -e=CUPS_KEY="-----BEGIN RSA PRIVATE KEY----- MIIE... -----END RSA PRIVATE KEY-----"
動作確認
あとはもう立ち上げるだけ。confファイルの名前はお好きなようにどうぞ。
$ podman_start rak-gateway
こんな感じで起動成功!
2025-12-22 01:44:16.179 [S2E:INFO] TX power: 14.0 dBm EIRP
2025-12-22 01:44:16.180 [S2E:INFO] JoinEUI list: 0 entries
2025-12-22 01:44:16.180 [S2E:INFO] NetID filter: FFFFFFFF-FFFFFFFF-FFFFFFFF-FFFFFFFF
2025-12-22 01:44:16.180 [S2E:INFO] Dev/test settings: nocca=0 nodc=0 nodwell=0
2025-12-22 01:44:16.222 [S00:INFO] [lgw_usb_open:162] INFO: Configuring TTY
2025-12-22 01:44:16.222 [S00:INFO] [lgw_usb_open:171] INFO: Flushing TTY
2025-12-22 01:44:16.222 [S00:INFO] [lgw_usb_open:180] INFO: Setting TTY in blocking mode
2025-12-22 01:44:16.222 [S00:INFO] [lgw_usb_open:195] INFO: Connect to MCU
2025-12-22 01:44:16.223 [S00:INFO] [lgw_usb_open:204] INFO: Concentrator MCU version is V01.00.00
2025-12-22 01:44:16.224 [S00:INFO] [lgw_usb_open:211] INFO: MCU status: sys_time:2792734 temperature:27.2oC
2025-12-22 01:44:16.232 [S00:INFO] [lgw_connect:1192] chip version is 0x12 (v1.2)
2025-12-22 01:44:18.522 [S00:INFO] [timestamp_counter_mode:431] using legacy timestamp
2025-12-22 01:44:19.041 [S00:INFO] Concentrator started (2s821ms)
もちろんAWS側で見てみても接続状態になっている。
備考
- たまたま今回はArmadillo-IoT A9Eを使っているが、別にG4とかX2でもOK
- 旧A6EだとARMv7なのでもしかしたら何か問題でるかも?
- ただし、コンテナイメージとしてはv7用のものもあるのでいけるんじゃないかと思う (試してない)
