0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WisGate Developer Base RAK7371 と Armadiilo-IoT A9E を組み合わせてLoRaWANゲートウェイを自作する

Posted at

概要

WisGate Developer Base RAK7371 と Armadillo-IoT ゲートウェイ A9E を組み合わせて簡単にLoRaWANゲートウェイを作ってみる。
まさにこういうことがやりたいので、USB接続可能なLoRaWAN Concentratorを探していたし欲しかった。

ここではA9Eを組み合わせているが、ぶっちゃけ他のArmadilloでも同じ。

準備物

参考資料

注意

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側で見てみても接続状態になっている。

image.png

備考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?