目次

SORACOM ブート firmware

起動すると自動的に下記処理を行い、キッティング作業を自動化することができるファームウェアです。

  1. SORACOM Air SIM を用いて、PPP 接続をする。
  2. SORACOM メタデータサービス から動作設定を取得する。
  3. SORACOM Harvest Files から ファームウェア/オーバーレイ保存ファイル をダウンロードする。
  4. ファームウェア更新 / オーバーレイファイル更新 を行う。
  5. 完了するとシャットダウンする。

SORACOM 公式ブログ にも記事が掲載されていますので併せて参照下さい。


Firmware

Release

File STAT SHA1SUM Note
soracom_boot_v1_0_0.img2023/01/20 14:59 10.7 MB41b8f898c36450e0affca0291b304f78d184a00av1.0.0
soracom_boot_v1_1_0.img2023/04/12 13:24 10.7 MBbfe43474956409db06127828a9bf93736e3d70fdv1.1.0

※MA-X3xx シリーズのファームウェアはこちらからダウンロード下さい。


α/β/rc

File STAT SHA1SUM Note


更新履歴

v1.1.0

v1.0.0


使用方法

準備 (SORACOM 設定)

ファイルのアップロード

Harvest Files にアップデートに使用するファイルをアップロードしておきます。
他の用途と混在しないよう、下記のようなディレクトリ構成にしています。

ファームウェアの場合

[例]
/<プロジェクト名>/<シリアルNo.>1)/firmware/firmware_file_name.img

※ ファームウェアの場合、拡張子 “.img” で終わるファイル名である必要があります。

オーバーレイ保存ファイルの場合の例

[例]
/<プロジェクト名>/<シリアルNo.>2)/config/overlay_updates.zip

※ オーバーレイ保存ファイルの場合、名前が “overlays” で始まる ZIP 形式のファイル、もしくは MA-S1xx の 『設定データ管理』ページ からダウンロードした設定データ3)である必要があります。

[例] etc 領域のオーバーレイファイルを更新

~$ unzip -l overlays_update.zip 
Archive:  overlays_update.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
    17236  2022-11-30 13:49   overlays_etc.tar.zst
---------                     -------
    17236                     1 file


ファイル配置例

Harvest Files のファイル管理 (ファームウェア)

この例は、

となります。


Harvest Files のファイル管理 (オーバーレイ)

この例は、

となります。


SIM グループの作成

メタデータサービスを利用するため、SIM グループを作成し、使用する SIM を作成した SIM グループに所属させておきます。

SIM グループの作成


SIM を SIM グループに追加


Harvest Files の有効化

作成した SIM グループで、Harvest Files を有効化 します。

Harvest Files の有効化


ユーザーデータ の作成

『ユーザーデータ』 を登録しておきます。


JSON のキーはそれぞれ下記の意味を持ちます。


速度クラスの変更(オプション)

大きなファイルをダウンロードする場合、速度クラスを変更5)しておいたほうが短時間で処理が完了します。

SIM 管理


MA-S1xx の起動

DIPSW の設定

DIPSW を 左から ON - OFF - ON - OFF に設定します。

DIPSW が下向きの状態 が ON となります。


起動

SIM グループに所属させた SORACOM SIM を挿入し、機器の電源を入れます。


処理待ち

処理が完了すると電源が OFF になり、LED が全消灯になります。
電源を抜き、DIPSW を元6)に戻して完了です。


実行例

コンソールを接続しておくと、実行時のログが出力されます。トラブル発生時に確認できます。

ファームウェア更新

2022-11-29T10:36:36.661495+09:00 [localhost] PPP Manager[758]: Machine Type: MA-S1xx series.
2022-11-29T10:36:36.674751+09:00 [localhost] PPP Manager[758]: Started.
2022-11-29T10:36:36.683807+09:00 [localhost] PPP Manager[758]: Wait for device: /dev/ttyQtel0 ...
2022-11-29T10:36:38.691824+09:00 [localhost] PPP Manager[758]: Device: /dev/ttyQtel0 found.
2022-11-29T10:36:38.691978+09:00 [localhost] PPP Manager[758]: Just after startup, wait 10 seconds...
2022-11-29T10:36:39.509193+09:00 [localhost] soracom_boot[800]: start...
2022-11-29T10:36:39.511289+09:00 [localhost] soracom_boot[800]: * wait_ppp_up: wait for 2022/11/29 10:37:39... <--- SORACOMブートアプリケーション: PPP接続完了待ち
2022-11-29T10:36:48.693310+09:00 [localhost] PPP Manager[758]: LTE module found, check config/status.
2022-11-29T10:36:48.766216+09:00 [localhost] PPP Manager[758]: SIM is ready, IMSI: 44010xxxxxxxxxx
2022-11-29T10:36:48.767815+09:00 [localhost] PPP Manager[758]: Automatic PLMN.
2022-11-29T10:36:48.769086+09:00 [localhost] PPP Manager[758]: Clear PLMN.
2022-11-29T10:36:49.043166+09:00 [localhost] PPP Manager[758]: No need to set PDP Context (Same APN: soracom.io).
2022-11-29T10:36:49.117623+09:00 [localhost] pppd[837]: pppd 2.4.9 started by root, uid 0
2022-11-29T10:36:50.184234+09:00 [localhost] chat_ng[841]: LTE Module: EC25
2022-11-29T10:36:50.197507+09:00 [localhost] chat_ng[841]: Module Firmware: EC25JFAR06A06M4G.
2022-11-29T10:36:50.218248+09:00 [localhost] chat_ng[841]: SIM is Ready, IMSI: 44010xxxxxxxxxx.
2022-11-29T10:36:50.229195+09:00 [localhost] chat_ng[841]: Antenna Level: RSSI: -61.0 [dBm] (Level: 3)
2022-11-29T10:36:50.240559+09:00 [localhost] chat_ng[841]: Wait for attaching to LTE Network...
2022-11-29T10:36:50.254684+09:00 [localhost] chat_ng[841]: Attached to LTE Network? Yes
2022-11-29T10:36:50.256430+09:00 [localhost] chat_ng[841]: Start dialing...
2022-11-29T10:36:50.282101+09:00 [localhost] chat_ng[841]: Connected.
2022-11-29T10:36:51.289300+09:00 [localhost] pppd[837]: Serial connection established.
2022-11-29T10:36:51.309011+09:00 [localhost] pppd[837]: Using interface ppp0
2022-11-29T10:36:51.317111+09:00 [localhost] pppd[837]: Connect: ppp0 <--> /dev/ttyQtel0
2022-11-29T10:36:52.365089+09:00 [localhost] pppd[837]: CHAP authentication succeeded
2022-11-29T10:36:52.366439+09:00 [localhost] pppd[837]: CHAP authentication succeeded
2022-11-29T10:36:52.628662+09:00 [localhost] pppd[837]: Could not determine remote IP address: defaulting to 10.64.64.64
2022-11-29T10:36:52.639128+09:00 [localhost] pppd[837]: local  IP address 10.178.122.249
2022-11-29T10:36:52.644011+09:00 [localhost] pppd[837]: remote IP address 10.64.64.64
2022-11-29T10:36:52.651973+09:00 [localhost] pppd[837]: primary   DNS address 100.127.0.53
2022-11-29T10:36:52.653386+09:00 [localhost] pppd[837]: secondary DNS address 100.127.1.53
2022-11-29T10:36:52.667358+09:00 [localhost] PPP Manager[758]: PPP connected. <------------ PPP接続完了
2022-11-29T10:36:55.130574+09:00 [localhost] soracom_boot[800]: * firmup_needed: Current MD5: e6d94e5017572d621826c7d18b6c86c9
2022-11-29T10:36:55.132417+09:00 [localhost] soracom_boot[800]: * firmup_needed: New MD5:     9cf9b3fbfb3ebc95da3062bb2375231f <--- etag(MD5) による更新要否判定
2022-11-29T10:36:55.133735+09:00 [localhost] soracom_boot[800]: * firmup_needed: --> need update? true
2022-11-29T10:36:55.294873+09:00 [localhost] soracom_boot[800]: ! SoracomAPI::getContent: code = 404 Not Found.
2022-11-29T10:36:55.296732+09:00 [localhost] soracom_boot[800]: * list_files: kind[config] file not found.
2022-11-29T10:36:55.298064+09:00 [localhost] soracom_boot[800]: * find_overlays: not found.
2022-11-29T10:36:55.299691+09:00 [localhost] soracom_boot[800]: * download_loop: overlays not found. <--- オーバーレイ保存ファイルは Harvest Files に無い、更新しない
2022-11-29T10:36:55.312735+09:00 [localhost] soracom_boot[800]: * get_file: filesize: 11229628.
2022-11-29T10:36:56.710723+09:00 [localhost] soracom_boot[800]: * downloaded: 1000000 [bytes].
2022-11-29T10:36:57.739905+09:00 [localhost] soracom_boot[800]: * downloaded: 2000000 [bytes].
2022-11-29T10:36:58.770365+09:00 [localhost] soracom_boot[800]: * downloaded: 3000000 [bytes].
2022-11-29T10:36:59.790130+09:00 [localhost] soracom_boot[800]: * downloaded: 4000000 [bytes].
2022-11-29T10:37:00.812815+09:00 [localhost] soracom_boot[800]: * downloaded: 5000000 [bytes].
2022-11-29T10:37:01.843332+09:00 [localhost] soracom_boot[800]: * downloaded: 6000000 [bytes].
2022-11-29T10:37:02.862658+09:00 [localhost] soracom_boot[800]: * downloaded: 7000000 [bytes].
2022-11-29T10:37:03.891949+09:00 [localhost] soracom_boot[800]: * downloaded: 8000000 [bytes].
2022-11-29T10:37:05.002729+09:00 [localhost] soracom_boot[800]: * downloaded: 9000000 [bytes].
2022-11-29T10:37:05.940984+09:00 [localhost] soracom_boot[800]: * downloaded: 10000000 [bytes].
2022-11-29T10:37:06.966168+09:00 [localhost] soracom_boot[800]: * downloaded: 11000000 [bytes].
2022-11-29T10:37:07.205155+09:00 [localhost] soracom_boot[800]: * download finished, downloaded size: 11229628.
2022-11-29T10:37:09.104304+09:00 [localhost] soracom_boot[800]:   MD5(dest): 9cf9b3fbfb3ebc95da3062bb2375231f <--- ダウンロードしたファイルの MD5 sum チェック
2022-11-29T10:37:09.105802+09:00 [localhost] soracom_boot[800]:   MD5(etag): 9cf9b3fbfb3ebc95da3062bb2375231f
2022-11-29T10:37:09.107051+09:00 [localhost] soracom_boot[800]: * get_file: MD5sum matched.
2022-11-29T10:37:09.108842+09:00 [localhost] soracom_boot[800]: * download_file[firmware]: download completed, size: 11229628.
2022-11-29T10:37:09.120955+09:00 [localhost] soracom_boot[800]: * update firmware: area: 0...
2022-11-29T10:37:10.103994+09:00 [localhost] fuse-zip[868]: Mounting file system on /tmp/soracom_boot_firm.img (cwd=/)
2022-11-29T10:37:11.566343+09:00 [localhost] fuse-zip[868]: File system unmounted
2022-11-29T10:37:12.184273+09:00 [localhost] soracom_boot[800]: * firmup area: 0 -> result: true.
2022-11-29T10:37:12.191771+09:00 [localhost] soracom_boot[800]: * update firmware: area: 1...
2022-11-29T10:37:13.164952+09:00 [localhost] fuse-zip[889]: Mounting file system on /tmp/soracom_boot_firm.img (cwd=/)
2022-11-29T10:37:14.723901+09:00 [localhost] fuse-zip[889]: File system unmounted
2022-11-29T10:37:15.336246+09:00 [localhost] soracom_boot[800]: * firmup area: 1 -> result: true.
2022-11-29T10:37:15.732252+09:00 [localhost] PPP Manager[758]: signal received, 15
2022-11-29T10:37:15.732721+09:00 [localhost] PPP Manager[758]: Stop PPP manager.
2022-11-29T10:37:15.735329+09:00 [localhost] pppd[837]: Terminating on signal 15
2022-11-29T10:37:15.737790+09:00 [localhost] pppd[837]: Connect time 0.4 minutes.
2022-11-29T10:37:15.738048+09:00 [localhost] pppd[837]: Sent 135487 bytes, received 11674375 bytes.
2022-11-29T10:37:15.759986+09:00 [localhost] pppd[837]: Connection terminated.
2022-11-29T10:37:15.796041+09:00 [localhost] pppd[837]: Exit.

Sent SIGTERM to all processes
Sent SIGKILL to all processes
Requesting system poweroff
[   68.140361] reboot: Power down


オーバーレイ更新

2022-11-30T14:51:15.564933+09:00 [localhost] PPP Manager[755]: Started.
2022-11-30T14:51:15.574303+09:00 [localhost] PPP Manager[755]: Wait for device: /dev/ttyQtel0 ...
2022-11-30T14:51:17.578714+09:00 [localhost] PPP Manager[755]: Device: /dev/ttyQtel0 found.
2022-11-30T14:51:17.578866+09:00 [localhost] PPP Manager[755]: Just after startup, wait 10 seconds...
2022-11-30T14:51:18.436896+09:00 [localhost] soracom_boot[798]: start...
2022-11-30T14:51:18.439210+09:00 [localhost] soracom_boot[798]: * wait_ppp_up: wait for 2022/11/30 14:52:18...
2022-11-30T14:51:27.580236+09:00 [localhost] PPP Manager[755]: LTE module found, check config/status.
2022-11-30T14:51:27.654182+09:00 [localhost] PPP Manager[755]: SIM is ready, IMSI: 44010xxxxxxxxxx
2022-11-30T14:51:27.655543+09:00 [localhost] PPP Manager[755]: Automatic PLMN.
2022-11-30T14:51:27.656710+09:00 [localhost] PPP Manager[755]: Clear PLMN.
2022-11-30T14:51:27.918119+09:00 [localhost] PPP Manager[755]: No need to set PDP Context (Same APN: soracom.io).
2022-11-30T14:51:27.998746+09:00 [localhost] pppd[835]: pppd 2.4.9 started by root, uid 0
2022-11-30T14:51:29.059840+09:00 [localhost] chat_ng[838]: LTE Module: EC25
2022-11-30T14:51:29.080758+09:00 [localhost] chat_ng[838]: Module Firmware: EC25JFAR06A06M4G.
2022-11-30T14:51:29.117385+09:00 [localhost] chat_ng[838]: SIM is Ready, IMSI: 44010xxxxxxxxxx.
2022-11-30T14:51:29.128796+09:00 [localhost] chat_ng[838]: Antenna Level: RSSI: -67.0 [dBm] (Level: 3)
2022-11-30T14:51:29.139513+09:00 [localhost] chat_ng[838]: Wait for attaching to LTE Network...
2022-11-30T14:51:29.154140+09:00 [localhost] chat_ng[838]: Attached to LTE Network? Yes
2022-11-30T14:51:29.155537+09:00 [localhost] chat_ng[838]: Start dialing...
2022-11-30T14:51:29.180464+09:00 [localhost] chat_ng[838]: Connected.
2022-11-30T14:51:30.187571+09:00 [localhost] pppd[835]: Serial connection established.
2022-11-30T14:51:30.207805+09:00 [localhost] pppd[835]: Using interface ppp0
2022-11-30T14:51:30.219258+09:00 [localhost] pppd[835]: Connect: ppp0 <--> /dev/ttyQtel0
2022-11-30T14:51:31.243344+09:00 [localhost] pppd[835]: CHAP authentication succeeded
2022-11-30T14:51:31.244727+09:00 [localhost] pppd[835]: CHAP authentication succeeded
2022-11-30T14:51:31.525953+09:00 [localhost] pppd[835]: Could not determine remote IP address: defaulting to 10.64.64.64
2022-11-30T14:51:31.538793+09:00 [localhost] pppd[835]: local  IP address 10.178.122.249
2022-11-30T14:51:31.546183+09:00 [localhost] pppd[835]: remote IP address 10.64.64.64
2022-11-30T14:51:31.547622+09:00 [localhost] pppd[835]: primary   DNS address 100.127.0.53
2022-11-30T14:51:31.548903+09:00 [localhost] pppd[835]: secondary DNS address 100.127.1.53
2022-11-30T14:51:31.567004+09:00 [localhost] PPP Manager[755]: PPP connected.
2022-11-30T14:51:33.662800+09:00 [localhost] soracom_boot[798]: * SoracomAPI::init: serialNo = 111402xxxxx.
2022-11-30T14:51:33.664600+09:00 [localhost] soracom_boot[798]: * list_files: URL: http://harvest-files.soracom.io/projectA/firmware/
2022-11-30T14:51:33.850787+09:00 [localhost] soracom_boot[798]: * find_firmware: not found.
2022-11-30T14:51:33.852427+09:00 [localhost] soracom_boot[798]: * download_loop: firmware not found.
2022-11-30T14:51:33.854120+09:00 [localhost] soracom_boot[798]: * list_files: URL: http://harvest-files.soracom.io/projectA/111402xxxxx/config/
2022-11-30T14:51:34.055953+09:00 [localhost] soracom_boot[798]: * download_loop: overlays archive found.
2022-11-30T14:51:34.058028+09:00 [localhost] soracom_boot[798]: * download_file[config]: filename: overlays_update.zip, start donwloading...
2022-11-30T14:51:34.071095+09:00 [localhost] soracom_boot[798]: * get_file: filesize: 17426.
2022-11-30T14:51:34.362620+09:00 [localhost] soracom_boot[798]: * download finished, downloaded size: 17426.
2022-11-30T14:51:34.368141+09:00 [localhost] soracom_boot[798]:   MD5(dest): 6182e0dcab5dc169b878b985a9da58a2
2022-11-30T14:51:34.369580+09:00 [localhost] soracom_boot[798]:   MD5(etag): 6182e0dcab5dc169b878b985a9da58a2
2022-11-30T14:51:34.371121+09:00 [localhost] soracom_boot[798]: * get_file: MD5sum matched.
2022-11-30T14:51:34.372949+09:00 [localhost] soracom_boot[798]: * download_file[config]: download completed, size: 17426.
2022-11-30T14:51:34.382827+09:00 [localhost] soracom_boot[798]: * update overlay files...
2022-11-30T14:51:34.583990+09:00 [localhost] fuse-zip[858]: Mounting file system on /tmp/overlays_update.zip (cwd=/)
2022-11-30T14:51:34.760539+09:00 [localhost] fuse-zip[858]: File system unmounted
2022-11-30T14:51:34.842491+09:00 [localhost] soracom_boot[798]: * overlay update -> result: true.
2022-11-30T14:51:35.598401+09:00 [localhost] PPP Manager[755]: signal received, 15
2022-11-30T14:51:35.598717+09:00 [localhost] PPP Manager[755]: Stop PPP manager.
2022-11-30T14:51:35.599260+09:00 [localhost] pppd[835]: Terminating on signal 15
2022-11-30T14:51:35.600337+09:00 [localhost] pppd[835]: Connect time 0.1 minutes.
2022-11-30T14:51:35.600486+09:00 [localhost] pppd[835]: Sent 3639 bytes, received 22247 bytes.
2022-11-30T14:51:35.627360+09:00 [localhost] pppd[835]: Connection terminated.
2022-11-30T14:51:36.645260+09:00 [localhost] pppd[835]: Exit.

Sent SIGTERM to all processes
Sent SIGKILL to all processes
Requesting system poweroff
[   48.886395] reboot: Power down


1) , 2)
機器ごとに分ける必要がある場合
3)
config_*.img, これも ZIP 形式のファイルです
4)
『プロジェクト名』としていたもの
5)
s1.4xfast など
6)
全て OFF(上側)