Mojave 10.14.3 での USB ポート制限問題

私は Hackintosh を2台作っており、今回やっと Mojave にアップグレードすることにした。その過程については前回、前々回に書いた。

[Hackintosh] High Sierra から Mojave へアップグレード – with a Christian Wife
https://wacw.cf/2019/02/07/upgrading-high-sierra-to-mojave/

[Hackintosh] High Sierra から Mojave へアップグレード2 – with a Christian Wife
https://wacw.cf/2019/02/08/upgrading-high-sierra-to-mojave-2/

苦労して Mojave にアップグレードできたものの、最後に残った問題が使用可能な USB ポートが制限されるようになったことだ。具体的には USB を刺しても反応しないポートがあったり、USB 2.0 では動いても、USB 3.0 では反応しなかったりする。

これは High Sierra の時にも起きており、その時は USBInjectAll.kext を EFI>EFI>CLOVER>kexts>Other に入れ、さらに config.plist を編集(=パッチを当てる)することで、USB の利用制限を解除していた。

Hackintosh に挑戦する 2018 – with a Christian Wife
https://wacw.cf/2018/08/22/hackintosh-2018/

ただしこの方法は問題が起こりうる。OS がバージョンアップするごとにパッチも毎回書き換えなければいけない。このたびポート数が制限されるようになったのも、バージョンが上がったからだろう。

解決策としては他に、DSDT を変更する方法があるが、ややこしそう。なので、以前同様 USBInjectAll.kext とパッチで解決する方法を試してみた。

USBポートを設定する – Boot macOS
https://bootmacos.com/entry/2017/09/30/222518

これは Hackintosh 2号機に関してはうまくいった。

以下のパッチで USB ポートをフル活用できるようになった。

Name*: com.apple.driver.usb.AppleUSBXHCI
Find* [Hex]: 83FB0F0F 83030500 00
Replace* [Hex] : 83FB0F90 90909090 90
Comment: USB 10.14+ by PMHeart
MatchOS: 10.14.x

参考:
Updating your Hackintosh to Mojave 10.14 – Hackintosher
https://hackintosher.com/guides/updating-your-hackintosh-to-mojave-10-14/

ただし1号機に関しては同じパッチを適用しても USB がうまく動かないのだ。

上記パッチは 10.14.x 用だけど、以下の 10.14.3 用を適用してもダメだった(現在の Mojave のバージョンは 10.14.3)。

Hackintosh Mojave 10.14.3 Update Guide – Hackintosher
https://hackintosher.com/guides/hackintosh-mojave-10-14-3-update-guide/

そこで、USB ポート制限を解除する、3つ目の方法を試してみた。

その方法を私なりにまとめる。Hackintosh では使える USB ポートが 15 に制限されてしまう。「自分の USB ポートは 10 個かないから大丈夫」と思っても実は USB 3.0 の場合、USB 2.0 ポート2つ分としてカウントされる。私のマザーボードだと物理ポートが8個だけど、そのうち4つが USB 3.0 。USB 3.0 から順に設定が割り振られる(?)みたいで、ポート設定からあぶれた物理ポートは使えなくなるようなのだ。

具体的には、現在設定される USB ポートの設定を IORegistryExplorer アプリを使って調べ、実際の物理ポートとの整合性がとれるようにする。これは EFI>EFI>CLOVER>config.plist に不必要なポート情報を除外するように設定することで可能となる。なおこの方法でも USBInjectAll.kext は必要だ。

(1)IORegistryExplorer をダウンロード。解凍。

Download IORegistryExplorer Mac 3.0.2
https://mac.softpedia.com/get/System-Utilities/IORegistryExplorer.shtml

(2)IORegistryExplorer を実行して、検索窓に xhc と入力して検索。すると XHC@14 のように表示されたツリーの下にずらっとポート情報が並び、その数が 15 になっているはずだ。

(3)実際に物理 USB ポートに USB メモリ等を刺し抜きして XHC@14 のツリーの各項目で port-status の値が変わるものを見つけ出す。これのようにポート情報と物理ポートの対応を調べていく。

ツリーの各項目の@以前(HS01、HS02・・・のような文字列)と対応する物理ポートをメモしていくけど、この作業では実際にパソコンのパネルを絵に描いたりして、分かりやすくまとめるといい。

これは全物理ポートに対して USB 2.0 と 3.0 の両方で行う。

また USB メモリの刺し抜きに関係なく port-status の値が入っているポートもあるはず。これは内部で使用されているようなので、これも必要なポートだ。

(4)3の作業で全く port-status の値が変わらなかったものがあるはず。これを除外設定にすることになる。

また、ツリーのどの項目も値が変わらなかった物理ポート(=Mac でも認識しない物理ポート)もあるはず。

とりあえず、最低限必要な USB ポート(キーボードやマウス等)以外はすべて USB 機器を抜く。

(5)Clover Configurator をダウロード、解凍する。

Download Clover Configurator 5.3.2.0 | mackie100 projects
https://mackie100projects.altervista.org/download-clover-configurator/

(6)Clover Configurator で Mount EFi で EFI フォルダをマウントし、File>Open で EFI>EFI>CLOVER>config.plist を開く。

Boot>Custom Flags に、4で使わないと分かったポート、および一時的に使わなくしても大丈夫なポート(キーボードやマウス等を刺していないポート)に除外設定を書き込む。例えば HS04 と HS07 と SS01 と SS02 と SS05 と USR1 の場合は以下のようになる。

uia_exclude=HS04;HS07;SS01;SS02;SS05;USR1

もし元々 Custom Flags に値が書き込まれていたら、半角スペースをあけてから書き込む。

File>Save で保存してから、再起動。

(7)再び IORegistryExplorer を見てみると6の除外したポートが非表示になり、代わりに新しいポートが表示されたはずだ。

もう一度 USB メモリを刺して対応するポートを特定、config.plist で不要なポートと今すぐ使わないポートを除外し、再起動・・・。これを繰り返して、すべての物理ポートに対応するポートを見つけ出す。

最終的に config.plist に完全に不要なポートだけを書き込むことで、使えるポートだけに厳選された設定になる。私のマシンでは除外設定をして、ピッタリ 15 のポートが IORegistryExplorer に残った。

これですべての USB ポートがフルに使えるようになった。

説明がややこしくなってしまったけど、自分でもこの方法に気付くのに苦労した。何度も再起動を繰り返して設定を確認して、気長な作業だったよ・・・。

なお、私のマザーボードには USB 3.1 ポートも1つあるが、これは 15 ポートの制限にはカウントされないようだ(IORegistryExplorer では AppleUSBXHCIAR の項目に情報が表示される)。