こんにちは、オークファンの @dz_ こと大平かづみです。
Prologue - はじめに
上司からSIMアダプタ「FS01BU」をお借りしたので、Raspberry Pi Zero で SORACOM Air を使ってみました!
SIMアダプタとSORACOM Air の使い方はすでに情報がたくさん公開されていますので割愛します。(補足を後述)
ここでは、私が最終的にハマった WiFi とのルーティング競合の解決方法についてメモしておきます。友人の @rina0521 のアドバイスで解決しました!ありがとうございます!
動作環境
用途 | デバイス |
---|---|
PC | Raspberry Pi Zero |
SIMアダプタ | 富士ソフト FS01BU |
Wifiアダプタ | PLANEX GW-USNano2 |
USBハブ | ELECOM U2H-YS4BBK |
また、SORACOM 側で開通や設定が済んでいて接続できる状態であることを前提とします。私の場合は SORACOM Funnel を使う設定が済んでいます。
[トラブルシューティング] wvdial も動作して、SORACOM コンソールでもオンラインになったのに、エンドポイントに送信できない場合
状況
まず、私のUSB接続状況は、以下のようになっています。
$ lsusb
Bus 001 Device 010: ID 1c9e:6801 OMEGA TECHNOLOGY
Bus 001 Device 006: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL818
8CUS]
...
この状態で FS01BU を認識させて、SORACOM へ接続しておきます。
# FS01BU の認識
$ sudo modprobe usbserial vendor=0x1c9e product=0x6801
# wvdial で通信開始
$ sudo wvdial & # <-- & でバックグラウンドで動かす
このとき、 SORACOM ユーザーコンソール では「セッション状態」が「オンライン」になってるはずです。
さっそく、SORACOM のエンドポイントに接続してみましょう。
# SORACOM Funnel のエンドポイントにTCPでデータ送信を試みる
$ nc funnel.soracom.io 23080
{"test":"ok"} [ENTER]
応答が返ってきません…(´;ω;`)
通常は 200
や、誤ったJSONを送った場合でも 400: Invalid JSON
などとすぐに応答があるはずなのに、ありません。
でも、curl
や ping
でほかのURLへの接続してみると、問題なくできる状態です。はて?
原因
どうやら、通信が WiFi 経由になっているようです。ルーティングを明示的に設定する必要がありそうです。
対処
ということで、こちらの情報を参考に、とりいそぎ一時的なルーティング設定を行いました。恒久的な設定についても書かれているので、適宜ご参照くださいませ。
以下は私が行った対処です。
# nslookup がない場合は、インストール
$ sudo apt-get install dnsutils
# エンドポイントのIPアドレスを調べる
$ nslookup funnel.soracom.io
...
Non-authoritative answer:
Name: funnel.soracom.io
Address: {funnel.soracom.ioのIPアドレス}
# SIMアダプタの情報を取得する (ppp0)
$ ifconfig
...
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.240.xx.xx P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:130 (130.0 B) TX bytes:181 (181.0 B)
...
# 一時的に、ルーティングを追加する
$ sudo route add -net [エンドポイントのIPアドレス] netmask 255.255.255.255 gw [ppp0 の inet addr] ppp0
さぁ、エンドポイントにデータを送ってみましょう!
# SORACOM Funnel のエンドポイントにTCPでデータを送信する
$ nc funnel.soracom.io 23080
{"test":"ok"} [ENTER]
200
無事に送信されましたー!!ヾ(o´∀`o)ノ
パチパチパチパチー
[補足] SORACOM Air および、USBドングル「FS01BU」の利用について
補足ですが、SORACOM Air の開通・利用開始については、本家サイトを参考に進めました。
また、SIMアダプタ「FS01BU」を使って SORACOM を利用する方法については、 @tseigo さんの記事を参考にしました。ありがとうございます!
なお、上記記事で、 wvdial
のインストール時に失敗するとあったのですが、私は以下のように成功しました。うまくいった理由はわからないのですが、この手順の前に、 apt-get upgrade
や再起動したことがよかったのかもしれません。
$ sudo apt-get install wvdial
...
Success! You can run "wvdial" to connect to the internet.
(You can also change your configuration by editing /etc/wvdial.conf)
Processing triggers for libc-bin (2.19-18+deb8u3) ...
Processing triggers for systemd (215-17+deb8u3) ...
Epilogue - おわりに
なかなか触る機会がなかった SORACOM 、ついにデビューしてみました!
ちなみに、今回 Raspberry Pi Zero で試したところ、この子は非力なので、 wvdial を常駐で動かしている間は SSH接続がもたつくレベルでCPUを持っていかれるようでしたヾ(ω` )/
でも Raspberry Pi Zero はかわいいので許す!ヾ(o゚x゚o)ノ