【OpenCore入門】USBマッピングの方法(15個制限解決)|Hackintoolを使って

USB3.0ポートが機能していない?

ガジェット探偵事務所へようこそ!所長のマーロウ(@marlowesgadget)です。

CaseMODしたPowerMac i7に最新ブートローダーOpenCore0.7.0でHackintoshを楽しんでおります。Hackintosh運用歴は3年ほど。やっと初心者を抜け出した程度のスキルしかありませんが、初心者向けに基本テクを優しく紹介したいと思います。

OpenCoreとはなんぞや?という方は下記の記事からどうぞ。⬇

新型ブートローダーOpenCoreでHackintoshしてみる?【初心者向け/入門】


さて今回はHackintoshの鬼門・USBマッピングの方法について紹介したいと思います。

Hackintoshでブートが成功して喜んでいると、そのうち一部のUSB3.0ポートが動作しないことに気づくでしょう。

これはなんとも馬鹿げた理由でAppleがMackintoshで扱えるUSBポートの数をコントローラーあたり15に制限しているからです。

何もしないとUSB2.0から順番にUSBポートを使い始めるので、15個制限から溢れたUSB3.0ポートが使用できなくなるという問題です。

なおこの症状はATXなどポート数の多いマザーボードで発生するので、ノートPC等では無視することができるかもしれません。

この問題を回避するために、「使用していないUSBポートをカウントしないよう設定する」という方法が取られており、USBマッピングと呼ばれています。

※詳しい情報はBootMacOSさんの記事をご参考ください。本記事は初心者向けに要点のみ解説します。⬇

https://bootmacos.com/archives/9177
https://bootmacos.com/archives/1424

6進数を採用しているため。0を除くと最後は15(0xf)になる。桁を増やすと次は255個(0xFF)になるのが嫌だったようです。Appleが販売しているPCはMacProでもこの制限を超えず、USB拡張カードを追加した場合はコントローラーが別扱いになるので問題ないわけです。OS X 10.11ElCapitanから採用されシステム整合性保護とあわせてHackitonsherを恐怖のどん底に突き落としたとされています。

されません。USBハブには、異なる種類のポート制限があります。

準備

USBマッピングにはいろいろな方法があって、OpenCoreの公式ガイドではCorpnewt氏作成のUSBMapを使う方法が解説されていますが、コマンドベースなのでやや敷居が高いと思います。本記事で紹介するHackinToolはGUIなので使いやすいと思います。

準備するもの

IORegistoryExplorerはUSBポートを特定する時にHackintoolと併用すると便利です。

USBポートがすべて見えるようにする

マザーボードに搭載されているすべてのUSBポートが見えるよう設定します。

  • KextにUSBInjectAllを追加
  • config.plistのXhciPortLimitの設定をTrueにする

XhciPortLimitはKernel -> Quirks -> XhciPortLimitにあります⬇

使用しているUSBポートを特定

Hackintoolを起動して、タブをUSBに切り替えると、USBポートがズラッと表示されます。筆者のマザーボードはASUS ROG Strix Z390でして、全部で26個ありました。ポートの名前にHSやSSとついていますが、意味は次のとおりです。

  • HS…High Speed. USB2.0のこと
  • USR…なんらかの理由で表示されているダミーポート
  • SS…Super Speed.USB 3.0のこと。

上から順番に認識されていくので、下の方にあるSSつまりUSB3.0が15から溢れて使用できなくなります。

緑でマーキングされているのは現在使用しているポートです。Device名が表示されるものもあります。Connectorは正しく表示されているとは限らないので、わかる範囲で修正しておきます。

用意したUSBデバイスを次々に空いているポートに刺して、緑に変わるか確認してポートを特定していきます。…とてもアナログな作業です。

このとき、IORegistoryExplorerも一緒にチェックすると情報が多いのでわかりやすいです。認識したポートの色が変わりますし、抜いたあとも記録を保持してくれます。

IORegistoryExplorer

Hackintoolのコメント欄を右クリックするとテキストが入力できますので、ポートの情報を備忘として入力しておきます。

※Type-Cポートがある場合は当然ながらType-C対応のデバイスを刺します。
※USB3.0ポートならUSB3.0対応のデバイスを刺します。

使用していないポートが判明したら、Hackintoolの「−」ボタンで削除します。

⬆こんな感じになります。筆者はちょっと横着して、コメントを簡略してしまいましたが、詳しく書いたほうが後々助かると思います…。

ポートのうちHS06はUSB2.0ヘッダーに刺したBluetoothアンテナです。ほんとうはマザボ上の全部のヘッダーに抜き差しして確認したほうが良いのですが、面倒なのでとりあえずここで終了してしまいました。

USBPorts.kextを書き出す

Hackintoolの便利なところは、特定したポート情報を書き出して、kextにしてくれるところです。このkextファイルを追加するだけでポートを制限してくれます。

書き出しも簡単で、下のExportボタンを押すだけ。自動でデスクトップにファイルを書き出してくれます。このとき次の5つのファイルを作成してくれるのですが、必要なのはUSBPorts.kextだけです。

  • SSDT-EC-USBX.aml
  • SSDT-EC-USBX.dsl
  • SSDT-UIAC.aml
  • SSDT-UIAC.dsl
  • USBPorts.kext

他のファイルを追加すると起動しなくなりますので注意…。筆者ボケてやってしまいました。。。

※最初に使用したUSBInjectAll.kextもこのとき一緒に削除しておきましょう。

あとはconfig.plistをスナップショットして再起動するだけです。

IORegistoryExplorerなどでポートが制限されているのを確認しておきましょう。

まとめ

Good!

以上、OpenCore環境におけるUSBマッピングの方法を解説してみました。Hackintoolのおかげでかなり簡単にできるようになりました。開発者の方には本当に頭が下がります。

ではでは。今後もOpenCore関係の入門用TIPSを執筆していきたいと思います。乞うご期待。

\ あわせて読みたい /