Raspberry PiにてUSB-LTEモジュール+格安SIMでインターネット接続

#はじめに
Qiitaに投稿するのも初めてで、おっかなびっくり書いてみる。

#概要
家庭内LANのない場所でもRaspberry Piをオンライン利用したく、LTE-USBモジュールを用いてネット接続を試みたもの。
途中やりだが、記録として残しておく。

#構成
-Raspberry Pi Zero(not W)
-Raspbian(not lite)
-L-03F(LG/ドコモ)
-OCNモバイルoneのSIM
-USBハブ付き有線LANアダプタ LAN-TXU2H3A

#下準備
1.L-03FをWindows環境にて接続。CD/DVDドライブ（ドライバインストールディスク）として認識されないよう、設定しておく。（すみません、各自調べてください。）
2.Raspberry Pi ZeroにRaspbianをインストールしておく。
3.有線LANアダプタを接続。必要に応じて、IPアドレスを固定。
4.L-03Fを接続。

#手順
##wvdialのインストール
LAN環境にて。

```
$ sudo apt-get install wvdial
```


##`lsusb`コマンドにて、L-03Fが認識されていることを確認。

```
$ lsusb
Bus 001 Device 004: ID 1004:6366 LG Electronics, Inc.
```

上記から、Vender IDが1004、Product IDが6366であることがわかります。

##`modprobe`コマンドでデバイスを認識させる。
上記にて調べた、ベンダーIDとプロダクトIDを用います。

```
$ sudo modprobe usbserial vendor=0x1004 product=0x6636
```


##/dev/にttyUSB?デバイスとして表示されればOK
上記`modprobe`コマンドの実行結果を確認する。

```
$ ls -l /dev/ttyU*
crw-rw---- 1 root dialout 188, 0  8月 20 15:11 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1  8月 20 15:13 /dev/ttyUSB1
crw-rw---- 1 root dialout 188, 2  8月 20 15:06 /dev/ttyUSB2
```


##`lsusb`コマンドにて、L-03Fの詳細を調べる。その１。

```
$ lsusb -d 1004:6366 -v | grep "bNumEndpoints"
Couldn't open device, some information will be missing
      bNumEndpoints           2
      bNumEndpoints           3
      bNumEndpoints           3
```

##`lsusb`コマンドにて、L-03Fの詳細を調べる。その２。


```
$ lsusb -d 1004:6366 -v | grep "bInterfaceNumber"
Couldn't open device, some information will be missing
      bInterfaceNumber        0
      bInterfaceNumber        1
      bInterfaceNumber        2
```


##認識状況まとめ
こういう状況らしい。

|デバイス|bNumEndpoints|bInterfaceNumber|
|-----------|------------|------------|
|ttyUSB0|2|0|
|ttyUSB1|3|1|
|ttyUSB2|3|2|



##ダイヤル設定の修正
`wvdial.conf`を、OCNモバイルoneにあわせて修正します。


```
$ sudo nano /etc/wvdial.conf
```


```wvdial.conf
 [Dialer Defaults]
Phone = *99***1#
APN = lte-d.ocn.ne.jp
Username = mobileid@ocn
Password = mobile
New PPPD = yes
Stupid Mode = yes
Init1 = ATZ
Init2 = AT+CGDCONT=1,"IP","lte-d.ocn.ne.jp"
Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Dial Attemps = 3
Modem Type = Analog Modem
Modem = /dev/ttyUSB1
Dial Command = ATD
Baud = 460800
ISDN = 0
Carrier Check = no
Auto DNS = 1
Check Def Route = 1
```
L-03Fの場合は、`ttyUSB1`がモデムとして動作するようです。（方々の状況より）

##ためしにつないでみる
`$sudo wvdial`を実行

```
$sudo wvdial
--> WvDial: Internet dialer version 1.61
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: AT+CGDCONT=1,"IP","lte-d.ocn.ne.jp"
AT+CGDCONT=1,"IP","lte-d.ocn.ne.jp"
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 Aug 20 16:33:52 2017
--> Pid of pppd: 4243
--> Using interface ppp0
--> pppd: 委鷆枇[01]効[01]
--> pppd: 委鷆枇[01]効[01]
--> pppd: 委鷆枇[01]効[01]
--> pppd: 委鷆枇[01]効[01]
--> pppd: 委鷆枇[01]効[01]
--> pppd: 委鷆枇[01]効[01]
--> local  IP address 153.157.201.255
--> pppd: 委鷆枇[01]効[01]
--> remote IP address 10.64.64.64
--> pppd: 委鷆枇[01]効[01]
--> primary   DNS address 222.146.35.1
--> pppd: 委鷆枇[01]効[01]
--> secondary DNS address 221.184.25.1
--> pppd: 委鷆枇[01]効[01]
```

文字が化けますが、接続が確認できるかと思います。
L-03Fのランプでも接続が確認できます。

今回は試すだけなので、終了します。`[ctrl]+[c]`押下にて中断。

```
^CCaught signal 2:  Attempting to exit gracefully...
--> Terminating on signal 15
--> pppd: 委鷆枇[01]効[01]
--> Connect time 0.2 minutes.
--> pppd: 委鷆枇[01]効[01]
--> pppd: 委鷆枇[01]効[01]
--> pppd: 委鷆枇[01]効[01]
--> Disconnecting at Sun Aug 20 16:34:02 2017
```


#自動接続化（udev）
ここらへんから雲行きが怪しくなってくる

##udevの編集
udevにファイルを追加することで、一連の設定の自動実行を試行する。

udev（userspace device management）とは，カーネルがパソコンへの接続を検出したデバイスに対して，動的に「デバイス・ファイル」を作成して割り当てるための仕組みです。 Linuxは，システムに存在するあらゆるリソースをファイルとして扱うという特徴を持っています。 - IT Proより。

`$sudo nano /etc/udev/rules.d/99-usb.rules`にて、udevを編集する。設定ファイル名は、適当。
（`2桁数字+任意の文字.rules`でよいらしい。）

```99-usb.rules
KERNEL=="ttyUSB*", ATTRS{../idVendor}=="1004", ATTRS{../idProduct}=="6366", ATTRS{bNumEndpoints}=="02", ATTRS{bInterfaceNumber}=="00", SYMLINK+="modem"
```

idVendor、idProduct、bNumEndpoints、bInterfaceNumberは、それぞれ最初に調べた値を記入。

##再起動
上記、udevの設定を確認するため、再起動。


```
$reboot
```

##ここで躓く

方々のサイトによれば、この段階で、`/dev/ttyUSB*`と`/dev/modem`が見えるはずなのだが、私の環境では、`/dev/modem`が見えなかった。
というか、`/dev/ttyUSB*`も見えない。
`modprobe`コマンドを再実行したところ、`/dev/ttyUSB*`が見えるようになった。`modprobe`コマンドって、起動のたびに再実行が必要なのかな？？


##udevの編集（2度目）
試行錯誤し、`99-usb.rules`の先頭に一行追加した。
編集後のファイルは下記の通り。

```99-usb.rules
ATTRS{idVendor}=="1004", ATTRS{idProduct}=="6366", RUN+="/sbin/modprobe usbserial vendor=0x1004 product=0x6366"
KERNEL=="ttyUSB*", ATTRS{../idVendor}=="1004", ATTRS{../idProduct}=="6366", ATTRS{bNumEndpoints}=="03", ATTRS{bInterfaceNumber}=="01", SYMLINK+="modem"
```

1.1004:6366をみつけたら、`modprobe`コマンドを実行。ttyUSB*を作成。
2.ttyUSB*の中に1004:6366をみつけたら、シンボリックリンク`/dev/modem`を実行

といったところだろうか。

##再起動
上記、udevの設定を確認するため、再起動。

##なんかちがう・・・

```
$ ls -l /dev/mo*
lrwxrwxrwx 1 root root 7  8月 20 15:06 /dev/modem -> ttyUSB0
```

~~使いたいのは`ttyUSB1`なのに、`ttyUSB0`にシンボリックリンクが張られてしまった・・・~~
→解決しました。


#自動接続化（ifup/ifdown）
気を取り直して、続き（うまくいくはずの作業）を書いてみる。

##`/etc/network/interfaces`の編集

```
$ sudo nano /etc/network/interfaces
```

を実行し、`/etc/network/interfaces`の最下部に、下記記述を追加する。

```interfaces
allow-hotplug ocn
iface ocn inet wvdial
```

##ダイヤル設定の修正
`wvdial.conf`を、自動接続化にあわせて修正します。
`/dev/ttyUSB1` → `/dev/modem`に修正。

```
$ sudo nano /etc/wvdial.conf
```


```wvdial.conf
 [Dialer Defaults]
Phone = *99***1#
APN = lte-d.ocn.ne.jp
Username = mobileid@ocn
Password = mobile
New PPPD = yes
Stupid Mode = yes
Init1 = ATZ
Init2 = AT+CGDCONT=1,"IP","lte-d.ocn.ne.jp"
Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Dial Attemps = 3
Modem Type = Analog Modem
Modem = /dev/modem
Dial Command = ATD
Baud = 460800
ISDN = 0
Carrier Check = no
Auto DNS = 1
Check Def Route = 1
```

##ifupで接続、ifdownで切断

```
$ sudo ifup ocn
```

でインターネット接続、

```
$ sudo ifdown ocn
```

でインターネット切断ができる。






#今後の展開予定
-自動接続を実現する。
-Raspberry Pi単独でDDNSを運用する。


#参考記事
http://qiita.com/dietposter/items/068019ee53252206a6bf
http://qiita.com/hiroyasu55/items/e0ad9d04a9d8feb5c654
http://qiita.com/yumatsud/items/e159d7ffe73de3a65deb
http://qiita.com/gimy/items/1d49f8e08210e9c9f20a