2022年5月30日月曜日

DRAGINO の LPS8 で SIMのドングルを使う その2

 前回の記事では 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 の情報を参照して試していきます。

Debug Cellular connection

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 追記 通常のファームウェアではなく、こちらのファームを使用して行いました。