前回の記事では DRAGINO の LPS8 に AK-020 のSIMドングルをつけて動作することろまでを確認したんですが、その後問題が発生し結果として AK-020(+SORACOM) は使用できないことがわかりました。
LoRaWAN デバイスから OTAA でアクティベーションするところまでは問題無く動作します。問題はその後です。データ通信は ACK を ON にしていたので、デバイスから GW にデータ送信後、GW からの ACK を受信したいのですがこれが全く返ってきません。
SIMドングル経由ではなく、有線LANでGWを接続した場合は何も問題なくACKが返ってきます。えー、なにこれー、と思っていろいろ調べたんですが原因を特定できず、回線速度が問題じゃないのかくらいの情報を得ることしかできませんでした。ようするに ACK を返すには時間制限があるんですが、それに間に合ってないと。
回線速度かー、確かに AK-020 は 3G だしねー。諸事情により AK-020 が大量に余っていたので使える用途が見つかってやたー、と思っていたところその野望は即座に崩れてしまいました。
仕方なく他の方法を考えます。
まずは別件で使っていたSIM8070Gの開発ボードを使ってみます。しかしながらいろいろ躓いてしまったので記事は後回しにして、別のLTEのSIMドングルを使ってみました。
試したのはこちらのFS040Uです。
仕様を確認すると、Linuxでは RNDIS に対応しているようです。OpenWRTでもRNDISは使えるようです。
Use RNDIS USB Dongle for WAN connection
こちらと下記の DRAGINO Wiki の情報を参照して試していきます。
FS040Uはとても優秀で、設定をしてあげればその設定で勝手に接続して、あとはRNDISなど通してネットワーク・インターフェースとして使えます。なのでSORACOMの設定をWindowsなどからしてあげます。その後 FS040U を GW に差し込んで認識するかみてみます。(前回でいろいろいじったのでファクトリリセットして最初からやりました)
root@dragino-1dac90:~# lsusb Bus 001 Device 003: ID 1c9e:f133 OMEGA TECHNOLOGY Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
何か認識してくれています。さらに dmesg で確認すると
rndis_host 1-1.2:1.0 usb0: register 'rndis_host' at usb-ehci-platform-1.2, RNDIS device, ae:08:9a:e7:0b:db
おー、RNDISとして認識している。わーい。ここで DRAGINO Wiki の方の記事にそってコマンド入力します(一部改変してます)。
uci set network.lte=interface uci set network.lte.proto=dhcp uci set network.lte.ifname=usb0 uci commit network uci add_list firewall.@zone[1].network="lte" uci commit firewall /etc/init.d/network restart
すると、あ、繋がってるっぽい。PINGも通るぞ。ここでLoRaWANデバイスからの送信。JOINは通った。次、データ送信。あ、ACK返ってきた!とりあえずよかったー
2022/8/2 追記 通常のファームウェアではなく、こちらのファームを使用して行いました。