Dragino社製IoTゲートウェイ LG01-JPを、SORACOM スターターキット(3G USBドングル AK-020)を使ってSORACOM Airに接続する。

# イントロダクション
<font color="red"><b>※この記載方法だと、Firewallの設定で、LAN側から３G側に通信ができなかったので、修正版の投稿をあげておきました（<a href="http://qiita.com/openwave-co-jp/items/2a1cc16992d06abe1fec">こちら</a>）。この方法でも、Firewallの設定変更で対応できると思いますが、より簡単な方法を投稿しておきました。</b></font>
Dragino社製のIoTゲートウェイ、LG01-JPを、SORACOM社のSORACOMスターターキット（3G USBドングル AK-020)を使ってSORACOM Airに接続する方法を説明します。
SORACOMスターターキットは、ABIT社製の3G USBドングル　「AK-020」と、SORACOM Air SIMが付属します。
AK-020は、DVDディスクと、3Gドングルの両方の機能を持っており、Linuxに差した場合には、3Gドングルとして認識させなければPPP接続ができません。
認識させるには、USBを差した後に、DVDディスクをEjectすればよいのですが、LG01-JPのLinux（OpenWRT）Kernelでは、DVDドライブのドライバーが組み込まれていないため、認識できず、Ejectできません。

この説明では、LG01-JPでAK-020を3G USBドングルとして認識させ、SORACOM Airに接続するまでを説明します。

# AK-020をDVDドライブとして認識させる
まずは、LG01-JPにDVDドライブとして認識させEjectし、3G USBドングルとして認識させます。

## 1. LG01-JPのKernelだと、CD-ROMのejectができないため、Kernelを更新します。
opkgコマンドでパッケージをインストールできるようにします（このコマンドは再起動後は毎回実行しないとパッケージのインストールができないようです）。

`# opkg update`

## 2. Kernelパッケージをダウンロードし、インストールします。

- rootディレクトリに移動します。

`# cd /root`

- kernelパッケージをダウンロードします。

`# wget http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/base/kernel_3.10.49-1-0114c71ed85677c9c1e4911437af4743_ar71xx.ipk`

- kernelパッケージをインストールします。

`# opkg install --force-downgrade kernel_3.10.49-1-0114c71ed85677c9c1e4911437af4743_ar71xx.ipk`

## 3. 必要なパッケージをインストールします。

- sdparm（SCSIデバイスを制御するコマンドです）をインストールします。

`# opkg install sdparm`

- SCSI-CDROMドライバをインストールします。

`# opkg install kmod-scsi-cdrom`

- LG01-JPを再起動します。

`# reboot`

ここまでで、AK-020をDVDドライブとして認識させることができるようになりました。

# AK-020を3G USBドングルとして認識させる
AK-020のDVDドライブをEjectし、3G USBドングルとして認識させます。

## 1. AK-020のDVDドライブをejectする

`# sdparm --command=eject /dev/sr0`

## 2. 3G USBドングルとして認識されたか確認する

- AK-020のVendorIDは15eb、ProductIDは、DVD：a403、3G USBドングル：7d0eです。lsusbコマンドで、ProductIDが7d0eになっていることを確認します。

`# lsusb
Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 15eb:7d0e`

## 3. LG01-JP起動時に、usbseriakドライバが組み込まれ、AK-020が3G USBドングルとして認識されるための設定をします。

`# vi /etc/modules.d/80-usbserial`

```bash:80-usbserial
usbserial vendor=0x15eb product=0x7d0e
```

`# vi /etc/rc.local`
（LG01-JP起動時にsdparmコマンドで、DVDをejectします。）

```bash:rc.local
sdparm --command=eject /dev/sr0
```

※exit 0の前に上記を追加


## 4. 再起動します。

`# reboot`

- USBデバイスが存在するか確認します。

`# ls /dev | grep ttyUSB
ttyUSB0
ttyUSB1
ttyUSB2
ttyUSB3`


## 5. ppp接続の設定

- pppの設定ファイルを作成します。

`# mkdir /etc/ppp/peers`
`# vi /etc/ppp/peers/soracom-ak020`

以下を記述します。

```text:soracom-ak020
# This optionfile was generated by pppconfig 2.3.18.
#
#
hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/soracom-ak020"
debug
/dev/ttyUSB0
460800
defaultroute
noipdefault
user "sora"
remotename soracom
ipparam soracom
usepeerdns
persist
replacedefaultroute
```

- chatscriptを作成

`# vi /etc/chatscripts/soracom-ak020`

```text:soracom-ak020
# This chatfile was generated by pppconfig 2.3.18.
'' ATH
OK AT+CFUN=1
OK ATZ
OK 'ATQ0 V1 E1 S0=0 &C1 &D2'
OK AT+CGDCONT=1,"IP","soracom.io"
# Please do not delete any of the comments.  Pppconfig needs them.
#
# ispauth PAP
# abortstring
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
# modeminit
# ispnumber
OK-AT-OK "ATDT*99#"
# ispconnect
CONNECT \d\c
# prelogin
# ispname
# isppassword
# postlogin
# end of pppconfig stuff
```

- PPP接続を実行します。

`# pppd call soracom-ak020`

２０秒くらいまってから、接続されたか確認します。

`# ifconfig`

※Ppp0があるかを確認する。
※Soracomのコンパネでオンラインになっているか確認する。

## 6. 起動時に自動でPPP接続させる設定をおこないます。

`# vi /etc/rc.local`

```bash:rc.local
sdparm --command=eject /dev/sr0
pppd call soracom-ak020
```

※pppd call soracom-ak020を追加
Rebootして動作確認

- PPP接続を切断するには、pppdのプロセスIDを調べて、killして停止します。

`# ps | grep pppd`
`# kill -9 xxxxx(PID)`

以上です。

※SORACOM、SORACOM Airは、株式会社ソラコムの登録商標です。