Raspberry PiでATコマンドを使ってSORACOM IoT SIMのIMSIを取得する

Raspberry PiでATコマンドを使ってSORACOM IoT SIMのIMSIを取得する方法を記載しました。
2021.07.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

IoT事業部の木村です。

SORACOMのAPIを使用する際に、IMSIを指定してリクエストすることって多いですよね。

メタデータサービスを使用すれば、SIMレベルの認証が済んでいるため、IMSIを含むSIMに関するメタデータを手軽に取得することが可能です。

今回はもろもろの要件でメタデータサービスが使えない可能性があったので、表題の通り、ATコマンドを使ってSIMのIMSIを取得する方法を試しましたのでご紹介させていただきます。

そもそもIMSIとは

International Mobile Subscriber Identityの略で、携帯電話の回線契約1つ1つに一意に割り当てられる最大15桁の番号です。

SORACOMプラットフォームにおいては、SIMの操作のキーになったりする重要な要素です。

ちなみに、「イムジィ」と発音するらしいです。(ずっと「アイエムエスアイ」と言ってました...)

ATコマンドとは

Hayes社が開発した、モデムを制御するためのコマンド群です。

ATではじまる一連の短いテキスト文字列で構成されており、これらを組み合わせることで、ダイヤル、切断、接続のパラメータ変更などの操作を行うためのコマンドを生成することができます。

今回試した構成

Raspberry Pi: 4 Model B Rev 1.2

USBドングル: AK-020_V12_20180827

コマンドを発行

1. Raspberry PiにSSHで接続します。

$ ssh pi@raspberrypi.local

2. シリアルポートを特定する

pi@raspberrypi:~ $ ls /dev/tty*
/dev/tty1   /dev/tty17  /dev/tty24  /dev/tty31  /dev/tty39  /dev/tty46  /dev/tty53  /dev/tty60  /dev/ttyUSB0
/dev/tty10  /dev/tty18  /dev/tty25  /dev/tty32  /dev/tty4   /dev/tty47  /dev/tty54  /dev/tty61  /dev/ttyUSB1
/dev/tty11  /dev/tty19  /dev/tty26  /dev/tty33  /dev/tty40  /dev/tty48  /dev/tty55  /dev/tty62  /dev/ttyUSB2
/dev/tty12  /dev/tty2   /dev/tty27  /dev/tty34  /dev/tty41  /dev/tty49  /dev/tty56  /dev/tty63  /dev/ttyUSB3
/dev/tty13  /dev/tty20  /dev/tty28  /dev/tty35  /dev/tty42  /dev/tty5   /dev/tty57  /dev/tty7   /dev/ttyprintk
/dev/tty14  /dev/tty21  /dev/tty29  /dev/tty36  /dev/tty43  /dev/tty50  /dev/tty58  /dev/tty8

環境によって異なりますが、デバイスファイルの一覧が出てくるので、該当のポートに目星をつけます。

私の環境では、/dev/ttyUSB1になります。

Raspberry Pi起動後、USBポートにデバイスを挿入する順番等によりどのポートが使用されるかは変わるようです。

3. screenコマンドでセッションを開始してコマンド入力

pi@raspberrypi:~ $ screen /dev/ttyUSB1

真っ黒な画面が開くので、AT+CIMIと入力するとISMIが出力されます。

AT+CIMI
44010xxxxxxxxxx

OK

なお、screen画面からは、control + a + kで抜けることができます。

以上でIMSIを取得することができました!

参考にさせていただいたリンク

SORACOM で学ぶ AT コマンド入門

Linux screenコマンド使い方