どうして5個も買ってしまったのか…
前回の日記的何かで書いたようにLTEUSBドングルを買いました。
予定ではSMS受信をしようと思いましたがどうやらできなさそうなのでその過程でできたpovoにつなげる備忘録
UX302NC
SIMフリーのUSBLTEドングルでWindows、MacOSは標準のソフトで接続できて、ラズパイなどLinux機は一手間加えれば使えます。
docomo、Au、SoftBankはもちろんのこと楽天でも使えるみたいですね。
ヤフオクでは3000円ぐらいで出ていましたが,ちょうど5個で5000円の物があったのでつい買ってしまいました
(そんなつなげる物もSIMも無いのにね)
UX302NCをLinuxで使えるようにする
UX302NCはどの環境でも最初はCDドライブ(ドライバディスク的な)として認識します。(割とこの手のでバイスは同じような挙動をするみたい)
そこで、udevを使い、ドライブを取り外し本命のモデムデバイスを接続するようにします。
多くの記事ではSoracomというIoTデバイス向けのモデム/SIMを販売している企業のセットアップスクリプトを参考にしている見たいですね。(今回はそれにならいます)
どうやら物によりけりですけどejectコマンドかusb-modeswitchコマンドを使います。
(今回はusb-modeswitch)
またLTE接続もといppp接続はwvdial を使います。
sudo apt install usb-modeswitch wvdial
ひとまず(SIMを指してから)普通に接続するとusbデバイスとして認識します
root@ras41:~# lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 013: ID 11f6:1035 Prolific NCXX UX302NC Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
11f6:1035
というやつですね
これをもとにudevのルールを追加します
vim /etc/udev/rules.d/99-ux302nc.rules
#UX302NCをイジェクト 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"
ほぼ参考元のコピペですが、コメントの位置は先頭にしないと読み込まれません(1敗)
やっていることは
- CDドライブを取り外し
- USBシリアルデバイスとして追加
- ttyUSB1へシンボリックリンクを生やす
ここで再起動するか次のコマンドを実行して読み込みなおしてから再接続するとttyUSBデバイスとして認識します。
udevadm trigger
root@ras41:~# lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 015: ID 11f6:1034 Prolific NCXX UX302NC Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub root@ras41:~# ls /dev/ttyUSB* /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 root@ras41:~# ls /dev/ux302nc /dev/ux302nc
povo2.0へLTE接続する
初期状態はOCNの設定なのでAPN設定を含めた設定をwavdailで書き込みます
一応シリアルコンソールからも設定できます
cat /etc/wvdial.conf
[Dialer Defaults] Phone = *99***1# APN = povo.jp Username = [email protected] Password = povo New PPPD = yes Stupid Mode = yes Init1 = ATZ Init2 = AT+CGDCONT=1,"IPV4V6","povo.jp" Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init4 = AT+CMGF=1 Dial Attempts = 3 Modem Type = Analog Modem Modem = /dev/ux302nc Dial Command = ATD Carrier Check = no ISDN = 0
内容としては
- デフォルトコンフィグにリセット(ATZ)
- APNプロファイル1にpovoの設定(AT+CGDCONT)
- 出力抑制(ATQ)
- SMS受信設定?(AT+CMGF)
- プロファイル1を利用してpovo2.0に接続
をしています
一応povoはログイン認証はいりませんが、最初接続がうまくいかなかったときに設定をして接続できたので一応載せてます。
ここで電波を掴んだ状態(LEDが赤以外で両方とも点滅/点灯している)でwvdialコマンドを実行すると接続できます
掴んでないとき
root@ras41:~# wvdial --> WvDial: Internet dialer version 1.61 --> Initializing modem. --> Sending: ATZ OK --> Sending: AT+CGDCONT=1,"IPV4V6","povo.jp" OK --> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 OK --> Sending: AT+CMGF=1 AT+CMGF=1 OK --> Modem initialized. --> Sending: ATD*99***1# --> Waiting for carrier. ATD*99***1# NO CARRIER --> No Carrier! Trying again. --> Sending: ATD*99***1# --> Waiting for carrier. ATD*99***1# NO CARRIER --> No Carrier! Trying again. --> Sending: ATD*99***1# --> Waiting for carrier. ATD*99***1# NO CARRIER --> No Carrier! Trying again. --> Maximum Attempts Exceeded..Aborting!! --> Disconnecting at Mon Feb 12 12:02:47 2024
掴んでるとき
root@ras41:~# wvdial --> WvDial: Internet dialer version 1.61 --> Initializing modem. --> Sending: ATZ ATZ OK --> Sending: AT+CGDCONT=1,"IPV4V6","povo.jp" AT+CGDCONT=1,"IPV4V6","povo.jp" OK --> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 OK --> Sending: AT+CMGF=1 AT+CMGF=1 OK --> Modem initialized. --> Sending: ATD*99***1# --> Waiting for carrier. ATD*99***1# CONNECT 150000000 --> Carrier detected. Starting PPP immediately. --> Starting pppd at Mon Feb 12 12:03:56 2024 --> Pid of pppd: 1139 --> Using interface ppp0 --> local IP address 000.000.000.000 --> remote IP address 000.000.000.000 --> primary DNS address 000.000.000.000 --> secondary DNS address 000.000.000.000
この状態でip a
コマンドで確認するとppp接続できています
root@ras41:~# ip a ~~~~ 4: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 3 link/ppp inet 000.000.000.000 peer 000.000.000.000/32 scope global ppp0 valid_lft forever preferred_lft forever
あとはサービス化とルーティングを調整してあげれば通信できそうですね(本命ではないので省略)
SMS受信もできてくれればよかったのですがpovo2.0やOCNでもできなかったのでこの端末自体対応してない可能性がありそうなので別のを買いました(?)
参考
- Raspberry PiでSIMフリーのUSBモデムUX302NCを使用する方法 | ガジェライブ!
- UX302NC 仕様 | UCXX
- AU Speed USB STICK U03 をNEC UNIVERGE IX2215に接続してpovo2.0を使う | Qiita
- Ubuntu 16.04 / 18.04でNCXX UX302NCを自動接続する | Qiita
- 「入力データに誤りかまたは不足しています」と表示が出て、APN設定が完了できません。(SOV35、SOV34、SOV33、SOV32など) | povo2.0
- SORACOM で学ぶ AT コマンド入門 | AT コマンドの概要 | Zenn
- Raspberry PiとSoracom AirでSMSの送受信 | SWITCHSCIENCE MAGAZINE!
- Trouble reading messages with AT+CMGL=”ALL” | stackoverflow
- 5G通信評価をやってみた | MACNICA
- Windowsでpovo2.0が「圏外」になる問題をATコマンドで解決する | kWatanabe の 技術帖
- +CMS ERROR: 304, sending message using at command | stackoverflow
- SIMロック解除したドコモスマホで他社のVoLTE SIMがうまく動かない場合の解決方法 | ITmedia Mobile
コメント