Raspberry Pi L-02Cを使用したインターネット接続方法について

Raspberry Pi

はじめに

Raspberry Piで、USB接続型のモバイルルータ NTTドコモ L-02C を使用して、インターネットに接続する方法について記載いたします。

環境

  1. ボード
    Raspberry Pi 4 Model B
  2. OS
    Raspberry Pi OS (32-bit) Lite
    Minimal image based on Debian Buster
    Version: August 2020
    Release date: 2020-08-20
    Kernel version: 5.4

パッケージのインストール

以下のコマンドを実行し、インターネットに接続するために使用する「wvdial」パッケージをインストールします。
「wvdial」はインテリジェントなPPPダイヤラーで、インターネットに接続するためにモデムにダイヤルして、PPPを開始するパッケージです。

pi@raspberrypi:~ $ sudo apt-get install wvdial
pi@raspberrypi:~ $
pi@raspberrypi:~ $ wvdial --version
WvDial 1.61
Copyright (c) 1997-2005 Net Integration Technologies, Inc.
pi@raspberrypi:~ $

L-02Cの接続

USBポートにL-02Cを接続すると以下のようにttyUSB0~ttyUSB3のシリアルデバイスとして認識されます。接続時に使用するシリアルデバイスは、通常、ttyUSB2です。
(※従来は、L-02CをUSBポートに接続するとストレージデバイスと認識されるため、usb_modeswitchのルールを記述してイジェクトを行う必要がありましたが、現在は不要です。)

pi@raspberrypi:~ $ tail -f /var/log/syslog
Sep 27 05:33:22 raspberrypi kernel: [  674.006390] usb 1-1.3: new high-speed USB device number 3 using xhci_hcd
Sep 27 05:33:22 raspberrypi kernel: [  674.139251] usb 1-1.3: New USB device found, idVendor=1004, idProduct=61dd, bcdDevice= 0.00
Sep 27 05:33:22 raspberrypi kernel: [  674.139270] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Sep 27 05:33:22 raspberrypi kernel: [  674.139286] usb 1-1.3: Product: docomo L02C
Sep 27 05:33:22 raspberrypi kernel: [  674.139301] usb 1-1.3: Manufacturer: NTT DOCOMO, INC.
Sep 27 05:33:22 raspberrypi kernel: [  674.139315] usb 1-1.3: SerialNumber: xxxxxxxxxxxxxxx
Sep 27 05:33:22 raspberrypi kernel: [  674.150172] usb-storage 1-1.3:1.0: USB Mass Storage device detected
Sep 27 05:33:22 raspberrypi kernel: [  674.150878] scsi host0: usb-storage 1-1.3:1.0
Sep 27 05:33:22 raspberrypi mtp-probe: checking bus 1, device 3: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3"
Sep 27 05:33:22 raspberrypi mtp-probe: bus: 1, device: 3 was not an MTP device
Sep 27 05:33:22 raspberrypi systemd[1]: Created slice system-usb_modeswitch.slice.
Sep 27 05:33:22 raspberrypi systemd[1]: Starting USB_ModeSwitch_1-1.3...
Sep 27 05:33:22 raspberrypi mtp-probe: checking bus 1, device 3: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3"
Sep 27 05:33:22 raspberrypi mtp-probe: bus: 1, device: 3 was not an MTP device
Sep 27 05:33:23 raspberrypi usb_modeswitch: switch device 1004:61dd on 001/003
Sep 27 05:33:23 raspberrypi kernel: [  675.188312] usb 1-1.3: USB disconnect, device number 3
Sep 27 05:33:24 raspberrypi kernel: [  675.486356] usb 1-1.3: new high-speed USB device number 4 using xhci_hcd
Sep 27 05:33:24 raspberrypi kernel: [  675.619076] usb 1-1.3: New USB device found, idVendor=1004, idProduct=618f, bcdDevice= 0.00
Sep 27 05:33:24 raspberrypi kernel: [  675.619095] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Sep 27 05:33:24 raspberrypi kernel: [  675.619111] usb 1-1.3: Product: docomo L02C
Sep 27 05:33:24 raspberrypi kernel: [  675.619126] usb 1-1.3: Manufacturer: NTT DOCOMO, INC.
Sep 27 05:33:24 raspberrypi mtp-probe: checking bus 1, device 4: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3"
Sep 27 05:33:24 raspberrypi mtp-probe: bus: 1, device: 4 was not an MTP device
Sep 27 05:33:24 raspberrypi kernel: [  675.702379] usbcore: registered new interface driver usbserial_generic
Sep 27 05:33:24 raspberrypi kernel: [  675.703986] usbserial: USB Serial support registered for generic
Sep 27 05:33:24 raspberrypi kernel: [  675.717705] usbcore: registered new interface driver option
Sep 27 05:33:24 raspberrypi kernel: [  675.717751] usbserial: USB Serial support registered for GSM modem (1-port)
Sep 27 05:33:24 raspberrypi kernel: [  675.718028] option 1-1.3:1.0: GSM modem (1-port) converter detected
Sep 27 05:33:24 raspberrypi kernel: [  675.718276] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB0
Sep 27 05:33:24 raspberrypi kernel: [  675.718533] option 1-1.3:1.1: GSM modem (1-port) converter detected
Sep 27 05:33:24 raspberrypi kernel: [  675.718754] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB1
Sep 27 05:33:24 raspberrypi kernel: [  675.719004] option 1-1.3:1.2: GSM modem (1-port) converter detected
Sep 27 05:33:24 raspberrypi kernel: [  675.719222] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB2
Sep 27 05:33:24 raspberrypi kernel: [  675.719474] option 1-1.3:1.3: GSM modem (1-port) converter detected
Sep 27 05:33:24 raspberrypi kernel: [  675.719687] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB3
Sep 27 05:33:24 raspberrypi mtp-probe: checking bus 1, device 4: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3"
Sep 27 05:33:24 raspberrypi mtp-probe: bus: 1, device: 4 was not an MTP device
Sep 27 05:33:24 raspberrypi root: usb_modeswitch: switched to 1004:618f on 001/004
Sep 27 05:33:25 raspberrypi systemd[1]: usb_modeswitch@1-1.3.service: Succeeded.
Sep 27 05:33:25 raspberrypi systemd[1]: Started USB_ModeSwitch_1-1.3.

pi@raspberrypi:/ $ ls -l /dev
total 0
(略)
crw-rw---- 1 root dialout 188,   0 Sep 27 05:33 ttyUSB0
crw-rw---- 1 root dialout 188,   1 Sep 27 05:33 ttyUSB1
crw-rw---- 1 root dialout 188,   2 Sep 27 05:33 ttyUSB2
crw-rw---- 1 root dialout 188,   3 Sep 27 05:33 ttyUSB3
(略)
pi@raspberrypi:/ $

固定デバイス化

通常、ttyUSB2に対してシリアル接続しPPP接続しますが、ttyUSB0~ttyUSB3がどのような順序で認識されるかわかりません。
このため、udevルールを記述して、シリアル接続を行うシリアルデバイスへのシンボリックリンクを作成し、デバイス名の固定化を行います。
(シンボリックリンク名は、”usbmodem”とします。)
以下のように/etc/udev/rules.d/95-l-02c.rulesファイルを作成し、udevルールを記述します。

pi@raspberrypi:~ $ sudo vi /etc/udev/rules.d/95-l-02c.rules
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", ATTRS{bInterfaceNumber}=="02", ATTRS{../idVendor}=="1004", ATTRS{../idProduct}=="618f", SYMLINK+="usbmodem"
pi@raspberrypi:~ $

udevルールの編集が終わった後、以下のコマンドを実行し、udevルールの再読み込みを行います。

pi@raspberrypi:~ $ sudo systemctl daemon-reload

L-02Cを一度抜き、再度接続すると以下のように/dev/usbmodemが作成されます。

pi@raspberrypi:~ $ ls -l /dev
total 0
(略)
crw-rw---- 1 root dialout 188,   0 Sep 27 05:42 ttyUSB0
crw-rw---- 1 root dialout 188,   1 Sep 27 05:42 ttyUSB1
crw-rw---- 1 root dialout 188,   2 Sep 27 05:42 ttyUSB2
crw-rw---- 1 root dialout 188,   3 Sep 27 05:42 ttyUSB3
(略)
lrwxrwxrwx 1 root root           7 Sep 27 05:42 usbmodem -> ttyUSB2
(略)
pi@raspberrypi:~ $

wvdialの接続設定

以下のとおり、/etc/wvdial.confファイルを編集し、接続設定を行います。

pi@raspberrypi:~ $ sudo vi /etc/wvdial.conf
[Dialer Defaults]
Init1 = ATH
Init2 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Init3 = AT+CGDCONT=1,"IP","<APN>"   <--- <APN>:ご使用のSIMのAPN名を記載
Modem Type = Analog Modem
Baud = 9600
Modem = /dev/usbmodem
Phone = *99***1#
Username = <Username>   <--- <Username>:ご使用のSIMの接続用ユーザー名を記載
Password = <Password>   <--- <Password>:ご使用のSIMの接続用パスワードを記載
New PPPD = yes
Dial Attempts = 3
Dial Command = ATD
Stupid Mode = yes
Carrier Check = no
Auto DNS = yes
Check DNS = yes
Check Def Route = yes
Auto Reconnect = yes
pi@raspberrypi:~ $

wvdialによる接続

以下のコマンドを実行し接続します。
wvdialダイヤルは、現在のコンソールを占有しますので、以下では、”&”をつけバックグランドで起動しています。

pi@raspberrypi:~ $ sudo wvdial &
[1] 1885
pi@raspberrypi:~ $ --> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATH
ATH
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2
ATQ0 V1 E1 S0=0 &C1 &D2
OK
--> Sending: AT+CGDCONT=1,"IP","<APN>"   <--- <APN>:使用しているAPNが記載される
AT+CGDCONT=1,"IP","<APN>"   <--- <APN>:使用しているAPNが記載される
OK
--> Modem initialized.
--> Sending: ATD*99***1#
--> Waiting for carrier.
ATD*99***1#
CONNECT
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Sun Sep 27 05:51:06 2020
--> Pid of pppd: 1891
--> 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

pi@raspberrypi:~ $

“CONNECT”と記載があれば接続完了です。
以下のコマンドを実行し、pppXインターフェイスが追加されていることを確認します。

pi@raspberrypi:~ $ ifconfig -a
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet XXX.XXX.XXX.XXX  netmask 255.255.255.255  destination XXX.XXX.XXX.XXX
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 17  bytes 574 (574.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6  bytes 101 (101.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
pi@raspberrypi:~ $

wvdialの切断

wvdailを切断するには、killコマンドを使用してプロセスを終了します。
以下のコマンドを実行し、wvdialのプロセスIDを確認します。

pi@raspberrypi:~ $ ps -ef | grep wvdial
root      1885   952  0 05:51 pts/0    00:00:00 sudo wvdial
root      1890  1885  0 05:51 pts/0    00:00:00 wvdial
root      1891  1890  0 05:51 pts/0    00:00:00 /usr/sbin/pppd 9600 modem crtscts defaultroute usehostname -detach user mobileid@ocn noipdefault call wvdial usepeerdns idle 0 logfd 6
pi        2003   952  0 05:56 pts/0    00:00:00 grep --color=auto wvdial
pi@raspberrypi:~ $

以下のコマンドを実行し、wvdialのプロセスを終了します。

pi@raspberrypi:~ $ sudo kill 1890
Caught signal 15:  Attempting to exit gracefully...
pi@raspberrypi:~ $ --> Terminating on signal 15
--> Connect time 5.4 minutes.
--> Disconnecting at Sun Sep 27 05:56:31 2020

[1]+  Exit 1                  sudo wvdial
pi@raspberrypi:~ $
タイトルとURLをコピーしました