Pioneer光学ドライブのパッチをOpenCoreに適用する

f:id:siroanko:20181029215850p:plain

Pioneerの光学ドライブを使用していると「空のdvdがセットされました」というメッセージが出て、操作不能になることがあります。Cloverのconfig.plistでパッチを当てて対処していたのですが、OpenCoreに移行したので同様のパッチを当てました。

Cloverで使用していたパッチ

「空のdvdがセットされました」というエラーメッセージが出ることの原因と対策をこちらの記事で紹介しました。macOSがPioneerのドライブにスリープ指令を送りつけると、スリープ後も復帰しないことが原因のようです。そこで、光学ドライブにはスリープ命令を送らないように、macOSでは設定してあるらしいです。

なので、本物のMacと同型番のPioneer DVDドライブを使っていれば、操作不能に陥る問題は多分発生しないです。でも違う型番、例えばBDドライブを使う場合は、PioneerSuperDrive.kextにパッチを当てて、本物のMacが搭載している型番 (DVD-RW DVR-105) を、hackintoshで使用している型番 (例えばBD-RW BDR-205) に書き換えることで、この問題を解決できます。実際には、config.plistに以下のパッチを追加していました。これでスリープ命令が送られなくなり、操作不能に陥ることを回避できました。

<key>KextsToPatch</key>
  <array>
  <dict>
          <key>Comment</key>
          <string>PioneerBD-RW No Sleep</string>
          <key>Find</key>
          <data>RFZELVJXICBEVlItMTA1</data>
          <key>Name</key>
          <string>PioneerSuperDrive</string>
          <key>Replace</key>
          <data>QkQtUlcgICBCRFItMjA1</data>
  </dict>
  </array>

OpenCoreに移行したところ、再び、「空のdvdがセットされました」というエラーメッセージが出るようになりました。Cloverで使っていたパッチと同様の内容を、OpenCoreのconfig.plistにも書いておく必要があるようです。

CloverのKextToPatchをOpenCoreに移行する方法

OpenCoreには、CloverのようなKextToPatchの項目はありません。OpenCoreで、カーネルとkextに対してパッチを当てる項目は、Kernel, Patchの場所です。また、書式もCloverのパッチとは多少異なります。上記のCloverのパッチを、OopenCoreで書く場合は、以下になります。ちなみにReplaceの値は、BD-RW BDR-205の型番になっています。他の型番の光学ドライブを使用している方は、その型番に書き換えてください。詳しくは、以前の記事をご覧ください。

<key>Kernel</key>
<dict>
    <key>Patch</key>
    <array>
        <dict>
            <key>Comment</key>
            <string>PioneerBD-RW No Sleep</string>
            <key>Count</key>
            <integer>1</integer>
            <key>Enabled</key>
            <true/>
            <key>Find</key>
            <data>RFZELVJXICBEVlItMTA1</data>
            <key>Identifier</key>
            <string>com.apple.driver.PioneerSuperDrive</string>
            <key>Replace</key>
            <data>QkQtUlcgICBCRFItMjA1</data>
        </dict>
    </array>
</dict>

Cloverと比べてOpenCoreでは、一部のキーが削除追加されています。OpenCoreのサンプルconfig.plistを見ると、もっとたくさんのキーがあります。ただOpenCoreのパッケージに付属するマニュアルを読んでみたところ、デフォルト値のままで問題ないキーが多かったです。それらは省略しました。

Cloverのkeyのうち、Comment, Find, ReplaceはOpenCoreでも同じ名前で、同じ意味です。つまり、Commentは人が読むためのメモ書き、Findは検索データ列、Replaceは置き換えるデータ列です。これらはCloverの内容からそのままコピーしました。

Cloverでは、kextをファイル名(この例ではPioneerSuperDrive)で指定していました。使用するキーの名前はNameでした。OpenCoreでは、Idenetifierというキーで指定します。URLを逆順にしたような形式の一意の名前なので、より正確です。PioneerSuperDrive.kextがどのようなIdentifierなのかは、システム情報の拡張機能で、該当するkextを選択すると調べられます。

identifierは、バンドルIDという項目に書いてあります。以下のようです。Identifierの項目にはこれを書いておきます。

com.apple.driver.PioneerSuperDrive

Enabledキーでは、このパッチを有効にするかどうかを指定します。デフォルトがfalseですので、明示的にtrueを書いておかないと有効になりません。なので追加しました。

Countキーは発見された項目を何個置き換えるかを指定する箇所です。1個置換えてくれれば十分(それ以上検索する必要は無い)なので、1を指定しておきました。デフォルトは0で、それは発見できうる限り全て置換するという指定です。1箇所変換することで十分ならば、Countには1を指定したほうが、残りの部分を全部検索するという無駄な処理が不要になるので、高速になると思います。

このパッチをOpenCoreのconfig.plistに追加したところ、Pioneerのブルーレードライブが正常に動くようになりました。パッチを施したconfig.plistを以下に置いておきます。もしこれを使用する場合は、SystemSerialNumber、SystemUUID、MLB、ROMの値を必ず置換えてください。

まとめ

Cloverに当てていた光学ドライブのパッチを、OpenCoreのconfig.plist用に書き換えて動作を確認しました。CloverとOpenCoreでは、パッチのキー構成が多少違います。Cloverに当てていた他のkext用パッチも、必要に応じてOpenCoreに移行して、動作を確認していこうと考えています。

2件のコメント

  1. 早い対応ありがとうございます。
     お察しの通り、com.apple.driver.PioneerSuperDriveのところで間違えていました。
     一度、勇んで、エディタで、コピペをしてしまいましたが、BDR-205でなくBDR-209だったのをすっかり忘れていました。過去のブログを見て、BDR-209に変更後、OCで立ち上げて1時間以上・・・問題ありませんでした。
     うまくいきました。ありがとうございました。
     今週はUBUNTUの方で時間を取られちゃったので、こっちまでは手が回りませんでしたが、GitBookの方はよくできていますね。私のOCのplistは過去からの遺産っぽくなっちゃたので、Warningがでちゃいます。時間があったら、きれいに対応できればと思います。

     ところでもう読んでいただいたのであればすみません。
     過去からの遺産を見て、気づいたのですが、
    boot-argsのalcid=1とDevicePropertiesのPciRoot(0x0)/Pci(0x1b,0x0)のlayout-id関係ですが、
    過去のplistで、alcのlayout-idのDeviceをPciRoot(0x0)/Pci(0x1f,0x3)で、layout-idを指定しているのもあり、これでboot-argの方はいらなくなりました(ALC887/888)。もしかしたら、チップ依存かもしれませんが、
    https://www.insanelymac.com/forum/topic/341944-audio-is-not-working-on-catalina-opencorevanilla/
    でも、DarkAlex97さんが、Audio: Realtek S1220A でも、Anyway the correct address was 0x1f 0x3 と言っているのでどうでしょうか?
     うまくいかなかったらすみません。

    1. オーディオdevice pathの情報ありがとうございました。PciRoot(0x0)/Pci(0x1f,0x3)で正しく動きました。Sample.configからこの値に書き換えないといけないようでした。マザーボードの配線で違うのかな。該当記事の方も更新しておきました。

返信を残す

メールアドレスが公開されることはありません。

「名前」「メールアドレス」「サイト」は空白でも投稿できますが、日本語が含まれない投稿は無視されます。(スパム対策)