[Hackintosh] USB ポート 15 個制限用の SSDT を作成する

Hackintosh の USB ポート 15 個制限の設定として、これまで USBInjectAll.kext およびブートオプションを使う方法を採用していた。

Mojave 10.14.3 での USB ポート制限問題 – with a Christian Wife
https://wacw.cf/2019/02/09/unlock-usb-port-limite-on-hackintosh/

OpenCore で Hackintosh を作成することにしたのをきっかけに、新たに USBInjectAll.kext および SSDT を使う方法に変更することにした。

主に以下のサイトを参考にした。

15個制限を回避するUSBInjectAll.kextの役割と使用法 – Boot macOS
https://bootmacos.com/archives/2059

環境:macOS Catalina Version 10.15.6(英語環境)

(1)【使用可能ポートの調査】

どの USB ポートが使用可能かは以前調べている。

Mojave 10.14.3 での USB ポート制限問題 – with a Christian Wife
https://wacw.cf/2019/02/09/unlock-usb-port-limite-on-hackintosh/

上の検証の結果、僕のマザーボード(Gigabyte H370 HD3)の場合、以下のような USB ポートマップとなっていた。

HS01: –
HS02: –
HS03: USB 2.0
HS04: –
HS05: –
HS06: –
HS07: –
HS08: –
HS09: USB 2.0
HS10: USB 2.0
HS11: USB 2.0
HS12: USB 2.0
HS13: –
HS14: USB 2.0(マザーボード)
SSO1: –
SSO2: –
SSO3: USB 3.1
SSO4: –
SSO5: USB 3.1
SSO6: USB 3.1
SSO7: USB 3.1
SSO8: USB 3.1
USR1: –
USR2: –

「-」部分はマザーボード上のポートなどの特定できていないポートだ(今度ちゃんと調べたい)。とりあえず上記の分かっている部分 11 個だけを有効にすることにしている。

(2)以下の SSDT 用テンプレートファイルをダウンロードする。

https://github.com/RehabMan/OS-X-USB-Inject-All/raw/master/SSDT-UIAC-ALL.dsl

ファイル名を SSDT-UIAC.dsl に変更する。

(3)IORegistryExplorer アプリを起動し、検索ボックスに「XHC」と入力して検索する。これで表示を絞ることができる。

(4)左側のツリーで「XHC@14」のように表示されている部分をクリック。

右側の vendor-id と device-id を確認する。vendor-id は <86 80 00 00>、device-id は <6d a3 00 00> と書かれていた。これはリトルエンディアンの表記なので逆向きに読み、前者は 00008086、後者は 0000a36d を意味する。

(5)2で4の {vendor-id_device-id} を表す、8086_a36d の項目を探し出す。

8086_a36d 以外の項目を削除する。

(6)2の使用しないポートの行頭に // を記述し、コメントアウトする。

(7)2の各ポートの UsbConnector を以下のように設定していく。

・USB 2.0: 0
・USB 3.0 / 3.1 / 3.2: 3
・マザーボード上のコネクタで外部に引き出さないもの(Bluetooth など): 255(外部に出るなら 0 か 3)
・USB 2.0 & 3.0 Type C(逆挿しで IORegistryExplorer の HS と SS の数字が変化しないもの。): 9
・USB 2.0 & 3.0 / 3.1 / 3.2 Type C(逆挿しで IORegistryExplorer の HS と SS の数字が変化するもの): 10

(8)2で使用することにしたポートのうち、"port", Buffer() の値が最大のものを調べる。今回は SS08 の "port", Buffer() { 24, 0, 0, 0 }, が最大だった。

2の先頭あたりにある "port-count", Buffer() { 26, 0, 0, 0 }, を "port-count", Buffer() { 24, 0, 0, 0 }, に変更する。

(9)MaciASL をインストールする。

Releases · acidanthera/MaciASL
https://github.com/acidanthera/MaciASL/releases

(10)MaciASL で2を開く。

「Compile」ボタンをクリックしてコンパイルする。ポップアップウィンドウが出てくるので、そこに特にエラーが表示されなければ問題ない。

「File>Save As…」をクリックし「File Format」として「ACPI Machine Language Binary」を選んで保存する。SSDT-UIAC.aml として保存される。

(11)10 を「EFI>OC>ACPI」フォルダーに入れる。

これで USBInjectAll.kext とともに使えば USB 15 個制限設定が正しく設定できているはずだ。

なお今回はまだ OpenCore を運用する前の段階なので、実際にうまくいくかどうかは検証していない。

参考:
H370 HD3 (rev. 1.0) 主な特徴 | マザーボード – GIGABYTE Japan
https://www.gigabyte.com/jp/Motherboard/H370-HD3-rev-10#kf

where is I/O Registry Explorer? | Apple Developer Forums
https://developer.apple.com/forums/thread/43270

リトルエンディアンとは – 意味をわかりやすく – IT用語辞典 e-Words
https://e-words.jp/w/%E3%83%AA%E3%83%88%E3%83%AB%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3.html

USB Mapping | OpenCore Post-Install
https://dortania.github.io/OpenCore-Post-Install/usb/manual/manual.html#usb-mapping-the-manual-way

Amazon | バッファロー USBメモリ 128GB USB3.2(Gen1)/3.1(Gen 1)/3.0/2.0 充実サポート RUF3-K128GA-BK/N | バッファロー | パソコン・周辺機器 通販
https://amzn.to/3Ggq0lL