Mac信者のHackintosh修行

惑星で一番美しいOSが1台でも多くのマシンで動くことを目指します。

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

f:id:siroanko:20171011001002p:plain

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

siroanko.hatenablog.com

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

siroanko.hatenablog.com

上の記事では、必要な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です。

f:id:siroanko:20171010235027p:plain

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

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

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

f:id:siroanko:20171021130920p:plain

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

f:id:siroanko:20171021131055p:plain

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

f:id:siroanko:20171021131358p:plain

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

f:id:siroanko:20171011000242p:plain

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

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