Beaglebone BlackでSORACOM SIMを使う(FS01BU)

#概要

Beaglebone Black Rev.C を購入し、SORACOM が販売する富士ソフト(OMEGA)の3Gモデム(FS01BU)を使って通信してみました。

Beaglebone Black では「Cloud9 IDE」というブラウザ上の IDE と、BoneScript と呼ばれる Node.js のプラグインを用いて、JavaScript で GPIO の制御等が可能です。
また、温度センサーや光度センサーといった電圧が連続的に変化するセンサーからの入力が可能なAD変換（Analog-to-digital converter）機能も備えているので、自然現象の情報をアナログ信号として入力し処理することが可能で、センサー類の処理を行うには良さそうですね。

Beaglebone Black Rev.C の eMMC には Debian がプリインストールされており、通信を確立するために Beaglebone Black でなにかをインストールする必要すらありませんでした。非常に簡単です。

ということで、基本的な手順は下記のページと同じです。
[Raspberry PiでSORACOM SIMを使う(FS01BU)](http://qiita.com/osada9000/items/9254646652717cba0267)

#入手
一通り、Amazon.co.jp で購入できます。USBドングルの消費電力を考えると、電源はちゃんと取った方が良いですね。
[BeagleBone Black Rev.C](http://www.amazon.co.jp/dp/B00WS0AC9E/)
[BeagleBone Black用電源セット-5V 2A](http://www.amazon.co.jp/dp/B00JQ04I5S/)
[3G USB ドングル (FS01BU)](http://www.amazon.co.jp/dp/B015J4WVEO/)
[SORACOM Air SIMカード（データ通信のみ） (標準)](http://www.amazon.co.jp/dp/B015FFCYZI/)

#手順
##セットアップ
[Getting Started](http://beagleboard.org/getting-started) のとおり、PC と USB で接続して、ドライバをインストールし、接続します。

##USBシリアルデバイスとして認識させる
まずは FS01BU を Beaglebone Black に差して、lsusb をしてみます。

```
root@beaglebone:~# lsusb
Bus 001 Device 003: ID 1c9e:6801 OMEGA TECHNOLOGY 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
```
他の記事でも既出のとおり、VenderId/ProductId が 1c9e/6801 であることを確認しました。

次に、下記のコマンドを打ちます。

```
# modprobe -v option
# echo "1c9e 6801" > /sys/bus/usb-serial/drivers/option1/new_id
```

そして、USBドングルを抜いて差し直すことで、/dev/に/ttyUSB?が現れます。

```
root@beaglebone:~# ls -la /dev/ | grep USB -1
crw-rw---T   1 root dialout   4,  67 Jan  1  2000 ttyS3
crw-rw---T   1 root dialout 188,   0 Apr 23 20:25 ttyUSB0
crw-rw---T   1 root dialout 188,   1 Apr 23 20:25 ttyUSB1
crw-rw---T   1 root dialout 188,   2 Apr 23 20:25 ttyUSB2
crw-------   1 root root     10,  53 Jan  1  2000 ubi_ctrl
```

##接続
`/etc/wvdail.conf`を下記のように編集します。

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

保存できたら、wvdialを実行して接続します。

```
root@beaglebone:~# 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
--> Sending: AT+CGDCONT=1,"IP","soracom.io"
AT+CGDCONT=1,"IP","soracom.io"
OK
--> Modem initialized.
--> Sending: ATD*99***1#
--> Waiting for carrier.
ATD*99***1#
CONNECT 14400000
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Wed Apr 23 20:29:47 2014
--> Pid of pppd: 1359
--> Using interface ppp0
--> pppd: [18]?[02]
--> pppd: [18]?[02]
--> pppd: [18]?[02]
--> pppd: [18]?[02]
--> pppd: [18]?[02]
--> local  IP address 10.170.136.182
--> pppd: [18]?[02]
--> remote IP address 10.64.64.64
--> pppd: [18]?[02]
--> primary   DNS address 169.254.0.53
--> pppd: [18]?[02]
```

自分のIPアドレスやプライマリDNSのIPアドレスが表示され、正常に接続が完了していることが分かります。
また、FS01BU本体もLEDが緑色で点灯したままになり通信中の状態であることが分かります。
Ctrl+Cで切断です。（LEDが緑色で点滅に戻ります）。

#参考
以下のページを参考にさせていただきました。というか、以下のページだけで接続できます。ありがとうございました。
http://qiita.com/osada9000/items/9254646652717cba0267