LTE > 3G USBドングルでのWAN接続 > (1)動作環境

「LTE/3G USBドングルでのWAN接続/(1)動作環境」の編集履歴(バックアップ)一覧はこちら

LTE/3G USBドングルでのWAN接続/(1)動作環境」(2016/07/12 (火) 14:55:31) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

LTE/3G USBドングルでのWAN接続/(1)動作環境 *openwrtで、LTEモデム L-02C を使う 今回使用したハードウェア ルータ WZR-HP-G301NH (異なる基板が複数あるようだが、私の個体は、WZR-HP-G300NHと同一基板) ルータOS openwrt15.05 モデム ドコモ L-02C LTE回線のSIM PanasonicMVNO wonderlink-i (IIJ系、プライベートIPアドレス付与) *WZR-HP-G301NHへopenwrt導入手順 純正状態で、otdpopyして、telnetdを起動して、外からtelnetでつないで、ddで純正状態をバックアップした ubootenv set accept_open_rt_fmt 1 ubootenv set tftp_wait 10 ubootenv set region US を念のため入れた。(文鎮になったときに復旧しやすくするため。USは不要だったかもしれない) そのあと、otdpopyで入室したときにだけ出てくる管理画面の裏ページで、FirmUpdateをクリックして、 以下のfactoryイメージを流し込んで、数分待機する。 openwrt-15.05-ar71xx-generic-wzr-hp-g300nh-squashfs-factory.bin 192.168.1.xでDHCPクライアントでIPアドレスをもらえるようになり、一発で導入成功 なお、純正の「ファームウェアアップデート」のページを使った場合「ファームウェアデータが正しくありません」とでて導入できなかった *3Gモデムを使うための、超簡単な導入手順 -telnetなりsshなりでルータへログインして、以下を実行 -opkg install luci-proto-3g usbutils kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan usb-modeswitch usb-modeswitch-data -WebUIからapnを設定する 以上で終わり。電源投入直後から接続はできるが、電波状況の不調などが起きて、いったん回線が途切れた場合は、再接続ができない。 現在の問題点 接続を手動で切断することはできるが、そのあとに再接続することができない。 *以下は、私が奮闘した詳細記録 単純にL-02Cを使いたいだけなら上記「超簡単な導入手順」だけ読めば足りる。 準備作業 opkgで必要なソフトを入れる LuCIのWeb管理画面から、apnやIDPW等を簡単に入力できるようにするため、以下を入れる opkg install luci-proto-3g Installing luci-proto-3g (git-15.248.30277-3836b45-1) to root... Downloading http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/luci/luci-proto-3g_git-15.248.30277-3836b45-1_all.ipk. Installing comgt (0.32-25) to root... Downloading http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/base/comgt_0.32-25_ar71xx.ipk. Installing chat (2.4.7-6) to root... Downloading http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/base/chat_2.4.7-6_ar71xx.ipk. Configuring chat. Configuring comgt. Configuring luci-proto-3g. これを導入したあと、LuCIの管理画面で、ネットワーク、インターフェースの新規作成を開くと、 新しいインターフェースのプロトコルの選択肢で、UMTS/GPRS/EV-DOが存在するようになり、 3Gモデムとしての設定を選択できるようになる。 しかし、今の状態では、USBシリアル変換のkmodが入っていないため、 モデムの接続先である /dev/ttyUSBx が1つも存在しないため、設定を完走できない。 以下を入れる。今回は順を追って記述しているが、面倒なら、最初に全部入れてしまってもよい。 opkg install usbutils kmod-usb-serial これだけでは、/dev/ttyUSBXがでない。さらに追加で以下を入れる。 opkg install kmod-usb-serial-option kmod-usb-serial-wwan usb-modeswitch usb-modeswitch-data opkgの設定が完了した段階で、ルータを再起動しない状態でも、すでに/dev/ttyUSB0,1,2,3が認識されてた。 これがL-02Cの出入り口となる。おそらくファームウェアのアップデート用など用途別に4つ認識されるが、 モデムデバイスは /dev/ttyUSB2 となる。 ls -l /dev | grep ttyUSB といれて、デバイスが出れば、正常に認識されている。 当方の環境では、以下のように出る root@WZR-HP-G301NH-OpenWrt15:/# lsusb Bus 001 Device 003: ID 1004:618f Bus 001 Device 001: ID 1d6b:0002 root@WZR-HP-G301NH-OpenWrt15:/# ls -l /dev | grep ttyUSB crw-r--r-- 1 root root 188, 0 Mar 10 17:46 ttyUSB0 crw-r--r-- 1 root root 188, 1 Mar 10 17:46 ttyUSB1 crw-r--r-- 1 root root 188, 2 Mar 10 18:32 ttyUSB2 crw-r--r-- 1 root root 188, 3 Mar 10 17:46 ttyUSB3 ここまで来ると、LuCIの管理画面で入力すべき全情報が揃うので、 モデムデバイス /dev/ttyUSB2を指定して、apn等のデータを入れる。 必要なapn,ID,PWをいれて、ダイヤル先として *99***1# を指定した結果、 MVNO(Panasonic wonderLink-I IIJ系のMVNO)で通信できた。 今回はLuCIのわかりやすいWebUIをつかって設定をしたが、 /etc/config/netoworkに追加される情報は以下の通り。これを手動で入力しても同じ効果となる。 config interface '3g' option proto '3g' option device '/dev/ttyUSB2' option service 'umts_only' option apn 'vmobile.jp' option username 'wl@wlte.net' option password 'p123456w' option dialnumber '*99***1#' option metric '0' option keepalive '3 30' option demand '0' 「option keepalive」は、たぶん応答不能時の再接続機能と理解した。 回線が生きてるかどうかを30秒間隔で生存確認して、3回失敗したら再接続モードに入る、はず。 なお、上記のluci-proto-3gを入れる前に、opkgをつかって「comgt」を入れた場合、 root@WZR-HP-G301NH-OpenWrt15:/# opkg install --force-depends luci-proto-3g Installing luci-proto-3g (git-15.248.30277-3836b45-1) to root... Downloading http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/luci/luci-proto-3g_git-15.248.30277-3836b45-1_all.ipk. Configuring luci-proto-3g. Collected errors: * satisfy_dependencies_for: Cannot satisfy the following dependencies for luci-proto-3g: * comgt * というエラーが出て、依存関係のエラーで、luci-proto-3gを追加できなくなる。 「--force-depends」をつけても、エラーになってしまい続行できなかった。 この状態になってしまうと、opkg remove comgt をやっても、comgtは入ってないよ、といわれて removeができなかった。 仕方が無いので今回は、直前にバックアップしていた/overlay全体のtar.gzをつかって、 opkgでcomgtをいれてないときまで巻き戻した。バックアップをしていない場合は初期化するのが早いと思う。 巻き戻した後、「luci-proto-3g」を導入し、その後にUSBシリアル変換関連のパッケージを導入して、 正常動作を確認できた。 *ここからは、接続している状態で、切断と再接続の挙動記録 電源を投入して、L-02Cのダイヤルアップが自動で走って完了し、正常な状態のとき、 ifdown 3g を実行する。 とたんに、以下のログが出る root@WZR-HP-G301NH-OpenWrt15:/# logread -f Thu Mar 10 17:39:39 2016 daemon.info pppd[1598]: Terminating on signal 15 Thu Mar 10 17:39:39 2016 daemon.info pppd[1598]: Connect time 1.7 minutes. Thu Mar 10 17:39:39 2016 daemon.info pppd[1598]: Sent 1681 bytes, received 910 bytes. Thu Mar 10 17:39:39 2016 daemon.notice netifd: Network device '3g-3g' link is down Thu Mar 10 17:39:39 2016 daemon.notice pppd[1598]: Connection terminated. Thu Mar 10 17:39:39 2016 daemon.info pppd[1598]: Exit. Thu Mar 10 17:39:39 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 17:39:39 2016 daemon.info dnsmasq[1690]: reading /tmp/resolv.conf.auto Thu Mar 10 17:39:39 2016 daemon.info dnsmasq[1690]: using local addresses only for domain lan Thu Mar 10 17:39:39 2016 daemon.info dnsmasq[1690]: using nameserver 192.168.XXX.1#53 ifup 3g を実行すると、以下のようにエラーが延々と続く。 Thu Mar 10 17:41:12 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:41:14 2016 daemon.notice pppd[2201]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 17:41:15 2016 local2.info chat[2203]: abort on (BUSY) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: abort on (NO CARRIER) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: abort on (ERROR) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: report (CONNECT) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: timeout set to 10 seconds Thu Mar 10 17:41:15 2016 local2.info chat[2203]: send (AT&F^M) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: expect (OK) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: AT&F^M^M Thu Mar 10 17:41:15 2016 local2.info chat[2203]: OK Thu Mar 10 17:41:15 2016 local2.info chat[2203]: -- got it Thu Mar 10 17:41:15 2016 local2.info chat[2203]: send (ATE1^M) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: expect (OK) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: ^M Thu Mar 10 17:41:15 2016 local2.info chat[2203]: ATE1^M^M Thu Mar 10 17:41:15 2016 local2.info chat[2203]: OK Thu Mar 10 17:41:15 2016 local2.info chat[2203]: -- got it Thu Mar 10 17:41:15 2016 local2.info chat[2203]: send (AT+CGDCONT=1,"IP","vmobile.jp"^M) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: timeout set to 30 seconds Thu Mar 10 17:41:15 2016 local2.info chat[2203]: expect (OK) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: ^M Thu Mar 10 17:41:15 2016 local2.info chat[2203]: AT+CGDCONT=1,"IP","vmobile.jp"^M^M Thu Mar 10 17:41:15 2016 local2.info chat[2203]: OK Thu Mar 10 17:41:15 2016 local2.info chat[2203]: -- got it Thu Mar 10 17:41:15 2016 local2.info chat[2203]: send (ATD*99***1#^M) Thu Mar 10 17:41:16 2016 local2.info chat[2203]: expect (CONNECT) Thu Mar 10 17:41:16 2016 local2.info chat[2203]: ^M Thu Mar 10 17:41:16 2016 local2.info chat[2203]: ATD*99***1#^M^M Thu Mar 10 17:41:16 2016 local2.info chat[2203]: ERROR Thu Mar 10 17:41:16 2016 local2.info chat[2203]: -- failed Thu Mar 10 17:41:16 2016 local2.info chat[2203]: Failed (ERROR) Thu Mar 10 17:41:16 2016 daemon.err pppd[2201]: Connect script failed Thu Mar 10 17:41:17 2016 daemon.info pppd[2201]: Exit. Thu Mar 10 17:41:17 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 17:41:17 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:41:19 2016 daemon.notice pppd[2223]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 17:41:20 2016 local2.info chat[2225]: abort on (BUSY) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: abort on (NO CARRIER) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: abort on (ERROR) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: report (CONNECT) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: timeout set to 10 seconds Thu Mar 10 17:41:20 2016 local2.info chat[2225]: send (AT&F^M) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: expect (OK) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: AT&F^M^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: OK Thu Mar 10 17:41:20 2016 local2.info chat[2225]: -- got it Thu Mar 10 17:41:20 2016 local2.info chat[2225]: send (ATE1^M) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: expect (OK) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: ^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: ATE1^M^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: OK Thu Mar 10 17:41:20 2016 local2.info chat[2225]: -- got it Thu Mar 10 17:41:20 2016 local2.info chat[2225]: send (AT+CGDCONT=1,"IP","vmobile.jp"^M) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: timeout set to 30 seconds Thu Mar 10 17:41:20 2016 local2.info chat[2225]: expect (OK) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: ^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: AT+CGDCONT=1,"IP","vmobile.jp"^M^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: OK Thu Mar 10 17:41:20 2016 local2.info chat[2225]: -- got it Thu Mar 10 17:41:20 2016 local2.info chat[2225]: send (ATD*99***1#^M) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: expect (CONNECT) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: ^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: ATD*99***1#^M^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: ERROR Thu Mar 10 17:41:20 2016 local2.info chat[2225]: -- failed Thu Mar 10 17:41:20 2016 local2.info chat[2225]: Failed (ERROR) Thu Mar 10 17:41:20 2016 daemon.err pppd[2223]: Connect script failed Thu Mar 10 17:41:21 2016 daemon.info pppd[2223]: Exit. Thu Mar 10 17:41:21 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 17:41:21 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:41:23 2016 daemon.notice pppd[2245]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 17:41:24 2016 local2.info chat[2247]: abort on (BUSY) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: abort on (NO CARRIER) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: abort on (ERROR) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: report (CONNECT) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: timeout set to 10 seconds Thu Mar 10 17:41:24 2016 local2.info chat[2247]: send (AT&F^M) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: expect (OK) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: AT&F^M^M Thu Mar 10 17:41:24 2016 local2.info chat[2247]: OK Thu Mar 10 17:41:24 2016 local2.info chat[2247]: -- got it Thu Mar 10 17:41:24 2016 local2.info chat[2247]: send (ATE1^M) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: expect (OK) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: ^M Thu Mar 10 17:41:24 2016 local2.info chat[2247]: ATE1^M^M Thu Mar 10 17:41:24 2016 local2.info chat[2247]: OK Thu Mar 10 17:41:24 2016 local2.info chat[2247]: -- got it Thu Mar 10 17:41:24 2016 local2.info chat[2247]: send (AT+CGDCONT=1,"IP","vmobile.jp"^M) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: timeout set to 30 seconds Thu Mar 10 17:41:24 2016 local2.info chat[2247]: expect (OK) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: ^M Thu Mar 10 17:41:24 2016 local2.info chat[2247]: AT+CGDCONT=1,"IP","vmobile.jp"^M^M Thu Mar 10 17:41:24 2016 local2.info chat[2247]: OK Thu Mar 10 17:41:24 2016 local2.info chat[2247]: -- got it Thu Mar 10 17:41:24 2016 local2.info chat[2247]: send (ATD*99***1#^M) Thu Mar 10 17:41:25 2016 local2.info chat[2247]: expect (CONNECT) Thu Mar 10 17:41:25 2016 local2.info chat[2247]: ^M Thu Mar 10 17:41:25 2016 local2.info chat[2247]: ATD*99***1#^M^M Thu Mar 10 17:41:25 2016 local2.info chat[2247]: ERROR Thu Mar 10 17:41:25 2016 local2.info chat[2247]: -- failed Thu Mar 10 17:41:25 2016 local2.info chat[2247]: Failed (ERROR) Thu Mar 10 17:41:25 2016 daemon.err pppd[2245]: Connect script failed Thu Mar 10 17:41:26 2016 daemon.info pppd[2245]: Exit. Thu Mar 10 17:41:26 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 17:41:26 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:41:28 2016 daemon.notice pppd[2267]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 17:41:29 2016 local2.info chat[2269]: abort on (BUSY) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: abort on (NO CARRIER) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: abort on (ERROR) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: report (CONNECT) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: timeout set to 10 seconds Thu Mar 10 17:41:29 2016 local2.info chat[2269]: send (AT&F^M) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: expect (OK) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: AT&F^M^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: OK Thu Mar 10 17:41:29 2016 local2.info chat[2269]: -- got it Thu Mar 10 17:41:29 2016 local2.info chat[2269]: send (ATE1^M) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: expect (OK) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ATE1^M^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: OK Thu Mar 10 17:41:29 2016 local2.info chat[2269]: -- got it Thu Mar 10 17:41:29 2016 local2.info chat[2269]: send (AT+CGDCONT=1,"IP","vmobile.jp"^M) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: timeout set to 30 seconds Thu Mar 10 17:41:29 2016 local2.info chat[2269]: expect (OK) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: AT+CGDCONT=1,"IP","vmobile.jp"^M^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: OK Thu Mar 10 17:41:29 2016 local2.info chat[2269]: -- got it Thu Mar 10 17:41:29 2016 local2.info chat[2269]: send (ATD*99***1#^M) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: expect (CONNECT) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ATD*99***1#^M^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ERROR Thu Mar 10 17:41:29 2016 local2.info chat[2269]: -- failed Thu Mar 10 17:41:29 2016 local2.info chat[2269]: Failed (ERROR) Thu Mar 10 17:41:29 2016 daemon.err pppd[2267]: Connect script failed Thu Mar 10 17:41:30 2016 daemon.info pppd[2267]: Exit. Thu Mar 10 17:41:30 2016 daemon.notice netifd: Interface '3g' is now down これ以下、同じエラー状態が、延々とループされる USBバスから、L-02Cを引っこ抜く Thu Mar 10 17:41:39 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 17:41:39 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:41:41 2016 daemon.notice pppd[2333]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.180000] usb 1-1: USB disconnect, device number 2 Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.180000] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0 Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.190000] option 1-1:1.0: device disconnected Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.190000] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1 Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.200000] option 1-1:1.1: device disconnected Thu Mar 10 17:41:42 2016 kern.err kernel: [ 258.220000] option1 ttyUSB2: usb_wwan_indat_callback: resubmit read urb failed. (-19) Thu Mar 10 17:41:42 2016 kern.err kernel: [ 258.220000] option1 ttyUSB2: usb_wwan_indat_callback: resubmit read urb failed. (-19) Thu Mar 10 17:41:42 2016 kern.err kernel: [ 258.230000] option1 ttyUSB2: usb_wwan_indat_callback: resubmit read urb failed. (-19) Thu Mar 10 17:41:42 2016 kern.err kernel: [ 258.240000] option1 ttyUSB2: usb_wwan_indat_callback: resubmit read urb failed. (-19) Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.280000] option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2 Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.280000] option 1-1:1.2: device disconnected Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.290000] option1 ttyUSB3: GSM modem (1-port) converter now disconnected from ttyUSB3 Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.300000] option 1-1:1.3: device disconnected Thu Mar 10 17:41:42 2016 local2.err chat[2358]: Can't get terminal parameters: Input/output error Thu Mar 10 17:41:42 2016 daemon.err pppd[2333]: Connect script failed Thu Mar 10 17:41:43 2016 daemon.info pppd[2333]: Exit. Thu Mar 10 17:41:43 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 17:41:43 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:41:44 2016 daemon.notice netifd: Interface '3g' is now down ここでログの出力が途切れて落ち着く L-02Cを、再度差し込む Thu Mar 10 17:46:16 2016 kern.info kernel: [ 532.600000] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3 Thu Mar 10 17:46:19 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:46:21 2016 daemon.notice pppd[2723]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 17:46:22 2016 local2.info chat[2725]: abort on (BUSY) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: abort on (NO CARRIER) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: abort on (ERROR) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: report (CONNECT) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: timeout set to 10 seconds Thu Mar 10 17:46:22 2016 local2.info chat[2725]: send (AT&F^M) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: expect (OK) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: AT&F^M^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: OK Thu Mar 10 17:46:22 2016 local2.info chat[2725]: -- got it Thu Mar 10 17:46:22 2016 local2.info chat[2725]: send (ATE1^M) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: expect (OK) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: ^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: ATE1^M^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: OK Thu Mar 10 17:46:22 2016 local2.info chat[2725]: -- got it Thu Mar 10 17:46:22 2016 local2.info chat[2725]: send (AT+CGDCONT=1,"IP","vmobile.jp"^M) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: timeout set to 30 seconds Thu Mar 10 17:46:22 2016 local2.info chat[2725]: expect (OK) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: ^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: AT+CGDCONT=1,"IP","vmobile.jp"^M^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: OK Thu Mar 10 17:46:22 2016 local2.info chat[2725]: -- got it Thu Mar 10 17:46:22 2016 local2.info chat[2725]: send (ATD*99***1#^M) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: expect (CONNECT) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: ^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: ATD*99***1#^M^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: CONNECT Thu Mar 10 17:46:22 2016 local2.info chat[2725]: -- got it Thu Mar 10 17:46:22 2016 local2.info chat[2725]: send ( ^M) Thu Mar 10 17:46:22 2016 daemon.info pppd[2723]: Serial connection established. Thu Mar 10 17:46:22 2016 daemon.info pppd[2723]: Using interface 3g-3g Thu Mar 10 17:46:22 2016 daemon.notice pppd[2723]: Connect: 3g-3g <--> /dev/ttyUSB2 Thu Mar 10 17:46:22 2016 kern.info kernel: [ 538.970000] 3g-3g: renamed from ppp0 Thu Mar 10 17:46:23 2016 daemon.info pppd[2723]: CHAP authentication succeeded Thu Mar 10 17:46:23 2016 daemon.notice pppd[2723]: CHAP authentication succeeded Thu Mar 10 17:46:25 2016 daemon.warn pppd[2723]: Could not determine remote IP address: defaulting to 10.64.64.64 Thu Mar 10 17:46:25 2016 daemon.notice pppd[2723]: local IP address 100.92.150.5 Thu Mar 10 17:46:25 2016 daemon.notice pppd[2723]: remote IP address 10.64.64.64 Thu Mar 10 17:46:25 2016 daemon.notice pppd[2723]: primary DNS address 202.232.2.2 Thu Mar 10 17:46:25 2016 daemon.notice pppd[2723]: secondary DNS address 202.232.2.3 Thu Mar 10 17:46:25 2016 daemon.notice netifd: Network device '3g-3g' link is up Thu Mar 10 17:46:25 2016 daemon.notice netifd: Interface '3g' is now up Thu Mar 10 17:46:25 2016 daemon.info dnsmasq[1690]: reading /tmp/resolv.conf.auto Thu Mar 10 17:46:25 2016 daemon.info dnsmasq[1690]: using local addresses only for domain lan Thu Mar 10 17:46:25 2016 daemon.info dnsmasq[1690]: using nameserver 202.232.2.2#53 Thu Mar 10 17:46:25 2016 daemon.info dnsmasq[1690]: using nameserver 202.232.2.3#53 Thu Mar 10 17:46:25 2016 daemon.info dnsmasq[1690]: using nameserver 192.168.XXX.1#53 Thu Mar 10 17:46:25 2016 user.notice firewall: Reloading firewall due to ifup of 3g (3g-3g) ここでログの出力が途切れて落ち着く 別の実験。LuCIの管理画面で、インターフェース「3G」項目で「停止」「開始」を押したときの挙動 接続が完了している状態で「停止」をおす Thu Mar 10 18:12:00 2016 daemon.info pppd[2723]: Terminating on signal 15 Thu Mar 10 18:12:00 2016 daemon.info pppd[2723]: Connect time 25.6 minutes. Thu Mar 10 18:12:00 2016 daemon.info pppd[2723]: Sent 1776 bytes, received 1462 bytes. Thu Mar 10 18:12:00 2016 daemon.notice pppd[2723]: Connection terminated. Thu Mar 10 18:12:00 2016 daemon.notice netifd: Network device '3g-3g' link is down Thu Mar 10 18:12:00 2016 daemon.info pppd[2723]: Exit. Thu Mar 10 18:12:00 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 18:12:00 2016 daemon.info dnsmasq[1690]: reading /tmp/resolv.conf.auto Thu Mar 10 18:12:00 2016 daemon.info dnsmasq[1690]: using local addresses only for domain lan Thu Mar 10 18:12:00 2016 daemon.info dnsmasq[1690]: using nameserver 192.168.XXX.1#53 インターフェースの3Gアイコンは、色のついた状態から灰色になり、 RX: 0.00 B (0 パケット) TX: 0.00 B (0 パケット)となる。 ここで、「開始」をおす Thu Mar 10 18:12:50 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 18:12:52 2016 daemon.notice pppd[3037]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 18:12:53 2016 local2.info chat[3039]: abort on (BUSY) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: abort on (NO CARRIER) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: abort on (ERROR) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: report (CONNECT) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: timeout set to 10 seconds Thu Mar 10 18:12:53 2016 local2.info chat[3039]: send (AT&F^M) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: expect (OK) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: AT&F^M^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: OK Thu Mar 10 18:12:53 2016 local2.info chat[3039]: -- got it Thu Mar 10 18:12:53 2016 local2.info chat[3039]: send (ATE1^M) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: expect (OK) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: ^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: ATE1^M^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: OK Thu Mar 10 18:12:53 2016 local2.info chat[3039]: -- got it Thu Mar 10 18:12:53 2016 local2.info chat[3039]: send (AT+CGDCONT=1,"IP","vmobile.jp"^M) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: timeout set to 30 seconds Thu Mar 10 18:12:53 2016 local2.info chat[3039]: expect (OK) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: ^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: AT+CGDCONT=1,"IP","vmobile.jp"^M^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: OK Thu Mar 10 18:12:53 2016 local2.info chat[3039]: -- got it Thu Mar 10 18:12:53 2016 local2.info chat[3039]: send (ATD*99***1#^M) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: expect (CONNECT) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: ^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: ATD*99***1#^M^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: ERROR Thu Mar 10 18:12:53 2016 local2.info chat[3039]: -- failed Thu Mar 10 18:12:53 2016 local2.info chat[3039]: Failed (ERROR) Thu Mar 10 18:12:53 2016 daemon.err pppd[3037]: Connect script failed Thu Mar 10 18:12:54 2016 daemon.info pppd[3037]: Exit. Thu Mar 10 18:12:55 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 18:12:55 2016 daemon.notice netifd: Interface '3g' is setting up now 開始を押しても、アイコンは灰色のままで、復旧してくれない。 この症状は、telnet上から手動でifdown 3g /ifup 3g したときと、全く同じだ。 *問題点まとめ USBポート付きルータ + openwrt + L-02Cをつかって、基本的なデータ通信はできる。 ただしいったん途切れるとリブートするまで再接続できない。 LuCIの管理画面で停止と開始をおこなう、あるいはtelnetやシェルスクリプト上で 手動でifdown/ifupを行うと、リブートするまで、再接続できなくなる。 本体をリブートするか、L-02Cを抜き取ったと認識される状況になれば、再接続ができる。 gpioの制御コマンドを使ってUSBの電源を切断/接続のできるWZR-HP-AG300H等であれば、 スクリプトを組んで、リブートさせずに、手動で再認識させることはできる。 切断と再接続のスクリプト例 (anonymous[sage] 投稿日:2014/10/25(土) 11:52:45.07 氏 制作) ifdown 3g echo 0 > /sys/devices/virtual/gpio/gpio2/value sleep 2 echo 1 > /sys/devices/virtual/gpio/gpio2/value ifup 3g できれば、リブートやUSBの切断を行わずに再接続させたいが、やりかたがわからない。 *20160712追記。問題点解決への道。再接続方法(ほぼ問題なく動いている) USB接続されたモデムのシリアルポートに対して、自動制御というか 半自動オートパイロット的なやりとりを実現しているのは chatという拡張子のスクリプトが実現していることがわかりました。 以下の場所に、3Gモデムを接続するまでのスクリプトの実体が入っていました。 /etc/chatscripts/3g.chat 内容は以下の通り。 ABORT BUSY ABORT 'NO CARRIER' ABORT ERROR REPORT CONNECT TIMEOUT 10 "" "AT&F" OK "ATE1" OK 'AT+CGDCONT=1,"IP","$USE_APN"' SAY "Calling UMTS/GPRS" TIMEOUT 30 OK "ATD$DIALNUMBER" CONNECT ' ' 解釈すると、BUSY か NO CARRIER か ERRORが帰ってきたら、 失敗とみなして、その時点でスクリプトを中断してエラーとして終了。 各コマンドは、OKと帰ってくるはずなので、それが到来するまで待つ。 CONNECTが帰ってきたら正常として終了、と言うことでしょう。 「timeout set to 30 seconds」は、ダイヤルして応答を得られるまで、 30秒後をタイムアウトとして設定するよ、という意味だと思う。 この解釈でログを見直すと、30秒でタイムアウトしてるんじゃなくて、 30秒たたないうちに即座にエラー結果が帰ってきたので、異常の扱いとして スクリプトが終了する。それを延々と繰り返す動作になってることがわかった。 エラーを繰り返している時 Thu Mar 10 17:41:29 2016 local2.info chat[2269]: send (ATD*99***1#^M) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: expect (CONNECT) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ATD*99***1#^M^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ERROR Thu Mar 10 17:41:29 2016 local2.info chat[2269]: -- failed 正常に接続できたとき Thu Mar 10 17:46:22 2016 local2.info chat[2725]: send (ATD*99***1#^M) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: expect (CONNECT) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: ATD*99***1#^M^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: CONNECT Thu Mar 10 17:46:22 2016 local2.info chat[2725]: -- got it 上記で、 ATD*99***1#^M^M を送って、expect (CONNECT) で、CONNECTという文字が来るのを期待したが、 実際の返答は ERROR が帰ってきたので、エラーとして処理が進み、 Connect script failed を吐いて終了、という流れ。問題は、なぜERRORが帰ってくるのか。 chatスクリプトの、下から2行目に、ATDコマンドが書かれています。 2ch掲示板でヒントをいただき、以下のようにオフフック・オンフックを 切り替えるHという文字を付け加えてみました。 OK "ATD$DIALNUMBER" ↓ OK "ATHD$DIALNUMBER" この「H」の1文字を追加して保存します。 次に、インターフェースの設定の見直しです。LuCIのインターフェースの3Gを開き、 詳細設定を押して、 LCP echo 失敗数しきい値 LCP echo 送信間隔 この2つは標準状態では空白のはずですが、値を入れている場合は、空白にしてください。 これが入っていると、タイムアウトのカウント時間ごとに、正常に接続が維持できていても、 切断になってしまう気がするので。 未使用時タイムアウトは空欄では無く 0 (=切断しない)を入れました。 以上の2つの変更をした結果、ifdown、ifup、LuCIの接続ボタンの操作で、 正常に再接続ができるようになりました。 これらの操作において、ATコマンドにHを入れる改造を施す前では、 L-02Cでは一度も成功しなかったので、明確に改善しました。 ifdownで回線の停止もできますが、L-02Cの「青いランプ」がしばらく消えません。 放置すると水色の表示(LTEではなく3G接続の表示)になりますが、 内部でどうなっているかは、わかりません。 LED表示は気味が悪いけど、ifdownしたあとはパケットは流れないので実害はなさそう。 以上の結果を踏まえて、好きなタイミングで、再接続処理が出来るようになりました。 あとはスクリプト等で創意工夫の世界です。たとえばインターネット先の相手へpingを 定期間隔で飛ばして、10回連続で応答を得られなかった場合は、ifdown/ifupします。 すると、無人環境で調子が悪くなったときに、回線を自動で再接続できます。 *まとめ。L-02Cの回線切断・再接続制御はできたが、L-02Cは小難しいデバイスである このページにまとめた情報は全て、記入者である私が遠隔地に設置して実用で使った「知見」です。 L-02Cをつかったwan回線の提供は、私の検証下において、なんとか実現できました。 しかし、長時間にわたる安定稼働は期待できないし、L-02Cの青ランプがついてても 実際はwanに出られない状況が発生し、信用出来ないデバイスです。 回線が途絶えると言うことは、再接続のたびにIPアドレスも変化します。 グローバルIPアドレスが付与されるSIMカードを使って遠隔地へアクセスするには、 そのたびにddnsを更新する必要があります。 このddnsの更新も、回線が死んでる途中で更新スクリプトが動いて処理が始まると、 「更新できなかったよ」という状況が記憶されてしまい、次にいつ再実行されるかなどを、 よく確認する必要があります。 つまるところ、監視用のシェルスクリプト等を適当に作って、 いつ回線が死んでもリカバリできるような創意工夫が必要です。 これらの教訓を全て異常が起きたときの修復処理としてスクリプトに実装して、 なんとか実用になるレベルです。 L-02C + openwrt で最初の検証をしてから、4ヶ月ほど実際に運用しています。 どうもL-02Cについては、全体的に不可解な動作が多いです。 L-02Cは通電中は常に、側面の白いLEDランプが微速度で点滅しています。 ごくまれに、この点滅が途絶えて、内部でウォッチドッグタイマーが 働いてリセットしてるかのような挙動も確認できました。 これらの挙動は、製造時期の異なる複数台のL-02Cを観察して、 すべてで同じ現象に遭遇しました。 新規に構築する場合は、別のデバイスを選んだほうが良いかもしれません。 別の視点で考えると、L-02Cを上手に使いこなすことが出来るようになれば、 どんなに不安定なwanデバイスでも実用的に乗りこなせる、といえるでしょう。 *資料 lsusb -v したときの、L-02Cの情報 root@WZR-HP-G301NH-OpenWrt15:/# lsusb -v Bus 001 Device 003: ID 1004:618f Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 bDeviceSubClass 2 bDeviceProtocol 1 bMaxPacketSize0 64 idVendor 0x1004 idProduct 0x618f bcdDevice 0.00 iManufacturer 1 NTT DOCOMO, INC. iProduct 2 docomo L02C iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 115 bNumInterfaces 4 bConfigurationValue 1 iConfiguration 4 docomo L02C bmAttributes 0x80 (Bus Powered) MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 bInterfaceSubClass 255 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 bInterfaceSubClass 255 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 bInterfaceSubClass 255 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 5 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 bInterfaceSubClass 255 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 5 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x86 EP 6 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 239 bDeviceSubClass 2 bDeviceProtocol 1 bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered)
LTE/3G USBドングルでのWAN接続/(1)動作環境 *openwrtで、LTEモデム L-02C を使う 今回使用したハードウェア ルータ WZR-HP-G301NH (異なる基板が複数あるようだが、私の個体は、WZR-HP-G300NHと同一基板) ルータOS openwrt15.05 モデム ドコモ L-02C LTE回線のSIM PanasonicMVNO wonderlink-i (IIJ系、プライベートIPアドレス付与) DOCOMO純正契約回線にて、mopera.netをつかった通信 *WZR-HP-G301NHへopenwrt導入手順 純正状態で、otdpopyして、telnetdを起動して、外からtelnetでつないで、ddで純正状態をバックアップした ubootenv set accept_open_rt_fmt 1 ubootenv set tftp_wait 10 ubootenv set region US を念のため入れた。(文鎮になったときに復旧しやすくするため。USは不要だったかもしれない) そのあと、otdpopyで入室したときにだけ出てくる管理画面の裏ページで、FirmUpdateをクリックして、 以下のfactoryイメージを流し込んで、数分待機する。 openwrt-15.05-ar71xx-generic-wzr-hp-g300nh-squashfs-factory.bin 192.168.1.xでDHCPクライアントでIPアドレスをもらえるようになり、一発で導入成功 なお、純正の「ファームウェアアップデート」のページを使った場合「ファームウェアデータが正しくありません」とでて導入できなかった *3Gモデムを使うための、超簡単な導入手順 -telnetなりsshなりでルータへログインして、以下を実行 -opkg install luci-proto-3g usbutils kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan usb-modeswitch usb-modeswitch-data -WebUIからapnを設定する 以上で終わり。電源投入直後から接続はできるが、電波状況の不調などが起きて、いったん回線が途切れた場合は、再接続ができない。 現在の問題点 接続を手動で切断することはできるが、そのあとに再接続することができない。 *以下は、私が奮闘した詳細記録 単純にL-02Cを使いたいだけなら上記「超簡単な導入手順」だけ読めば足りる。 準備作業 opkgで必要なソフトを入れる LuCIのWeb管理画面から、apnやIDPW等を簡単に入力できるようにするため、以下を入れる opkg install luci-proto-3g Installing luci-proto-3g (git-15.248.30277-3836b45-1) to root... Downloading http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/luci/luci-proto-3g_git-15.248.30277-3836b45-1_all.ipk. Installing comgt (0.32-25) to root... Downloading http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/base/comgt_0.32-25_ar71xx.ipk. Installing chat (2.4.7-6) to root... Downloading http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/base/chat_2.4.7-6_ar71xx.ipk. Configuring chat. Configuring comgt. Configuring luci-proto-3g. これを導入したあと、LuCIの管理画面で、ネットワーク、インターフェースの新規作成を開くと、 新しいインターフェースのプロトコルの選択肢で、UMTS/GPRS/EV-DOが存在するようになり、 3Gモデムとしての設定を選択できるようになる。 しかし、今の状態では、USBシリアル変換のkmodが入っていないため、 モデムの接続先である /dev/ttyUSBx が1つも存在しないため、設定を完走できない。 以下を入れる。今回は順を追って記述しているが、面倒なら、最初に全部入れてしまってもよい。 opkg install usbutils kmod-usb-serial これだけでは、/dev/ttyUSBXがでない。さらに追加で以下を入れる。 opkg install kmod-usb-serial-option kmod-usb-serial-wwan usb-modeswitch usb-modeswitch-data opkgの設定が完了した段階で、ルータを再起動しない状態でも、すでに/dev/ttyUSB0,1,2,3が認識されてた。 これがL-02Cの出入り口となる。おそらくファームウェアのアップデート用など用途別に4つ認識されるが、 モデムデバイスは /dev/ttyUSB2 となる。 ls -l /dev | grep ttyUSB といれて、デバイスが出れば、正常に認識されている。 当方の環境では、以下のように出る root@WZR-HP-G301NH-OpenWrt15:/# lsusb Bus 001 Device 003: ID 1004:618f Bus 001 Device 001: ID 1d6b:0002 root@WZR-HP-G301NH-OpenWrt15:/# ls -l /dev | grep ttyUSB crw-r--r-- 1 root root 188, 0 Mar 10 17:46 ttyUSB0 crw-r--r-- 1 root root 188, 1 Mar 10 17:46 ttyUSB1 crw-r--r-- 1 root root 188, 2 Mar 10 18:32 ttyUSB2 crw-r--r-- 1 root root 188, 3 Mar 10 17:46 ttyUSB3 ここまで来ると、LuCIの管理画面で入力すべき全情報が揃うので、 モデムデバイス /dev/ttyUSB2を指定して、apn等のデータを入れる。 必要なapn,ID,PWをいれて、ダイヤル先として *99***1# を指定した結果、 MVNO(Panasonic wonderLink-I IIJ系のMVNO)で通信できた。 今回はLuCIのわかりやすいWebUIをつかって設定をしたが、 /etc/config/netoworkに追加される情報は以下の通り。これを手動で入力しても同じ効果となる。 config interface '3g' option proto '3g' option device '/dev/ttyUSB2' option service 'umts_only' option apn 'vmobile.jp' option username 'wl@wlte.net' option password 'p123456w' option dialnumber '*99***1#' option metric '0' option keepalive '3 30' option demand '0' 「option keepalive」は、たぶん応答不能時の再接続機能と理解した。 回線が生きてるかどうかを30秒間隔で生存確認して、3回失敗したら再接続モードに入る、はず。 なお、上記のluci-proto-3gを入れる前に、opkgをつかって「comgt」を入れた場合、 root@WZR-HP-G301NH-OpenWrt15:/# opkg install --force-depends luci-proto-3g Installing luci-proto-3g (git-15.248.30277-3836b45-1) to root... Downloading http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/luci/luci-proto-3g_git-15.248.30277-3836b45-1_all.ipk. Configuring luci-proto-3g. Collected errors: * satisfy_dependencies_for: Cannot satisfy the following dependencies for luci-proto-3g: * comgt * というエラーが出て、依存関係のエラーで、luci-proto-3gを追加できなくなる。 「--force-depends」をつけても、エラーになってしまい続行できなかった。 この状態になってしまうと、opkg remove comgt をやっても、comgtは入ってないよ、といわれて removeができなかった。 仕方が無いので今回は、直前にバックアップしていた/overlay全体のtar.gzをつかって、 opkgでcomgtをいれてないときまで巻き戻した。バックアップをしていない場合は初期化するのが早いと思う。 巻き戻した後、「luci-proto-3g」を導入し、その後にUSBシリアル変換関連のパッケージを導入して、 正常動作を確認できた。 *ここからは、接続している状態で、切断と再接続の挙動記録 電源を投入して、L-02Cのダイヤルアップが自動で走って完了し、正常な状態のとき、 ifdown 3g を実行する。 とたんに、以下のログが出る root@WZR-HP-G301NH-OpenWrt15:/# logread -f Thu Mar 10 17:39:39 2016 daemon.info pppd[1598]: Terminating on signal 15 Thu Mar 10 17:39:39 2016 daemon.info pppd[1598]: Connect time 1.7 minutes. Thu Mar 10 17:39:39 2016 daemon.info pppd[1598]: Sent 1681 bytes, received 910 bytes. Thu Mar 10 17:39:39 2016 daemon.notice netifd: Network device '3g-3g' link is down Thu Mar 10 17:39:39 2016 daemon.notice pppd[1598]: Connection terminated. Thu Mar 10 17:39:39 2016 daemon.info pppd[1598]: Exit. Thu Mar 10 17:39:39 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 17:39:39 2016 daemon.info dnsmasq[1690]: reading /tmp/resolv.conf.auto Thu Mar 10 17:39:39 2016 daemon.info dnsmasq[1690]: using local addresses only for domain lan Thu Mar 10 17:39:39 2016 daemon.info dnsmasq[1690]: using nameserver 192.168.XXX.1#53 ifup 3g を実行すると、以下のようにエラーが延々と続く。 Thu Mar 10 17:41:12 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:41:14 2016 daemon.notice pppd[2201]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 17:41:15 2016 local2.info chat[2203]: abort on (BUSY) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: abort on (NO CARRIER) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: abort on (ERROR) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: report (CONNECT) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: timeout set to 10 seconds Thu Mar 10 17:41:15 2016 local2.info chat[2203]: send (AT&F^M) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: expect (OK) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: AT&F^M^M Thu Mar 10 17:41:15 2016 local2.info chat[2203]: OK Thu Mar 10 17:41:15 2016 local2.info chat[2203]: -- got it Thu Mar 10 17:41:15 2016 local2.info chat[2203]: send (ATE1^M) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: expect (OK) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: ^M Thu Mar 10 17:41:15 2016 local2.info chat[2203]: ATE1^M^M Thu Mar 10 17:41:15 2016 local2.info chat[2203]: OK Thu Mar 10 17:41:15 2016 local2.info chat[2203]: -- got it Thu Mar 10 17:41:15 2016 local2.info chat[2203]: send (AT+CGDCONT=1,"IP","vmobile.jp"^M) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: timeout set to 30 seconds Thu Mar 10 17:41:15 2016 local2.info chat[2203]: expect (OK) Thu Mar 10 17:41:15 2016 local2.info chat[2203]: ^M Thu Mar 10 17:41:15 2016 local2.info chat[2203]: AT+CGDCONT=1,"IP","vmobile.jp"^M^M Thu Mar 10 17:41:15 2016 local2.info chat[2203]: OK Thu Mar 10 17:41:15 2016 local2.info chat[2203]: -- got it Thu Mar 10 17:41:15 2016 local2.info chat[2203]: send (ATD*99***1#^M) Thu Mar 10 17:41:16 2016 local2.info chat[2203]: expect (CONNECT) Thu Mar 10 17:41:16 2016 local2.info chat[2203]: ^M Thu Mar 10 17:41:16 2016 local2.info chat[2203]: ATD*99***1#^M^M Thu Mar 10 17:41:16 2016 local2.info chat[2203]: ERROR Thu Mar 10 17:41:16 2016 local2.info chat[2203]: -- failed Thu Mar 10 17:41:16 2016 local2.info chat[2203]: Failed (ERROR) Thu Mar 10 17:41:16 2016 daemon.err pppd[2201]: Connect script failed Thu Mar 10 17:41:17 2016 daemon.info pppd[2201]: Exit. Thu Mar 10 17:41:17 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 17:41:17 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:41:19 2016 daemon.notice pppd[2223]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 17:41:20 2016 local2.info chat[2225]: abort on (BUSY) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: abort on (NO CARRIER) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: abort on (ERROR) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: report (CONNECT) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: timeout set to 10 seconds Thu Mar 10 17:41:20 2016 local2.info chat[2225]: send (AT&F^M) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: expect (OK) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: AT&F^M^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: OK Thu Mar 10 17:41:20 2016 local2.info chat[2225]: -- got it Thu Mar 10 17:41:20 2016 local2.info chat[2225]: send (ATE1^M) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: expect (OK) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: ^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: ATE1^M^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: OK Thu Mar 10 17:41:20 2016 local2.info chat[2225]: -- got it Thu Mar 10 17:41:20 2016 local2.info chat[2225]: send (AT+CGDCONT=1,"IP","vmobile.jp"^M) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: timeout set to 30 seconds Thu Mar 10 17:41:20 2016 local2.info chat[2225]: expect (OK) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: ^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: AT+CGDCONT=1,"IP","vmobile.jp"^M^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: OK Thu Mar 10 17:41:20 2016 local2.info chat[2225]: -- got it Thu Mar 10 17:41:20 2016 local2.info chat[2225]: send (ATD*99***1#^M) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: expect (CONNECT) Thu Mar 10 17:41:20 2016 local2.info chat[2225]: ^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: ATD*99***1#^M^M Thu Mar 10 17:41:20 2016 local2.info chat[2225]: ERROR Thu Mar 10 17:41:20 2016 local2.info chat[2225]: -- failed Thu Mar 10 17:41:20 2016 local2.info chat[2225]: Failed (ERROR) Thu Mar 10 17:41:20 2016 daemon.err pppd[2223]: Connect script failed Thu Mar 10 17:41:21 2016 daemon.info pppd[2223]: Exit. Thu Mar 10 17:41:21 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 17:41:21 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:41:23 2016 daemon.notice pppd[2245]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 17:41:24 2016 local2.info chat[2247]: abort on (BUSY) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: abort on (NO CARRIER) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: abort on (ERROR) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: report (CONNECT) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: timeout set to 10 seconds Thu Mar 10 17:41:24 2016 local2.info chat[2247]: send (AT&F^M) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: expect (OK) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: AT&F^M^M Thu Mar 10 17:41:24 2016 local2.info chat[2247]: OK Thu Mar 10 17:41:24 2016 local2.info chat[2247]: -- got it Thu Mar 10 17:41:24 2016 local2.info chat[2247]: send (ATE1^M) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: expect (OK) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: ^M Thu Mar 10 17:41:24 2016 local2.info chat[2247]: ATE1^M^M Thu Mar 10 17:41:24 2016 local2.info chat[2247]: OK Thu Mar 10 17:41:24 2016 local2.info chat[2247]: -- got it Thu Mar 10 17:41:24 2016 local2.info chat[2247]: send (AT+CGDCONT=1,"IP","vmobile.jp"^M) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: timeout set to 30 seconds Thu Mar 10 17:41:24 2016 local2.info chat[2247]: expect (OK) Thu Mar 10 17:41:24 2016 local2.info chat[2247]: ^M Thu Mar 10 17:41:24 2016 local2.info chat[2247]: AT+CGDCONT=1,"IP","vmobile.jp"^M^M Thu Mar 10 17:41:24 2016 local2.info chat[2247]: OK Thu Mar 10 17:41:24 2016 local2.info chat[2247]: -- got it Thu Mar 10 17:41:24 2016 local2.info chat[2247]: send (ATD*99***1#^M) Thu Mar 10 17:41:25 2016 local2.info chat[2247]: expect (CONNECT) Thu Mar 10 17:41:25 2016 local2.info chat[2247]: ^M Thu Mar 10 17:41:25 2016 local2.info chat[2247]: ATD*99***1#^M^M Thu Mar 10 17:41:25 2016 local2.info chat[2247]: ERROR Thu Mar 10 17:41:25 2016 local2.info chat[2247]: -- failed Thu Mar 10 17:41:25 2016 local2.info chat[2247]: Failed (ERROR) Thu Mar 10 17:41:25 2016 daemon.err pppd[2245]: Connect script failed Thu Mar 10 17:41:26 2016 daemon.info pppd[2245]: Exit. Thu Mar 10 17:41:26 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 17:41:26 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:41:28 2016 daemon.notice pppd[2267]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 17:41:29 2016 local2.info chat[2269]: abort on (BUSY) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: abort on (NO CARRIER) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: abort on (ERROR) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: report (CONNECT) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: timeout set to 10 seconds Thu Mar 10 17:41:29 2016 local2.info chat[2269]: send (AT&F^M) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: expect (OK) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: AT&F^M^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: OK Thu Mar 10 17:41:29 2016 local2.info chat[2269]: -- got it Thu Mar 10 17:41:29 2016 local2.info chat[2269]: send (ATE1^M) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: expect (OK) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ATE1^M^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: OK Thu Mar 10 17:41:29 2016 local2.info chat[2269]: -- got it Thu Mar 10 17:41:29 2016 local2.info chat[2269]: send (AT+CGDCONT=1,"IP","vmobile.jp"^M) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: timeout set to 30 seconds Thu Mar 10 17:41:29 2016 local2.info chat[2269]: expect (OK) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: AT+CGDCONT=1,"IP","vmobile.jp"^M^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: OK Thu Mar 10 17:41:29 2016 local2.info chat[2269]: -- got it Thu Mar 10 17:41:29 2016 local2.info chat[2269]: send (ATD*99***1#^M) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: expect (CONNECT) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ATD*99***1#^M^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ERROR Thu Mar 10 17:41:29 2016 local2.info chat[2269]: -- failed Thu Mar 10 17:41:29 2016 local2.info chat[2269]: Failed (ERROR) Thu Mar 10 17:41:29 2016 daemon.err pppd[2267]: Connect script failed Thu Mar 10 17:41:30 2016 daemon.info pppd[2267]: Exit. Thu Mar 10 17:41:30 2016 daemon.notice netifd: Interface '3g' is now down これ以下、同じエラー状態が、延々とループされる USBバスから、L-02Cを引っこ抜く Thu Mar 10 17:41:39 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 17:41:39 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:41:41 2016 daemon.notice pppd[2333]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.180000] usb 1-1: USB disconnect, device number 2 Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.180000] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0 Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.190000] option 1-1:1.0: device disconnected Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.190000] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1 Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.200000] option 1-1:1.1: device disconnected Thu Mar 10 17:41:42 2016 kern.err kernel: [ 258.220000] option1 ttyUSB2: usb_wwan_indat_callback: resubmit read urb failed. (-19) Thu Mar 10 17:41:42 2016 kern.err kernel: [ 258.220000] option1 ttyUSB2: usb_wwan_indat_callback: resubmit read urb failed. (-19) Thu Mar 10 17:41:42 2016 kern.err kernel: [ 258.230000] option1 ttyUSB2: usb_wwan_indat_callback: resubmit read urb failed. (-19) Thu Mar 10 17:41:42 2016 kern.err kernel: [ 258.240000] option1 ttyUSB2: usb_wwan_indat_callback: resubmit read urb failed. (-19) Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.280000] option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2 Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.280000] option 1-1:1.2: device disconnected Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.290000] option1 ttyUSB3: GSM modem (1-port) converter now disconnected from ttyUSB3 Thu Mar 10 17:41:42 2016 kern.info kernel: [ 258.300000] option 1-1:1.3: device disconnected Thu Mar 10 17:41:42 2016 local2.err chat[2358]: Can't get terminal parameters: Input/output error Thu Mar 10 17:41:42 2016 daemon.err pppd[2333]: Connect script failed Thu Mar 10 17:41:43 2016 daemon.info pppd[2333]: Exit. Thu Mar 10 17:41:43 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 17:41:43 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:41:44 2016 daemon.notice netifd: Interface '3g' is now down ここでログの出力が途切れて落ち着く L-02Cを、再度差し込む Thu Mar 10 17:46:16 2016 kern.info kernel: [ 532.600000] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3 Thu Mar 10 17:46:19 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 17:46:21 2016 daemon.notice pppd[2723]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 17:46:22 2016 local2.info chat[2725]: abort on (BUSY) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: abort on (NO CARRIER) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: abort on (ERROR) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: report (CONNECT) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: timeout set to 10 seconds Thu Mar 10 17:46:22 2016 local2.info chat[2725]: send (AT&F^M) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: expect (OK) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: AT&F^M^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: OK Thu Mar 10 17:46:22 2016 local2.info chat[2725]: -- got it Thu Mar 10 17:46:22 2016 local2.info chat[2725]: send (ATE1^M) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: expect (OK) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: ^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: ATE1^M^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: OK Thu Mar 10 17:46:22 2016 local2.info chat[2725]: -- got it Thu Mar 10 17:46:22 2016 local2.info chat[2725]: send (AT+CGDCONT=1,"IP","vmobile.jp"^M) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: timeout set to 30 seconds Thu Mar 10 17:46:22 2016 local2.info chat[2725]: expect (OK) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: ^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: AT+CGDCONT=1,"IP","vmobile.jp"^M^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: OK Thu Mar 10 17:46:22 2016 local2.info chat[2725]: -- got it Thu Mar 10 17:46:22 2016 local2.info chat[2725]: send (ATD*99***1#^M) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: expect (CONNECT) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: ^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: ATD*99***1#^M^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: CONNECT Thu Mar 10 17:46:22 2016 local2.info chat[2725]: -- got it Thu Mar 10 17:46:22 2016 local2.info chat[2725]: send ( ^M) Thu Mar 10 17:46:22 2016 daemon.info pppd[2723]: Serial connection established. Thu Mar 10 17:46:22 2016 daemon.info pppd[2723]: Using interface 3g-3g Thu Mar 10 17:46:22 2016 daemon.notice pppd[2723]: Connect: 3g-3g <--> /dev/ttyUSB2 Thu Mar 10 17:46:22 2016 kern.info kernel: [ 538.970000] 3g-3g: renamed from ppp0 Thu Mar 10 17:46:23 2016 daemon.info pppd[2723]: CHAP authentication succeeded Thu Mar 10 17:46:23 2016 daemon.notice pppd[2723]: CHAP authentication succeeded Thu Mar 10 17:46:25 2016 daemon.warn pppd[2723]: Could not determine remote IP address: defaulting to 10.64.64.64 Thu Mar 10 17:46:25 2016 daemon.notice pppd[2723]: local IP address 100.92.150.5 Thu Mar 10 17:46:25 2016 daemon.notice pppd[2723]: remote IP address 10.64.64.64 Thu Mar 10 17:46:25 2016 daemon.notice pppd[2723]: primary DNS address 202.232.2.2 Thu Mar 10 17:46:25 2016 daemon.notice pppd[2723]: secondary DNS address 202.232.2.3 Thu Mar 10 17:46:25 2016 daemon.notice netifd: Network device '3g-3g' link is up Thu Mar 10 17:46:25 2016 daemon.notice netifd: Interface '3g' is now up Thu Mar 10 17:46:25 2016 daemon.info dnsmasq[1690]: reading /tmp/resolv.conf.auto Thu Mar 10 17:46:25 2016 daemon.info dnsmasq[1690]: using local addresses only for domain lan Thu Mar 10 17:46:25 2016 daemon.info dnsmasq[1690]: using nameserver 202.232.2.2#53 Thu Mar 10 17:46:25 2016 daemon.info dnsmasq[1690]: using nameserver 202.232.2.3#53 Thu Mar 10 17:46:25 2016 daemon.info dnsmasq[1690]: using nameserver 192.168.XXX.1#53 Thu Mar 10 17:46:25 2016 user.notice firewall: Reloading firewall due to ifup of 3g (3g-3g) ここでログの出力が途切れて落ち着く 別の実験。LuCIの管理画面で、インターフェース「3G」項目で「停止」「開始」を押したときの挙動 接続が完了している状態で「停止」をおす Thu Mar 10 18:12:00 2016 daemon.info pppd[2723]: Terminating on signal 15 Thu Mar 10 18:12:00 2016 daemon.info pppd[2723]: Connect time 25.6 minutes. Thu Mar 10 18:12:00 2016 daemon.info pppd[2723]: Sent 1776 bytes, received 1462 bytes. Thu Mar 10 18:12:00 2016 daemon.notice pppd[2723]: Connection terminated. Thu Mar 10 18:12:00 2016 daemon.notice netifd: Network device '3g-3g' link is down Thu Mar 10 18:12:00 2016 daemon.info pppd[2723]: Exit. Thu Mar 10 18:12:00 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 18:12:00 2016 daemon.info dnsmasq[1690]: reading /tmp/resolv.conf.auto Thu Mar 10 18:12:00 2016 daemon.info dnsmasq[1690]: using local addresses only for domain lan Thu Mar 10 18:12:00 2016 daemon.info dnsmasq[1690]: using nameserver 192.168.XXX.1#53 インターフェースの3Gアイコンは、色のついた状態から灰色になり、 RX: 0.00 B (0 パケット) TX: 0.00 B (0 パケット)となる。 ここで、「開始」をおす Thu Mar 10 18:12:50 2016 daemon.notice netifd: Interface '3g' is setting up now Thu Mar 10 18:12:52 2016 daemon.notice pppd[3037]: pppd 2.4.7 started by root, uid 0 Thu Mar 10 18:12:53 2016 local2.info chat[3039]: abort on (BUSY) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: abort on (NO CARRIER) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: abort on (ERROR) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: report (CONNECT) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: timeout set to 10 seconds Thu Mar 10 18:12:53 2016 local2.info chat[3039]: send (AT&F^M) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: expect (OK) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: AT&F^M^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: OK Thu Mar 10 18:12:53 2016 local2.info chat[3039]: -- got it Thu Mar 10 18:12:53 2016 local2.info chat[3039]: send (ATE1^M) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: expect (OK) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: ^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: ATE1^M^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: OK Thu Mar 10 18:12:53 2016 local2.info chat[3039]: -- got it Thu Mar 10 18:12:53 2016 local2.info chat[3039]: send (AT+CGDCONT=1,"IP","vmobile.jp"^M) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: timeout set to 30 seconds Thu Mar 10 18:12:53 2016 local2.info chat[3039]: expect (OK) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: ^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: AT+CGDCONT=1,"IP","vmobile.jp"^M^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: OK Thu Mar 10 18:12:53 2016 local2.info chat[3039]: -- got it Thu Mar 10 18:12:53 2016 local2.info chat[3039]: send (ATD*99***1#^M) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: expect (CONNECT) Thu Mar 10 18:12:53 2016 local2.info chat[3039]: ^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: ATD*99***1#^M^M Thu Mar 10 18:12:53 2016 local2.info chat[3039]: ERROR Thu Mar 10 18:12:53 2016 local2.info chat[3039]: -- failed Thu Mar 10 18:12:53 2016 local2.info chat[3039]: Failed (ERROR) Thu Mar 10 18:12:53 2016 daemon.err pppd[3037]: Connect script failed Thu Mar 10 18:12:54 2016 daemon.info pppd[3037]: Exit. Thu Mar 10 18:12:55 2016 daemon.notice netifd: Interface '3g' is now down Thu Mar 10 18:12:55 2016 daemon.notice netifd: Interface '3g' is setting up now 開始を押しても、アイコンは灰色のままで、復旧してくれない。 この症状は、telnet上から手動でifdown 3g /ifup 3g したときと、全く同じだ。 *問題点まとめ USBポート付きルータ + openwrt + L-02Cをつかって、基本的なデータ通信はできる。 ただしいったん途切れるとリブートするまで再接続できない。 LuCIの管理画面で停止と開始をおこなう、あるいはtelnetやシェルスクリプト上で 手動でifdown/ifupを行うと、リブートするまで、再接続できなくなる。 本体をリブートするか、L-02Cを抜き取ったと認識される状況になれば、再接続ができる。 gpioの制御コマンドを使ってUSBの電源を切断/接続のできるWZR-HP-AG300H等であれば、 スクリプトを組んで、リブートさせずに、手動で再認識させることはできる。 切断と再接続のスクリプト例 (anonymous[sage] 投稿日:2014/10/25(土) 11:52:45.07 氏 制作) ifdown 3g echo 0 > /sys/devices/virtual/gpio/gpio2/value sleep 2 echo 1 > /sys/devices/virtual/gpio/gpio2/value ifup 3g できれば、リブートやUSBの切断を行わずに再接続させたいが、やりかたがわからない。 *20160712追記。問題点解決への道。再接続方法(ほぼ問題なく動いている) USB接続されたモデムのシリアルポートに対して、自動制御というか 半自動オートパイロット的なやりとりを実現しているのは chatという拡張子のスクリプトが実現していることがわかりました。 以下の場所に、3Gモデムを接続するまでのスクリプトの実体が入っていました。 /etc/chatscripts/3g.chat 内容は以下の通り。 ABORT BUSY ABORT 'NO CARRIER' ABORT ERROR REPORT CONNECT TIMEOUT 10 "" "AT&F" OK "ATE1" OK 'AT+CGDCONT=1,"IP","$USE_APN"' SAY "Calling UMTS/GPRS" TIMEOUT 30 OK "ATD$DIALNUMBER" CONNECT ' ' 解釈すると、BUSY か NO CARRIER か ERRORが帰ってきたら、 失敗とみなして、その時点でスクリプトを中断してエラーとして終了。 各コマンドは、OKと帰ってくるはずなので、それが到来するまで待つ。 CONNECTが帰ってきたら正常として終了、と言うことでしょう。 「timeout set to 30 seconds」は、ダイヤルして応答を得られるまで、 30秒後をタイムアウトとして設定するよ、という意味だと思う。 この解釈でログを見直すと、30秒でタイムアウトしてるんじゃなくて、 30秒たたないうちに即座にエラー結果が帰ってきたので、異常の扱いとして スクリプトが終了する。それを延々と繰り返す動作になってることがわかった。 エラーを繰り返している時 Thu Mar 10 17:41:29 2016 local2.info chat[2269]: send (ATD*99***1#^M) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: expect (CONNECT) Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ATD*99***1#^M^M Thu Mar 10 17:41:29 2016 local2.info chat[2269]: ERROR Thu Mar 10 17:41:29 2016 local2.info chat[2269]: -- failed 正常に接続できたとき Thu Mar 10 17:46:22 2016 local2.info chat[2725]: send (ATD*99***1#^M) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: expect (CONNECT) Thu Mar 10 17:46:22 2016 local2.info chat[2725]: ATD*99***1#^M^M Thu Mar 10 17:46:22 2016 local2.info chat[2725]: CONNECT Thu Mar 10 17:46:22 2016 local2.info chat[2725]: -- got it 上記で、 ATD*99***1#^M^M を送って、expect (CONNECT) で、CONNECTという文字が来るのを期待したが、 実際の返答は ERROR が帰ってきたので、エラーとして処理が進み、 Connect script failed を吐いて終了、という流れ。問題は、なぜERRORが帰ってくるのか。 chatスクリプトの、下から2行目に、ATDコマンドが書かれています。 2ch掲示板でヒントをいただき、以下のようにオフフック・オンフックを 切り替えるHという文字を付け加えてみました。 OK "ATD$DIALNUMBER" ↓ OK "ATHD$DIALNUMBER" この「H」の1文字を追加して保存します。 次に、インターフェースの設定の見直しです。LuCIのインターフェースの3Gを開き、 詳細設定を押して、 LCP echo 失敗数しきい値 LCP echo 送信間隔 この2つは標準状態では空白のはずですが、値を入れている場合は、空白にしてください。 これが入っていると、タイムアウトのカウント時間ごとに、正常に接続が維持できていても、 切断になってしまう気がするので。 未使用時タイムアウトは空欄では無く 0 (=切断しない)を入れました。 以上の2つの変更をした結果、ifdown、ifup、LuCIの接続ボタンの操作で、 正常に再接続ができるようになりました。 これらの操作において、ATコマンドにHを入れる改造を施す前では、 L-02Cでは一度も成功しなかったので、明確に改善しました。 ifdownで回線の停止もできますが、L-02Cの「青いランプ」がしばらく消えません。 放置すると水色の表示(LTEではなく3G接続の表示)になりますが、 内部でどうなっているかは、わかりません。 LED表示は気味が悪いけど、ifdownしたあとはパケットは流れないので実害はなさそう。 以上の結果を踏まえて、好きなタイミングで、再接続処理が出来るようになりました。 あとはスクリプト等で創意工夫の世界です。たとえばインターネット先の相手へpingを 定期間隔で飛ばして、10回連続で応答を得られなかった場合は、ifdown/ifupします。 すると、無人環境で調子が悪くなったときに、回線を自動で再接続できます。 *まとめ。L-02Cの回線切断・再接続制御はできたが、L-02Cは小難しいデバイスである このページにまとめた情報は全て、記入者である私が遠隔地に設置して実用で使った「知見」です。 2016年3月、L-02C + openwrt で最初の検証をしてから、4ヶ月ほど実際に運用しています。 L-02Cをつかったwan回線の提供は、私の実地検証下において、なんとか実用になっています。 しかし、長時間にわたる安定稼働は期待できません。L-02Cは、全体的に不可解な動作が多いです。 L-02Cは通電中は常に、側面の白いLEDランプが微速度で点滅しています。 ごくまれに、この点滅が途絶えて、内部でウォッチドッグタイマーが 働いてリセットしてる動作も確認できました。これが起きると回線は必ず不通になります。 これらの挙動は、製造時期の異なる複数台のL-02Cを観察して、 すべてで同じ現象に遭遇しました。 電波状況は問題ない場所なのに、回線が頻繁に途切れたり、 L-02Cの青ランプがついてても実際はwanに出られない状況が頻発するなど、 素直に信用出来ないデバイスです。 回線が途絶えると言うことは、再接続のたびにIPアドレスも変化します。 グローバルIPアドレスが付与されるSIMカードを使って遠隔地の拠点にする場合は、 そのたびにddnsを更新する必要があります。 このddnsの更新も、回線が死んでる途中で更新スクリプトが動いて処理が始まってしまうと、 「更新できなかったよ」という状況が記憶されてしまい、次にいつ再実行されるかなどを、 確認する必要があります。luci-app-ddnsでは動かないことが多いです。 これらの教訓を全て、異常時の修復処理としてシェルスクリプトに実装して、 いつ回線が死んでもリカバリできるような創意工夫が必要です。 これを乗り越えて、なんとか実用になるレベルです。 LTE回線を使ってwan通信できる環境を新規に構築する場合は、 L-02C以外の、別のデバイスを選んだほうが良いかもしれません。 別の視点で考えると、L-02Cを上手に使いこなすことが出来れば、 どんなに不安定なwanデバイスでも実用的に乗りこなせる、といえます。 *資料 lsusb -v したときの、L-02Cの情報 root@WZR-HP-G301NH-OpenWrt15:/# lsusb -v Bus 001 Device 003: ID 1004:618f Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 bDeviceSubClass 2 bDeviceProtocol 1 bMaxPacketSize0 64 idVendor 0x1004 idProduct 0x618f bcdDevice 0.00 iManufacturer 1 NTT DOCOMO, INC. iProduct 2 docomo L02C iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 115 bNumInterfaces 4 bConfigurationValue 1 iConfiguration 4 docomo L02C bmAttributes 0x80 (Bus Powered) MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 bInterfaceSubClass 255 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 bInterfaceSubClass 255 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 bInterfaceSubClass 255 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 5 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 bInterfaceSubClass 255 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 5 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x86 EP 6 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 32 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 239 bDeviceSubClass 2 bDeviceProtocol 1 bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered)

表示オプション

横に並べて表示:
変化行の前後のみ表示: