Mana Blog Next

自宅IoT、仕事と家庭、カメラ、筋トレ生活

Raspberry PiとSORACOM Airを繋げてみた(2)

前回に引き続きRaspberry Pi(OS:Pidora)エントリー。
USBモデム L-02Cに SORACOM SIMを挿し 通信するための設定メモです。
前回エントリーは以下より。
www.mana-cat.com
今回は睡魔に負けそう(ほぼ負けた)なので簡潔に書かせていただいています。「続きが読みたい」とリクエストを下さった読者の皆様にいちはやくお届け!
※2015/10/31追記:ラズビアンでの手順について、別途エントリーを書きました。
Raspberry Pi にRaspbian(ラズビアン)を入れてSORACOM Airを使ってみた - Mana Blog Next

お約束

このブログは母ちゃんが趣味でやってる個人ブログなので、動作の保証はできかねます。
機器への設定は自己責任でお願いします。

設定方法

FedoraベースのOS「Pidora」からSORACOM Airとの通信を行うためには、超レガシーなダイヤルアップツールである「wvdial」をインストールします。

# yum install wvdial

設定ファイル wvdial.conf を編集します。

# vi /etc/wvdial.conf
[Dialer Defaults]
Init1 = ATZ
Init2 = ATH
Init3 = AT+CGDCONT=1,"IP","soracom.io"
Init4 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Dial Attempts = 3
Stupid Mode = 1
Modem Type = Analog Modem
Dial Command = ATD
New PPPD = yes
APN = soracom.io
Modem = /dev/ttyUSB2
Baud = 460800
ISDN = 0
Phone = *99***1#
Username = sora
Password = sora
Carrier Check = no

wvdialコマンドで繋げてみます。

# wvdial
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATH
ATH
OK
--> Sending: AT+CGDCONT=1,"IP","soracom.io"
AT+CGDCONT=1,"IP","soracom.io"
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 Fri May 31 00:26:44 2013
--> Pid of pppd: 9538
--> Using interface ppp0
--> pppd: @[06] (
--> pppd: @[06] (
--> pppd: @[06] (
--> pppd: @[06] (
--> pppd: @[06] (
--> local  IP address 10.166.123.41
--> pppd: @[06] (
--> remote IP address 10.64.64.64
--> pppd: @[06] (
--> primary   DNS address 169.254.0.53
--> pppd: @[06] (
--> secondary DNS address 169.254.1.53
--> pppd: @[06] (

ipコマンドで繋がっているか確認してみましょう。
ppp0がUPし、ルーティングテーブルが更新されていることを確認できました。

[root@raspi ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether b8:27:eb:c9:15:78 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::ba27:ebff:fec9:1578/64 scope link 
       valid_lft forever preferred_lft forever
23: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 3
    link/ppp 
    inet 10.166.123.41 peer 10.64.64.64/32 scope global ppp0

[root@raspi ~]# ip route show
default dev ppp0  scope link 
10.64.64.64 dev ppp0  proto kernel  scope link  src 10.166.123.41

参考サイト

以下サイトに詳しく書かれています。
本当にありがとうございます!
trtr.hatenablog.jp

また、ATコマンドについてはモデルは異なりますがdocomo公式マニュアルが参考になります。

ハマりポイント

(1)NetworkManagerは停止させる

本来、wvdialで設定するとリゾルバを/etc/resolv.conf に書き出すんですが、NetworkManagerが有効になっていていると、/etc/resolv.confの設定が元通りに戻ってしまいます。(よくぶち当たる"あるある"ですが…)
非常に残念ですが回避のしようがないので、NetworkManagerは停止して無効化させるしかなさそうです。。

(2)給電不足

PidoraをGUIで起動したり、ラズパイ本体にデバイスを沢山くっつけたりすると給電不足に陥ります。
wvdialコマンドを実行して、接続ログは残っているのにブチっと切られてしまう症状に見舞われたら、給電不足を疑ってみてもいいかも。
PidoraはCUI(ランレベル3相当)で起動させたり、不要なデバイスはラズパイ本体から取っ払ったり、USBバスパワー使ったりとかで回避できそうです。
(3GPIでさえも、別電源使っていますからね。USBモデム自体がもうちょっとだけ省電力だといいのかもしれませんが…)

(3)接触不良

USBポートに L-02C以外も繋げる場合、以下写真のようにUSBコネクターを少し延長させた方がいいかもしれません。接触不良で繋がらなくなります…

学んだこと

USBモデム L-02C(中古で800円)で非常に安上がりでしたが、設定にどハマりしてしまいました。
資金に余裕のある方は3GPIをケチらずに買ってもいいかもしれません…。
でも、繋がった時の嬉しさ・達成感はプライスレスですね。

さいごに

「繋がらない…繋がらない…」と寝静まった我が家で母ちゃんは悩んでいましたが、荷造り中の夫から「え…wvdial知らないの?」とヒントをもらいました。
RedHatLinux(RHELじゃないやつ)時代のダイヤルアップツールだったはず…。そんな技術がこんな所でバリバリ活躍しているという不思議。
そんなわけで、設定にハマってしまって一睡もできない状況は免れましたw
夫に色々助けられていて感謝しつつも、これ位 母ちゃんひとりで解決できないと自信持てないよなぁ…もうちょっと、スキル磨かないといけないですね。反省(´・ω:;.:...
あ、そうだ。
無事 熊本に帰省しましたので、電子工作しながらのんびり過ごします!