Wio BG770A + 1NCEで接続先キャリアをPLMN指定する方法
Wio BG770A + 1NCE SIMでLTE-M接続する記事で、1NCEはSoftBankとKDDI両方の基地局に接続できることを見てきました。
通常は自動選択で問題ありませんが、設置場所の事前電波確認をするとき等、キャリアを指定したいケースもあります。
この記事では、Wio BG770AでAT+COPSコマンドを使ってSoftBank・KDDIを指定して接続する手順を紹介します。
PLMNコードとは?
PLMNとは、MCC(Mobile Country Code, 3桁) + MNC(Mobile Network Code, 2桁)で構成されるキャリアの識別番号です。
日本のMCCは440固定で、キャリアによってMNCが変わります。
1NCEで接続できる日本のキャリアと対応するPLMNコードは以下の通りです。
これらは総務省の電気通信番号として公表されています。
| キャリア | PLMN | MCC | MNC |
|---|---|---|---|
| SoftBank | 44020 | 440 | 20 |
| KDDI | 44051 | 440 | 51 |
PLMNは通信キャリア1社でも複数持っています。そのため、上記はあくまでこの記事を書いている時点のPLMNです。
キャリア側のコア設備の収容変更によって、将来的には1NCEの接続先PLMNが変わる可能性があります。
うまく繋がらないときは、一度自動選択で接続してから試してみてください。
AT+COPSコマンドとは?
AT+COPSは3GPP TS 27.007 (7.3 PLMN selection +COPS)で定義された、ネットワーク選択モードを制御する標準ATコマンドです。
AT+COPS=0の場合は自動選択。
AT+COPS=1,2,"PLMN",AcTでキャリアを手動指定します。
AT+COPS=1,2,"PLMN",AcTの引数の意味は以下の通りです。
| 引数 | 意味 |
|---|---|
1 |
手動選択(自動は0) |
2 |
PLMN形式で指定(MCC+MNCの数字列) |
"44051" |
接続先のPLMNコード |
7 |
AcT(Access Technology)。7 = eMTC(LTE-M) |
コマンド文字列はLTE-M/NB-IoTモジュール全般で共通して使えます。
Wio BG770Aでの実装
接続するキャリアは OPERATOR_PLMN 定数1行を変えるだけで切り替えられます。"" にすると自動選択になります。
static constexpr const char* KDDI_PLMN = "44051";
static constexpr const char* SOFTBANK_PLMN = "44020";
// "" のときは自動選択。例: KDDI_PLMN / SOFTBANK_PLMN
static constexpr const char* OPERATOR_PLMN = KDDI_PLMN;
static constexpr int OPERATOR_ACT = 7; // eMTC(LTE-M)のAcT値
ConfigureOperatorSelection() がATコマンドを送る関数です。
OPERATOR_PLMN が空なら AT+COPS=0(自動選択)、値があれば AT+COPS=1,2,"PLMN",7(手動選択)を発行します。
static WioCellularResult ConfigureOperatorSelection() {
// oper表示形式をMCC+MNC数字列に設定
WioCellular.executeCommand("AT+COPS=3,2", COPS_TIMEOUT_MS);
const auto plmn = GetConfiguredOperatorPlmn();
if (plmn.empty()) {
return WioCellular.executeCommand("AT+COPS=0", COPS_AUTO_SELECT_TIMEOUT_MS); // 自動選択
}
const std::string command = "AT+COPS=1,2,\"" + plmn + "\"," + std::to_string(OPERATOR_ACT);
return WioCellular.executeCommand(command, COPS_MANUAL_SELECT_TIMEOUT_MS); // 手動選択
}
設置前の電波確認に使う
PLMNを指定する実用的な使いどころは、設置場所でSoftBankとKDDIどちらが良いか事前に確認する場面です。
手順はシンプルで、それぞれのキャリアに固定接続してRSRP・SINRを記録し、比較します。
-
SoftBankに固定して計測する —
AT+COPS=1,2,"44020"を実行し、接続後にAT+QCSQでRSRP・SINRを記録します。 -
KDDIに固定して計測する —
AT+COPS=1,2,"44051"を実行し、同様に記録します。 -
確認後は自動選択に戻す — RSRP・SINRを比較したうえで
AT+COPS=0に戻します。
電波品質の読み方(RSRP・SINRの目安)については以下の記事を参照してください。
サンプルコード
この記事で紹介したPLMN指定を含む接続コードのフルコードはGitHubで公開しています。
まとめ
この記事では、Wio BG770AにAT+COPSコマンドを使ってSoftBank(44020)またはKDDI(44051)に固定接続する手順を紹介しました。
PLMNを指定することで接続先キャリアを固定するのは、設置場所の電波環境を比較するときに役立ちます。
ただし、せっかくの冗長性が失われてしまうので、本番運用では自動選択(AT+COPS=0)に戻すようにしましょう。
AI・IoT・クラウドを中心に、実務で使える知見や検証結果を発信します。 お仕事のご相談はこちら: bloomblock.net/contact/
Discussion