Armadilloフォーラム

ファームウェアアップデートについて

s.tany

2022年6月7日 11時04分

node-eyeコントロールパネルからファームウェアアップデート実行をしています。
HTTPサーバーを準備し、マニュアルに従って作成したmd5を置いて、
アップデート実行をすると、動作コンフィグ反映失敗になります。

node-eyeコントロールパネルとはsim接続していて、接続中になっています。
httpサーバーとは有線接続しています。

今回実行したパターンは、カーネル欄のみにURLを入力し、
アップデート完了時に再起動するにチェックを入れてアップデートを実行をクリックしました。
デバイスの状態が準備中になったまま5分ほど変わらず、
その間にArmadilloの有線接続が切断され失敗になりました。
有線接続が切断されることは、仕様でしょうか?

node-eyeコントロールパネルのログは動作コンフィグ反映失敗になっていました。
カーネル欄に入力したURLは、Armadillo上でwgetすると取得できているので、
URLには問題がないと考えています。

また、httpサーバーではなく、httpsサーバーで行うことは可能ですか?

コメント

追加でnode-eyeについて2点質問です。

■node-eyeの生存監視の頻度、通信頻度を下げることは可能でしょうか?

参考情報として、過去にアットマークテクノ様が
24Hのnode-eyeに関する通信量を計測したものが下記になると聞いております。
up: 約1.74MB
down: 793KB

通信頻度を下げる方法があれば、ご教示お願いします。

■ファームウェアアップデートに失敗した時の処理について

失敗するケースとして下記を想定しています。
①ファームウェアアップデート実行に失敗
②ファームウェアアップデート実行中に失敗
③ファームウェアアップデートに成功し、再起動時に失敗

①②の場合は、アップデート前のファームウェアを使用する処理になると思いますが、
③の場合にロールバックすることは可能でしょうか?
リカバリーイメージからのみ復旧作業が可能なのでしょうか?
ご教示お願いします。

at_syunya.ohshio

2022年6月13日 11時18分

大塩です。
返答が遅くなり申し訳ございません。

頂いた内容につきましてそれぞれ回答致します。

> HTTPサーバーを準備し、マニュアルに従って作成したmd5を置いて、
> アップデート実行をすると、動作コンフィグ反映失敗になります。
>
> node-eyeコントロールパネルとはsim接続していて、接続中になっています。
> httpサーバーとは有線接続しています。
>
> 今回実行したパターンは、カーネル欄のみにURLを入力し、
> アップデート完了時に再起動するにチェックを入れてアップデートを実行をクリックしました。
> デバイスの状態が準備中になったまま5分ほど変わらず、
> その間にArmadilloの有線接続が切断され失敗になりました。
> 有線接続が切断されることは、仕様でしょうか?

以下についてお答えいただけますでしょうか。
・ファームウェアアップデートを実施する前の、nmcli connectionコマンドの結果
・/etc/armsd/line.conf , /etc/armsd/network.conf の記載内容(sim の id や pass 等が記載されていますのでご注意ください)

> また、httpサーバーではなく、httpsサーバーで行うことは可能ですか?
デフォルトでは対応していません。
/etc/armsd/reserved_modules/firmupdate_module 下のスクリプトを修正することで対応可能です。

それぞれのファイル内にある curl -s -L -f -o curl -s -k -L -f -o とすることでhttpsのファイルをダウンロードできます。

> ■node-eyeの生存監視の頻度、通信頻度を下げることは可能でしょうか?

死活監視は、Heartbeat として5分に1度 node-eye と Armadillo が通信を行っています。
申し訳ありませんが、この5分間隔は固定化されているためスクリプト修正等で変更することはできません。

> ■ファームウェアアップデートに失敗した時の処理について
>
> 失敗するケースとして下記を想定しています。
> ①ファームウェアアップデート実行に失敗
> ②ファームウェアアップデート実行中に失敗
> ③ファームウェアアップデートに成功し、再起動時に失敗
>
> ①②の場合は、アップデート前のファームウェアを使用する処理になると思いますが、
> ③の場合にロールバックすることは可能でしょうか?
> リカバリーイメージからのみ復旧作業が可能なのでしょうか?

①については仰る通りです。
②について
ファームウェアを書き換えている途中でエラーが発生した場合
イメージが破損する可能性があるため、reboot後に前ファームウェアが実行できない可能性があります。
また、ロールバック機能はありませんので、②の上記場合と③の場合はリカバリーイメージからの復旧作業となります。

大塩さん
ご回答ありがとうございます。

ファームウェアアップデートを実施する前の、nmcli connectionコマンドの結果

NAME UUID TYPE DEVICE
Wired connection 1 省略 ethernet eth0
armsd_connection_wwan 省略 gsm ttyUSB2

line.conf , network.confはどちらも内容は下記。
line.conf , network.confに記載している情報がSIMの情報になっているから切断されたのでしょうか?
--------------------------------------------------
VERSION=2
interface_wwan=enable
interface_wwan_type=dhcp
interface_wwan_apn=mopera.net
interface_wwan_auth_type=PAP
interface_wwan_pdp_type=IP
--------------------------------------------------

ご確認よろしくお願いいたします。

httpsの対応はすでに同様のやり方で確認を行っておりました。
問題なくアップデートできました。
ありがとうございます。

通信頻度、失敗した場合の回答もありがとうございます。
承知いたしました。

at_syunya.ohshio

2022年6月16日 10時40分

大塩です。

> ファームウェアアップデートを実施する前の、nmcli connectionコマンドの結果
>
> NAME UUID TYPE DEVICE
> Wired connection 1 省略 ethernet eth0
> armsd_connection_wwan 省略 gsm ttyUSB2
>
> line.conf , network.confはどちらも内容は下記。
> line.conf , network.confに記載している情報がSIMの情報になっているから切断されたのでしょうか?
> --------------------------------------------------
> VERSION=2
> interface_wwan=enable
> interface_wwan_type=dhcp
> interface_wwan_apn=mopera.net
> interface_wwan_auth_type=PAP
> interface_wwan_pdp_type=IP
> --------------------------------------------------

情報ありがとうございます。

node-eye 機能の「ping」や「poweroff」は成功するでしょうか。
こちらも失敗となる場合、node-eyeマニュアル「4.4.1.3.1. eth0」の「表 4.6 ネットワークモジュールの eth0 に関する key 一覧」を参考に、各コンフィグに interface_eth0_never-default=true を追加してみてください。

大塩さん
ご回答ありがとうございます。

pingは通っていて、poweroffは試していませんでした。再起動はできていたと思います。
事象発生から日にちが経っていますので、もう一度試してみます。

1点追加です。
有線接続とだけ記載していたのですが、
この時に使用していたLANは社内ネットワークでした。
プロキシの設定などが必要になりますでしょうか?

ご確認よろしくお願いいたします。

at_syunya.ohshio

2022年6月21日 11時20分

大塩です。

> pingは通っていて、poweroffは試していませんでした。再起動はできていたと思います。
> 事象発生から日にちが経っていますので、もう一度試してみます。
>
> 1点追加です。
> 有線接続とだけ記載していたのですが、
> この時に使用していたLANは社内ネットワークでした。
> プロキシの設定などが必要になりますでしょうか?

以前記載した通り、ファイルダウンロードには curl コマンドを使用しています。
/etc/armsd/reserved_modules/firmupdate_module 下のスクリプトを参考に
手動にて curl コマンドでデータ取得できていれば、設定等は必要ないと思われます。