ブログ

USB 3G/LTEドングル UX302NCを動かしてみる

at_takuya.sasaki
2016年12月3日 9時56分

USB 3G/LTEドングルのUX302NC[*1]をArmadillo-440で動作させてみました。 Armadillo-420をご利用の場合は、手順1のプロダクト名は[ Armadillo-420 ] に読み替えてください。

[*1] https://www.ncxx.co.jp/product/ux302nc/

1. ユーザーランド/カーネルのビルド

マニュアルを参照しながら、以下のカーネルコンフィギュレーションを有効化して、ユーザーランドおよびカーネルのビルドを実行してください。

第7章 ビルド手順

Linux Kernel Configuration
Device Drivers  --->
  [*] USB support  --->
    <*>   USB Serial Converter support  --->                  ← 有効化
      [*]   USB Generic Serial Driver                                ← 有効化
      <*>   USB driver for GSM and CDMA modems      ← 有効化

また以降の手順は、atmark-distをATDE5の/home/atmark配下でビルドしており、プロダクト名を [ Armadillo-440 ] で選択していることを前提にしております。異なるディレクトリ配下でビルドしている場合は、読み替えてください。

2. ユーザーランド/カーネルのビルド

ファイルの中身を以下に書き換えます。ユーザー名は、契約しているSIMに応じて記載してください。

atmark@atde5:~$ vi atmark-dist/user/pppd/preinstall/etc/ppp/options

lock
defaultroute
usepeerdns
name ユーザー名

3. 認証ファイルの編集

ファイルの中身を以下に書き換えます。ユーザ名/パスワードは、契約しているSIMに応じて記載してください。

atmark@atde5:~$ vi atmark-dist/user/pppd/preinstall/etc/ppp/pap-secrets

# Secrets for authentication using PAP
# client        server  secret                  IP addresses
ユーザー名 * パスワード

4. scriptsファイルの編集

ファイルの中身を以下に書き換えます。

atmark@atde5:~$ vi atmark-dist/user/pppd/ppp-2.4.4/scripts/ppp-on-dialer

#!/bin/sh
#
# This is part 2 of the ppp-on script. It will pe
# protocol for the desired connection.
#
exec chat -v                        \
    TIMEOUT        3                \
    ABORT        '\nBUSY\r'            \
    ABORT        '\nNO ANSWER\r'            \
    ABORT        '\nRINGING\r\n\r\nRINGING\r'    \
    ''        \rAT                \
    'OK'        ATZ                \
    TIMEOUT        30                \
    OK        ATD*99***1\#                    \
    CONNECT        '\d\c'                \

5. DebianパッケージをATDE5上にコピーして展開します

以下のusbmodeswitch_debian_pkg.tarをATDE5上にコピーして、/home/atmark配下に展開します。
usbmodeswitch_debian_pkg.tar

atmark@atde5:~$ ls debian_pkg.tar 
debian_pkg.tar

atmark@atde5:~$ tar xvf debian_pkg.tar 
./libjim0debian2_0.73-3_armel.deb
./libusb-0.1-4_0.1.12-20+nmu1_armel.deb
./usb-modeswitch-data_20120815-2_all.deb
./usb-modeswitch_1.2.3+repack0-1_armel.deb

6. Debianパッケージをromfs配下に展開

atmark@atde5:~$ dpkg -x libjim0debian2_0.73-3_armel.deb atmark-dist/romfs/
atmark@atde5:~$ dpkg -x libusb-0.1-4_0.1.12-20+nmu1_armel.deb atmark-dist/romfs/
atmark@atde5:~$ dpkg -x usb-modeswitch-data_20120815-2_all.deb  atmark-dist/romfs/
atmark@atde5:~$ dpkg -x usb-modeswitch_1.2.3+repack0-1_armel.deb atmark-dist/romfs/

7. 不要なファイルを削除します。

atmark@atde5:~$ rm -rf atmark-dist/romfs/usr/share/man/
atmark@atde5:~$ rm -rf atmark-dist/romfs/usr/share/doc/

8. make romfsの実行

atmark@atde5:~$ cd atmark-dist
atmark@atde5:~/atmark-dist$ make romfs

9. resolv.confのシンボリックリンクを作成します

atmark@atde5:~/atmark-dist$ ln -s /etc/config/resolv.conf romfs/etc/ppp/resolv.conf

10. イメージの再作成

atmark@atde5:~/atmark-dist$ make image

上記手順で、atmark-dist/imagesフィルダに再作成されたromfs.img.gzとlinux.bin.gzをマニュアルを参考に、Armadillo-440に書き込んで再起動します。

第8章 カーネル/ユーザーランドの配置

以降は、新しいイメージで起動した、Armadillo-440上での操作方法になります。

11. eth0の停止

eth0が有効で、デフォルトゲートウェイがeth0になっている場合、ppp接続時にppp0をデフォルトゲートウェイにすることができないようです。

*このようなログが出ます。

Feb 25 19:04:38 (none) daemon.err pppd[1785]: not replacing existing default route through eth0

よって以下のコマンドでeth0を一度ダウンしてください。

[root@armadillo440-0 (ttymxc1) ~]# ifdown eth0

もし/etc/config/interfacesでeth0を固定IPアドレスにしている場合には、デフォルトゲートウェイはeth0にならないので、この対応は不要です。

ちなみにデフォルトゲートウェイは以下のコマンドで参照できます。

[root@armadillo440-0 (ttymxc1) ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         *               0.0.0.0         U     99     0        0 eth0
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0
192.168.82.0    *               255.255.255.0   U     0      0        0 eth0

12. ppp接続の開始

以下のコマンドを実行すると、pppで3G/LTE接続が可能になります。

Armadillo-440起動時に自動で実行する場合は、/etc/config/rc.localに記述をして、flatfsd -s で変更内容をフラッシュメモリに保存してください。 ただし、usb_modeswitchの後には、1秒以上のsleepを入れてあげてください。

[root@armadillo440-0 (ttymxc1) ~]# echo 11f6 1034 > /sys/bus/usb-serial/drivers/option1/new_id
[root@armadillo440-0 (ttymxc1) ~]# usb_modeswitch -v 11f6 -V 11f6 -p 1035 -P 1034 -M "55534243123456780000000080000606f50402527000000000000000000000"
[root@armadillo440-0 (ttymxc1) ~]# chmod +x /etc/ppp/ppp-on-dialer
[root@armadillo440-0 (ttymxc1) ~]# pppd debug /dev/ttyUSB1 9600 connect /etc/ppp/ppp-on-dialer

※: pppdの引数の「debug」は、必要なければ外してください。 debugをつけると/var/log/messagesに詳細なログが出力されます。

以下のようにIPアドレスが取れていれば成功です。確認できたら、Ctrl-Cでtailコマンドを終了します。

[root@armadillo440-0 (ttymxc1) ~]# tail -f /var/log/messages
~(略)~
Nov 29 14:53:03 (none) daemon.notice pppd[1699]: local  IP address 10.0.24.110
Nov 29 14:53:03 (none) daemon.notice pppd[1699]: remote IP address 10.64.64.64
Nov 29 14:53:03 (none) daemon.notice pppd[1699]: primary   DNS address 103.54.208.97
Nov 29 14:53:03 (none) daemon.notice pppd[1699]: secondary DNS address 103.54.208.98

13. ppp接続の確認

ppp接続が正常にできている場合は、以下の様になります。

[root@armadillo440-0 (ttymxc1) ~]# ifconfig ppp0
ppp0      Link encap:Point-to-Point Protocol
          inet addr:10.0.24.110  P-t-P:10.64.64.64  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:62 (62.0 B)  TX bytes:86 (86.0 B)

試しにgoogleにpingをしてみます。

[root@armadillo440-0 (ttymxc1) ~]# ping -c 3 google.com
PING google.com (172.217.24.142): 56 data bytes
64 bytes from 172.217.24.142: icmp_seq=0 ttl=57 time=35.2 ms
64 bytes from 172.217.24.142: icmp_seq=1 ttl=57 time=57.1 ms
64 bytes from 172.217.24.142: icmp_seq=2 ttl=57 time=44.4 ms

--- google.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 35.2/45.5/57.1 ms

14. pppの切断

ppp接続を切断する場合には、以下のコマンドでppp0を無効にできます。

[root@armadillo440-0 (ttymxc1) ~]# kill `cat /var/run/ppp0.pid`

15. (補足)APNの設定

APNの設定は、UX302NCに対して個々に設定してあげる必要があります。メーカ提供のWindowsドライバを使って Windowsに接続して設定してあげても問題ありませんが、Armadillo-440上で設定してあげるには、以下のコマンドで設定可能です。

[root@armadillo440-0 (ttymxc1) ~]# tip -l /dev/ttyUSB1
Connected.
AT+CGDCONT=1,"IPV4V6","APN名","0.0.0.0",0,0  ←コマンド投入
OK

~. で終了

以上