長らくほったらかしになっていた銀色のマザーボード、MSI B360M Mortar TitaniumのUSBポートをちゃんと設定しました。USBポートの設定方法は、こちらのZ390チップセットマザーボードの記事もご覧ください。
USBInjectAll.kextの役割を確認するために外して調べてみました。マザボ搭載USBポートの情報を正しく反映するために必要でした。さらに正確に反映させるためのSSDTを作りました。USBInjectAll.kextの役割このkextを外してみるRehabManさんが開発してくれているUSBInjectAll.kextは、いつも使用しているのですが、そのありがたみがイマイチ理解できていませんでした。そこで外してみたらどうなるのか調べました。USBポートの状態を調べるために、macOSから見えるハードウェア構成を確認するツールであるIORegistryExplorerを使用... 15個制限を回避するUSBInjectAll.kextの役割と使用法 - Boot macOS |
今回ご紹介するB360は、廉価版チップセットなのでUSBのポート数が少ないです。Z390が使用できるUSBポートは以下です。
- USB2.0が14本
- USB3.1が10本(そのうち6本までをGen 2にできる)
これに対して、B360は廉価版ですので、
- USB2.0が12本
- USB3.1が6本(そのうち4本までをGen 2にできる)
です。なのでmacOSの制限で15ポートになっても、諦めなければならないポート数は少ないです。
USBInjectAll.kextを入れる
まずはUSBInjectAll.kextだけを入れて、IORegistoryExplorerでxhcを検索します。ウィンドウの右上にある拡大鏡アイコンのついた検索窓にxhcとタイプします。すると、
USB 2.0であるHSが14本見えています。B360は12本なのですが、USBInjectAllにB360の情報がなくて、Z390だと思われているのかもしれません。ここで、マザーボードにUSB機器を接続して、それぞれのポートの位置を調べます。USBメモリーを使うと、抜き差しのほかにアンマウントする必要があるので、キーボードのドングルのようなデバイスの方が楽です。またマザーボード上のピンをチェックするために、USB Type A変換器を用意しておくと便利です。こういう小物パーツはAliで買うと格安ですね。
この結果、USB 2.0の関係がだいたい分かりました。
- HS01 2.0 2.0基板上 JUSB1 縁側
- HS02 2.0 2.0基板上 JUSB1 内側
- HS03 2.0 2.0バックパネル PS/2の下の上
- HS04 2.0 2.0バックパネル PS/2の下の下
- HS05 2.0 3.1 Gen 2 バックパネルのType-Cの上のUSB A
- HS06 2.0 Type-C (HS05にも反応する。)
- HS07 2.0 2.0バックパネル LANの下の下
- HS08 2.0 2.0バックパネル LANの下の上
- HS09 2.0 3.1 Gen 1 基板上 JUSB2 (どちら側かは不明)
- HS10 2.0 3.1 Gen 1 基板上 JUSB2 (どちら側かは不明)
- HS11
- HS12
- HS13 (B360なので使わない?)
- HS14 (B360なので使わない?)
HS11からHS14は不明です。マザーボード上にはUSB 3.1 Gen2 Type-Cコネクタに接続するための内部コネクタがあるのですが、これに対応するパーツを持っていないので、試せませんでした。不明のうち2本は、おそらくそれに接続していると思います。また、B360はHSが12本のはずなので、不明のうちの2本 (多分HS13, HS14) は、元々存在していなかった可能性もあります。
使用しない2.0を無効にする
いずれにしてもこの4本は使用しないので、USBInjectAll.kextで無効にして良いと思われます。また、USB 3.1の様子を知りたいので、HS09とHS10も一時的に無効にしてみます。元から不要なUSR1, USR2も無効にします。そこで、Cloverの起動オプションを以下にしました。(slideはこちらの記事で設定したオプションです)
<string>-v slide=128 uia_exclude=HS09;HS10;HS11;HS12;HS13;HS14;USR1;USR2</string>
この結果、IORegistoryExplorerの様子は以下のようになりました。
SSが6個見えるようになりました。総数が14個ですので、これで全部のSSが見えているはずです。今度は、USB 3.1のUSBメモリーを使って、IORegistoryExplorerの反応を調べました。その結果、以下のように割り当てられているようです。
- SS01 3.1 Gen 2 バックパネルType-Cの上のUSB A
- SS02 3.1 Gen2 バックパネルのType-C 裏返しても同じ
- SS03
- SS04
- SS05 3.1 Gen 1 基板上 JUSB2 (どちら側かは不明)
- SS06 3.1 Gen 1 基板上 JUSB2 (どちら側かは不明)
SS03, SS04は、HSと同様にパーツが無くて調べられなかった基板上のUSB 3.1 Gen2 コネクタの可能性が高いです。このコネクタを使わないなら、USBInjectAllのオプションで
<string>-v slide=128 uia_exclude=HS11;HS12;HS13;HS14;USR1;USR2;SS03;SS04</string>
という設定を行えば良いかと思います。
USBを設定するSSDTを作る
こちらで説明したように、USBを設定するSSDTを作成して、使用すべきポートを指定するやり方がより正しいようです。USBポートの素性を正しく記述できるので、macOSの動きがより正しくなるはずです。詳しい手順は過去の記事を見てください。流れを説明すると、まずは適当な名前でdslという拡張子のテキストファイルを作ります(例えばSSDT-UIAC.dsl)。以下のようなファイルです。ここでは、HS11からHS14、SS03, SS04, SS07以上、USR1, USR2を削除しています。
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time. SSDT-UIAC.dsl for MSI B360M MORTAR TITAMIUM - Pastebin.com - Pastebin |
これをMaciASLで開きます。次に、MaciASLのFileメニューからSave As…を選び、バイナリー出力を指定して書き出すとSSDT-UIAC.amlが出来上がります。こうして作成したSSDT-UIAC.amlファイルを、ESPのEFI/CLOVER/ACPI/patched/にコピーすれば有効になります。これでCloverのブートオプションにuia_exclude=を指定しなくても、指定したポートのみが有効になるはずです。IORegistoryExplorerで確認すると以下のようになりました。