ASRock Z590 ExtremeにComet Lake-S 10900Kを取り付けてmacOS Big Surを動かしています。今回はmacOSのUSB個数制限に合わせてUSBポートの設定を行います。以下で調査した結果はASRock Z590 ExtremeのUSB構成ですが、姉妹製品のZ590 Steel Legendでもおそらく同じなのではと思います。
Table of Contents
macOSのUSB個数制限
今までにも何度かご紹介していますが、macOSにはUSBコントローラごとにUSBポートの数が15個までという制限があります。ポートの識別に1バイトしか割り当てられていないのです。実際には0を除いて1から15までの数値でポートを識別しているようです。大抵のマザーボードには15個を超えるポートがありますが、何も対処しないとUSB2.0のポートから順番に15個だけのポートが有効になります。後回しになるUSB3.0のポートがほとんど使えない状態になります。この問題を解決するには、以下のような対処法があります。
- USBInjectAll.kextを使い、15個の制限を無視するパッチを当てる。OpenCoreの場合、config.plistで、Kernel/Quirks/XhciPortLimitをtrueにする。
- USBInjectAll.kextを使い、使用しないポートをブートオプションのuia_excludeで指定する。
- USBInjectAll.kextを使い、使用するポートをSSDTで指定する。
- 使用するポートを列挙したkextを自作する。hackintool.appなどにkextを作るツールが用意されている。
このうち4番目が一番スマートですので、今回もこの手法で設定します。hackintool.appでkextを作る方法はこちらでも説明してありますのでご覧ください。
個数制限を一時的に無効にする
まずは使用したいポートを特定するために、一旦、全部のポートが見えるように、個数制限撤廃パッチを当てます。上で述べた選択肢の1番の手法です。まずは500シリーズチップセットに対応したUSBInjecctAll.kextを以下から入手します。
次に、config.plistで、Kernel/Quirks/XhciPortLimitをtrueにします。この結果、全てのポートが見えるようになります。hackintool.appで調べると以下のようになります。14個のHS (USB2.0) と9個のSS (USB3.x) が見えていることがわかります。USRという項目は無視して良いです。
15個制限を無視するパッチをこのまま使い続ければ楽かもしれません。でもLocation IDの項目を見ると、0x14F00000の次の行で0x14000000に戻ってしまっていて、重複していることがわかります。区別のための変数が1バイトしかないためのようです。これが何らかの不具合を引き起こす可能性はあると思いますので、15個以内に制限した方が良いでしょう。
USBポートを特定する
使用するポートを選択する作業の前に、実際のUSBポートがどの名前 (HS01からSS09までの名前)に対応しているかを調べます。15個制限を外すパッチを当てた状態で、hackintool.appを見ながら、USBポートにデバイスを挿して確認します。
何も挿さない状態でも、上記の図のようにHS09, HS14, SS09に反応があります。このうちASM107xというのはAsmedia社のUSBハブ制御チップのことです。マザーボード上に搭載されているようです。BRCM20702 Hubというのは、こちら
で取り付けた無線モジュールBCM94360NGのBluetooth部分です。これはM.2 key Eソケットに取り付けてあるのですが、key EにはUSB 2.0のポートが来ていて、それが見えています。
hackintool.appを動かしたまま、バックパネルとマザーボード上のポートを1個ずつ使っていくと、割り当てがわかります。USB 2.0を調べるためには、無線キーボードのドングルを使いました。USB 3.0を調べるためには、3.1対応のUSBメモリを使いました。USBメモリは、挿すとマウントされるので、取り外す前にアンマウントする手間がかかりちょっと面倒です。USBメモリの代わりに、USB 3.0対応のUSBハブを使えば、もっと効率が上がったかもしれません。
マザーボード上のポートを調べるためには、内部コネクタを通常のコネクタに変換するアダプタを使いました。画像にAliExpressへのリンクを貼っておきます。お手軽な値段なので、一通り持っていると何かと便利だと思います。
調査結果
ASRock Z590 ExtremeのUSBポートを調べた結果を以下に示します。
- HS01 マザーボード上の2.0ヘッダピン(縁側) USB_3_4
- HS02 マザーボード上の2.0ヘッダピン(縁側) USB_3_4
- HS03 バックパネルのType-C USB3.2 Gen2 USB31_TC_1
- HS04 バックパネルのType-A、1GbEの下 USB3.2 Gen2 USB31_TA_1
- HS05 バックパネルのType-A、2.5GbE下の2個のうち上 (3.2 Gen1 USB3_1)
- HS06 バックパネルのType-A、2.5GbE下の2個のうち下 (3.2 Gen1 USB3_2)
- HS07 バックパネルのType-A、PS/2上の2個のうち下 (2.0 USB_2)
- HS08 バックパネルのType-A、PS/2上の2個のうち上 (2.0 USB_1)
- HS09 マザーボード搭載ASM107xハブ (USB3_3_4 と USB3_5_6)
- HS10 マザーボード上の 3.2 Gen2x2 (USB31_TC_2)
- HS11 マザーボード上の2.0ヘッダピン(内側) USB_5_6
- HS12 マザーボード上の2.0ヘッダピン(内側) USB_5_6
- HS13 (不明)
- HS14 M.2 key Eソケット (Bluetoothで使用)
- SS01 バックパネルのType-A、2.5GbE下の2個のうち下 (3.2 Gen1 USB3_2)
- SS02 バックパネルのType-A、2.5GbE下の2個のうち上 (3.2 Gen1 USB3_1)
- SS03 バックパネルのType-C USB3.2 Gen2 USB31_TC_1
- SS04 バックパネルのType-A、1GbEの下 USB3.2 Gen2 USB31_TA_1
- SS05 マザーボード上の 3.2 Gen2x2 (USB31_TC_2)
- SS06 (不明)
- SS07 (不明)
- SS08 (不明)
- SS09 マザーボード搭載ASM107xハブ (USB3_3_4 と USB3_5_6)
不明のポートは、発見できていないか、または元々どこにも接続されていないだけかもしれません。USBで始まる番号・記号は、ASRockのマニュアルに記載されているポートの名前です。マニュアルのバックパネルの図にポート名を書き込むと以下になります。
またマザーボード上のUSBピンは、それぞれ以下の名前になります。
マザーボード上のUSB2.0ピンはチップセット直結なのに対して、USB3.xピンはUSBハブ経由なのが面白いところです。Gen2x2のコネクタは、裏表で、別のSSポートに割り当てられているかと思ったのですが、同じでした。
15個に制限する
以上のように全部で19個のポートがあります。15個に制限するには、4個を諦める必要があります。バックパネルは便利なので、全部活かしたいところです。性能重視ならば、マザーボード上のUSB2.0ヘッダ端子を無効にするのが良いと思います。無駄に贅沢に使われている気がしました。これで4個除外できるので全部で15個になります。
- HS03 バックパネルのType-C USB3.2 Gen2 USB31_TC_1
- HS04 バックパネルのType-A、1GbEの下 USB3.2 Gen2 USB31_TA_1
- HS05 バックパネルのType-A、2.5GbE下の2個のうち上 (3.2 Gen1 USB3_1)
- HS06 バックパネルのType-A、2.5GbE下の2個のうち下 (3.2 Gen1 USB3_2)
- HS07 バックパネルのType-A、PS/2上の2個のうち下 (2.0 USB_2)
- HS08 バックパネルのType-A、PS/2上の2個のうち上 (2.0 USB_1)
- HS09 マザーボード搭載ASM107xハブ (USB3_3_4 と USB3_5_6)
- HS10 マザーボード上の 3.2 Gen2x2 (USB31_TC_2)
- HS14 M.2 key Eソケット (Bluetoothで使用)
- SS01 バックパネルのType-A、2.5GbE下の2個のうち下 (3.2 Gen1 USB3_2)
- SS02 バックパネルのType-A、2.5GbE下の2個のうち上 (3.2 Gen1 USB3_1)
- SS03 バックパネルのType-C USB3.2 Gen2 USB31_TC_1
- SS04 バックパネルのType-A、1GbEの下 USB3.2 Gen2 USB31_TA_1
- SS05 マザーボード上の 3.2 Gen2x2 (USB31_TC_2)
- SS09 マザーボード搭載ASM107xハブ (USB3_3_4 と USB3_5_6)
hackintool.appのUSB画面で、必要なポートだけを選択して、ファイル書き出しします。するとデスクトップ上にUSBPort.kextが出来上がります。これを使えばUSBInjectAll.kextはもう不要です。USBPort.kextをEFIに入れて、config.plistで15個制限を復活させて、起動し、hackintool.appで確認すると以下のようになりました。Commentに説明を書いておくと、後々便利かと思います。
この後、ウィンドウ下のExportボタンを押します。箱から矢印が外に向かっているアイコンの部分がExportボタンです。するとこの設定から、以下のの5個のファイルをデスクトップに作ってくれます。
- SSDT-EC-USBX.aml
- SSDT-EC-USBX.dsl
- SSDT-UIAC.aml
- SSDT-UIAC.dsl
- USBPorts.kext
amsとdslの拡張子のファイルはSSDTファイルです。冒頭で述べた「USBInjectAll.kextを使い、使用するポートをSSDTで指定する」方法で使用するファイルです。以前のガイドで作っていたSSDT-UIACは、ここではSSDE-EC-USBXとSSDT-UIACの2つに分割されています。統合すれば内容は同じものでした。なので、SSDT関係のファイルはUSBInjectAll.kextと一緒に使うものであると思います。
一方、ここで作られるUSBPorts.kextは、Info.plistだけを持ったインジェクタkextという種類のkextファイル(実際にはディレクトリ)です。ターミナルからディレクトリを辿る、もしくはファインダーからパッケージを開くと、
USBPorts.kext/Contents/Info.plist
というテキストファイルが見えます。この中に、上で設定した内容が、plist書式のテキストで書かれています。このkextだけを使用すれば、15個のUSBポートを正しく設定することができます。
ここで作成したUSBPorts.kextをここに置いておきます。ご利用ください。機種名がiMac20,1になっていますので、20,2を使っている人はkextの中のInfo.plistを編集して書き直してください。
今回の設定では、マザーボード上のUSB2.0を全部無効にしました。しかし、無線モジュールを、M.2ソケットではなく、PCIeスロットに挿す場合、USB接続が必要なので、マザーボード上のUSB2.0を1個有効にする必要があります。その場合は、M.2 key EソケットのHS14を除外することになると思います。
まとめ
ASRockのZ590 ExtremeのUSBポートの構成を調べてmacOSの15個制限に対応しました。ここで調べポート名対応は、構成が似ているZ590 Steel Legendでも同じなのではと思います。また他のASRockマザーボードもこれと似た構成かと思われます。これでZ590マザーボードの設定は一通り完成しました。Z590で作るhackintoshはとても安定しているので、第10世代CPUと組み合わせてmacOSマシンを作るのに適しているかと思います。もしもこの先、iMacが第11世代に対応してくれた場合も、CPU交換で追いつけます。
USBINjectAllのリポジトリ、Githubから中国系のGiteeに移ってしまったんですね。
RehabManさんは引退(?)されてしまって更新が止まってますからね。
Kext Update.appからリンクされているUSBInstallAll.kextのサイトはSnikiさんて人のgithubのサイトなのですが、そこにあるv0.7.6ではまだ500シリーズチップセットに対応していない様子です。
Z590 ExtremeにBig Surを無事インストールできたので、この手順を試しています。
https://gitee.com/softxing/OS-X-USB-Inject-All/releases/v0.7.7と使い、XhciPortLimitをtrueにしたら、USB接続のキーボードとマウスが反応しなくなりました…。
USBPort.kextをうまく作る方法はないでしょうかー
11.3以降でXhciPortLimitがうまく機能しないので、 11.2.3以前でないとダメっぽいですね。
https://dortania.github.io/OpenCore-Install-Guide/installer-guide/mac-install.html#downloading-macos-modern-os
CAUTION: With macOS 11.3 and newer, XhciPortLimit is broken resulting in boot loops (opens new window). We advise users either install an older OS(ie. macOS 10.15, Catalina) or find a 11.2.3 or older Big Sur installer
For education purposes, we have a copy provided here: macOS 11.2.3 InstallAssistant(macOS)(opens new window)
If you’ve already mapped your USB ports (opens new window)and disabled XhciPortLimit, you can boot macOS 11.3+ without issue
そうなんですか、初めて知りました。
あわてて、Big Sur 11.2.3のシステムを復元(macadmin-scriptsから #11のBig Sur 11.2.3フルインストーラーを入手)を試みています。
追記:
>Z590で作るhackintoshはとても安定しているので、第10世代CPUと組み合わせてmacOSマシンを作るのに適しているかと思います。
この文言に背中を押されて、目下 ”最後のサムライ”ならぬ最後の準iMac20,2をHacintoshで構築するべく、最終検討中です。
Z590 Extreme、Big Sur 11.15.1でXhciPortLimitのtrueがうまく機能しなくて、はらみさんと同じようにUSBの設定ができなくて困ってます。このような場合のUSBはどの様にしたら良いか おわかりになる方いらっしゃっいますか?
上記の記事に従ってUSBPorts.kextを作っていただければ動くと思います。ここで作ったkextを以下に置いてありますので、お試しください。iMac20,1の設定になってますので、20,2の場合はInfo.plistを書き換えてください。
https://bootmacos.com/download/USBPorts.kext.zip
bootmacosさん、親切にありがとうございます。
Big Sur、Monterey BetaともにiMac20,1にてUSB正常に動作しました。助かりました。
githubの方にもUSBInjectAllのリポジトリがありました。
https://github.com/daliansky/OS-X-USB-Inject-All