マルチキャリア対応SORACOM IoT SIMのキャリアを切り替え (WindowsPC + ONYXドングル編)
やりたいこと
windowsPCにSORACOM IoT SIMが入ったONYXドングルをさして通信するときに、使用するキャリアを切り替えたい。
これのRaspiではなくWindowsPC版。
準備
ハードウェアの準備
以下ガイドのとおり実施
※SORACOMのマルチキャリアに対応したSIMを挿入してください。Windowsの設定
以下ガイドの通り実施
切り替え方法
概要
モバイルネットワークへの接続・切断の制御はnetshコマンドを利用し、モデム制御(キャリアのマニュアル選択)については、USBドングルのシリアル通信によりATコマンドで制御を行います。
モバイルネットワークの切断(netsh mbnコマンド)
↓
キャリアの選択(ATコマンド by USBシリアル)
↓
モバイルネットワークへの接続(netsh mbnコマンド)
モバイルネットワーク接続制御
netsh mbn コマンドを使います。
今回使うのは以下のコマンドです。
- モバイルネットワークからの切断
netsh mbn disconnect interface="携帯電話"
- モバイルネットワークへの接続
netsh mbn connect interface="携帯電話" connmode=name name=MyProfileName
MyProfileNameには以下のコマンドの結果を入れます。
netsh mbn show profiles
赤枠部分がMyProfileName
netsh mbn コマンドについての詳細はこちら
ATコマンド
ONYXドングルが使用しているQuectel社EG25-GのATコマンドマニュアルに従い、通信キャリアをマニュアルで選択します。
利用するのは、AT+COPS
です。
以下のような構文となっています。
AT+COPS=<mode>[,<format>[,<oper>[,<Act>]]]
今回は各パラメータには以下を入れます。
<mode> : 1
今回選択する1は、"Manual operator selection." を意味します。
<format> : 2
今回選択する2は、"Short format alphanumeric <oper>" を意味します。
<oper>
選択するキャリアのplmnを入力します。
Docomoの場合 : "44010"
Softbankの場合 : "44020"
KDDIの場合 : "44051"
<Act> : 7
今回選択する7は、"E-UTRAN" を意味します。
メーカーの製品サポートページから、Quectel_EC2x&EG9x&EG2x-G&EM05_Series_AT_Commands_Manual_V2.0
をダウンロードします。
※ダウンロードにはユーザー登録(無料)が必要です。
シリアル通信
こちらのサイトの方法を流用します。
-
COMポートを開く
1.1. デバイスマネージャを確認してCOMポートの番号を調べます。
1.2. Quectel USB AT Port(COM**)を確認します。
以下の例ではCOM6となっています。
# COMポートのインスタンス生成 (COM6、115200bps、パリティ無し)
$c = New-Object System.IO.Ports.SerialPort "COM6",115200 , ([System.IO.Ports.Parity]::None)
# DTR、RTSを設定
$c.DtrEnable = $true
$c.RtsEnable = $true
# ハンドシェイク無し
$c.Handshake=[System.IO.Ports.Handshake]::None
# 改行文字をCR(0x0D)に設定
$c.NewLine = "`r"
# 文字コードをASCIIに設定
$c.Encoding=[System.Text.Encoding]::GetEncoding("ASCII")
# シリアル受信イベントを登録(受信したらコンソールに出力)
$d = Register-ObjectEvent -InputObject $c -EventName "DataReceived" `
-Action {param([System.IO.Ports.SerialPort]$sender, [System.EventArgs]$e) `
Write-Host -NoNewline $sender.ReadExisting()}
# COMポートを開く
$c.Open()
- ATコマンド送信部分
WriteLine()
を使います。()の中には先ほど準備したATコマンドが入ります。
Docomoを選択する場合
$c.WriteLine("AT+COPS=1,2,`"44010`",7")
Softbankを選択する場合
$c.WriteLine("AT+COPS=1,2,`"44020`",7")
KDDIを選択する場合
$c.WriteLine("AT+COPS=1,2,`"44051`",7")
- COMポートを閉じる
# COMポート閉じる
$c.Close()
# イベント登録解除
Unregister-Event $d.Name
# ジョブ削除
Remove-Job $d.id
Discussion