SORACOMのマルチキャリア対応simで出会った不思議な話
SORACOM社のsimはIoT業界では定番ですが、特定のキャリアだけではなく、マルチキャリアと通信可能なsimが提供されています。今回は、マルチキャリア対応のsimを使った実験の中で、ちょっと不思議な事象に出会ったので、整理しきれていないのですが、メモとしてブログに残しておきます。
実験の前提
sim
simはSORACOM IoT SIM(planX3)と、比較としてシングルキャリアでNTTドコモ網を利用する特定地域向け IoT SIM(plan-D)を使います。SORACOM IoT SIM(planX3)は、日本国内の場合、NTTドコモ網とSoftBank網に接続することが可能です。
通信モジュール
通信モジュールが、今回の事象を説明する上で果たしてどういう役割になるのか、実はここがはっきりしていないのですが…
今回は、SIM7080Gを用いています。
事象
ATコマンド
ATコマンドで通信するわけですが、今回試していたATコマンドのシーケンスは、大雑把に整理すると、
-
初期化
-
キャリア網からの切断
-
キャリア網への接続
-
LTE網での通信
という流れです。2番目の「キャリア網からの切断」という処理は必須ではないと思うのですが、コマンドシーケンスの参考にしたTinyGSMというArduinoライブラリの中で、接続処理の前に切断処理が入っていたので、それに倣った形です。
具体的にいうと(だんだん、話が微に入り細を穿つ感じになって行きます)、ここで問題にするATコマンドは以下の2つです(マニュアルはこちら)。
-
AT+CGATT=0
-
AT+CGATT=1
上のコマンドがGPRSからの切断(detach)、下が接続(attach)なのですが…これらのコマンドに対するレスポンスが返ってくるまでのレイテンシが、simの種別によって対照的な挙動を示す、というのが今回の事象です。
実験
以下はAT+CGATT=0(切断)のレイテンシを計測した結果です。10回計測し、最大と最小を除いた8回についての平均値も併せて記載しています。
planX3のsimでは0.5秒程度なのですが、planDのsimでは16.75秒という、かなり長い時間を要していました。
また、次はAT+CGATT=1(接続)のレイテンシです。グラフの見方は同じです。
こちらは逆に、planX3のsimの方がレイテンシが長くなるという結果でした。
考察
必要なのか?
そもそも、このAT+CGATTというコマンドが、接続シーケンス上必須なのかというと、そうでもなさそうなのですが(例えばこの記事など)…コマンドのマニュアル上の説明は「Attach or Detach from GPRS Service」で、GPRSって2.5世代のネットワークですけど…
何故、こうなるのか?
ここから先は考察というより、妄想の域を出ない内容になります。
planX3のsimは、所定のATコマンドを実行すると、キャリアを手動で選択することが可能であることは確認しました(自動選択というモードもあります)。一方でplanDのsimは接続先のキャリアが一つに限定されているものです。
となると…planX3の場合、キャリア網に対し選択的に接続するために、「切断」は高速だが、「接続」は少し時間がかかる、逆にplanDの場合はキャリアが固定なので、「切断」という処理自体が本来は不要で(そのためレイテンシが大きい)、他方「接続」は高速である…という仮説になるのだろうか?
仮にそうだとしても、通信モジュールの中ではどう処理されているのか…?
何を信用したらいいのか?
ATコマンドシーケンスって何が妥当なのか、判断が難しいなぁ、と思うことがあります。一応、SIM7080Gの場合、コマンドのマニュアルとは別に、アプリケーションマニュアル相当のドキュメント(こちら)に、サンプルのシーケンスが用意されているので、そちらを参考にすれば良さそうなのですが、ちょっと複雑なことを実現しようとすると、すぐにサンプルから外れていきますね。
まぁ、オチはモジュールのベンダーさんに問い合わせよ、という話か…