ラズパイとLTEモデムでpovo2.0につなげる

ラズパイ
この記事は約10分で読めます。

どうして5個も買ってしまったのか…

前回の日記的何かで書いたようにLTEUSBドングルを買いました。

02/11 日記的何か
お久しぶり

予定ではSMS受信をしようと思いましたがどうやらできなさそうなのでその過程でできたpovoにつなげる備忘録

UX302NC

SIMフリーのUSBLTEドングルでWindows、MacOSは標準のソフトで接続できて、ラズパイなどLinux機は一手間加えれば使えます。

docomo、Au、SoftBankはもちろんのこと楽天でも使えるみたいですね。

ヤフオクでは3000円ぐらいで出ていましたが,ちょうど5個で5000円の物があったのでつい買ってしまいました
(そんなつなげる物もSIMも無いのにね)

UX302NCをLinuxで使えるようにする

UX302NCはどの環境でも最初はCDドライブ(ドライバディスク的な)として認識します。(割とこの手のでバイスは同じような挙動をするみたい)

そこで、udevを使い、ドライブを取り外し本命のモデムデバイスを接続するようにします。

多くの記事ではSoracomというIoTデバイス向けのモデム/SIMを販売している企業のセットアップスクリプトを参考にしている見たいですね。(今回はそれにならいます)

Getting Started: Raspberry Pi と USB モデム | 各種デバイスで SORACOM Air を使用する | ソラコムユーザーサイト - SORACOM Users
Raspberry Pi、Android、iOS デバイス、USB モデム、PC、スマートフォン、モバイルルーター

どうやら物によりけりですけど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敗)

やっていることは

  1. CDドライブを取り外し
  2. USBシリアルデバイスとして追加
  3. 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でもできなかったのでこの端末自体対応してない可能性がありそうなので別のを買いました(?)

参考

コメント