Featured image of post APC Smart-UPS のファームウェアアップデート に失敗して「レンガ職人」になった

APC Smart-UPS のファームウェアアップデート に失敗して「レンガ職人」になった

Important

最悪の場合、保守サポートを使う可能性があり。
UPS の Firmware Upgrade は Outlets (出力コンセント)をすべてシャットダウンした状態で実施が必要なため作業は製品マニュアルをよく読み実施してください。

本記事に記載の方法は私的に調査・検証した方法も含みますので実施した事による損害は一切の責任を持ちません。

ことの始まり

年末に、ラックを立てたため UPS も深夜の 23:30 頃に最初の火入れをしました。そのためデフォルトで設定されている Self-test もこのタイミングが起点で 14日間隔で実施されます。
期間は変更出来ますが、時間は変更できる仕組みを有していなく対応として UPS を再起動する事で時間をリセットできるとのことでした。そのため、「再起動するならついでに」と NMC3(Network Management Card 3) と UPS の Firmware Upgrade を実施する事にしました。

NMC3 は手順通り専用ソフトで、実施する事で問題なく完了しました。

NMC3 から UPS Firmware アップデートしたところ 「Firmware Update in Progress…」で止まり、 NMC3 は切断状態となりました。15分経っても状況は変わらず、仕方なく AC、バッテリーの順で電源断を行い強制シャットダウンを実施。

Firmware Update in Progress…

再度電源投入すると、下記のように全ての LED が点灯し LCD には何も表示されません。 時間の経過と共に、 LED が1つずつ消灯していき 約9分で強制シャットダウンされます。

  • 全灯
  • 0分30秒: ③オンバッテリLED 消灯
  • 1分30秒: ④故障LED 消灯
  • 2分30秒: ⑤バッテリ交換LED 消灯
  • 3分30秒: ①オンラインLED 消灯
  • 9分00秒: シャットダウン

きれいないるみねーしょん

製品マニュアル

NMC 3 から閲覧すると下記の状態で XMODEM の転送がキャンセルされた事でハングした事がわかります。
UPS: Finished UPS firmware transfer [Xmodem Cancel] とありますが Finished なのか Xmodem Cancel なのかはっきりしてくれ文字も緑だしw

NMC 3 の障害後の画面

対象

まず、今回の修理対象を説明します。
APC Smart-UPS を DELL が OEM として販売する DLT1500RMJ2UNC5W です。ラックを立てる時に SMT1500J からリプレイスをするために購入しました。かなり探して購入した事で新品未開封で約 35,000円で入手し、 APC の保守登録も済ませているため保守契約書によれば、3年間の標準保守と2年間の延長保守で保守期限は 2029/11 になっています。

この製品は OEM 製品のため UPS 本体 (SMT1500RMJ2U)、 NMC3 (AP9640J) がセットになった製品で保守は5年間の先出しセンドバックとなっていました。こちら保守内容と、保証書を確認した所下記の FAQ にもある通り保守範囲は本体、内蔵バッテリー、(今回は NMC3 も)が含まれる形でバッテリーについては、「バッテリー交換ランプが付いた」、「Slef-text に失敗した」場合は 「UPS 本体故障と同等の保証・保守を適用する」とありますので、保守期間内であればバッテリー交換も可能な事が確認出来ました。
1500RML2 のバッテリーは定価 80,000 円のため購入価格以上に保守を利用出来ればメリットがあります。

APC UPS 内部バッテリーの製品保証, 保守について | よくあるお問い合わせ 製品ご購入時の製品保証, 保守付きモデル, 保守サービス(延長保証サービス, オンサイトサービス) の 内部バッテリーに関する対応について記載します。

(1) 製品保証, 保守サービス, 保守付きモデルにUPSの内部バッテリーは含みますか

はい、UPS本体と同様に内部バッテリーも製品保証ならびに保守の対象です。

UPSが要バッテリー交換アラートを出した場合が対象です。 保証期間内もしくは保守契約期間内で、UPSの要バッテリー交換LEDが点灯した場合にはご連絡ください。 弊社にて交換が必要と判断した場合には、製品保証もしくは保守契約内容に応じてご対応いたします。

APC UPS 内部バッテリーの製品保証, 保守について | よくあるお問い合わせ | Schneider Electric 日本

準備するもの

参考にする APC フォーラムでは物理状況が示されてないので私が試した知見を元に補足します。
下記2つを用意する必要があります。

  • APC AP940-0625A シリアルコンソールケーブル
  • RS-232C から USB への変換アタプター
  • USB 2.0 Type B ケーブル
  • Tera Term version 5.3
  • ファームウェア

特殊な物はありません APC AP940-0625A は特殊ですがそれ意外は大体手を付けている方のお宅には転がっているはずです。

Important

特に、 AP940-0625A ケーブルは一見 RJ-45 のような形状をしていますが ピン数が 10 ピンで Cisco 互換コンソールケーブルで代用すると UPS 本体が強制シャットダウンされるため、利用出来ません。

ケーブルとマニュアル RJ-45 と AP940-0625A の比較

USB-B ケーブルは流石に付属品ではないため、テプラ用に確保していた物を代用していますが一般的なケーブルで十分です

復旧

上記の状態を X(ツイッター)で悲しみ報告したところ多数の情報が寄せられ、一つずつ読んでいたところ、寄せられた情報に、 APC UPS Data Center & Enterprise Solutions Forum にコミニュティ投稿があり、実際に復旧をトライした方がコメントしてくださいました。

自分の機器は延長保守が残っている状態で保守サポートをつつけばおそらく先出しセンドバック保守されるのですが、それでは面白くないのとエンジニアの端くれのため、せっかく最悪先出しセンドバックで修理してもらう術があるためとりあえず試してみる事にしました。

Tera Term インストール

本記事の状態となった、 UPS はシリアル通信でバイナリを受信する XMODEM というプロトコルでバイナリ受信待機した時に食わせることでファームウェアを書き直す処理をします。ですが、デフォルトの設定では参考記事で紹介されている設定と違うため設定をあわせます。

Tera Term version 5.3 で作業したためこれをインストールした状態から作業をはじめます。

シリアルポートの設定を修正

参考記事では下記のように記載されており、 Tera Term のデフォルト設定とは異なるため修正します。

Port settings are 9600 baud, 8bit, 1 stop bit, no parity, xon/xoff flow control.

Solved: APC UPS SMX1500 firmware update failure - and fixed - Schneider Electric Community

修正は「設定」->「シリアルポート」の画面で下記のように修正します。修正箇所は フロー制御 のみのはずです。

ポート<利用するポートに応じて変更>
スピード9600
データ8bit
パリティnone
ストップビット1 bit
フロー制御Xon/Xoff

「シリアルポート」の設定を変更

変更が完了したら、「設定」->「設定の保存」で設定を保存してください。

設定ファイルの場所を確認

Tera Term 4.x までは設定ファイルは C:\Program Files (x86)\teraterm\TERATERM.INI を利用していた記憶ですが、 Tera Term 5.x では %APPDATA%\teraterm5 に移動されたようです。この後に画面では設定出来ない項目を変更する必要があるため、確実に設定ファイルを確認します。

「設定」->「設定フォルダ(I)」 の順にクリックすると一覧が表示され、「Tera Term設定ファイル」が現在設定を保存しているファイルです。

「設定」->「設定フォルダ(I)」 「Tera Term設定ファイル」を確認

XMODEM の設定

本当は不要な可能性もありますが筆者はこの設定でやったので変更します。デフォルトでは XmodemOpt=checksum が設定されていますが、どうやら CRC のほうが都合が良いようなため XmodemOpt=crc へ変更しファイルを保存します

また、修復作業は UPS の仕様として9分で問答無用でシャットダウンされてしまうため XMODEM をタイムアウトさせず、絶えず待ち受けさせておくほうが良いので XmodemTimeouts も変更します。今回は下記の設定を使いました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  ; XMODEM option (checksum/crc/1k)
- XmodemOpt=checksum
+ XmodemOpt=crc

  ; XMODEM Timeout value(v1,v2,v3,v4,v5) by seconds
  ;  v1=NAK mode: Timeout value for first packet
  ;  v2=CRC mode: Timeout value for first packet
  ;  v3=Timeout short time 
  ;  v4=Timeout long time 
  ;  v5=Timeout very long time 
- XmodemTimeouts=10,3,10,20,60
+ XmodemTimeouts=10,3,900,900,1200

ファームウェアファイル

APC のファームウェアは会員登録なしにちゃんとダウンロードできる。下記のサイトで配布されている。
今回の製品は SMT シリーズの 1500RMJ2U となる。
Firmware Revision ID18 は、 シリアル接続で確認するか、 NMC3 の 「About」 > 「UPS」で確認できる。

「About」 > 「UPS」 の例

ダウンロードしたファイルの中から今回利用するのは「SMT18UPS_15-0.enc」であった

マニュアルで「SMT」、「ID18」のリンクを確認する リンクから文書を確認すると「9.8」で「ID18」用途言う事がわかる

実施

Topic

最初に、本手順の注意事項です。
この状態の UPS の仕様として 約9分で強制的に電源が落ちます。それが XMODEM 転送中でも、転送が完了して起動してもです。
そのため、作業を開始して 4分以内に転送を開始出来なければなりません。

失敗した場合は、電源を切断しはじめからやり直しです。

9分以内に出来なかった時の図

  • バッテリー、 AC を外します、15分程度放電させます。
  • 放電が完了したタイミングで NMC 3 を一度取り外します。
  • シリアルを作業端末に接続します
  • シリアル接続をひらき
  • 「設定」->「シリアルポート」で先程設定されたフロー制御が Xon/Xoff になっていることを確認する
    • alt
  • XMODEM 送信を開始します
    • 「ファイル」->「転送」->「XMODEM」->「送信」 でファームウェアファイルを選択
    • alt
  • バッテリーを接続します
  • 電源を投入
  • すべてのランプが点灯します
  • 数秒すると、③オンバッテリLED、⑤バッテリ交換LED が点灯する
  • ④故障LED が点滅する (15秒程度)
  • ④故障LED が消灯する
  • 40秒程度空けて、 USB-B を再接続します
  • 2分程度待つ、この時 ④故障LED は点滅し続ける
  • UPS が XMODEM 受信状態になると USB-B 側が切断/接続される
  • ①オンラインLED と ④故障LED が交互に点滅する
    • ①オンラインLED と ④故障LED 点滅の様子
  • 完了すると「Download Complete Starting UPS Application」がコンソールに表示される
  • UPS 画面には見慣れた「Output Off」、「Batt:」の文字が拝める
  • 以上で完了です。お疲れ様でした
  • 起動から9分たったところで自動で電源が落ちます
Note
ここまで、で 4分30秒以内に完了してない場合やり直しの可能性が高いです。

詳細は、 RTA をしないとならないため動画を残しておきました。キャプションと概要欄を確認ください

最後に

最初の、この状態になり手持ちの USB-B、 APC コンソールや NMC3 のコンソールと閲覧しても何も表示されずスイッチ製品のように bootloader が走っているような気配もなく復旧は絶望的だと考えていました。

きれいないるみねーしょん

が、この事をいつものように X に投稿したところ本当にたくさんの方から、情報を頂きインターネット集合知の素晴らしさを痛感しました。またおうちえんたーぶらいずをすることで豊富な知見が集まってくることも確認出来ましたw

結果的に今回実施する糸口になった APC フォーラムの記事を教えて頂き復旧にいたりました。

結論として、 NMC 上からのファームウェアアップデート作業は NW 切断でファームウェアの破損を招くため実施するべきではないと思いました。後にわかった事ですが、 NMC に割り当てた IP アドレスは DHCP で配布されたアドレスで DHCP は UPS Outlets で供給されていたためファームウェアアップデート前にシャットダウンされ、 DHCP のリースが XMODEM 転送中に切れた事で失敗した可能性もあります。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。