DSDTを変更してUSBポートを選別する

追記:DSDTの編集例としてのUSB個数制限の回避を説明します。USB個数制限を回避するには、こちらの方法をお薦めします。


DSDTの役割、取得方法、コンパイルの方法、更新方法をこちらで紹介しました。

今回は、簡単な例でDSDTを書き換えるハッキングを試してみます。機能を追加したり、修正するのは難しいですが、機能を削るのなら簡単です。

上の記事では、必要なUSBポートを機能させるために、不使用のUSBポートを除外する方法を説明しました。この記事では、DSDTを書き換えて同じことを実現してみます。

稼働USBポートを確認する

手元にZ97チップセットのマザーボードがあります。Z97は、8本のUSB 2.0と6本のUSB 3.0(最近の表記ではUSB 3.1 gen 1)をサポートしています。USB 3.xには互換性のためにUSB 2.0の線も含まれているので、実際には、USB 2.0が14本、USB 3が6本あることになります。

このマザーボードでmacOSを動かして、IORegistryExplorer.appで認識されたUSB一覧を見てみます。すると、機能しているUSBポートは、以下の通りでした。HSはHigh Speed、SSPはSuper Speed PlusでそれぞれUSBの速度のモードです。HSがUSB 2.0で、SSPはUSB 3です。

つまり、USB 2.0が14本、USB 3が1本見えています。USBの本数が15本と言う制限があり、2.0から先に稼働した結果です。先の記事では、USBInjectAll.kextを使って、不使用のポートを除外して、必要なポートを生かしました。これをDSDTの書き換えでやってみます。

未使用のUSBをDSDTから削除する

USBの使用状況を調べたところ、HS04はどのコネクタにも接続されていませんでした。チップセットには搭載されているけど、配線されていないようです。そこでこれをDSDTから除外してみます。DSDTのソースを見て、HS04で検索します。するとDeviceの記述でアドレスを定義しているらしい箇所が見つかりました。まずはこれをコメントアウトしてみます。

コンパイルしたらエラーが出ました。

ScopeにもHS04に関する記述があるようです。これもコメントアウトします。長いのですが、/**/を使って自動コメントされた箇所があるので、頑張って行頭の//でコメントアウトします。

コンパイルしたら、成功しました。これで作成したDSDT.amlをEFI/CLOVER/ACPI/pachedに入れて、使用して、起動してみます。結果はこうなりました。

無事、未使用のHS04がリストから除外されているのが確認できます。また、15個制限の1個が空いたので、USB 3のポートの一つ、SSP2が新たに有効になりました。

この方法を、他にも使用していないポートに対して実施していけば、15個制限の中に、実際に使用しているポートを全て含めることができます。USBInjectAll.kextなどの追加のkextや、config.plistへのパッチが不要です。ある意味、一番根本的な解決方法です。

4件のコメント

  1. 参考になりました
    コメントアウトと同等なパッチも書いてみました
    into device label HS04 remove_entry;
    into Scope label _SB.PCI0.XHC.RHUB.HS04 remove_entry;

  2. ありがとうございます。なるほど、こうやってパッチ機能を利用する手もあるんですね。勉強になりました。そのうちに試してみて、本文に加筆したいと思います。

  3. はじめまして。まだHackintoshを組んだことの無い者です。tonymacx86のWEBサイトでH370マザーボード・3.1 Gen2カードがリストに複数掲載されている・Mac mini 2018の情報等を読んで「H370のUSB 3.1 Gen2(AとC)にもデフォルトで対応しているんだ」と思い込んでいたのですが,もしかして,初期状態では動かないのでしょうか。教えていただければ幸甚です。

    1. 私も3.1 Gen2がmacOSそのままで動くようになったのではないかと期待しています。Z390を使い始めたばかりなので、そのうち確認します。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です