RaspberyPi3 ModelBにUbuntu18.04をインストール(データ通信カード自動接続)

前回まででusb_modeswitchをインストールしpppconfigで接続情報を設定したら、ponすることでデータ通信カードを使った通信を行うところまで出来た。
今回はブート後自動でppp接続を開始しインターネットへアクセスできる状態までやる。

ifupdown

ifupdownをインストールし、ifup xxxとやってインタフェースを上げられるようにする。

sudo apt-get install ifupdown

/etc/network/interfacesに以下のエントリを書き足す。
今回インタフェースはwwan0という名前にした。

allow-hotplug wwan0
iface wwan0 inet ppp
    provider 'L-02C'

そしてifupする。
(ifupdownをインストールせずifconfig wwan0 upとしただけではインタフェースがそもそも認識されず、通信は確率しなかった)

ifup wwan0

# しばらくして、インタフェースppp0が開始されることをifconfigから確認

udev

udevの設定をしないままだと、ブート時にモデムの登録前にインタフェースの初期化を行ってしまい、インタフェースがただしくアップできない。
(/etc/ppp/peers/L-02Cに記載しているモデムのデバイスファイルパスが見つからないとエラーになる)
そのため、udevでデバイスがついてからsystemdとして接続を管理するよう設定する。
/etc/udev/rules.d/70-L-02C.rules

ACTION=="add", ATTRS{idVendor}=="1004", ATTRS{idProduct}"=="618f", RUN+="/sbin/modprobe usbserial vendor=0x1004 product=0x618f"
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{../idVendor}=="1004", ATTRS{../idProduct}=="618f", ATTRS{bInterfaceNumber}=="02", TAG+="systemd", ENV{SYSTEMD_WANTS}+="ifup@wwan0.service"

内部で指定しているidVendorおよびidProductはlsusbから確認できる。

root@ubuntu:~# lsusb | grep LG
Bus 001 Device 006: ID 1004:618f LG Electronics, Inc. Ally/Optimus One

IDに続くフィールドがidVendor:idProductとなっている。

ifup@.serviceの設定修正

ここでも述べられている通り、systemdのifup@,service設定ファイルには不具合があって、そのままではsystemdからifupさせることができない。
なので、/lib/systemd/system/ifup@.serviceの2つ目の”After=…”の行をコメントアウトする。

7c7
< After=sys-subsystem-net-devices-%i.device
---
> #After=sys-subsystem-net-devices-%i.device

/usr/lib/systemdじゃなくて/lib/systemd/なのに注意。

これで完成。
L-02Cを抜き差しすると、自動でwwan0(ifconfigで見た場合にはppp0)インタフェースが起動・有効になる。

補足:/etc/ppp/peers/L-02Cの書き直し

前回pppconfigで設定した/etc/ppp/peers/L-02Cは、シリアルデバイス名を/dev/ttyUSB2にしていた。
これはusb_modeswitchで①CD-ROMとして一度マウントされたL-02Cをアンマウントし②シリアルデバイスとしてマウントし直し、順番にttyUSBnとして登録された ためによるもの。
ttyUSB[0-3]あるとおり認識されるデバイスは4つあるため、認識される順番が異なれば、ttyUSBxも異なる。
確実にアップさせるためには/dev/ttyUSB2の実体のデバイスを指定する。
/dev/serial/以下に登録されている

root@ubuntu:~# ls -l /dev/serial/by-id/usb-NTT_DOCOMO__INC._docomo_L02C-if02-port0
lrwxrwxrwx 1 root root 13 Jun  8 16:32 /dev/serial/by-id/usb-NTT_DOCOMO__INC._docomo_L02C-if02-port0 -> ../../ttyUSB2

L-02Cで言えば、/dev/serial/by-id/usb-NTT_DOCOMO__INC._docomo_L02C-if02-port0 になるはずなので以下の修正を/etc/ppp/peers/L-02Cに施しておく。

8c8,9
< /dev/ttyUSB2
---
> #/dev/ttyUSB2
> /dev/serial/by-id/usb-NTT_DOCOMO__INC._docomo_L02C-if02-port0

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です