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に移行して、動作を確認していこうと考えています。

20件のコメント

  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からこの値に書き換えないといけないようでした。マザーボードの配線で違うのかな。該当記事の方も更新しておきました。

  2. お疲れさまです。
     ブルーレイディスクのパッチの件ではお世話になりました。ありがとうございます。
     わたしのBDR-209もそれなりに古く、DVD-RWが他のデバイスでフォーマットエラーになる確率も多くなってきたようなので(いちいちゼロフィルして消すのも時間がとてもかかりますよねRWって(´Д⊂グスン)、HL-DT-ST BD-RE BH16NS58にしてみました。
     いまのところ、10時間以上ほっといても「空のdvdがセットされました」というメッセージはでません。
     Pionnerは有名どころで、そのほかのOSでも安心なので使いたいですが、現行モデルでもまだ問題があるんでしょうかね?さすがに、二の舞になるのはちょっと嫌だったのでHL-DT-STにしちゃったんですが、今時のPionnerをお使いの方がいれば、情報をくれると喜ばしいです。

    1. Pioneer BDR-211M使ってますが、やっぱりパッチあてが必要ですね。

      1. 早速のご返答ありがとうございます。
        やっぱりそうなんですか。
        一流メーカですが、なんでなんでしょうねぇ。
        きっとWindowsやLinuxとかで問題が出ないかなんでしょうねぇ。

    2. そもそもハードディスク自体がオワコンなので、「可能な場合はハードディスクをスリープさせる」省エネ機能も、そろそろ廃止されるかもしれないですね。

      1.  そですねぇ、macOSは毎年変わるから、テスト用に小さめのSSD選んで、ディスクイメージごとバックアップできるようにしているんですが。安いですもんねぇ。
         今でこそ3〜6TBまで行くとHDDって感じなのかなぁ。
         でも、安くなったら、SSDのバックアップにSSDてなるんでしょうねぇ。

  3. こんにちは。
    こちらの記事を元にドライブの読み込み設定を行なっておりますが、そもそもドライブ自体をマックが認識しておらずシステムレポートのSATA/SATA expressの欄にドライブが出てきません。
    モデルはHL-DT-ST BD-RE BH14NS58
    です。

    1. お疲れさまです。
      他のOS、(なければLinuxのLiveUSBでもいいですが)でのドライブの認識は得られていますか?
      Hackintoshとの検索では、有用な情報は出てこないですねぇ;;
      ただ、ファームウェアのアップデート情報はあるようです。
      https://hitachi-lg.com/jp/support/firmware_download/?v=25
      必要なので出ているのでしょうから、試してみるのもいいかもしれません。

    2. ファインダーにもそのドライブが現れないということでしょうか。MacにはSATA expressは無かったので、SATA expressのドライブは出てこないのかもしれません。また、マザーボードのSATA端子が、他の端子(mSATAとかPCIe)と排他になっていて使えないという可能性はありませんでしょうか。他のSATA端子も試してみてはいかがでしょう

  4. こちらから質問をしたのにご返信が遅くなり申し訳ありません‥
    WinとのデュアルBootなのですがwinでは問題なく使用できております。
    またFWも最新でした。
    SATA端子も別のところに差し直しましたが全く認識せず。
    USBタイプの別の光学ドライブをさしたところそちらは認識致しましたので、SATAの問題でしょうか‥?
    ただ別の端子に挿しているHDDかける2台は問題なく使用できております。

    1. >SATAの問題でしょうか‥?
      SATAが問題と疑るとして、マザボは何ですか?
      7、8、9,100,200,300のどれ?。。。

  5. マザーボードはB550です。
    CPU:Ryzen 3700X
    GPU:Radeon RX5700XT
    MB :ASUS TUF B550
    OS :BigSur
    OpenCore0.6.3にてBootしています。

    1. B550のSATAは4ポートで、ASMediaのSATAコントローラで4ポート増設して8ポートといった構成をとっています。(https://doteya.at.webry.info/202005/article_2.html)
      ってありますけど、ASUS TUF B550もそうなんですよね。。。

      AMD のSATAのfreakな問題があるのかも?ACHIドライバーはIntel前提だと思ってるので。。。
      AMDのチプセットでこの現象と同じ賛同する方が出現すればそうゆことなんでしょうね。

      IntelのAHCIでもパッチ当てなよろしくない?という経緯なんでしょうから、AHCI互換(Generic?)でもむずいかもしれないですね、Asmediaのポートに繋いでも当然ダメですよね???

      AMDでわいわいやってるサイトでfixしてる人がいるかもしれないですから、そっち系を集中的にぐぐるか、AHCIはたぶんV*t黒々さん系?のネタなんで、ログとかとれるなら、M**j*nさんにプラグスーツになっていただいて、ログと一緒にIsuueを投げ込むとかすると見込み?でV*t黒具さんを引き摺り出す!???とかしないと早急に解決はむずいかもしれないですね。w

      いづれにしても、実機がないのでそれ以上のことが。。。。w
      たぶんM**j*nさんも忙しそうですし。。。w

      1. >OS :BigSur
        あぁ。。。わすれてましたけど、Mojave10.14.4以前とか辺りでは動くかもって気もします。
        確か?AHCIにMojave10.14.5か6で手が入った記憶がうっすらあるので、このあたりから互換性がシビアになったのかもって気もしますね。

        Winで動くなら必要な時はWinでやるとかでも良いなら、もう放置プレイっですねぇ。。。w

  6. お疲れ様です。
    なるほど、AMD機だったんですねぇ・・・
    そうだと、何らかのkextか、Patchがいるっぽい感じみたいですね。
    (私もAMD機がないので想像で申し訳ありません)
    もし、検索して、出てこないなら・・・
    OpenCoreに投げてみるのは手ではありますね。
    https://github.com/acidanthera/bugtracker/issues
    以前の、Cloverのissuesと同じように、たくさんのDeveloperが、見てくれるので書いてみるといいと思います。
    (私もですが、自動翻訳を再自動翻訳して日本語に直したうえで、高校英語程度で直しをかければ、問題はありません。というか、みんな英語でやってるけどほとんどの人(デベロッパも含めて)ネイティヴではないので、気おくれしないで書いてみることを勧めます)
    そして、ログをくれと言われても、臆せずに、どうすれば得られるか聞きましょう^^(向こうも、issueあげる人が、すべてマスターしてないことは知っていますので、答えてくれます。大丈夫です。)
    うまくいけば、もしかしたら「こうしたらどうなる?」と来るはずです、これは向こうも実機を持ってないからです。
    申し訳ないのですが、こちらにも実機がないので、issuesに付き合うのは(できればしたいですが)難しいです。(*_ _)人ゴメンナサイ

  7. AMDだとちょっとわからないですね。その

    >別の端子に挿しているHDDかける2台は問題なく使用できております。

    HDDが動いている「別の端子」に光学ドライブを接続したら動くのでしょうか?

  8. 皆様
    ご相談に乗っていただきありがとうございます。
    確かにAMD機だと仕様が全く異なりますよね…

    HDDが動いている別の端子に変えてもダメでした…

    AMD板の方に質問をしてみます。
    皆様どうもありがとうございました!!

  9. なんと、HDDが動いているSATA端子にその光学ドライブを接続しても認識しないのですか。謎ですね

  10. そうなのです。再度試してみましたがやはり読み込んではくれませんでした…
    そうこうしているうちに別のM.2に作成したMojavaではドライブが問題なく認識されております…
    その代わりにMojavaでは有線Lanが読み込まれなくなってしまいました…

    Plistの作り方の問題なのでしょうか…?

返信を残す

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