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コードは以下の通りです。 これらは総務省の電気通信番号として公表されています。

キャリアPLMNMCCMNC
SoftBank4402044020
KDDI4405144051

PLMNは通信キャリア1社でも複数持っています。そのため、上記はあくまでこの記事を書いている時点のPLMNです。 キャリア側のコア設備の収容変更によって、将来的には1NCEの接続先PLMNが変わる可能性があります。 うまく繋がらないときは、一度自動選択で接続してから試してみてください。

AT+COPSコマンドとは?

AT+COPS3GPP 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)
2PLMN形式で指定(MCC+MNCの数字列)
"44051"接続先のPLMNコード
7AcT(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を記録し、比較します。

  1. 1

    SoftBankに固定して計測する

    AT+COPS=1,2,"44020" を実行し、接続後に AT+QCSQ でRSRP・SINRを記録します。

  2. 2

    KDDIに固定して計測する

    AT+COPS=1,2,"44051" を実行し、同様に記録します。

  3. 3

    確認後は自動選択に戻す

    RSRP・SINRを比較したうえで AT+COPS=0 に戻します。

電波品質の読み方(RSRP・SINRの目安)については以下の記事を参照してください。

サンプルコード

この記事で紹介したPLMN指定を含む接続コードのフルコードはGitHubで公開しています。

wio-bg770a-1nce-connect — iotbuilds-samples

Wio BG770A + 1NCE LTE-M 接続サンプル(PlatformIO)

github.com

まとめ

この記事では、Wio BG770AにAT+COPSコマンドを使ってSoftBank(44020)またはKDDI(44051)に固定接続する手順を紹介しました。 PLMNを指定することで接続先キャリアを固定するのは、設置場所の電波環境を比較するときに役立ちます。 ただし、せっかくの冗長性が失われてしまうので、本番運用では自動選択(AT+COPS=0)に戻すようにしましょう。

関連記事