Raspberry PIにLTE USBトングル UX302NCを接続する

ロボット

PI4LTEボードが高い割に場所を取るので再度、UX302NCを接続してみることにしました。(マニュアルはここ

もっともお世話になったサイトがガジェライブ!さんのRaspberry PiでSIMフリーのUSBモデムUX302NCを使用する方法

同様の手順を書きます。ひっかかったところは赤字で書いてます。

sudo apt install usb-modeswitch

でUX302NC(SIMはセットしておいてね)を差し込んで、lsusbをすると

Bus 001 Device 007: ID 11f6:1035 Prolific NCXX UX302NC

と出るはずです。

UX302NCの設定を調べていると必ず遭遇するSoracomのセットアップスクリプトを参考にしてもいいですが、いろいろsoracomになるので手動をオススメします。

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'"
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"

ここでラズパイを再起動するのですが、いったん電源を切っておいてください。
なんだかデバイスが更新されなかったことがありました。

再起動後、

ls -l /dev/ttyUSB*

をやると

crw-rw---- 1 root dialout 188, 0  7月 25 22:28 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1  7月 25 22:30 /dev/ttyUSB1
crw-rw---- 1 root dialout 188, 2  7月 25 22:28 /dev/ttyUSB2
crw-rw---- 1 root dialout 188, 3  7月 25 22:28 /dev/ttyUSB3

という感じで認識されています。
これででデバイスとしては動作しているようですー。
次にダイアルアップモデムとして設定します。

wvdialをインストールします。

sudo apt install wvdial

インストールが終了すると設定ファイルのテンプレができていますから編集します。

sudo nano /etc/wvdial.conf[Dialer Defaults]
Phone = *99***1# 
APN = i-aeonmobile.com 
Username = user 
Password = 0000 
New PPPD = yes 
Stupid Mode = yes 
Init1 = ATZ 
Init2 = AT+CGDCONT=1,"IP","i-aeonmobile.com" 
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

変更すべきところは、APN=, Username=, Password=, Init2=のプロバイダー名です。
phoneにかかれている電話番号はこのままでいいのです。なまじっか正しいSIMカードの電話番号を設定し、Errorとなりしばらく悩みまくりました。

ここで

sudo wvdial

とすると、ダイアルアップで繋がり、ifconfigで見ると

ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1464
        inet xxx.xxx.xxx.xxx  netmask 255.255.255.255  destination 10.64.64.64
        ppp  txqueuelen 3  (Point-to-Pointプロトコル)
        RX packets 2001  bytes 1950304 (1.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1658  bytes 209267 (204.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

とppp0ができているはずです。

あとは自動起動させるために

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が繋がります。

やったー!!!

UX302NCは企業で使われていたせいか、ヤフオクで3000円ちょいで結構見かけます。
中古品ですが、機械的に動くところがUSBコネクターのヒンジ部分だけですから写真をよく見て、あまりくたびれてなさそうなものを選べば程度がいいものが手に入るのではないでしょうか。
こうやって繋がると4GPIのアラが目立ちます。

  • わざわざ別途、12V電源が別途必要
  • ラズパイのピンも使う
  • 結局USBポートからのシリアル通信(ケーブルが邪魔)
  • 高価
  • フルサイズのSIMカードが必要でイマドキじゃない

設計者のスキルが低いんでしょうね。
唯一いい点は日本人が大好きな「サポートがある」ということだけです。

実用上はUSBトングルがオススメ。