RaspberryPiでL-02Cを使ってSORACOM Airに接続する
仕事が落ち着いたのでいろいろやりたいことをぼちぼちと行っています。
昨年、会社の移転に伴い、廃棄物品の中にL-02Cがあったのでいただくことにしました。(一応、ご自由にどうぞということだったので)
L-02Cはdocomoさんの商品ですが、実際はLGさんの商品になります。
今回はSORACOM AirのSIMを使って接続を行っていこうと思います。SIMは2016年のSoftwareDesign5月号の付録についていたものをアクティベートしていたのでそれを使う予定でした。ただ、SIMサイズが合わなかったので以下のアダプタで対応しました。
mobee Nano SIM MicroSIM 変換アダプタ 3点セット For iPhone 5 4S 4 ナノシム→SIMカードorMicroSIM MicroSIM→SIMカード
- 出版社/メーカー: mobee
- メディア: エレクトロニクス
- 購入: 7人 クリック: 43回
- この商品を含むブログ (7件) を見る
安!
こんな感じで装着します。
今回は以下のRaspberryPiの環境で行っています。
$ uname -a Linux raspberrypi 4.4.34-v7+ #930 SMP Wed Nov 23 15:20:41 GMT 2016 armv7l GNU/Linux
また、以下の記事を参考にしています。
SORACOM AirのSIM設定を事前にしておく。
今回はアクティベート済みのSIMなのですが、念のためSORACOM Airのユーザーコンソールで確認しておきます。
ユーザーコンソールへ
ユーザーコンソールでSIMの状況を確認
大丈夫そうですね。
L-02CをRaspberryPiに接続する
L-02Cが意外と大きいのでその他のUSB機器とコネクタの干渉をしてしまうので延長ケーブルを経由したほうが無難です。
USBに指すとdmesg
の結果が以下のように変化しました。ネットで出ている情報ではL-02CはCDROMドライブとして認識されるということだったのですが、今回はCDROMにはなっていませんでした。なぜ?
L-02Cはドライバーなどを本体に持っている機器のため、そのまま接続するとCDROMドライブとして見え、ドライバインストール後はモデムとしてみえるタイプのデバイスの様です。
$ dmesg |tail [ 6026.677568] option 1-1.4:1.0: GSM modem (1-port) converter detected [ 6026.677996] usb 1-1.4: GSM modem (1-port) converter now attached to ttyUSB0 [ 6026.678756] option 1-1.4:1.1: GSM modem (1-port) converter detected [ 6026.679132] usb 1-1.4: GSM modem (1-port) converter now attached to ttyUSB1 [ 6026.679870] option 1-1.4:1.2: GSM modem (1-port) converter detected [ 6026.680318] usb 1-1.4: GSM modem (1-port) converter now attached to ttyUSB2 [ 6026.681146] option 1-1.4:1.3: GSM modem (1-port) converter detected [ 6026.681537] usb 1-1.4: GSM modem (1-port) converter now attached to ttyUSB3 [ 6027.411662] w1_master_driver w1_bus_master1: Family 0 for 00.3e0000000000.a1 is not registered. [ 6086.671765] w1_master_driver w1_bus_master1: Family 0 for 00.be0000000000.2d is not registered.
たまたま何でしょうか?あるいはOSのバージョンアップなどの要因でしょうか?会社で使っているときの設定でなにかあったのでしょうか。
正解はUSBシリアルとして認識されることなので問題はないのですが…。
念のためlsusb
コマンドでも確認します。
【接続前】
$ lsusb Bus 001 Device 005: ID 045e:075d Microsoft Corp. LifeCam Cinema Bus 001 Device 004: ID 0411:01ee BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070] Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
【接続後】
$ lsusb Bus 001 Device 006: ID 1004:61dd LG Electronics, Inc. Bus 001 Device 005: ID 045e:075d Microsoft Corp. LifeCam Cinema Bus 001 Device 004: ID 0411:01ee BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070] Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 006: ID 1004:61dd LG Electronics, Inc.
のエントリが追加されているので正常に認識されているようです。
wvdial
とeject
をパッケージをインストール
あとはUSBモデムのダイヤラーであるwvdial
パッケージをインストールします。
今回はCDROMとして認識されていないので必要ないのですがeject
パッケージは念のためインストールします。
$ sudo apt-get update $ sudo apt-get install wvdial eject (略) Success! You can run "wvdial" to connect to the internet. (You can also change your configuration by editing /etc/wvdial.conf) (略)
CDROMとして認識されているようであれば
sudo eject sr0
を実行してください。
$ sudo modprobe usbserial vendor=0x1004 product=0x618f $ sudo eject sr0 $ sudo chmod 666 /dev/ttyUSB*
これでインストールは完了しました。
wvdial
の接続設定を行う
インストール時にも表示されましたが
Success! You can run "wvdial" to connect to the internet. (You can also change your configuration by editing /etc/wvdial.conf)
とのことですので/etc/wvdial.conf
の設定を行います。
$ sudo vim /etc/wvdial.conf
【インストール後のオリジナル設定ファイル】
[Dialer Defaults] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Modem Type = Analog Modem Baud = 9600 New PPPD = yes Modem = /dev/ttyUSB2 ISDN = 0 ; Phone = <Target Phone Number> ; Password = <Your Password> ; Username = <Your Login Name>
【変更後】
[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
内容は初期化するためのATコマンドやダイアル先、スピード、認証、APNなどになります。SORACOM Airはほぼ同じ設定になるかと思います。
SORACOM Airで接続
すべての設定が終わったので後は接続テストになります。以下で実行することになりますがコンソールが占領されるので&
をつけるか、もう一つコンソールを起動してください。自分はコンソールもう一つ起動しています。
$ sudo 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 Sat Apr 8 10:04:58 2017 --> Pid of pppd: 29671 --> Using interface ppp0 --> pppd: ー[01]黐・5 --> pppd: ー[01]黐・5 --> pppd: ー[01]黐・5 --> pppd: ー[01]黐・5 --> pppd: ー[01]黐・5 --> pppd: ー[01]黐・5 --> local IP address ???.???.???.??? --> pppd: ー[01]黐・5 --> remote IP address ???.???.???.??? --> pppd: ー[01]黐・5 --> primary DNS address ???.???.???.??? --> pppd: ー[01]黐・5 --> secondary DNS address ???.???.???.??? --> pppd: ー[01]黐・5
接続されるとpppのインターフェースにIPアドレスやDNSなどが設定されてネットワーク接続ができるようになります。
接続状況の確認
ip
コマンドで確認するとppp0
インターフェースが追加されていることがわかります。
【接続前のネットワークインターフェース】
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 (略) valid_lft forever preferred_lft forever 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 (略) valid_lft forever preferred_lft forever
【接続後のネットワークインターフェース】
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 (略) valid_lft forever preferred_lft forever 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 (略) valid_lft forever preferred_lft forever 4: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 3 link/ppp inet ???.???.???.??? peer ???.???.???.???/?? scope global ppp0 valid_lft forever preferred_lft forever
4番目のエントリにppp0インターフェースが追加されています。
疎通確認
ローカルIPに対してのPING実行を行う
???.???.???.???の部分は接続後のip
コマンドから調べて置き換えてください。
$ ping ???.???.???.??? PING ???.???.???.??? (???.???.???.???) 56(84) bytes of data. 64 bytes from ???.???.???.???: icmp_seq=1 ttl=64 time=0.169 ms 64 bytes from ???.???.???.???: icmp_seq=2 ttl=64 time=0.098 ms 64 bytes from ???.???.???.???: icmp_seq=3 ttl=64 time=0.115 ms 64 bytes from ???.???.???.???: icmp_seq=4 ttl=64 time=0.112 ms 64 bytes from ???.???.???.???: icmp_seq=5 ttl=64 time=0.114 ms ^C --- ???.???.???.??? ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 3999ms rtt min/avg/max/mdev = 0.098/0.121/0.169/0.027 ms
ローカル側のpingも成功しています。
ppp0インターフェースを経由してのPING実行
$ ping -I ppp0 8.8.8.8 PING 8.8.8.8 (8.8.8.8) from ???.???.???.??? ppp0: 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=68.2 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=55 time=70.8 ms ^C --- 8.8.8.8 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 68.234/69.549/70.865/1.341 ms
無事に接続できました。
終わりに
折角アクティベートしていたSORACOM AirのSIMがやっと活きました。作品のデモを行う展示会などではWiFiやBulethoothが入らない事があるので通信がうまくいかないことも多いのですが、USBモデムとSORACOM Airがあることで回避策を一つ追加して保険がかけられるようになるのかなと思って期待しています。