HPの小型デスクトップELITEDESK (3: USB設定)

HP社の小型デスクトップPC、HP EliteDesk 800 G2 DM (Core i3-6100T)のUSBを設定しました。使わないポートを除外して15個以内に収めます。Cloverの起動オプションで除外しても良いですし、SSDTを作っても良いです。

前回、このマシンにmacOSをインストールして、オーディオを設定しました。でもmacOSがUSBを15個に制限している関係で、USB 3.1ポートが全てUSB 2.0として稼働する状態でした。この続編では、USBが正しく見えるように設定を行います。USBポートの設定方法は、こちらのZ390、B360チップセットマザーボードの記事もご覧ください。

USBポートの観察

HP EliteDesk 800 G2 DMには、前面パネルに3個、背面パネルに4個のUSBポートがあります。詳細は、こちらのスペック表でも確認できます。USBは全部3.1 Gen 1だそうです。ちなみにマザーボードのチップセットはQ170です。

前面パネルには、向かって左から右に、

  • USB 3.1 Type-C 【Type-C】
  • Type-A SS表示、稲妻表示【前面SS稲妻】
  • Type-A SS表示【前面SS無印】

の3個のポートがあります。SSの表示はSuper Speedの略で、USB 3.1であることを示しています。後のチェックでわかりやすいようにカギカッコ【】で示した名前をつけました。稲妻マーク付きポートは、USB充電に適しているという意味だと思います。供給電流量が強化されているのか、もしくは電源OFF状態でも5V供給されているのかもしれません。

背面には、同じく左から、

  • Type-A SS表示が2個【背面SS上】【背面SS下】
  • Type-A キーボード表示が2個【KBD上】【KBD下】

があります。キーボード表示のポートにはSSの表記が無いのですが、これも3.1です。

前面・背面パネルの他に、マザーボード上の無線接続用M.2コネクタにも、1本USB 2.0が出ているはずです。M.2無線カードがBluetoothの接続に際して、M.2コネクタのUSB端子を使用します。以下ではM.2コネクタに出ているはずのHSポートを【M.2のHS】呼びます。

HS (High Speed)ポートを調べる

まずはUSBInjectAll.kextだけを入れて、IORegistoryExplorer.appを起動します。次に、ウィンドウの右上にある拡大鏡アイコンのついた検索窓にxhcとタイプします。すると以下のようになりました。

USB 2.0であるHSが14本見えています。こんなに多数のポートを使っていませんので、USBInjectAllのデフォルトでこう解釈されているのだと思われます。SSもあるはずなのですが、HSが多すぎて15個制限のためにSSは見えていません。このため、USB 3.1ポートに含まれるUSB 2.0ピンしか機能しなかったのです。

HSは全て見えているので、最初にHSとUSBポートの関係を調べます。そのために、USB機器をポートに接続します。USBポートにデバイスを接続するとIORegistoryExplorerのport-statusの数値が変化するので、これで位置関係が分かります。USBメモリーを使うと、抜き差しのほかにアンマウントする必要があるので、キーボードのドングルのようなデバイスの方が楽です。【M.2のHS】を探すためには、マザーボード上のM.2ソケットに無線ユニットを挿します。今回は、余っていたmacOS非サポートのインテルWiFiカードを挿しました。この結果、各項目とUSB 2.0ポートの関係が分かりました。ここで発見できなかった不明なHSは多分未使用です。

  • HS01 2.0 3.1 Gen 1【背面SS上】
  • HS02 2.0 3.1 Gen 1【背面SS下】
  • HS03 2.0 3.1 Gen 1【前面SS稲妻】
  • HS04 2.0 3.1 Gen 1【KBD下】
  • HS05 2.0 3.1 Gen 1【KBD上】
  • HS06 (不明)
  • HS07 2.0 3.1 Gen 1【M.2のHS】
  • HS08(不明)
  • HS09 2.0 3.1 Gen 1【Type-C】
  • HS10 (不明)
  • HS11(不明)
  • HS12(不明)
  • HS13 2.0 3.1 Gen 1【前面SS無印】
  • HS14 (不明)

SS (Super Speed) ポートを調べる

次に、今は見えていないSSポートを調べることにします。そこでUSBInjectAllの機能を使ってHSポートを一時的に無効にします。全部のHSポートを無効にすると、キーボード・ポインティングデバイスが使えないので、HS01だけは生かしました。また元から不要なUSR1, USR2も無効にします。このために、Cloverの起動オプションを以下にしました。

<string>-v uia_exclude=HS02;HS03;HS04;HS05;HS06;HS07;HS08;HS09;HS10;HS11;HS12;HS13;HS14;USR1;USR2</string>

この結果、IORegistoryExplorerの様子は以下のようになりました。

SSが10個見えるようになりました。HS01を加えて全部で11個あります。15個制限以下ですので、SSはこれで全てだと思われます。そこで今度は、USB 3.1のUSBメモリーを使って、IORegistoryExplorerの反応を調べました。その結果、以下のように割り当てられているようです。

  • SS01 3.1 Gen 2【背面SS上】
  • SS02 3.1 Gen2 【背面SS下】
  • SS03 3.1 Gen 1 【前面SS稲妻】
  • SS04 3.1 Gen 1 【KBD下】
  • SS05 3.1 Gen 1 【KBD上】
  • SS06 3.1 Gen 1 【Type-C】(逆挿しも同じ)
  • SS07 (不明)
  • SS08 3.1 Gen 1【前面SS無印】
  • SS09 (不明)
  • SS010 (不明)

これも不明の番号は多分未使用です。SS01からSS05まではSSとHSで同じ番号になっています。でもSS06とSS08は微妙にずれています。実際のパネルに合わせると以下になります。

以上から、未使用のポートを全て除外するためには、起動オプションに以下の設定を行えば良いことになりました。

<string>-v uia_exclude=HS06;HS08;HS10;HS11;HS12;HS14;USR1;USR2;SS07;SS09;SS10</string>

この結果、以下のように必要なポートが見えるようになりました。存在しているポートの数がちょうど15個ですので、macOSの個数制限で諦めなければならないポートはありません。

USBを設定するSSDTを作る

こちらで説明したように、Clover起動オプションを使うよりも、USBを設定するSSDTを作成して、使用すべきポートを指定するやり方がより正しいようです。USBポートの素性を正しく記述できるので、macOSの動きがより正しくなるはずです。詳しくは該当記事を見てください。この作業で必要な情報は、USBコントローラのdevice-idです。HP EliteDeskが使っているQ170の場合、vendor-idが0x8086で、device-idが0xa12fです。0x8086はインテルの番号ですので、インテルのチップセットを表しています。これらの数値はIORegistryExplorerでXHCの項目の中で発見できます。またファインダーで、「アップルメニュー」「このMacについて」「システムレポート」と進み「システム情報」を開き、このUSBの項目にも書いてあります。

そこで、先の記事で紹介したお手本amlファイルから、”8086_a12f”と書かれた”Package”の定義だけを残して、他のPackageの定義を削除します。残すのは以下の項目です。

"8086_a12f", Package()
{

...........

},

この中にはHS01からSS10までのUSBの情報が書かれています。これに対してコネクタの情報を実際に合わせて変更していきます。UsbConnectorの値は、

  • 0: USB 2.0のコネクタ
  • 3: USB 3.1のコネクタ。3.1に付随するUSB 2.0も3にします。
  • 255: 内部接続で外部に接続しないコネクタ。マザーボード内部でBluetoothユニットに接続しているなどの場合にこれを使います。マザーボード上のコネクタで外部に引き出す可能性のあるものは0または3にします。
  • 9: USB Type-Cのコネクタ。逆挿しにしてもSSの番号が変化しない場合。内部でハブに接続されているらしいです。
  • 10: USB Type-Cのコネクタ。逆挿しするとSSの番号が変化する場合。個別に接続されています。

を表しています。上で調べた内容を反映すると、以下のようなファイルになりました。

これをMaciASLで開きます。次に、MaciASLのFileメニューからSave As…を選び、バイナリー出力を指定して書き出すとSSDT-UIAC.amlが出来上がります。こうして作成したSSDT-UIAC.amlファイルを、ESPのEFI/CLOVER/ACPI/patched/にコピーすれば有効になります。これでCloverのブートオプションにuia_excludeを指定しなくても、実存するポートのみが有効になるはずです。IORegistoryExplorerで確認すると以下のようになりました。上で、Clover起動オプションで設定した場合と同じ結果です。

6件のコメント

  1. いつもお世話になっております。
    私のElitedesk 800 G2 DMでは、USB-Cポートに逆さにUSB3.0を挿すとHS06のUSB2.0として認識されていました。最近この状態に気づき、いろいろ試してみました。
    HS06を削除し、SS07を有効にしてTypeCとしてアサインしたところ、逆挿しでもUSB3.0と認識されるようになりました。
    Type-CにUSB2.0を挿しても認識されなくなりましたが、この設定で様子を見てみます。

    1. HS09とSS07の両方を有効にすれば、USB 3と2は両方とも、逆挿しでも、認識されると思うのですが、ダメでしょうか。Type-Cは9番にしてありますでしょうか?

      訂正:SS07ではなくSS06です。

  2. TypeCはSS06とSS07に設定しています。SS07を有効にすると15個を超えるので、どれか1つを無効にしないといけません。
    HS09はType-C ライトニングケーブルでiPhone接続に必要なことが分かったので、背面のHS05/SS05のうちHS05を無効に変更しました。
    下記15個の校正にしました。
    HS01, HS02, HS03, HS04, HS07, HS09, HS13, SS01, SS02, SS03, SS04, SS05, SS06, SS07, SS08

    1. 記事でチェックした時は逆挿ししてもSS06だけが使われていたと思ったのですが、その後はType-Cを使っていないので、実は間違っていたのかもしれないです。今回のご報告だと逆挿しでSS06/SS07がそれぞれ使われるようですね。出荷時期によって変更されている可能性もあるのかな。情報ありがとうございました。

返信を残す

メールアドレスが公開されることはありません。