PC用ビデオカードのBIOSをMacPro対応64bitEFIに書き換えてみた

私のMacProはEarly2008モデルであり、基本スペックとしてはまだまだ
現役でイケルと思うのだが、なんだかんだで高速なグラボが欲しくなり
前回、Windows用のGTX560に換装していた

現在OSは10.8を使っているが、PC用でも問題なく使えているものの
やはりEFI対応ではないので、起動時のブートスクリーンが拝めない事と
多少のグレードアップを目的として、PC用グラフィックカード
HD6870のEFI化を行なってみた

XFX HD6870

これまではNvidiaだったので、今回はMacでは標準的なATI RADEONから
入手価格と性能バランスを考慮してHD6870をターゲットにした

XFX HD6870 ZDFC

準備したのは、XFX製の型番「HD-687A-ZDFC」
1GBのRAMとDVI×2、mini displayポート×2、HDMI×1を装備し
デュアルファンのモデルで、なかなか頼もしい感じだ(笑

とにかくMac対応のビデオカードは選択肢が少ない、今回のように
VGAカードのファームウェアを書き換えても使える意味は大きいが
リスクも高いので、どれをベースに使うかはかなり重要

PC用グラボをEFI対応へ書き換えるには、ネット上で多数の有志の方々が
情報を公開されているが、XFX製品は成功事例が多くて安心感があるのが
チョイス理由

BIOSの書き換えにあたって、各種ツールと環境が必要
今回は全てMacPro上で行える手順で書き換えた

必要なツール類は、有名な海外掲示板サイトnetkas.org forum
カテゴリ:Rom things 内の
トピックス:make your own radeon HD 5770/5870/6870/6850 Mac ROM!
から拝借できるものがほとんどで、手順も公開されているが
わかりにくい面もあるのでまとめてみる

なお、該当サイトからツールをダウンロードするには、ユーザー登録が
必要なので、あらかじめメールアドレスを持って登録を済ませておく

準備するもの

・空き領域のあるHDD
ATIflash(BIOS書き換えツール 投稿時のバージョンは3.99)
FreeDOS boot CDのISOイメージ
・HD6870用EFI ROM(6870.efi.rom)
・Pythonスクリプトファイル(fixrom.py)

※EFI ROMとfixrom.pyはトピックス内で「flash.zip」として公開されて
いるものをダウンロードすると入っているものを利用しています

DOS環境を作る

ダウンロードしたFreeDOSのISOイメージを、ディスクユーティリティなり
ToastなりでCD-Rに焼いてブートCDを作成しておきます

FreeDOSで起動後は(MS-DOS)FATでフォーマットされたドライブしか
見えませんので、Macに内蔵されているHDDに空き領域(容量ではない)
がある場合(2M程度の領域で十分)は、ディスクユーティリティで
あらたなパーティションを作成して、FATでフォーマットしておきます

私の場合は、HDDの空き領域がなかった為、別に320GBのHDDを
MacProに取り付けてフォーマットしておきました

フォーマットが完了したら、ATIflash.exeを入れておきます

オリジナルBIOSを吸い出す

今回のHD6870はMacPro 2008の電源容量的にもOKのようですし
GTX560で使っていた外部電源6pin×2本をそのまま使えるので良し

まずは、オリジナルのPC用BIOSを吸い出します

作成しておいたFreeDOSのブートCDを入れてから、Macの電源を落として
HD6870を取り付けます

純正グラボとの2枚刺し環境の場合は、はずして1枚のみの環境にしてから
「C」キーを押しながら起動してFreeDOSを起動します

FreeDOS ブートメニュー 1

FreeDOSのブートメニューで「1」を押して
CD-ROM起動を選択

FreeDOS ブートメニュー 2

続いて「2」を押してSafeModeで起動します

DOSのコマンドプロンプトが立ち上がったら、「C:」を入力して
ドライブをCへ変更すると、FATフォーマットしておいたHDDが覗けます
ので、中に「atiflash.exe」があることを確認してから

atiflash -s 0 pc6870.rom 20000

を入力して、PC用のBIOSをバックアップ保存します
※「pc6870.rom」の部分は任意のファイル名です

バックアップは数秒程度で完了しますので、完了後はそのまま再起動

EFI ROMへの書き換え

再起動後は、Mac上でバックアップしたオリジナルのBIOSを
EFIファームウェアとして書き換えます

FATフォーマットしたHDDから「pc6870.rom」を自分のユーザーフォルダの
ルートへコピーし、わかりやすいように「mac6870.rom」などでリネーム
しておきます

また、同じようにユーザーフォルダーのルートへ
・6870.efi.rom
・fixrom.py
の2つのファイルをコピーします

計3つのファイルが揃ったら、ターミナルを起動し以下のコマンドを入力

blocknum=`printf %d "'\`dd if=mac6870.rom bs=1 skip=2 count=1 2>/dev/null\`"`
size=$(($blocknum * 512))
dd if=6870.efi.rom of=mac6870.rom bs=$size seek=1 conv=notrunc

※「mac6870.rom」の部分は任意のファイル名です
※上記コマンドは3行まとめてコピペしても良い

続いて、以下のコマンドも入力し、ROMのインジケーターを修正します

python fixrom.py mac6870.rom mac6870.rom

これで、EFIブート可能なファームウェアへの書き換え作業は完了です

EFIファームウェアを書き戻す

書き換えが完了した、ROMファイルをFATフォーマットしたHDDへ
コピーしてから再びFreeDOSをSafeModeで起動します

DOSのコマンドプロンプトが立ち上がったら、「C:」を入力して
ドライブをCへ変更すると、FATフォーマットしておいたHDDが覗けます
ので、中に「atiflash.exe」と書き換えが完了した「mac6870.rom」の
2つのファイルがあることを確認したら

atiflash -p 0 mac6870.rom

で書き換えが完了します

HD6870 for MacPro2008 1

HD6870 for MacPro2008 2

私の場合これで再起動後からアップルマーク付きのブートスクリーンが
無事に拝めました

動作音も大変静かで満足です

他にも専用ツールを用いれば、MacOS上から全て出来てしまうような
やり方もあるようですが、いくつか試した中ではエラー等でうまくいかず
最終的にDOS環境を使ったやり方が無難だったと思います

制限事項等について

書き換え後の動作はとりあえず問題ないのですが
稀に起動時(しかも朝一に限り)フリーズする事がありました

海外のサイトを探しまわると、既にEFI化されたファームウェアを拾う事も
できるので、不安定だと感じたら他の方が作成されたROMを焼いて試して
見ることもアリなんですが、同じXFXのHD6870であっても使用メモリの
ベンダーが違う場合も多く、一概にどれが正解かは言えません

この記事を見て試される方は十分覚悟の上でお願いします

また、私の環境ではHD6870以外に試せないのでわかりませんが
少なくともHD6870の場合以下の制約が付きます

ブートスクリーンは下段のDVI出力時、かつモニターとの接続が
デュアルリンクの場合のみ拝めます

HD6870にはDVI出力が2系統あり、上下段に配置されていますが
上段からは出力されません

モニターとの接続は下段のDVI出力を使って、デュアルリンクケーブルで
行う必要があります

また、厄介なのがマルチモニター環境の場合です

DVI出力以外にminiDisplayポートとHDMI出力がありますので
マルチモニター
自体は問題ありませんが、サブモニターへの接続に
miniDisplayポートを
DVIへ変換したり、HDMIをDVIへ変換して
接続した場合は
ブートスクリーンが現れません

これは盲点でした

幸い私の場合は、メインモニター(PA241W)にDisplayポートがあるので
miniDisplayポートからの出力をそちらへ、サブモニター(S2100)への
接続はデュアルリンクのDVIケーブルを使うことで解決しています

HDMIを直に接続するパターンは手持ちにHDMI入力対応のモニターが無く
試せていないので、どなたかご存知の方は是非参考に教えてください

いずれにしても、HDMIもDisplayポートも持たないモニターをサブに
使うことは残念ながら現時点では出来ないように思いますので
ご注意ください

You may also like...

22 Responses

  1. あずまや より:

    非常に参考になりやした、無事3000円1枚でWQXGA2画面表示出来ました。あとはマーベリクにするだけ。ライオンからの移行が面倒。

    • WBL より:

      コメントいただき有難うございます。
      完全に放置気味のサイトですがお役に立てて何よりです。

      古Macなので、Yosemiteにする勇気はありませんが、Mavericksはさすがにこなれてますので良いと思いますよ。
      既に10.9以降でなければ動かないアプリも増えてますので、たしかに面倒ですが・・Winのアップデート地獄を考えると再インストールも大した手間に感じないんすよね(笑)

  2. Ogyu より:

    すみません。
    インストラクションの通りに
    CDからFreeDOS ブートメニュー 「1」を押して
    CD-ROMから起動後、FreeDOS のブートメニュー 「2」を
    選択するのですが、リターンキーを押しても反応がありません。
    これ以上先に進む事もできません。
    どういう原因なのでしょうか?ご存知であれば教えてください。

    • WBL より:

      Ogyu さん

      コメントいただき有難うございます。
      既に解決済みでしたらアレですが、ご指摘の原因については残念ながら心当たりがありません。

      一応、整理しておきますとCDから起動して、最初のクジラさんの画面で「1」(ENTERでも可)を選択してブートをスタートさせ、少し読み込み待ち(最後にInitDiskと表示される画面、サイト上には載せていません)を何もせずにクリアした後、最終的にFreeDOSをHDDへインストールするか、SafeModeとして起動するかを選択する画面になりますので、ここで「2」を選択する形になります。

      ここまで間違いがなく「2」を選択しても全く無反応と言うことでしょうか。
      通常「2」を選択し、FreeDOSが起動していれば画面には「A:」などのコマンドプロンプトのみ表示されているはずですがそうではないと言う状況ですかね??

  3. Ogyu より:

    そうなんです。
    ご指示の通りに最初のくじらの画面で「1」をまず選択してそのあと「FreeDOSをHDDへインストールするか、SafeModeとして起動するかを選択する画面」に変わって、「2」を選択したいのですが、できません。
    何度も試みましたができませんでした。FreeDOSをダウンロードする際、最新のバージョンを使いましたが、古いバージョンの3.99を再ダウンンロードして使ってみようと思ってます。どういう原因なんでしょうね。グーグってみてもそういった問題は発生していないようです。
    HD6870はEFI対応へ書き換えなくともブートスクリーンがでないだけで、普通に’使えてます。いろいろありがとうございます。
    尾久

  4. Ogyu より:

    今回はfdbasecd.isoをCDに焼き直したものから起動したところSafeModeとして「2」を選択することができました。
    コマンドプロンプトの画面でA:>_が現れます。
    そこでご指示も通りC:を入力するとA:>_がC:>_の変換されます。
    この先からどのようにしてよいのかわかりません。
    インストラクションには「FATフォーマットしておいたHDDが覗けますので、中に「atiflash.exe」があることを確認してから」とありますが、どのようにしたらHDDが覗けるのでしょうか。よろしくお願い致します。

    • WBL より:

      Ogyu さん

      プロンプトまでは辿りつけたようですね。
      HDDが「C:」ドライブとして認識されているようでしたら、後は記載通りなのですがここから先はMS-DOSのコマンド知識が必要です。

      HDDの中身を見るには「dir」と入力してENTERしてください。「C:」へドライブチェンジしていればCドライブとして認識されているHDDの中身が見えると思います。
      後は必要なツールが揃っていれば、BIOSのバックアップから記載通り試してみてください。

      なお、ここから先はそれなりにリスクが伴いますのでその旨ご理解の上お試しください。特に安定的な動作については様々な状況が関わりますのである程度ご自身で対処出来る必要があるかもしれません。

  5. kk-tt より:

    macpro2008を所有しており HD8670に換装をしようと思っております。
    ご解説、非常にためになり感謝をしているのですが、英語がまるっきりダメで、flash.zip が見つけられません。 どの辺にあるのか教えていただけないでしょうか? よろしくお願いいたします。

  6. kk-tt より:

    【取り消し】
    先ほど、flash.zip を見つけることができました。
    週末に作業を行ってみます。 また、状況をご報告いたします。
    ありがとうございました。

    • WBL より:

      kk-tt さん
      実際、書き換えなくても利用できるので問題はありませんが、チャレンジしてみて動いた時の満足度は高いと思います。既に記事も古く、他にもう少し手軽な方法もあるようなのですが、私のやり方は面倒な上それなりにリスクが伴う事をご承知おきください。

      成功を願っています。

  7. kk-tt より:

    kk-ttです。大変に参考になり、感謝をしています。
    早速挑戦してみましたので、とりあえず、ご報告致します。
    機種は、macpro2008 でSapphire製HD6870 です。
    Romの情報の抜き出しには成功しましたが、書き換えが出来なかったようで起動画面(アップルマーク)は出ませんでした。
    (エラーは、ターミナル上から blocknum を実行した時、以下のエラーにより、書き換えがされていませんでした
    dd: bs must be between 1 and 9223372036854775807)
    継続して頑張ってみます。

  8. ponk より:

    はじめまして。
    MacPro2006に8800gtsを取り付けようとしていたところ、辿り着きました。
    HD6870とは使用するROM等が違うことは分かっています。
    躓いている点なのですが、FreeDOS上Cドライブを見つけられずにいます。
    FreeDOSで起動し1→2と進行しAドライブ上にいるのですが、そこから『C:』をタイプすると『invalid drive C』とメッセージが表示されてしまうのです。
    私はMac上のディスクユーティリティーでFATフォーマットしたHDDを使用しています。
    何かご助言いただけますと幸です。
    よろしくお願いいたします。

  9. Ponk より:

    自己解決しました。
    FATフォーマットしたつもりが、FATフォーマットではなかったというオチでした。
    コメント欄を汚してしまい申し訳ありませんでした。

    • WBL より:

      ponk 様

      自己解決したようでなによりです。
      ちなみに、私はNvidiaの方は書き換えずに使っていましたが、現在はAMD HD7970を書き換えて使っています。Nvidiaの書き換えはチャレンジしていないのでなんともいえませんが、AMDだとBootcampでWindows環境もお使いであれば、GPU-ZでオリジナルBIOSを抜き出して、EFI化してからATI WinFlashを使えばWindows上から簡単に書き換え可能です。記事を書いた当初は、探究心からとても面倒な方法を選択していたので拍子抜けするぐらいでしたよ。参考まで・・

  10. KY より:

    はじめまして。

    良い情報ありがとうございます。!大変たすかりました!

    自分は、Mac Pro用として、PC HD5870カードを64bitEFIに書き換えトライをしていますが、
    Netkasから必要なファイルダウンロードが出来なくなり、(ID Resiter問題。。)他のサイトからROM ファイルを探しています。

    申し訳ないですが、Netkasからの<flash.zip>ファイルをEmailまで伝送してくれないでしょうか。

    お手数ですが、宜しくお願い致します!

    • WBL より:

      KY さん

      こんにちは。

      Netkasのフォーラムからどういう条件でダウンロードできなくなったのかわかりませんが、お困りのようなのでDropboxへ入れておきました。
      http://u0u0.net/pzFL

      HD5870ですが、古臭い情報のままですので、もしかすると私が使っているHD7970と同じ方法でも書き換え可能なのかもしれません。

      それから、記事には記載していないのですがROMを書き換える書き換えないに限らず、Win版のRadeonはそのままではPCI-eのリンク速度が半分の2.5GT/sしか出ないですよ・・たぶん・・・カードによって、何番かの抵抗を除去するパターンと、追加するパターンがありますがので、書き換えてみて速度が出ていない場合はそれらの情報を探してみると良いです。

  11. KY より:

    WBL 様

    こんばんは。

    本当にありがとうございます。

    大変助かりました。!!

    ご説明も本当に感謝いたします。

    早速トライして報告致します。

    再度、感謝いたします。

  12. ZNDK より:

    現在netkas.orgでは新規に登録ができないようなので教えてください。
    今でもHD6850のEFI.ROMは更新されているのでしょうか?

    二つ前のコメントのDropBoxから拝借させて頂きましたが、
    自分の使い方で動作に問題は起きていませんがカードが別名で認識されています。

    • WBL より:

      ZNDK さん

      こんにちは。
      EFI.ROM作成の条件はカードのブランドやロットによっても色々と変化するようなのでなんとも言えません。
      基本的に誰かが成功したROMと使用カードの情報をセットで公開していなければ、汎用的になんらかのEFI部分を抜きだしてパッチする(言い方が正しいかわかりませんが)以外はないので、トライアンドエラーあるのみと言う事になります。

      特に動作上問題がないようでしたら、そのままでも良いのかもしれませんが、気になるようでしたらバイナリエディタでカード名を修正してしまう方法もありますよ。私も、現在使用しているHD7970の書き換え時にカード名が違ってしまっていたのに気付き、メモリやスペックに問題が無いようなので、パッチ元のバイナリをエディタ(Macだと0xEDを使用)で編集して作成し直しました。

  13. ZNDK より:

    WBLさん、ご返答ありがとうございます。

    netkasにも6870と認識されてる人がいるようですね。
    6850.efi.romの中を覗いても合体後のROMを見ても6850はあっても、少なくとも6870なんて文字が含まれてないようです。マシン語?的な中に含まれているのでしょうか。

    あとすいません。netkas.orgって閉鎖されたりする予定なのでしょうか?
    ずいぶん前からどのメールアドレスでも登録できないなんて情報も拾いました。

  14. kakinotane より:

    有益な記事、ありがとうございます。大変勉強になりました。
    壊してもいいや、勉強になるし…という気持ちでサファイアhd5870で
    チャレンジしました。
    オリジナルのromを吸い出す所まで同じ方法を取らせてもらいました。
    しかし、ターミナルではじかれてしまい(dd: bs must be between 1 and 9223372036854775807)netkasでは何やらblocknumの値が〜みたいな手に負えない話でしたので、コマンドプロンプトで自分のボード
    に推奨のromを直接書き換えた所、5870と認識しています。
    プロファイラではEFI ドライバのバージョン: 01.00.417と出ている
    のですが、これってefi化もされているという事なんでしょうか?

  1. 2015年3月1日

    […] トされてませんが、Lion以上のOSならブート画面はでないが普通につかえる。ブート画面もEFI書き換えをすると表示できるみたいだけど、自分は面倒なのでしない。w MacProには6pinの電源がマ […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です