HP ProLiant MicroServer Gen8 の firmware, BIOS ROMを焼き直して修理する

OpenMediaVault5 を HP ProLiant MicroServer Gen8 (以下 HP Gen8) で実現するのに、iLO4のファームウェアのバージョアップやCPUのBIOSのバージョンアップを頻繁に行いました。所がiLO4のファームのバージョンアップ中にソフトが止まってしまい、バージョンアップを失敗しました。その結果、HP Gen8 が立ち上がらなくなってしまい、途方に暮れるはめに。修理にあーでもない、こーでもない と色々試して、最終的には全て修理ができたのですが、(良かったです^O^) 修理に当たってネット上には参考になる記事もなく途中手探りで本当に、いらいら、どきどきしました。結局、内部のフラッシュROM2個、つまり、iLO4のfirmwareCPUのBIOSをROM Writer CH341Aで直接書き直しました。ROM Writer CH341Aの使い方は ROM Writer CH341A を使いこなす で説明しています。この記事では HP Gen8 の iLO4 firmware , CPU BIOS の通常のバージョンアップについて説明した後、なんらかの理由で通常のバージョンアップができなくなった場合の ROMの焼き直し修理 について詳細を説明致します。

HP Gen8 について OpenMediaVault5で RAID Z, RAID Z2 を実現 Part1, OpenMediaVault5で RAID Z, RAID Z2 を実現 Part2 の内容は理解されている として話を進めます。

HP Gen8 iLO4 firmware バージョンアップ

iLO4 firmware をバージョンアップするにはフラッシュコンポーネントと呼ばれるiLO4 のfirmware バージョンアップデータが必要です。

HPE の サポートセンターに入り ”オンラインROMフラッシュ コンポーネント for Windows x64- HP Integrated Lights-Out 4 ” で検索します。色々なバージョンが見つかります。

2.44 バージョン(Jul 25,2016) に注目します。 2.44を選んだ理由は特にありませんが、たまたま目についたので例にしています。詳細を開いてダウンロード頁からダウンロードします。ダウンロードデータ cp030135.exe を実行すると。

ここで、解凍を実行します。ilo4_244.bin を含む幾つかのファイルが解凍されます。さて、バージョンUPの方法は幾つかあるみたいですが、ここでは Web ブラウザから実行する方法を使います。

その場合必要なのはバージョンUP データの入っている ilo4_244.bin ファイルのみです。

さて、Web ブラウザーから iLO4 に入ります。( OpenMediaVault5で RAID Z, RAID Z2 を実現 Part2 参照)

英語モードで入りました。AdministrationFirmware とクリックしてファイルを選択 をクリック

先ほどの ilo4_244.bin を選択して → Upload クリック

自動的に Digital Signature を確認、upload が始まり 2分程度で

再ログイン画面になります。これでバージョンUP 完了 Firmware Version 2.44 になっています。(バージョンUP前も 2.44 でしたね。 2.44 → 2.44 へのバージョンUPは特に問題ないです。(^o^))

HP Gen8 CPU BIOS バージョンアップ

つぎは BIOSのバージョンアップです。マザーボードのBIOSに相当するもので、一般的なBIOSバージョンアップと考えれば良いでしょう。やり方はUSB KEY (= USB メモリーの事)にバージョンアッププログラム + バージョンアップデータ を入れて USB KEY 起動でBIOSを書き直します。

HPE の サポートセンターに入り ”システムROMPaqファームウェアアップグレード for HP ProLiant MicroServer Gen8(J06)サーバー(USBキーメディア用)” で検索します。南京錠のマークがついているのは契約している人しかダウンロードできません。.・・・のはずなのですが、中にはダウンロードできる物もあります。私は 2013.08.24, 2018.01.22, 2018.05.21, 2019.04.04 のファイルをダウンロードしました。まあ、最新の物があれば良いので 2019.04.04 だけでも良いかもしれません。

さて、ここでの例は 2013.08.24(A) (南京錠マーク) です。ファイルをダウンロード、インストールすると、C:\SWSetup → SP62951 の下に展開。バージョンアップ用のUSBメモリーを作るには、FAT32でフォーマットしたUSBメモリーを用意。このUSBメモリーが H: で認識されるとします。c:\SWSetup → SP62951 → ROMPaq USB Key → HPQUSB.exe をクリックすると

USB Key Setup Creation Utility が立ち上がります。Device が H: の USB メモリーである事を確かめて Start を押します。

 

 

 

すると何故かUSBメモリーがライトプロテクトだと怒られます。おそらく、これはバグだと思います。

OKクリック

 

再度 Start すると

 

 

 

 

Copying System files … が始まります。

 

 

 

 

 

終わったら H: USB メモリーの中を確認しましょう。左の様になっていれば BIOS バージョンアップUSB KEYの完成です。

ちなみにCPQJ0612.B18 が バイナリファイルの本体です。このUSB KEYにバージョンの異なる.B18 ファイルを複数いれて置けば、バージョンアップ時に選ぶ事ができます。

 

 

それでは、このUSB KEY を使って BIOS バージョンアップしましょう。

USBメモリーから立ち上げれば良いので色々方法はありますが、例えば 立ち上げ時に F11 をクリックして Boot Menu

 

 

 

USBメモリーを挿入して

3) One Time Boot to USB DriveKey

を選ぶと

 

 

 

BIOS バージョンアッププログラムがUSBメモリーから立ち上がります。例では UPDAT ROM DEVISION が新しくないと警告されていますが、 Continue = Enter で普通に書き込みが始まります。

 

 

書き込みが終わるまで、電源を切ったり、リブートしたりしない様にして下さい。

 

 

 

 

終わればBIOSが書き換わっています。

iLO4 firmware, CPU BIOS バージョンアップ失敗 → どうする

頻繁にiLO4 firmware のバージョンアップを行っていましたが、その作業中に突然ソフトが止まってしまい、バージョンアップに失敗しました。HP Gen8 のハードウェアを変更する事なく、なんとか直せないかと色々やりましが、根本的に、HP Gen8の挙動が信用できなくなってしまいますのでどうにもなりませんでした。あれこれいじって、今度は CPU BIOS も書き損なってしまいました。結局、firmware, BIOS を再ROM焼きしないとだめそうです。参考になる記事がないかとネットを色々あさりました。ROM Writer は色々在りましたが、HP Gen8 については有効な物をみつけられませんでした。手探りで治すしかありません。その為には・・・。

firmware, BIOS の物理的収納場所の特定。

少しピントがずれていますが、HP Gen8 の丸印の場所に firmware, BIOS のチップがあります。拡大してみると左側チップ(SOP 8ピン)の左横にBIOSの文字が 右側チップ(SOP 16ピン)の上に ILO FWの文字がチップ自体にはILO4と書いたラベルが貼ってあります。それぞれ BIOSチップ firmware チップで間違いないでしょう。ちなみにこの写真はXeonタイプの製品です。Pentiumタイプのマザーは左側のBIOSのICの種類が異なります。

IC chip名、容量の特定

ICの同定には結構苦労しました。

同定の画像は一部、写真の顕微鏡カメラを使いましたが、スマホカメラの拡大画像で殆どOKでした。

 

 

 

 

 

これはPentiumタイプのBIOSチップです。Winbond 25Q64FVSIG がハッキリ読み取れます。分かり易いですね。スマホ拡大画像です。

Winbond W25Q64FV (SOP 8pin) 64Mbit = 8MByte

これはXeonタイプのBIOSチップです。25Q064A13E40が読み取れますが、e4のマークがメーカーロゴでしょうか。25Q064A13E40で検索するとすぐ正体が判明します。スマホ拡大画像です。

 

 

検索で殆ど同じ画像を見つけました。これはネットからダウンロードした画像です。

MICRON N25Q64 (SOP 8pin) 64Mbit = 8MByte

 

 

 

これが一番苦労しました。もっと、きれいに剥がれるラベルを使ってもらいたいものです。iLOのfirmware chip なのですが、MXIC は問題なく読めますがMX25?128?5Eと読めます。推定と後からROM WriterでIDを読み取って判定しました。スマホ拡大画像です。

MXIC MX25L12845E (SOP 16pin) 128Mbit = 16MByte

ROM焼き用バイナリデータの用意

ROM焼き用のバイナリデータを用意する必要があります。この時点ではROM Writer が確実に動くかどうか分かりませんでした。従って、他のセットから読みだしたROMデータには信頼性が置けません(と、思っていました。) それと、YouTube などを見ると 市販のマザーボードのBIOSデータを直接ROM焼きする場合、メーカサイトからダウンロードして来たバージョンアップ用のデータの最初のヘッダーを除いた物を使っています。大抵はヘッダーを除くと書き込みデータバイト=ROM 容量になるみたいです。データを暗号化したりする例は殆どない様で、ほんとに特殊な場合にシリアル番号をいれる必要があるくらいです。【追加 2023年9月1日】バイナリエディタは何でも良いのですが、ここでは Binary Editor BZ (Ver 1.62) を使いました。現在は Ver 1.9.8.7(2022/05/08)らしく見かけもかなりバージョンアップしているみたいです。【追加 ここまで

そこで、バイナリエディタを使ってilo4_244.bin の後半 16Mbyte分きっちりで ilo4_244編集済.bin  を作ります。

左をみれば最初iLO4 v 2.44 から始まっているのが分かります。

最後は FF:FFFF でデータが終わっており、16Mbyte ぴったりだとわかります。多少最後にゴミが入っているみたいですが、これは最初のデータからです。

 

 

同様に CPQJ0612.B18 から CPQJ612編集済.bin を作ります。こちらの方はFFデータばかりで、一瞬 何か手違いをしたのではと勘違いしますが、詳しく内容を見ていくと間違いではない事が分かります。

最後の考察編の答え合わせでも、これで正しい事が証明されます。

データ量は きっちり 4Mbyte つまり 8Mbyteの半分です。これはBIOSのほうはメインとバックアップが2つある為ではないかと推定しています。

 

 

HP Gen8 の firmware, BIOS ROMを焼き直して修理する (失敗編)

ここから、ROM焼きにはいります。ROM Writer は ROM Writer CH341Aをつかいこなす 参照。

後から思うとこのROM焼きの方針で大きな勘違いをしていました。CPU BIOSのバージョンアップでは一応 HP Gen8 が動きだしてから、USB KEY で立ち上げ BIOS バージョンアップをします。この事から HP Gen8は最初 iLO4 のファームウェアで動きだし、BIOS が関与するのはその後だと考えていました。つまり、 iLO4 firmware の ROMを焼き直し、立ち上がりさえすれば、BIOS はUSB KEYで焼き直せると考えていました。そこで、方針は、なんとか iLO4 firmware だけでもROM焼きで書き直す。だったのです。今から考えるとこれは致命的ミスです。正解は firmware, BIOS 両方 ROM焼きでなおさないと立ち上がりません。

さて、最初はなんとか、IC Chip を基板から外さずに修理、出来ないかと考えました。というのは、フラットパッケージのICを半田ごてで外し損なってパターンを痛めた経験があり、ICを基板から外すのは、苦手です。同時に最近のYouTubeには ICクリップで直接 ICを挟んでROM焼きする動画が幾つも上がっているので、真似ればうまくできるのではないかと思ったのです。結果、この方法は失敗しました。16Pinのクリップがうまく挟めません。100回以上試して、嫌になりました。

そこで、IC clamp という 1pin ずつICピンをつかむ非常に小さなクリップを手にいれ写真の様につなぎました。結線はうまく行きましたが、ROM焼きは上手くできません。ROM焼きソフトが異常動作するのです。異常動作するタイミングが一回一回違います、ノイズで誤動作している感じです。

 

 

 

 

そこで、アルミ箔でなんちゃってシールドをしてみました。写真ではIC clamp が見えますが、ROM焼き時には完全に覆います。この方法は時々うまく読み焼きできます。と、言うか時々 ROM 焼きソフトが最後まで動作します。どうやら、ノイズで誤動作しているのは間違いなさそうです。しかし、うまく行ったかどうかの確認ができません。ROM焼きがうまく行った様に見えてもリセットして動作させるとうまくうごかないのです。結局 どうして良いか分からず、お手上げになってしまいました。

今から考えると実はこの方法は、ROM焼きについては上手く行ってたようです。最初の致命的方針のミスがなければ、この時点で動きだしていたかもしれません。

ROM焼きに失敗したと判断したのは最終的にHP Gen8 が復活しなかったからです。さらに、ROM焼きソフトの信頼性の悪さも失敗の判断の後押しをしました。しかし、この時点でもROM焼きソフトが最後まで動作し、かつVerify もPass する事がたまにありました。その時には少なくともROM焼きは成功していた事になります。(ただし iLO4のfirmware だけですが・・・)

しばらく、修理は諦めていました。

HP Gen8 の firmware, BIOS ROMを焼き直して修理する (成功編)

用語説明

  1. HP Gen8 : HP ProLiant MicroServer Gen8 の事
  2. HP Gen8基板 : HP ProLiant MicroServer Gen8 のマザーボードの事
  3. WE基板 : CH341A でフラットパッケージ等を扱う為の拡張の基板 Writer Extend board の事

この時点での状況を整理すると、HP Gen8 は 4台所有しているが、その内2台は Openmediavault のNASとして動いており、手を付けたくない。残り2台は動作不良になっており、ROM焼き直し以外に修理の方法が在りません。冷静になってこれまでの修理法を考えると、随所に思い込みや信頼性の低い方法で修理を進めていた事に気がつきました。まず、firmwareのROM焼きデータは “HP Gen8 iLO4 firmware バージョンアップ”で使用した”  ilo4_xxx.bin データからヘッダー部分(とおもわれる)を取った物を使っているが、これで良いのか。さらに、BIOS焼き直しは firmware さえ直して、USB起動までこぎ着ければ、USBからできるはず、で良いのか。そもそも、時々しかROM焼きに成功しない(と思われる)方法で良いのか。とにかく失敗する原因が色々あります。そこで、できるだけ確実な方法を考え修理を進めます。

リファレンスセットを用意する。

ハードウェア的には壊れていないはずですから、確実に動作するリファレンスセットからROMをもってきてコピーするのが確実です。この時点では修理するべき2台ともROM焼きに失敗しているので、リファレンスセットは 動作中のNASを一台止めるか、新規に購入しかありません。かなり悩んで新規に (Yahoo オークションで) 購入を選びました。万が一動作中セットも動かなくなると精神的被害が大きすぎます。

ROM焼きを確実にする。

ROM焼きはICをWE基板にはんだ付けし直してROM Writerにセット、確実にROM焼きした後、本体に戻して、はんだ付けし直す。

Hot Air Gun を購入致しました。Hot Air Gun と はんだペーストを使うと確実にICの付け外しができます。HP Gen8基板に付け外しする際には部品が吹き飛んだり、熱でプラスチックがひしゃげたりしない様 対象 IC 以外はポリアミドテープで保護します。これで、10回以上同じWE基板に付け外ししても基板が剥がれる事は在りません。どうやら、良い道具を使うと苦手意識から逃れられそうです。SUNRUNの製品が評判が良かったです。実際、使い易いです。

(AliExpress 購入時 3052円)

 

具体的なROM 焼き直しの方法ですが、まず、新規購入セットをリファレンスとします。このリファレンスのROMを完全にコピーするだけです。但し、後のデータ比較のため、比較するデータを最初に書き込んで置きます。つまりバージョンアップして置きます。リファレンスの日本語化はしません。

  1. リファレンス iLO4 firmware バージョンアップ
  2. リファレンス CPU BIOS バージョンアップ
  3. リファレンス iLO4 firmware ICをHP Gen8基板からWE基板に再はんだ付けしてデータ読み取り Ref firmware data とする。
  4. リファレンス iLO4 firmware ICをWE基板からHP Gen8基板に再はんだ付けし直して戻す。
  5. リファレンス CPU BIOS ICをHP Gen8基板からWE基板に再はんだ付けしてデータを読み取り Ref BIOS data とする。
  6. リファレンス CPU BIOS ICをWE基板からHP Gen8基板に再はんだ付けし直して戻す。

で、確実に動作する Ref firmware data と Ref BIOS data を確保します。

後は Ref firmware data , Ref BIOS data を 再はんだ付けを繰り返して、動作不良のセットのICに書き込みます。

次に、CMOSクリア( =単に電池をはずして暫く放置してから電池装着)してから、セットを立ち上げます。

やって見ると まず、ROMの吸出し( =Ref firmware data, Ref BIOS data の確保) はなんのトラブルもなくうまく行きました。吸出し後のROMを本体にすぐに戻せたので、一安心です。所がこのデータを再ROM焼きする段階でうまく行きません。こんな簡単な事( = ROM焼きするだけです) も出来ないのかと・・心が折れました。

かなり時間がたってから、一縷の望みをかけて電源をバイパスしてみようと思い立ちました。(WE基板上のIC位置とCH341AのICソケットとの距離は2-3cmですので、ノイズが飛び込むはずが.・・) するとうまく行ったのです。信じられない思いで、飛び上がって喜びました。

最終的にはすべてのセットを修理できました。

 

 

HP Gen8 の firmware, BIOS ROMを焼き直して修理する (考察編)

最終的にセットが修理できてほっとしました。結果を踏まえて振り返ってみると、色々なトラブルが納得できました。そこで、トラブルについて解説(解析)しておきます。

ROM焼きデータについて

答え合わせ (バイナリデータ比較には WinMerge を使いました)

書き込みデータの答え合わせです。ROM焼き用のバイナリデータの用意で作った、ilo4_244編集済.bin と リファレンスセットから読みだした iLO4_244オリジナルROM=Ref firmware data を比較してみました。1byteも違いはありません。

つまり、firmware のROM 焼きデータはバージョンアップデータから作れるという事です。つぎに、CPQJ612編集済.bin とリファレンスセットから読みだした BIOSオリジナルROM = Ref BIOS dataを比較してみます。この2つはバイト数が2倍違うので、当然同じにはなりませんが、比べた所4Mbyte位置まで全く同じです。

さらに、USB KEYによる通常のBIOSバージョンアップを途中で止めてN25Q64(=BIOSの IC)のデータを比較して見ると、前半4Mbyteの途中に損傷が起きました。後半4Mbyteは無傷でした。

 

つまり、一部損傷したBIOS IC データ と BIOSバージョンアップデータ の合成で BIOS ROM焼きデータは作れるという事です。CH341A で ROM焼きする前にBIOS IC からデータを読み出し、バイナリエディタでバージョンアップデータと合成すれば良いです。

今後はセットのROM焼きは損傷を受けた後でもデータ準備OKという事です。

これら一連の答え合わせを調査している途中で BIOS IC のデータに損傷を受けるとセットが正しく立ち上がらない事を確認しました。

HP Gen8 が正しく立ち上がる為には iLO4 の firmware, CPU の BIOS 両方 正しい事が必要です。

ROM ライターについて

ROM Writer CH341A は非常に使い易いTOOLですが、問題点を把握して使う必要が有ります。

ソフトウェアの問題

CH341A 用 ROM焼きソフトは色々な種類が出回っていますが、つたない私の知識では次の3種類が主です。ROM Writer CH341A を使いこなすで紹介していますので、其方も参考に。

CH341A Programmer : CH341Aオリジナルのソフトでおそらくは開発者が作った物だと推定します。ただしかなり古い(多分 2012年製位)事もあり、今のChipで対応していなかったり、不具合がでます。

  1. CH341A Ver1.00  micron N25Q64 に対応してません。チップ検出で、出て来ないと思ったら対応IC に含まれませんでした。
  2. CH341A Ver1.34    MXIC MX25L12845E で誤動作します。対応チップにはあるのですが、8Mbyteを超えた所でベリファイエラーがでます。書けてないのか、ベリファイソフトのエラーなのか確かめていません。確実に問題点を分離しながら進めた事で、このソフトの不具合を分離できました。このバージョンは使わないのが正解でしょう。

AsProgramer : CH341A用のWriter ソフトで良く見かけます。かなりの人が使っている様で評判も良いです。私は文字は大きく、画像は細かく見る為に4Kモニターを文字350%で使っています。AsProgramer は文字の大きさ変換には対応してない様で (通常は必要ないですが..) 文字がちっちゃくなってしまいます。ので、完全に個人の都合で使っていません。

NeoProgrammer : あまり聞きなれないソフト名でしたが、文字の大きさ変換にも対応しており、フォントも高級感があって、好感度高いです。日本語対応は見当たりませんが、使い易いです。今の所バグも見当たりませんので、NeoProgrammer 2.2.0.3 は私のメインのROM焼きソフトです。

ノイズ耐性の問題

CH341A を使いこなすのにノイズ問題にはかなり手こずりました。YouTubeやCH341A を使っている人のホームページを見ると普通にフラットケーブルで引き出してROM焼きしています。実際はノイズに気を配らないとうまく動きません。私はフラットケーブルでは結局ノイズ問題でうまくROM焼きできずにいます。信じられない事にWE基板を使ってほんの 2-3cm ROM Writerから拡張しただけでも MICRON N25Q64 ではノイズで誤動作するのです。多分この場合はWE基板の引き出し線が細い事も影響していると思います。バイパスコンデンサで対応までかなり時間を要したのは前述しました。

さて、逆に考えるとフラットケーブルで拡張しようが、WE基板で拡張しようが、ノイズ対策をしっかりすればOK と言う事になります。フラットケーブル引き出しでのROM焼きにはノイズで頓挫していますが、チップを本体マザーボードからはずさず、焼き直す方法は魅力があります。機会があったら、ノイズ対策をしっかりやって再挑戦したいと思います。

タイトルとURLをコピーしました