前回 Windows から LTE 通信端末の L-02C を使ってインターネットアクセスしようとしましたが、断念しました。
今回はターゲットをラズパイに絞って動作を試みます。
参考にさせて頂いたサイト
いきなりですが、今回は自分ひとりの力ではとても出来なかったので、以下のサイト様を参考にさせてもらいました。
セットアップ手順
参考サイト様の受け売りになりますが、自分の備忘録として、一応残しておきます。
ちなみに、上記で挙げているこちらのページで、中盤まではほぼそのままいけます。
接続条件
- 使用する SIM
- mineo のDプラン(200MB)のお試しのやつ
- 使用する LTE ドングル
- L-02C
必要なパッケージのインストール
$ sudo apt-get update
$ sudo apt-get install ppp usb-modeswitch wvdial
モードの切り替え設定
L-02C は、ストレージモードとモデムモードという、2つのモードが存在するらしいです。
そして、デフォルトではストレージモードらしく、モデムとして使用するためにはわざわざモードを切り替えないといけいないということです。
(ストレージモードは、ファームウェアとかのインストーラが入っているらしいですが、RaspberryPi では使用しません)
で、切り替えるためには「一回ストレージを eject する必要がある」とか、「usb-modeswitch をインストールしてからL-02Cを接続すると勝手にモデムとして認識される」とか、情報が錯綜していますが、とりあえず今回は安牌をとって、ストレージモードと認識されたモデムをモデムモードに切り替える usb_modeswitch の設定をしておきます。(前述の通り、不要の可能性があります)
設定ファイルを開きます。
$ sudo leafpad /etc/usb_modeswitch.conf
以下をファイル末尾に追加して保存します。
# LG L-02C LTE
DefaultVendor=0x1004
DefaultProduct=0x61dd
TargetVendor=0x1004
TargetProduct=0x618f
なお、これは本来はちゃんと調べてやる必要があるみたいですが、今回は省略しています。なので、他環境での動作は保証できません。
認識されているか確認
以下を実行し、モデムモードとして認識しているか確認します。
# モードとして認識しているか確認
$ dmesg | grep ttyUSB
[ 38.792796] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB0
[ 38.796105] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB1
[ 38.796761] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB2
[ 38.797243] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB3
# デバイスを認識しているか確認
$ ls -la /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 8? 4 23:04 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 8? 4 23:04 /dev/ttyUSB1
crw-rw---- 1 root dialout 188, 2 8? 4 23:04 /dev/ttyUSB2
crw-rw---- 1 root dialout 188, 3 8? 4 23:04 /dev/ttyUSB3
詳細はよくわかっていないですが、L-02Cの場合は ttyUSB0 〜 ttyUSB3 が認識され、そのうち ttyUSB2 を通信に使用するらしいです。
LTE のネットワークにつなぐための設定
デバイス側の設定
L-02C に対して、APN を設定してやる必要があるみたいです。
よくわかっていないですけど、たぶん L-02C 内のメモリに対して書き込みを行うという認識です。
まずデバイスと対話形式で設定するためのツールをラズパイにインストールします。
$ sudo apt-get install cu
そして、cu を使って以下のように対話形式で設定を行います。
なお、この cu はかなりシビアなやつで、途中で入力ミスしても BackSpace が効かないので困っちゃいます。失敗したら ~.
で抜けれますが、レスポンス悪いですし、一から設定やり直しになります。私がちゃんと理解していないだけ?
$ cu -l /dev/ttyUSB2
Connected.
# これはオマジナイらしい
ATZ
OK
# デバイスの確認
ATI
NTT DOCOMO, INC.
OK
# SIMカードの確認
AT+CPIN?
OK
# 今回はマイネオのSIMを使うのでこうしていますが、他SIMだと適切なAPNを設定する必要あり
AT+CGDCONT=1,"IP","mineo-d.jp"
OK
# 設定できているか確認するためのエコー
AT+CGDCONT?
+CGDCONT: 1,"IP","mineo-d.jp",,0,0,0
OK
# 設定を保存
ATZ0
OK
# 終了
~.
ちなみにですが、私は最初実行したとき AT+CPIN?
で ERROR が返ってきました。ググっても情報でてこないのでかなり焦ったのですが、単純に SIM カードを裏表逆に入れてしまっていただけでした。逆に言うと、裏表逆でも ATI
は正常に OK が返ってくるので、お気を付けください・・・(といってもこんなミス普通しませんが😓)
ツール側の設定
LET で接続するためには、 wvdial というツールを使うのですが、それに対する設定をします。
$ sudo leafpad /etc/wvdial.conf
設定ファイルを、以下のように書き換えます。
[Dialer Defaults]
Init1 = ATZ
Init2 = ATH
Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
# 適切な APN を設定する
Init4 = AT+CGDCONT=1,"IP","mineo-d.jp"
Dial Attempts = 3
Stupid Mode = 1
Modem Type = Analog Modem
Dial Command = ATD
Stupid Mode = yes
Baud = 460800
New PPPD = yes
# 適切な APN を設定する
APN = mineo-d.jp
Modem = /dev/ttyUSB2
ISDN = 0
# 電話番号っぽいので個別設定が必要な気がするけど、以下のような固定記述でよいっぽい
Phone = *99***1#
Carrier Check = no
# 適切なやつ(たぶんSIMカードの同封資料に書いてある)
Password = mineo
# 適切なやつ(たぶんSIMカードの同封資料に書いてある)
Username = mineo@k-opti.com
接続してみる
上記まで設定したら、ちゃんと接続できるはずです。
以下を実行します。
$ sudo wvdial
すると、以下のように「CONNECT」が出ると接続出来たっぽいです。
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATH
ATH
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","mineo-d.jp"
AT+CGDCONT=1,"IP","mineo-d.jp"
OK
--> Modem initialized.
--> Sending: ATD*99***1#
--> Waiting for carrier.
ATD*99***1#
CONNECT
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Sun Aug 4 21:45:14 2019
--> Pid of pppd: 2101
--> Using interface ppp0
--> local IP address XXX.XXX.XXX.XXX
--> remote IP address XXX.XXX.XXX.XXX
--> primary DNS address XXX.XXX.XXX.XXX
--> secondary DNS address XXX.XXX.XXX.XXX
なお、このまま放置しておくと接続されっぱなしになって、不本意にパケットを消費してしまうかもしれないので、不用な時は Ctrl+C
等で切断しておいたほうが良いと思います。
以上が、接続するまでの流れになります。
現状できていないこと・課題点
- L-02C をズパイに接続のまま起動すると、結構な頻度でハングアップする
- OS 起動時なので結構めんどくさそう
- とりあえずの解決策は、起動後に L-02C を接続することだが・・・
- ウェブ上にはいくつか情報がありそうなので、解決する気もする
- 起動後、自動で LTE 接続が有効にならない
- 現在やろうとしている状況では、複数のラズパイで同じ環境を作る必要がある。そのため、簡単なセットアップ方法を用意しておきたい
- Docker のコンテナ的なのが用意できればいいんだけど、現状気力もないしスキルもない
- シェルスクリプト化するのが一番現実的か?
コメント