====== 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 \\