株式会社ネクス製のNCXX UX302NCはSIMフリーのUSBモデム、USB型データ通信端末です。
同じようなスペックのL-03Fを既に持っていますが、こちらはSIMロックがかかっているためそのままではdocomo系のSIMカードしか使用できません。LTEの1.7GHz帯、Band3に対応しているのでSIMロック解除すれば楽天モバイル、Rakuten UN-LIMITのSIMで使えそうですが、そのために3,300円もの手数料を支払うのは躊躇われます。
その手数料とちょうど同じくらいの値段で入手可能な中古のUX302NCを見つけたので、ブログのネタに購入してみたわけですが。
これがなかなか癖のある機種でして、L-03Fと同じように設定してみても上手くいきませんでした。

先人の知恵を借りようとググってみても、UX302NCは入手経路が限られているせいかあまり情報が見つかりません。その限られた情報を組み合わせて試行錯誤していくうちに、何とかラズパイで使えるようになりましたが。
そういうわけで、今後UX302NCを手に入れてラズパイやLinuxで使おうとする奇特な方のためにも、備忘録を兼ねて設定方法をまとめておきます。
ラズパイでUSB型データ通信端末のUX302NCを使用する方法
やることの方向性自体はL-03Fの場合と同じです。UX302NCをラズパイに接続して、USBモデムとして認識させ、wvdialでモバイルネットワークに接続させます。
ただL-03Fとまったく同じやり方では上手くいきませんでした。
UX302NCをUSBモデムとして認識させる
ラズパイのUSBポートにUX302NCを接続すると、CDドライブやストレージとして認識されてしまい、そのままではUSBモデムとして使用できません。
ここでL-03Fではejectコマンドを使いましたが、UX302NCの場合はイジェクトされるもののUSBモデムとしては認識されず上手くいきませんでした。
そこでejectの代わりにusb-modeswitchを使用します。まずはusb-modeswitchをインストールしましょう。
$ sudo apt install usb-modeswitch
ここでUX302NCのidVendorとidProductを確認しておいてください。デフォルトだと以下のように11f6:1035になっているはずです。
$ lsusb Bus 001 Device 006: ID 11f6:1035 Prolific ・ ・ ・
IDを控えたらudevのルールファイルを作成します。
udevを利用してUX302NCの接続を検知するとusb-modeswitchを実行して、USBモデムとして扱うように切り替えさせます。ついでにカーネルモジュールとして読み込ませたり、デバイス名を固定する処理も記述しておきましょう。
ルールファイルの作成方法については、SORACOMが公開しているセットアップスクリプトを参考にさせていただきました。
1から自力で作る場合は、まず以下のようなルールファイルを作成します。前半の2桁の数字と後半の文字列は任意で変更してOKです。
$ sudo nano /etc/udev/rules.d/99-ux302nc.rules
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="11f6", ATTRS{idProduct}=="1035", RUN+="/usr/sbin/usb_modeswitch -v 11f6 -p 1035 -M '55534243123456780000000080000606f50402527000000000000000000000'" #UX302NCをイジェクト ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="11f6", ATTRS{idProduct}=="1034", RUN+="/bin/bash -c 'modprobe option && echo 11f6 1034 > /sys/bus/usb-serial/drivers/option1/new_id'" #カーネルモジュールとして組み込む KERNEL=="ttyUSB*", ATTRS{../idVendor}=="11f6", ATTRS{../idProduct}=="1034", ATTRS{bNumEndpoints}=="03", ATTRS{bInterfaceNumber}=="01", SYMLINK+="ux302nc", ENV{SYSTEMD_WANTS}="ux302nc.service" #デバイスファイル名の固定と依存関係の設定
SYMLINK+=””には任意のデバイス名を、ENV{SYSTEMD_WANTS}=””には任意のサービス名を記述してください。後でそれぞれ使用します。
ルールファイルを作成したらラズパイを再起動して、以下のコマンドを実行してみましょう。ttyUSB0~ttyUSB3が作成されているはずです。
$ ls -l /dev/ttyUSB* crw-rw---- 1 root dialout 188, 0 3月 25 23:55 /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 1 3月 25 23:55 /dev/ttyUSB1 crw-rw---- 1 root dialout 188, 2 3月 25 23:55 /dev/ttyUSB2 crw-rw---- 1 root dialout 188, 3 3月 25 23:55 /dev/ttyUSB3
あるいは以下のコマンドを実行すると、ルールファイルに記述したデバイス名が表示されるはずです。
$ systemctl --type=device --all ・ ・ ・ dev-ux302nc.device loaded active plugged NCXX_UX302NC ・ ・ ・
wvdialをインストールする
wvdialをまだ導入していなければインストールしてAPN情報を設定しておきましょう。
$ sudo apt install wvdial $ sudo nano /etc/wvdial.conf
[Dialer Defaults] Phone = *99***1# APN = rakuten.jp Username = rakuten Password = rakuten New PPPD = yes Stupid Mode = yes Init1 = ATZ Init2 = AT+CGDCONT=1,"IP","rakuten.jp" Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Dial Attempts = 3 Modem Type = Analog Modem Modem = /dev/ux302nc Dial Command = ATD Baud = 460800
systemdで自動起動の設定をする
あとはwvdialを自動実行させるためにsystemdのサービスファイルを作成します。udevと依存関係を持たせるためにルールファイルに記述したファイル名で作成するように気を付けてください。
$ sudo nano /etc/systemd/system/ux302nc.service
[Unit] Description = UX302NC Service Requires = dev-ux302nc.device After = dev-ux302nc.device [Service] Type = simple Restart = always ExecStart = /usr/bin/wvdial
これで仕上げに再起動すれば、UX302NCを接続すると自動的にモバイルネットワークに接続するようになりました。
イジェクト方法が肝でしたが、基本的にやってることはL-03Fと同じです。ただL-03FよりもLTEを掴むまでにかかる時間が長いような気がします。ちゃんと比較してみたわけではありませんが。
UX302NCはLTEの対応バンドがL-03Fと似通っていますが、docomoのクアッドバンドLTE以外にauのプラチナバンドにも対応しています。何よりもデフォルトでSIMフリーなので、わざわざ時間とお金をかけてSIMロック解除なくても、楽天モバイルなどdocomo以外のSIMカードでも使用することが可能です。
さらに、このままだとラズパイしかインターネットに繋げられませんが、ホットスポット化すればホームルーターのように運用することもできます。

楽天モバイルを固定回線的に使いたいのであればラズパイでホームルーターを自作してみるのもアリ…かもしれません。
まとめ
SIMフリーのLTE対応USB型データ通信端末、UX302NCもちゃんと設定してやればラズパイで問題なく使えます。
初めからSIMフリーなので楽天モバイルなどのSIMでも使えますし、docomo系以外のSIMカードで使いたいならL-03FよりもUX302NCのほうがおすすめです。
もっとも、予算が足りるなら初めからWi-Fiを搭載しているUSBドングルやホームルーターを購入したほうが良いでしょうけれども。。
コメント