#はじめに
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の詳細を調べる。その1。
$ 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の詳細を調べる。その2。
$ 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
[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
でよいらしい。)
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
の先頭に一行追加した。
編集後のファイルは下記の通り。
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
の最下部に、下記記述を追加する。
allow-hotplug ocn
iface ocn inet wvdial
##ダイヤル設定の修正
wvdial.conf
を、自動接続化にあわせて修正します。
/dev/ttyUSB1
→ /dev/modem
に修正。
$ sudo nano /etc/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