====== SORACOM ブート firmware ======
起動すると自動的に下記処理を行い、キッティング作業を自動化することができるファームウェアです。\\
- SORACOM Air SIM を用いて、PPP 接続をする。
- [[https://users.soracom.io/ja-jp/docs/air/use-metadata/|SORACOM メタデータサービス]] から動作設定を取得する。
- [[https://soracom.jp/services/harvest/|SORACOM Harvest Files]] から ファームウェア/オーバーレイ保存ファイル をダウンロードする。
- ファームウェア更新 / オーバーレイファイル更新 を行う。
- 完了するとシャットダウンする。
※[[https://blog.soracom.com/ja-jp/2023/01/31/ma-s120-soracom-boot-feature/|SORACOM 公式ブログ]] にも記事が掲載されていますので併せて参照下さい。
\\
===== Firmware =====
==== Release ====
^ File ^ STAT ^ SHA1SUM ^ Note |
|{{ :download_software:mas1xx:soracom_boot:soracom_boot_v1_0_0.img |}}|2023/01/20 14:59 10.7 MB|41b8f898c36450e0affca0291b304f78d184a00a|v1.0.0|
|{{ :download_software:mas1xx:soracom_boot:soracom_boot_v1_1_0.img |}}|2023/04/12 13:24 10.7 MB|bfe43474956409db06127828a9bf93736e3d70fd|v1.1.0|
※MA-X3xx シリーズのファームウェアは[[https://ma-tech.centurysys.jp/doku.php?id=download_software:max3xx:start|こちら]]からダウンロード下さい。
\\
==== α/β/rc ====
^ File ^ STAT ^ SHA1SUM ^ Note |
|
\\
==== 更新履歴 ====
=== v1.1.0 ===
* Alpine Linux Firmware 更新対応
=== v1.0.0 ===
* 新規リリース
\\
===== 使用方法 =====
==== 準備 (SORACOM 設定) ====
=== ファイルのアップロード ===
Harvest Files にアップデートに使用するファイルをアップロードしておきます。\\
他の用途と混在しないよう、下記のようなディレクトリ構成にしています。
== ファームウェアの場合 ==
[例]\\
''/<プロジェクト名>/<シリアルNo.>((機器ごとに分ける必要がある場合))/firmware/firmware_file_name.img''
※ ファームウェアの場合、拡張子 **".img"** で終わるファイル名である必要があります。
== オーバーレイ保存ファイルの場合の例 ==
[例]\\
''/<プロジェクト名>/<シリアルNo.>((機器ごとに分ける必要がある場合))/config/overlay_updates.zip''
※ オーバーレイ保存ファイルの場合、名前が **"overlays"** で始まる **ZIP 形式のファイル**、もしくは MA-S1xx の **『設定データ管理』ページ** からダウンロードした設定データ((config_*.img, これも ZIP 形式のファイルです))である必要があります。
[例] 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
\\
== ファイル配置例 ==
{{:download_software:mas1xx:soracom_boot:harvest_files_00.png|Harvest Files のファイル管理 (ファームウェア)}}
この例は、
* プロジェクト名: "projectA"
* 更新対象: ファームウェア (全機器共通)
* ファームウェアファイル名: **soracom_boot_firm.img**
となります。
\\
{{:download_software:mas1xx:soracom_boot:harvest_files_01.png|Harvest Files のファイル管理 (オーバーレイ)}}
この例は、
* プロジェクト名: "projectA"
* 更新対象: オーバーレイ (機器毎)
* オーバーレイアーカイブファイル名: **overlays_update.zip**
となります。
\\
=== SIM グループの作成 ===
メタデータサービスを利用するため、SIM グループを作成し、使用する SIM を作成した SIM グループに所属させておきます。
{{:download_software:mas1xx:soracom_boot:sim_group_00.png|SIM グループの作成}}
\\
{{:download_software:mas1xx:soracom_boot:sim_group_01.png|SIM を SIM グループに追加}}
\\
=== Harvest Files の有効化 ===
作成した SIM グループで、**Harvest Files を有効化** します。
{{:download_software:mas1xx:soracom_boot:sim_group_02.png|Harvest Files の有効化}}
\\
=== ユーザーデータ の作成 ===
**『ユーザーデータ』** を登録しておきます。
{{:download_software:mas1xx:soracom_boot:metadata_00.png|}}
\\
JSON のキーはそれぞれ下記の意味を持ちます。
* prefix : **Harvest Files** のディレクトリ名((『プロジェクト名』としていたもの))
* useSerial: 機器のシリアル No, をディレクトリ名につけるかどうか
\\
=== 速度クラスの変更(オプション) ===
大きなファイルをダウンロードする場合、速度クラスを変更((s1.4xfast など))しておいたほうが短時間で処理が完了します。
{{:download_software:mas1xx:soracom_boot:sim_00.png|SIM 管理}}
\\
==== MA-S1xx の起動 ====
=== DIPSW の設定 ===
DIPSW を 左から **ON** - OFF - **ON** - OFF に設定します。\\
DIPSW が下向きの状態 が **ON** となります。
\\
=== 起動 ===
SIM グループに所属させた SORACOM SIM を挿入し、機器の電源を入れます。
\\
=== 処理待ち ===
処理が完了すると電源が OFF になり、LED が全消灯になります。\\
電源を抜き、DIPSW を元((全て OFF(上側) ))に戻して完了です。
\\
===== 実行例 =====
コンソールを接続しておくと、実行時のログが出力されます。トラブル発生時に確認できます。
==== ファームウェア更新 ====
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
\\