15個制限を解決するために、使用する15個未満のUSBポートを決定し、macOSに伝えます。以前の記事でいくつかの方法を紹介しましたが、今回はHackintoolを使ってkextを作ります。作業が楽で、作ったkextを1個インストールするだけなので簡単でした。今までの記事では、USBポート個数制限に対処する方法として、AppleUSBXHCIPCI.kextにパッチを当てるOpenCoreのconfig.plistでXhciPortLimitをtrueにするDSDTを書き換えて使用する15個のUSBポートを指定するUSBInjectAll.kextとブートオプションで15個を指定するUSBInjectAll.kextとこれに指示するSSDTを作って15個を指定するなどの方法を紹介しました。PocketsUSBポートを設定するhttps://bootmacos.com/archives/114追記:この記事ではUSBの15個制限を簡易的に回避します。本気で対応するには、この記事の方法よりも、以下をお薦めします。この記事の結論を先に書いておきます。コントローラ当たり15までと制限されました。マザーボードのUSB設定をしました。使わないUSBポートの番号を調べ、その番号をconfig.plistに書きます。3が使えなくなる事態を回避します。HEROマザーボードに9900Kを搭載したマシンは順調に稼働しています。今回、回避しようとしているのは、macOSのUSB個数制限です。コントローラ当たり15までと制限されまてしまいました。この対策は何通りかありますが、15個の制限は残したま...先日の記事で、OpenCore用の手順を書いたところ、P2B-Fさんからコメントで「Hackintoolを使ってUSBPorts.kextを作る方が簡単です」と教えていただきました。試してみたら確かに簡単でした。その手順をまとめておきます。以下の方法は、個数制限に対応する方法の中で、現時点で一番おすすめの方法だと思います。Hackintoolを入手するHackintoolは以下から入手できます。HackintoolはiGPUの設定でも使いました。便利な機能があります。USBポートの情報などのハードウェア構成情報はIORegistoryExplorerでも見ることができますので、併用して確認するのも良いです。GitHub.一時的に制限を撤廃するまずOpenCoreのconfig.plistでXhciPortLimitをtrueにするなどして一時的に15個制限を解除します。Cloverでしたらconfig.plistで15個制限撤廃パッチを当てても良いです。以前紹介したようにUSBInjectAll.kextとブートオプションを使って少しずつ解除しても良いです。以下では、全てを解除した状態で説明します。全解除状態でHackintoolを起動し、ウィンドウ上部のボタンからUSBを選択すると、下の図のようになります。ウィンドウの下には、7個のボタンが表示されています。マウスを持っていくと機能が文字表示されます。Exportのボタンです。Refreshの順に押していくと、現在認識されているポートが全て表示されます。HEROでは以下のようになりました。Lake用の300シリーズチップセットのマザーボードであることが表示されていて、マザーボードが正しく認識されています。ここでHS03とHS12がアクティブになっています。HS03には、一時的にLogicoolのタッチパッド付きキーボード用の無線ドングルを接続したので、それが見えています。2.0のハブを接続しているので、それが見えてます。実はHS13には、Apple純正のBluetoothモジュールが接続されているのですが見えていません。2.0コネクタなのですが、これがマザーボード内蔵のhub経由で接続されているらしく、そのためか、XhciPortLimitをtrueにしても見えないようです。設定作業用にLogicoolのキーボードを接続しているわけです。(さらにはSS10にもハブがつながっているのですがそれも見えていないようです。後の図で示すように、15個制限を設定したら、これらも見えるようになりました。)USBポートを特定して選別するこの状態で、USBポートにデバイスを取り付けて、変化を観察します。3ポートにLogicoolのキーボードドングルが反応したので、これがHS03であることがわかります。Bluetoothアダプタなどを使うと良いです。2.0ですし、抜き差しも簡単です。2.0メモリーを使用すると、アンマウントする手間が必要です。3対応のUSBメモリーなどを使います。この場合は、取り外す際にアンマウントしないと、データを壊す危険があります。(大抵は大丈夫ですが)HackintoolのConnectorの欄をクリックするとポップアップメニューが出ます。この欄には、USBの速度ではなく、接続された物理的なコネクタの形状を書きます。3コネクターに接続されています。HackintoolのConnectorの欄はUSB3に設定します。Internalの5種類です。ここでの選択で、後で述べる出力ファイルのUsbConnectorプロパティ値が変化します。255が割り当てられることがわかりました。これらの値について、Hackintoolのソースを調べたところ、ヘッダファイルに以下の記述がありました。255以外にも、いくつかの設定値があるようです。Hackintoolのメニューにあるように、この5種類が一般的で、これ以外を設定することはなさそうです。この説明から、割り当ては以下のようです。どのコネクタに接続されていてもUSBはUSBなので関係ない気もしますが、macOSの中での電力制御の扱いが異なるようです。IORegistoryExplorerなどでコネクタの情報を見ると、コネクタ種類の違いで電流関係のパラメータが異なっています。その関係と思われますが、Bluetoothアダプタが接続するポートは、255に設定しないとスリープを妨げることがあるようです。Type-Cコネクタの設定Hackintoolのコネクタ選択肢であryTypeC+SwとTypeCの違いを説明します。B2)で構成されています。コネクタを裏表どちらに挿しても同じUSB2が接続されます。コネクタが冗長に使用されています。裏表どちらかに挿すことで、2セットのUSB3が別々に接続されます。USB3に関しては、2セット分用意しないといけないわけです。3ポートを用意するか、の2種類の実装方法があります。これがHackintoolのメニューにあるTypeC+Sw(スイッチ付)とTypeCです。どちらも2個のUSB3が使えますが、前者は一つを2個に分岐しています。2個のUSB3を両方とも使用した場合は、速度が半々になります。後者は、両方のUSB3を共に使用してもそれぞれのフルスピードが出ます。3.2という名称が使われるようになり、ややこしくなってます。調べてみると、以下のような分類になったようです。(合計20Gbps)ちなみにGen2x2は「じぇんつーばいつう」と読むようです。x2がつかないコネクタはTypeC+Swを選択します。今回チェックしたマザーボードでは、裏表どちらに挿してもSS06に接続されました。HackintoolのConnectorメニューではTypeC+Swを選択します。使わないポートを除外こうしてUSBポートを特定していくと同時に、使わないポートを外していきます。最終的に15個のUSBポートまで削減していきます。使えるものなら使いたいけど、個数制限で諦めざるを得ないポートもあると思います。Comment欄のところにメモ書きをしておくと、後で説明する出力ファイルにもコメント記載されます。テキストエディタで修正する場合などに便利です。今回も、以前の記事で選んだUSBポートを使うことにしました。結果として以下のようになりました。USBPorts.kextを作るこの後、ウィンドウ下のExportボタンを押します。するとこの設定から、SSDT-EC-USBX.amlSSDT-EC-USBX.dslSSDT-UIAC.amlSSDT-UIAC.dslUSBPorts.kextの5個のファイルをデスクトップに作ってくれます。以前のガイドで作っていたSSDT-UIACは、ここではSSDE-EC-USBXとSSDT-UIACの2つに分割されています。統合すれば内容は同じものでした。SSDT関係のファイルはUSBInjectAll.kextと一緒に使うものであると思います。ここで作られるUSBPorts.kextは、Info.plistだけを持ったインジェクタkextという種類のkextファイル(実際にはディレクトリ)です。ターミナルからディレクトリを辿る、もしくはファインダーからパッケージを開くと、USBPorts.kext/Contents/Info.plistというテキストファイルが見えます。この中に、上で設定した内容が、plist書式のテキストで書かれています。して作成されたInfo.plistの内容を以下のところに置いておきました。time.このUSBPorts.kextだけを使用すれば、15個のUSBを指定して動かすことができました。SSDT-UIAC.amlは不要です。実は、Z97の時代にはこの手のインジェクトkextを使って使用USBのリストを設定していました。その後、チップセットが代わって、雛形となるファイルが見つからなくなったので、USBInjectAll.kextとSSDTを組み合わせて使っていました。Hackintoolでこんなに簡単に生成してくれるなら、今後はこのkextを使っていきたいと思います。USBMap.commandを使うこちらもコメントで教えていただきました。Hackintool.appと同様に、インジェクトkextを作るPythonスクリプト、USBMap.commandがcorpnewtさんによって配布されています。kext.こちらはCUIベースで設定していきます。操作が多少独特ですが、USB設定専用のアプリですのでシンプルです。生成されるインジェクトkextはUSBMap.kextという名前ですが、Hackintoolで作るUSBPorts.kextと全く同じ内容です。option:コメントでMifjpnさんから、USBMap.commandの使用例を教えていただきました。PocketsUSBMap.commandによるUSBポートの選択https://mifmif.mydns.jp/alpha/?p=474ここ現在の潮流として、USBMap.commandでUSBmap.kextで制限するのが主流だそうです。