SORACOM Air を Raspberry Pi 2 & L-03D で動かしてみる
うわさの IoT 向け SIM である SORACOM Air を Raspberry Pi で使ってみます。 ここでは、docomo の LTE 通信対応 USB ドングル L-03D を使って通信をしました。 やり方についてはすでに先人の方々が詳しく書いている(参考参照)ので簡単な手順のみ書きます。
用意するもの
- Raspberry Pi 2 Model B
- SORACOM Air
- L-03D
- セルフパワーの USB ハブ
手順
- SORACOM のユーザコンソールから SIM を登録する
- Raspbian JESSIE を SD カードにインストール (Ubuntu)
- dd if=2015-09-24-raspbian-jessie.img of=/dev/sdc
- ※ SD カードに対応するデバイスファイル(/dev/sd?)は dmesg などで確認してください
- Raspbeery Pi を起動、ログインして必要なソフトウェアをインストール
- apt-get install usb-modeswitch wvdial
- セルフルパワーの USB ハブ経由で L-03D を Raspbeery Pi に接続
- /etc/wvdial.conf に下記の内容を書く
- sudo wvdial を実行する
- ppp インターフェースに IP アドレスがついていれば接続完了(ifconfig などで確認)
- SORACOM 経由で通信するには、ppp インターフェースをデフォルトルートに設定する
- traceroute すると、AWS 経由でインターネットに接続していることがわかる
/etc/wvdial.conf
[Dialer Defaults] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Dial Attempts = 3 Modem Type = Analog Modem Dial Command = ATD Stupid Mode = 1 Baud = 460800 New PPPD = yes ISDN = 0 Phone = *99***1# Carrier Check = no Modem = /dev/ttyUSB2 APN = soracom.io Username = sora Password = sora
成功したときのログ
接続できた時はこのような表示になりました(IP アドレスは伏せてあります)。
pi@raspberrypi ~ $ sudo wvdial --> WvDial: Internet dialer version 1.61 --> Initializing modem. --> Sending: ATZ ATZ OK --> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 OK --> Modem initialized. --> Sending: ATD*99***1# --> Waiting for carrier. ATD*99***1# CONNECT --> Carrier detected. Starting PPP immediately. --> Starting pppd at Sun Oct 4 11:01:01 2015 --> Pid of pppd: 4415 --> Using interface ppp0 --> pppd: �v(ZV --> pppd: �v(ZV --> pppd: �v(ZV --> pppd: �v(ZV --> pppd: �v(ZV --> pppd: �v(ZV --> local IP address xx.xxx.xxx.xxx --> pppd: �v(ZV --> remote IP address 10.64.64.64 --> pppd: �v(ZV --> primary DNS address 169.254.0.53 --> pppd: �v(ZV --> secondary DNS address 169.254.1.53 --> pppd: �v(ZV
ifconfig で確認すると、ppp インターフェースが生えて IP アドレスが付いている。
pi@raspberrypi ~ $ ifconfig ppp ppp0 Link encap:Point-to-Point Protocol inet addr:xx.xxx.xxx.xxx P-t-P:10.64.64.64 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:5 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:62 (62.0 B) TX bytes:101 (101.0 B)
デフォルトルートを ppp インターフェースに設定する。
pi@raspberrypi ~ $ sudo route del default pi@raspberrypi ~ $ sudo route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.64.64.64 * 255.255.255.255 UH 0 0 0 ppp0 192.168.11.0 * 255.255.255.0 U 0 0 0 eth0 pi@raspberrypi ~ $ sudo route add default dev ppp0 pi@raspberrypi ~ $ sudo route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default * 0.0.0.0 U 0 0 0 ppp0 10.64.64.64 * 255.255.255.255 UH 0 0 0 ppp0 192.168.11.0 * 255.255.255.0 U 0 0 0 eth0
traceroute すると1ホップ目で AWS を経由していることがわかる。
pi@raspberrypi ~ $ traceroute 8.8.8.8 traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets 1 ec2-175-41-192-130.ap-northeast-1.compute.amazonaws.com (175.41.192.130) 45.393 ms ec2-175-41-192-128.ap-northeast-1.compute.amazonaws.com (175.41.192.128) 45.175 ms ec2-175-41-192-134.ap-northeast-1.compute.amazonaws.com (175.41.192.134) 45.055 ms 2 27.0.0.172 (27.0.0.172) 48.160 ms 48.676 ms 27.0.0.154 (27.0.0.154) 48.575 ms 3 27.0.0.154 (27.0.0.154) 48.476 ms 27.0.0.136 (27.0.0.136) 49.455 ms 27.0.0.154 (27.0.0.154) 49.346 ms 4 27.0.0.136 (27.0.0.136) 49.251 ms 50.050 ms 49.947 ms 5 216.239.54.11 (216.239.54.11) 48.956 ms 49.743 ms 15169.tyo.equinix.com (203.190.230.31) 49.639 ms 6 209.85.143.159 (209.85.143.159) 58.198 ms 38.001 ms 216.239.54.11 (216.239.54.11) 37.700 ms 7 209.85.255.225 (209.85.255.225) 92.213 ms google-public-dns-a.google.com (8.8.8.8) 41.482 ms 41.232 ms
失敗したときのログ
最初に sudo wvdial した時は、下記のエラーで接続できませんでした。 この時は、「手元のスマホに SORACOM SIM を挿して、一度通信する」「L-03D を一度抜いて再度挿す」をすることで Raspberry Pi でも通信できるようになりました。どちらが効いたのかわかりませんが参考まで。
pi@raspberrypi ~ $ sudo wvdial --> WvDial: Internet dialer version 1.61 --> Initializing modem. --> Sending: ATZ ATZ OK --> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 OK --> Modem initialized. --> Sending: ATD*99***1# --> Waiting for carrier. ATD*99***1# ERROR --> Invalid dial command. --> Disconnecting at Sun Oct 4 10:59:29 2015