現時点(2013.3.27)において, ML110 G7 は IvyBridge に対応していませんが,これを強引に動作させる方法をご紹介.
概要
ここで説明する手順では主に次の2つのことを行います.
- BIOS に含まれている,対応 CPU のリストを改変
- BIOS に含まれている,SandyBridge 用の microcode を IvyBridge 用のもので置換
従って,この手順に沿って改変した BIOS を書き込んだ場合,SandyBridge は動作しなくなります.ご注意ください.
対象
対象にしているのは,E-1 stepping な IvyBridge です.C-0, D-0, E-0 stepping の場合は,適宜読みかえる必要があります.
準備
作業は,Windows 上で行います.次のものを準備します.
- USBメモリ
- バイナリエディタ
- LM110 G7 公式の,最新のBIOS書き換えツール (この例では 2012.12.04版)
- Intel が提供している,最新の Processor Microcode を収録した microcode.dat
- microcode.dat を デコードする,microdecode.exe [キャッシュ]
手順
- microdecode.exe を使用して,microcode.dat をデコード.
1% microdecode.exe microcode.dat多くのファイルが生成されますが,使用するのは cpu000306a9_plat00000012_ver00000013_date20120716.bin のみ.
- BIOS 書き換えツールをインストールしたフォルダでコマンドプロンプトを開き,次のコマンドを実行.
1234567% ROMPAQ.EXE /D CPQJ0102.984 DUMPROMPAQ Firmware Upgrade Utility, Version 5.14 (R)Copyright (c) Hewlett-Packard Corporation, 1994-2011Input file: CPQJ0102.984Output file: DUMP
- 「DUMP」というファイルが生成されているので,これをバイナリエディタで開き,アドレス
0x003e5070 に移動.
12345678910111213003e5070 5f 05 5f 54 53 5f 03 19 a0 06 03 0f 00 00 00 53 |_._TS_.........S|003e5080 61 6e 64 79 20 42 72 69 64 67 65 20 41 2d 30 00 |andy Bridge A-0.|003e5090 5f 54 53 5f 03 1b a1 06 03 0f 00 00 00 53 61 6e |_TS_.........San|003e50a0 64 79 42 72 69 64 67 65 20 44 54 20 42 2d 31 00 |dyBridge DT B-1.|003e50b0 5f 54 53 5f 03 1b a2 06 03 0f 00 00 00 53 61 6e |_TS_.........San|003e50c0 64 79 42 72 69 64 67 65 20 44 54 20 42 2d 32 00 |dyBridge DT B-2.|003e50d0 5f 54 53 5f 03 1b a3 06 03 0f 00 00 00 53 61 6e |_TS_.........San|003e50e0 64 79 42 72 69 64 67 65 20 44 54 20 43 2d 30 00 |dyBridge DT C-0.|003e50f0 5f 54 53 5f 03 1b a5 06 03 0f 00 00 00 53 61 6e |_TS_.........San|003e5100 64 79 42 72 69 64 67 65 20 44 54 20 44 2d 30 00 |dyBridge DT D-0.|003e5110 5f 54 53 5f 03 1b a7 06 03 0f 00 00 00 53 61 6e |_TS_.........San|003e5120 64 79 42 72 69 64 67 65 20 44 54 20 44 2d 32 00 |dyBridge DT D-2.|003e5130 16 17 00 00 00 49 41 33 32 5f 50 4c 41 54 46 4f |.....IA32_PLATFO|
- 上記に含まれるデータを次のように修正.(一行目が ASCII 表現,二行目がそれに対応する16 進表現)
1234-_ T S _ . . . . . . . . . S a n d y B r i d g e A - 0 .-5f 54 53 5f 03 19 a0 06 03 0f 00 00 00 53 61 6e 64 79 20 42 72 69 64 67 65 20 41 2d 30 00+_ T S _ . . . . . . . . . I v y B r i d g e D T E - 1 .+5f 54 53 5f 03 19 a9 06 04 0f 00 00 00 49 76 79 42 72 69 64 67 65 20 44 54 20 45 2d 31 00
- 最初に生成した cpu000306a9_plat00000012_ver00000013_date20120716.bin の中身をアドレス
0x361800 から始まる場所に上書き.
1234500361800 01 00 00 00 28 00 00 00 12 20 24 04 a7 06 02 00 |....(.... $.....|00361810 5d 93 e9 f3 01 00 00 00 12 00 00 00 d0 23 00 00 |]............#..|00361820 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |.$..............|00361830 00 00 00 00 a1 00 00 00 01 00 02 00 28 00 00 00 |............(...|00361840 00 00 00 00 00 00 00 00 23 04 12 20 f1 08 00 00 |........#.. ....|
ちなみに, 0x361800 から始まる場所には,SandyBridge 用の micorocode が格納されています.(最初のステップで生成されたファイル郡に含まれる 「cpu000206a7_plat00000012_ver00000028_date20120424.bin」の内容と一致)
- 以上の書き換えによって計算されるチェックサムが変わってしまうので,チェックサムが変わらないように適当な場所の値を改変.
チェックサムはバイト単位で積和した下位 8bit です. - 修正後の「DUMP」ファイルを保存.
- コマンドプロンプトで次のコマンドを実行して,「CPQJ0102.984」ファイルを更新.
1% ROMPAQ.EXE /C DUMP CPQJ010 2984 12/04/2012 64
- HPQUSB.exe を使って USB メモリに BIOS 書き換えデータをコピー.
- LM110 に UBS を差して起動し,BIOS を更新.
ここで,「Invalid values in header in file」と出る場合,チェックサムの不一致が発生しているので,再度チェックサム合わせからやり直します. - 更新できたら,電源を OFF して CPU を IvyBridge に乗せ換えれば完了.電源 ON すれば IvyBridge が動いてくれます.
既知の問題
- リセット後起動しません.一旦電源を落とす必要があります.
免責事項
ここで紹介した手順については,自己責任で利用願います.なんらかの不利益が生じたとしても一切責任は持てません.
参考文献
- Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 3A [キャッシュ]
- microdata がどういうものなのか理解するため,「9.11 MICROCODE UPDATE FACILITIES」を参照しました.
- Intel Processor Identification and the CPUID Instruction [キャッシュ]
- IvyBridge に対応した microcode を特定するのに,「Table 5-4. Intel486 and Subsequent Processor Signatures」を参考にしました.
- CPU World
- 使おうとしている CPU のステッピングを調べるのに参照しました.例えば,E3-1270 V2 の SR0P6 は E-1 stepping ということが分かります.
コメント
すばらしい記事ありがとうございます。参考にさせていただきます!
Could you post a download link? I am worried that the instructions will be lost in Google translation and mess my ML110 G7 up. Thank you.
Could you post the checksum of your modified bios file? Thank you.
すばらしい、ありがとうございます。
しかし、BIOSの更新をしたら、PCI-e slot 1,slot 2 が使えなくなりました。
PCI-e slot 3,slot 4は使えます。
そんなことありませんか?
It looks like that same thing happened to me. It booted successfully using E3-1230 V2, but can’t access a card at slot 2. Have you found a solution for it?
オリジナルBIOSのマイクロコードは206A5と206A7が入っているようなので、206A7を残して206A5を306A9に置き換えればSandyもIvyも動くような気がするのですがどうでしょう?
それと、チェックサム合わせはマイクロコード置換した直後のアドレスのFFを必要なだけ00にするのと、ASCII文字部分をHALからIBMみたいにいじるのだったらどっちが低リスクかな。
リダンダントBIOSがあるとはいえ、ビビッてますw
It seems microcode.dat (I try to download even microcode-20161104.tgz) does not contain 206A5, only 206A7. So it is impossible to identify such a code in dumped BIOS file 🙁
Hi Kimata,
I am trying to do the same stuff on HP-DL120 G7 to enable it to use the V2 processor untill now am unable to get success i would appreciate if you can provide me some help.If possible please share your mail id.
Regards,
Vishal Shinde
Very helpful !
Can you sent me your modified bios contain the microcode of E3-1230 V2?
(The latest version Bios will be much exciting for me!)
best wishes !
Does not work for me, I getting different results when I type the following A7 (or a7) at 00361800 0C
01 00 00 00 28 00 00 00 12 20 24 04 A7 06 02 00 = ….(…. $.§…
5D 93 E9 F3 01 00 00 00 12 00 00 00 D0 23 00 00 = ]”éó……..D#
And so on, I cannot replicate the same. Is it possible that you could post/mail the files please?
Many thanks.
—
私は、次のA7を入力(またはA7)00361800℃でとき、私は別の結果を得る、私のために動作しません
01 00 00 00 28 00 0000 12 20 24 04 A7060200=….(….$。§…
5D93 E9 F30100000012000000 D0230000=]”EO…….. D#
というように、私は同じを複製することはできません。それはあなたがファイルを/メールをください投稿できることは可能ですか?
感謝します。
Hi There,
Just wondering if you give me the link for the Modified Bios?
THanks.
Regards,
有益な情報をありがとうございます。
…ですが、全体としての理屈と場所がハッキリしてないので、簡単には
出来そうにないですね。
最初の書き換え部分は、BIOSが認識出来るCPUIDとその名称、microcode
へのポインター(?)のテーブルみたいですが、その後のmicrocodeの書き換え
部分では、CPUID=206a7の部分を書き換え…と、なんだか、良く分かりません。
最初のテーブル部分では、CPUID=306a0の部分を306a9に書き換えてるように
思えるのですが…。詳細はまだ理解出来てないので、どうしてこうなるのか
出来れば詳しく教えて頂きたいです。
それと、
-_ T S _ . . . . . . . . . S a n d y B r i d g e A – 0 .
-5f 54 53 5f 03 19 a0 06 03 0f 00 00 00 53 61 6e 64 79 20 42 72 69 64 67 65 20 41 2d 30 00
+_ T S _ . . . . . . . . . I v y B r i d g e D T E – 1 .
+5f 54 53 5f 03 19 a9 06 04 0f 00 00 00 49 76 79 42 72 69 64 67 65 20 44 54 20 45 2d 31 00
この部分ですが、下の行の7Byte目からは、a9 06 03 (IvyBridge CPUID) じゃないでしょうか?
すみません、
このバージョンのBIOSの場合には、CRCの位置だけ間違わなければ、
という条件付きなら、簡単に出来ます。
ですが、現在、新BIOSパッチ(2013.07.01A)になっており、アドレスの
変更が必要になるため、適用には詳細な理由が分かってないと、不可能の為
コメント致しました。