ASUS MAXIMUS XI HEROのUSBを設定する

ASUS マザーボードのUSB設定をしました。使わないUSBポートの番号を調べ、その番号をconfig.plistに書きます。これでmacOSの個数制限によりUSB 3が使えなくなる事態を回避します。以下の記事で紹介しているように、ASUS MAXIMUS HEROマザーボードに9900Kを搭載したマシンは順調に稼働しています。

今回、回避しようとしているのは、macOSのUSB個数制限です。macOS El Capitanから使用可能なUSBポートの数が、 コントローラ当たり15までと制限されまてしまいました。理由は不明です。この対策は何通りかありますが、15個の制限は残したまま、使用しないUSBポートを除外するようconfig.plistに設定するのが一番良いと思います。

上の記事では、MSI Z97A Gaming 7マザーボードを例に、使用しないポートをconfig.plistに書くことで、必要なUSBポートが使用可能になるよう設定しました。同じ手順をASUS MAXIMUS XI HEROマザーボードでも行いました。

USBInjectAll.kext

まずはUSBInjectAll.kextを入手してEFI/CLOVER/kexts/Otherフォルダに入れます。

RehabMan / OS-X-USB-Inject-All / Downloads — Bitbucket

このkextは、チップセットで用意されているUSBポートの全てをmacOSから参照できるように設定する機能があります。この記事で利用しようとしている機能、config.plistの起動オプションで使用しないポートを除外する機能は、このkextが提供しています。

無も対策しない場合のUSB構成

まずは、何も対策しないとどのUSBポートが見えているのかを確認します。IORegistryExplorer.appなどのツールを使うと、macOSから見たハードウェア構成がわかります。

mac.softpedia.com

IORegistryExplorer.appを起動して、右上の虫眼鏡アイコンのところに、xhcと入力します。するとXHC関係の情報が現れます。全く対策しない状態のASUS MAXIMUS XI HEROマザーボードでは、以下のような結果になりました。

XHCの下にHS01~14とUSR1が見えています。これらが現在OSが認識しているUSBポートです。macOSは15個しか認識しないので、アドレスの低い方から15個のポートが見えています。マザーボードにはこれ以外にもUSBポートがあるのですが、15個超えているものは見えません。

USRを除外する

HSはHigh Speedの略でUSB 2.0のことです。USRは、tonymacx86の説明によると何らかの都合で見えてしまっているダミーのポートらしいです。なので除外しても良いらしいです。とりあえずUSR1を除外してみましょう。USBInjectAll.kextを使用した上で、config.plistのBoot Argumentsに以下のように指定します。

    <key>Boot</key>
    <dict>
        <key>Arguments</key>
        <string>uia_exclude=USR1</string>

この結果、IORegistryExplorer.appの表示が以下のようになりました。

新たにUSR2が見えるようになりました。実はこれも実存しない不要なポートらしいです。これも除外しましょう。

    <key>Boot</key>
    <dict>
        <key>Arguments</key>
        <string>uia_exclude=USR1;USR2</string>

この結果、IORegistryExplorer.appの表示が以下のようになりました。

不要なUSR1, USR2を消したので、ようやくSSが見えてきました。SSはSuper Speedの略で、USB 3のポートを示しています。

HS (USB 2.0) ポートを特定する

この段階で見えているHSポートであるHS01からHS14の14個が、マザーボードにあるとmacOSが認識している全てのUSB 2.0ポートです。これがどこのポートなのか特定していきます。ちょっと大変な作業ですが、マザーボードの構成を把握できるので、達成感はあります。

マザーボード上のUSB 2.0ピンソケットを調べるためには、こんなアダプタがあると便利です。

それぞれのポートに対応する番号を調べるためには、

  1. それぞれのポートにUSB機器(無線アダプタやマウスなど)を接続し、
  2. IORegistryExplorer.app の表示の変化を確認する

ことで、特定できます。下の例は、とあるUSB 2.0ポートにLogicoolの無線キーボードアダプタを挿入してみたところです。HS11のport-statusが、最初は0x0だったのですが、下の図のように0x1100に変化しました。これで、このポートはHS11だということがわかります。USB 3のポートの場合、2.0と3の両方を持っていますから、USB 3.0のデバイスを挿せばUSB 3.0の番号が、USB 2.0のデバイスを接続すれば、USB 2.0端子の番号の、それぞれの該当項目が変化します。

こうしてASUS MAXIMUS XI HEROマザーボードのUSB 2.0を調べました。各ポートの番号は以下のようになっていました。

  • HS01 AsusTek社のAURA MOTHERBOARDが使用
  • HS02 (不明, マザーボード上のU31G2_2の可能性あり)
  • HS03 バックパネルUSB 3のUSB 2.0 (4列上から3番目、赤、”SS10”)
  • HS04 バックパネルUSB 3のUSB 2.0 (4列上から4番目、赤、”SS10”)
  • HS05 バックパネルUSB 3のUSB 2.0 (Eternetの下、赤、”SS10″)
  • HS06 バックパネルUSB TYPE CのUSB 2.0 (Eternetの下)
  • HS07 バックパネルUSB 3のUSB 2.0 (4列上から1番目、青、”SS”)
  • HS08 バックパネルUSB 3のUSB 2.0 (4列上から2番目、青、”SS”)
  • HS09 マザーボードの3.1 Gen 1端子U31G1_910に付随するUSB2.0
  • HS10 マザーボードの3.1 Gen 1端子U31G1_910に付随するUSB2.0
  • HS11 バックパネルUSB 2.0 (PS/2の真下, 無表記)
  • HS12 バックパネルUSB 2.0 (PS/2の下, “BIOS”)
  • HS13 マザーボードの2.0端子USB_E12, USB_E34 (USB2.0 Hub経由)
  • HS14 マザーボード上のWiFi/Bluetoothモジュールが使用

HS09HS10は、マザーボード上のUSB 3.1 Gen 1ポートに接続しています。マニュアルには下のような図面があります。マザーボード上にU31G1_910と書かれたソケットがあり、ここにUSB 3.1 Gen 1が2本出ています。それぞれに付随しているUSB 2.0端子がHS09とHS10に接続しています。


HS13は、マザーボード上のUSB 2.0端子に接続しています。マニュアルには下のような図面があります。マザーボード上にはUSB_E12, USB_E34という名称のソケットがあり、ここにUSB 2.0が4ポート出ています。ただ、これらの4ポートは内部でUSBハブに接続していて、HS13が大元になっているようです。今回は、この基板上USB 2.0端子の一つにBluetoothユニットを接続しています。なので、HS13だけは除外できない重要なポートです。

バックパネル部分は以下になります。

少し面白い発見だったのはHS01です。IORegistryExplorer.appの検索窓の文字を消すと、絞込み機能が無効になり、全ての情報が見えるようになります。そしてHS01の詳細を見てみます。すると以下のように、名前がAURA MOTHERBOARDになっていて、製造者名はAsusTek Computer Inc.と表示されます。どうやらマザーボードの電飾ユニットに接続されている様子です。もしもこれをプログラムできればmacOSから電飾をコントロールできるのかと思われます。

マザーボードが使っているUSB 2.0はもう一つあります。HS14です。これはバックパネルにアンテナが出ているインテル製のWiFi/Bluetoothモジュールが使っています。この無線モジュールは、内部がA/E KeyのM.2ソケットになっているのですが、このKeyのソケットにはUSB 2.0が1個含まれています。そのUSB 2.0がHS14に接続されているようです。BIOSで無線モジュールをEnabledにして起動すると以下のようにBluetooth Host Controllerと表示されます。Disableにした時は何も接続されない状態の表示になります。idVendorの項目を見ると0x8087です。これはインテル社のIDです。

Bluetooth以外のHS (USB 2.0)を全部除外する

USR1, USR2を除外したことで、USB 3としてはSS01があることはわかりました。他のUSB 3ポートは15個の制限で隠されています。そこで、全てのUSB 3ポートを調べるために、絶対必要なHS以外を一時的に除外します。Bluetoothaは基板のHS13に接続されているので、これが無いとキーボードとトラックパッドの操作できなくなってしまいます。そこで、これ以外のHSを全部除外してみます。Boot Argumentsに以下を書いてみました。

    <key>Boot</key>
    <dict>
        <key>Arguments</key>
        <string>>uia_exclude=USR1;USR2;HS01;HS02;HS03;HS04;HS05;HS06;HS07;HS08;HS09;HS10;HS11;HS12;HS14</string>

この結果、IORegistryExplorer.appの表示が以下のようになりました。

HS13を含めて全部で11項目あります。15個未満なので、これで全てです。ということでこのマザーボードにはSS01からSS10までの10個のUSB 3があることがわかりました。

このマザーボードはインテルのZ370チップセットを使っているのですが、インテルの仕様によるとUSB 2.0が14本、USB 3.1が10本あり、最大で14本のUSB 2.0/3.1を使用できることになっています。このマザーボードはチップセットが提供するUSBの全てを使っているようです。

SS (USB 3) ポートを特定する

USB 3であるSSがSS01からSS10まで10個見えるようになりました。これらのうちバックパネルのSSを特定しました。これにはUSB 3.0のUSBメモリを挿しながら調べました。

  • SS01 (不明, 未使用?)
  • SS02 (不明, マザーボード上のU31G2_2の可能性あり)
  • SS03 バックパネルUSB 3.1 Gen 2 (4列上から3番目、赤、”SS10”)
  • SS04 バックパネルUSB 3.1 Gen 2 (4列上から4番目、赤、”SS10”)
  • SS05 バックパネルUSB 3.1 Gen 2 (Eternetの下、赤、”SS10″)
  • SS06 バックパネルUSB TYPE CのUSB 3.1 Gen 2 (Eternetの下)
  • SS07 バックパネルUSB 3.1 Gen 1 (4列上から1番目、青、”SS”)
  • SS08 バックパネルUSB 3.1 Gen 1 (4列上から2番目、青、”SS”)
  • SS09 マザーボードのU31G1_910の USB3.1 Gen 1
  • SS10 マザーボードのU31G1_910の USB3.1 Gen 1

このマザーボードはHSとSSの数字部分が対応しているようです。バックパネル写真に合わせると以下のようです。ちなみに、バックパネルのUSB 3ポートには、青いポートにSS、そして赤いポートにSS10と表示が書いてあるのですが、これはそれぞれ3.1 Gen 1とGen 2を示しているようです。10というのはおそらくGen 2の転送速度である10 Gbpsのことだと思います。

SS09SS10はマザーボード上のUSB 3.1 Gen 1ポートであるU31G1_910に接続しています。マニュアルの図を再掲します。

SS01SS02は発見できませんでした。上で書いたように、このマザーボードはUSB 3.1とこれに付随するUSB 2.0のそれぞれのHSとSSに、同じ番号を割り当てています。HS01はマザーボードの電飾コントローラと思われるので、これに対応するSS01は存在しないのかと推測されます。SS02とこれに関係する可能性のあるHS02は、共に発見できませんでした。このマザーボード上にはUSB 3.1 Gen 2のコネクタもついています。U31G2_2という名前です。別売の「USB 3.1 Gen 2 ポート増設用モジュール」というものを接続するコネクタらしいのですが、手元に無いのでチェックできませんでした。SS02とHS02は、このU31G2_2に接続しているのかもしれません。

必要なUSBポートを選んで他を除外する

さて以上からほぼ全てのUSBポートの番号がわかりました。ここから、使用したいUSBポートを最大15個選び、それ以外の使用しないポートを除外する設定をします。

基板上の3.1 Gen 1コネクタを使用しない場合

マザーボード上のUSB 3.1 Gen 1ポートであるU31G1_910を使用しない場合を考えます。基板上のUSB 2.0コネクタに関しては、Bluetoothモジュールが使用するのでこれ (HS13) は外せません。HS13と、バックパネルのポートを全て使うことにすると、必要なポートは以下のようになりました。

  1. HS03 バックパネルUSB 3のUSB 2.0 (4列上から3番目、赤、”SS10”)
  2. HS04 バックパネルUSB 3のUSB 2.0 (4列上から4番目、赤、”SS10”)
  3. HS05 バックパネルUSB 3のUSB 2.0 (Eternetの下、赤、”SS10″)
  4. HS06 バックパネルUSB TYPE CのUSB 2.0 (Eternetの下)
  5. HS07 バックパネルUSB 3のUSB 2.0 (4列上から1番目、青、”SS”)
  6. HS08 バックパネルUSB 3のUSB 2.0 (4列上から2番目、青、”SS”)
  7. HS11 バックパネルUSB 2.0 (PS/2の真下, 無表記)
  8. HS12 バックパネルUSB 2.0 (PS/2の下, “BIOS”)
  9. HS13 基板の2.0端子USB_E12, USB_E34 (USB2.0 Hub経由)
  10. SS03 バックパネルUSB 3 Gen 2 (4列上から3番目、赤、”SS10”)
  11. SS04 バックパネルUSB 3 Gen 2 (4列上から4番目、赤、”SS10”)
  12. SS05 バックパネルUSB 3 Gen 2 (Eternetの下、赤、”SS10″)
  13. SS06 バックパネルUSB TYPE CのUSB 3 Gen 2 (Eternetの下)
  14. SS07 バックパネルUSB 3 Gen 1 (4列上から1番目、青、”SS”)
  15. SS08 バックパネルUSB 3 Gen 1 (4列上から2番目、青、”SS”)

なんと全部でちょうど15個です。そこで、これ以外を除外するよう設定します。

    <key>Boot</key>
    <dict>
        <key>Arguments</key>
        <string>uia_exclude=USR1;USR2;HS01;HS02;HS09;HS10;HS14;SS01;SS02</string>

末尾に近いSS09以降は、除外リストに入れる必要はないです。この結果、IORegistryExplorer.appの表示が以下のようになりました。

基板上の3.1 Gen 1コネクタを使用する場合

大抵のPCケースには全面パネル近辺にUSB 3.1 Gen 1ポートが2個付いています。これを使用するためには、マザーボード上のU31G1_910に接続することになります。U31G1_910は、HS09, HS10, SS09, SS10です。先のリストは最大限度の15個に達しているので、4個を削除しないとこれらを使えません。そこでバックパネルにあるUSB 3.1 Gen 1の青いポートであるHS07, HS08, SS07, SS08を除外することにしました。なんとなく残念ですが仕方ないです。そうすると使用するポートは以下になります。

  1. HS03 バックパネルUSB 3のUSB 2.0 (4列上から3番目、赤、”SS10”)
  2. HS04 バックパネルUSB 3のUSB 2.0 (4列上から4番目、赤、”SS10”)
  3. HS05 バックパネルUSB 3のUSB 2.0 (Eternetの下、赤、”SS10″)
  4. HS06 バックパネルUSB TYPE CのUSB 2.0 (Eternetの下)
  5. HS09 マザーボードの3.1 Gen 1端子U31G1_910に付随するUSB2.0
  6. HS10 マザーボードの3.1 Gen 1端子U31G1_910に付随するUSB2.0
  7. HS11 バックパネルUSB 2.0 (PS/2の真下, 無表記)
  8. HS12 バックパネルUSB 2.0 (PS/2の下, “BIOS”)
  9. HS13 基板の2.0端子USB_E12, USB_E34 (USB2.0 Hub経由)
  10. SS03 バックパネルUSB 3 Gen 2 (4列上から3番目、赤、”SS10”)
  11. SS04 バックパネルUSB 3 Gen 2 (4列上から4番目、赤、”SS10”)
  12. SS05 バックパネルUSB 3 Gen 2 (Eternetの下、赤、”SS10″)
  13. SS06 バックパネルUSB TYPE CのUSB 3 Gen 2 (Eternetの下)
  14. SS09 マザーボードのU31G1_910の USB3.1 Gen 1
  15. SS10 マザーボードのU31G1_910の USB3.1 Gen 1

これ以外を除外するには以下のように設定します。

    <key>Boot</key>
    <dict>
        <key>Arguments</key>
        <string>uia_exclude=USR1;USR2;HS01;HS02;HS07;HS08;HS14;SS01;SS02;SS07;SS08</string>

この結果、IORegistryExplorer.appの表示が以下のようになりました。

補足:バックパネルのUSBポート

マザーボードのマニュアルに掲載されているバックパネルのポートの説明図は以下です。USB 3ポートのうち、青いポートがGen 1ポート、赤いポートとType CポートがGen 2ポートのようです。

つづき:USB構成を記述したSSDTを作る

この記事では起動オプションで使用USBポートを指定しています。USBInjectAllの機能をフルに活用するためには、SSDTファイルを作ることが理想的です。続きは以下の記事をご覧ください。

5件のコメント

  1. 詳細なUSB記事ありがとうございます。
    時間がなかなかとれずconfig.plistの編集まで出来ていなかったのですがこれ参考にやらせていただきます。ちなみにASUSのZ390M TUF GAMING(wi-fi)のMB内部のUSB2.0用端子は同様にHS09とHS10でした。
    USR1、USR2の件も興味深いですね。
    実は自分が使っているMBもwi-fi内蔵にしてしまった為余計ややこしい事になってるのかもしれません。
    Ali Expressで購入した BCM943602CSチップの無線LAN、wifiカードを使用してますが、トラックパッド、キーボードを検索しても見つけてもらえなかったなどがありまして内部接続のUSBとなんかあるのか、と疑いかけてたんですが優先でつなぐと以降無線で使えたり、ただし再起動するとやっぱり見失っているので原因の切り分けが難しいんですが素直にT919を再度購入すれば良いのかも、とか思ったりしています

    1. 自分はどうせBCMのモジュールを使うならということでWi-FiなしのZ390にしました。
      10.14.4ではUSB10ポート制限のパッチが効かないのでUSB3.0を調べるにはUSB2.0を無効化しないと出てこないので大変ですね。

      1. WiFiなしのマザーボードを選ぶのは正解だと思います。私も他の特徴が気に入ったのでこのマザーボードにしましたが、搭載WiFi/BTは多分無駄になると思っていました。300シリーズチップセットからWiFi/BTを標準サポートするようになると聞いていたので、ひょっとして将来のmacOSで使ってくれるのかもという淡い期待はあります。

    2. BIOS設定でマザーボード搭載のWiFi/BluetoothをDisabledにする設定はされていますか?macOSは最初に見つけたBluetoothを引き続き使おうとするので、マザボ搭載Bluetoothが動いているとそちらを使ってしまうようです。また、BIOSでoffにした上で、この記事で書きましたようにマザーボード搭載Bluetoothが使っているUSB 2.0を除外してしまえば(この記事の場合HS14) さらに確実になると思います。

      Appleの開発者向けサイトで配布されているツールを使えば、macOSが使うBluetoothのリストをリセットすることもできるらしいです。が、そこまでは必要ないと思います。

  2. おっしゃるとおりbios上でintelのwi-fi、bluetoothは無効にしてあります。
    自分もMac mini2018が出るときにintel製を採用してくるかも、という淡い期待に寄せたわけですが・・・
    でもHandoffは同じ距離で普通に使えてるのでちょっと不思議です。
    iPhoneでブラウザ開くたびにsafariがぴこんぴこん反応するのでicloudや電波的には問題ないと思うんですが・・・
    明日は休みなので色々といじくろうと思います

ゲン7 へ返信する コメントをキャンセル

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