UX302NC を Raspberry Pi2 で動かす

LTEのクアッドバンド対応のUSBデータ通信機器 NCXX UX302NC を libqmi を使って Raspberry Pi2 で動かします。

目次
  1. UX302NC ファームウエアの更新
  2. Raspberry Pi2 の準備
  3. libqmi の導入
  4. 確認作業
  5. 接続方法
  6. まとめ

1.UX302NC ファームウエアの更新

2015年10月9日に最新のファームウェアが公開されていますので、この際に更新しておきます。

2.Raspberry Pi2 の準備

Raspberry Pi2 の準備をします。Raspbian Jessie をインストールします。

USBインタフェースの総出力電流を500maから1.2Aまで上げる設定をします。外部電源は5V2A程度のものを用意しておきましょう。

$ sudo vi /boot/config.txt 
safe_mode_gpio=4
max_usb_current=1

3.libqmiの導入

libqmi を導入すると、シリアル接続やPPPを使わないで UX302NC をネットワークカードのように扱えます。先日の「UX302NC の CD-ROM を解除」を参考にしながら、APN情報(IIJmio)、udevルールまで作成します。

$ sudo apt-get install sg3-utils libqmi-utils
$ sudo vi /etc/udev/rules.d/99-ux302nc.rules 
# for NCXX UX302NC
SUBSYSTEMS=="scsi", ATTRS{vendor}=="USBModem", KERNEL=="sg*", RUN+="/bin/sleep 1", RUN+="/usr/bin/sg_raw /dev/%k 06 f5 04 02 52 70"
SUBSYSTEM=="usb", ATTR{idVendor}=="11f6", ATTR{idProduct}=="1034", RUN+="/sbin/modprobe -b qmi_wwan"
SUBSYSTEM=="drivers", ENV{DEVPATH}=="/bus/usb/drivers/qmi_wwan", ATTR{new_id}="11f6 1034"
SUBSYSTEM=="usb", ATTR{idVendor}=="11f6", ATTR{idProduct}=="1034", RUN+="/sbin/modprobe -b qcserial"
SUBSYSTEM=="drivers", ENV{DEVPATH}=="/bus/usb-serial/drivers/qcserial", ATTR{new_id}="11f6 1034"
$ sudo sh -c "echo 'APN=iijmio.jp,PAP,mio@iij,iij' > /etc/qmi-network.conf"

ここで一旦、ux302ncを刺して再起動して確認します。

4.確認作業

再起動後にいろいろと確認しておきます。

$ lsusb
Bus 001 Device 006: ID 11f6:1034 Prolific
$ lsmod
Module                  Size  Used by
qcserial                4772  0 
usb_wwan                4906  1 qcserial
usbserial              22526  2 qcserial,usb_wwan
qmi_wwan               11176  0 
cdc_wdm                 9705  1 qmi_wwan
$ usb-devices
T:  Bus=01 Lev=02 Prnt=02 Port=03 Cnt=03 Dev#=  6 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=11f6 ProdID=1034 Rev=02.32
S:  Manufacturer=NCXX Inc.
S:  Product=NCXX UX302NC
C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qcserial
I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qcserial
I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
$ ls -l /dev
total 0
crw------- 1 root root    180, 176 Feb 17 23:46 cdc-wdm0
crw-rw---- 1 root dialout 188,   0 Feb 17 23:46 ttyUSB0
crw-rw---- 1 root dialout 188,   1 Feb 17 23:46 ttyUSB1
$ ifconfig wwan0
wwan0     Link encap:Ethernet  HWaddr f2:38:44:36:7f:8c  
          inet addr:169.254.28.149  Bcast:169.254.255.255  Mask:255.255.0.0
          inet6 addr: fe80::59e5:6194:afd6:2890/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:95 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:28438 (27.7 KiB)

5.接続方法

接続してみます。

$ sudo qmi-network /dev/cdc-wdm0 start
Loading profile...
    APN: iijmio.jp,PAP,mio@iij,iij
Starting network with 'qmicli -d /dev/cdc-wdm0 --wds-start-network=iijmio.jp,PAP,mio@iij,iij  --client-no-release-cid'...
Saving state... (CID: 25)
Saving state... (PDH: 90631296)
Network started successfully

数秒するとDHCPが機能してwwan0に割り当てられたIPアドレスが変わっているのがわかります。

$ ifconfig wwan0
wwan0     Link encap:Ethernet  HWaddr f2:38:44:36:7f:8c  
          inet addr:100.73.183.126  Bcast:100.73.183.126  Mask:255.255.255.255
          inet6 addr: fe80::59e5:6194:afd6:2890/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:143 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:662 (662.0 B)  TX bytes:42425 (41.4 KiB)
$ cat /var/log/daemon.log | grep wwan0
dhcpcd[540]: wwan0: offered 100.66.119.244 from 202.232.2.2
dhcpcd[540]: wwan0: leased 100.66.119.244 for 7200 seconds
avahi-daemon[337]: Registering new address record for 100.66.119.244 on wwan0.IPv4.
dhcpcd[540]: wwan0: router 202.232.2.2 requires a host route
dhcpcd[540]: wwan0: adding host route to 202.232.2.2
avahi-daemon[337]: Withdrawing address record for 169.254.187.228 on wwan0.
avahi-daemon[337]: Leaving mDNS multicast group on interface wwan0.IPv4 with address 169.254.187.228.
avahi-daemon[337]: Joining mDNS multicast group on interface wwan0.IPv4 with address 100.66.119.244.
dhcpcd[540]: wwan0: adding default route via 202.232.2.2
dhcpcd[540]: wwan0: deleting route to 169.254.0.0/16
ntpd[563]: Listen normally on 10 wwan0 100.66.119.244 UDP 123
ntpd[563]: Deleting interface #9 wwan0, 169.254.187.228#123, interface stats: received=0, sent=0, dropped=0, active_time=118 secs
$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    202    0        0 eth0
default         ns2.iij4u.or.jp 0.0.0.0         UG    303    0        0 wwan0
192.168.1.0     *               255.255.255.0   U     202    0        0 eth0
ns2.iij4u.or.jp *               255.255.255.255 UH    303    0        0 wwan0

接続を止めます。

$ sudo qmi-network /dev/cdc-wdm0 stop
Loading profile...
    APN: iijmio.jp,PAP,mio@iij,iij
Loading previous state...
    Previous CID: 25
    Previous PDH: 90631296
Stopping network with 'qmicli -d /dev/cdc-wdm0 --wds-stop-network=90631296 --client-cid=25'...
Network stopped successfully
Clearing state...

6.まとめ


mbim_qmi

  • シリアル接続以外の接続方法は、libqmi以外ではlibmbimがあります。この辺の関係をAleksander Morgadoさんが≪こちらの英語のPDF≫にわかり易くまとめてくれています。日本語の情報が少ないので概念を理解するのに役立ちました。
  • qmicli –help で様々な情報が得られるのがわかります。

関連記事

コメントを残す

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