動かないと書いた外付けGPUがLinuxで動いた〜原因は自分が残した設定だった
2026年8月17日
8月3日に、外付けGPUがThunderboltで動かないという記事を書きました。RTX 5060 Ti・RTX 3060・Intel Arc B580 の3枚を同じ経路で試して、3枚とも動かなかったという内容です。
あの時点では「Thunderboltでは無理そうだ」というのが私の結論でした。OCuLinkに挿し替えれば何事もなく動くので、そちらを使えばいい、と。
ところが先日、Radeon RX 9060 XT を手に入れて同じ経路に繋いだところ、動いてしまいました。しかも推論の速度も消費電力も測れるところまで。
何が違ったのでしょうか。
この記事は手元で実際に動かした記録です。作業は2026年8月16日から17日にかけて行いました。
前回の記事はこちらです。
結論を先に言うと、原因は自分が残した設定でした
先に申し上げておくと、GPUのせいでもケーブルのせいでもありませんでした。私が以前の検証のために足して、そのまま残していた起動設定が原因です。
しかも、その設定を足したのは Intel Arc B580 を OCuLink で動かそうとしていた時期で、その試み自体は結局うまくいっていません。うまくいかなかった検証の残骸が、次の検証を邪魔していた形です。
pci=nocrs。パソコンが本来使うはずのアドレス割り当てを無視させる指定ですどう試したか〜同じGPUを2つのつなぎ方で
手元のミニPC(GMKtec EVO-X2)に、同じグラフィックボードを2つのつなぎ方でつないで試しました。Thunderbolt でつないだ場合と、OCuLink という別の口でつないだ場合です。OSはUbuntuです。
動かない原因は2つありました。順に見ていきます。
1つ目の壁:GPUに割り当てるアドレスが足りなかった
繋いだ直後の状態はこうでした。
カード自体はきちんと見えています。VBIOSも読めて、16GBのGDDR6という情報まで正しく取れました。止まっているのは最後の1歩だけです。
失敗しているのは「1ページぶんの領域をGPUに見せる」という処理でした。ごく小さな確保なので、容量が足りないという話ではありません。
起動設定に、5つの指定が残っていました
設定ファイルを見たところ、こうなっていました。
ファイル名のとおり、B580を動かそうとしていた時期に作ったものです。当時いろいろ試した指定が、そのまま残っていました。
このうち pci=nocrs が曲者でした。パソコンのファームウェアが「この範囲のアドレスを使ってください」と申告してくるのを無視して、カーネルが独自に割り当てるという指定です。うまく動かないときの最後の手段のような設定で、常用する指定ではありません。
この指定を外して、pci=realloc だけにしました。変更はこの1箇所です。
再起動したら、あっさり掴みました。
ついでに、動いていた側も速くなりました
思わぬ副産物がありました。OCuLinkで繋いでいる RTX 5060 Ti の接続速度が変わっています。
| 設定を外す前 | 外した後 | |
|---|---|---|
| RTX 5060 Ti(OCuLink) | 2.5 GT/s x4(Gen1) | 16.0 GT/s x4(Gen4) |
残していた設定は、外付けGPUを動かなくしていただけでなく、動いていた側の速度も削っていました。過去の検証のために足した設定を残したままにするのは、思ったより高くつくようです。
2つ目の壁:GPUが省電力で眠ったまま起きなかった
ドライバは掴んだのに、今度は様子がおかしくなりました。
GPUの状態を問い合わせると、どれも「使用中です」と返ってきて答えません。速度を測るソフトを起動すると、90秒待っても返ってこない。何かに触れると、そこから先に進めなくなります。
内蔵GPUと並べて見たら、違いが一目で分かりました。
使われていないGPUを自動で眠らせる、省電力の仕組みが働いていました。ふつうは起こせば済む話ですが、Thunderbolt越しだと、この起こす処理がうまくいかないようです。
調べてみると、同じ系統のミニPCで外付けGPUを使っている人の手順書に、まさにこの対処が書かれていました。「頻繁な復帰は失敗することがあるので、省電力機能を切る」と。
そのとおりにしました。このGPUだけ、省電力を切ります。
| 切る前 | 切った後 | |
|---|---|---|
| 状態 | suspended | active |
| 使用率の問い合わせ | 答えない | 0(正常) |
| 消費電力 | 読めない | 8W |
| GPU一覧の取得 | 90秒でも返らない | 0.30秒 |
90秒返ってこなかったものが、0.3秒になりました。ここまで露骨に変わると、迷う余地がありません。
この時点で、3枚のGPUがすべて見えるようになりました。
NVIDIAのGPUでも試したが、こちらは動かなかった
ここで疑問が湧きます。原因が起動設定だったなら、前回動かなかったNVIDIAのカードも動くのではないか。
手元の RTX 3060 を、同じThunderboltの経路に繋ぎ替えて試しました。
結果は前進はしたものの、動きませんでした。
| 段階 | 前回(8月3日) | 今回 |
|---|---|---|
| カードが見えるか | 見えない | 見える |
| 接続速度 | — | 16.0 GT/s x4(Gen4) |
| ドライバが掴むか | 掴めない | 掴む |
| 初期化 | — | 失敗 |
前回は「そもそもカードが見えない」でした。今回はGen4で繋がり、ドライバも掴むところまで到達しています。起動設定の修正は、NVIDIAにも確かに効いていました。
ただ、その先で止まります。AMDで効いた省電力の対処も当ててみましたが、越えられませんでした。
つまり「Thunderboltで外付けGPUが動くか」は、接続方式だけでは決まらないということです。 メーカーによって壁の位置が違います。NVIDIAを狙うなら、いまのところ厳しいと考えたほうがよさそうです。
どこまで確かめたか〜この記事で言えないこと
ここで書いたのは、手元の1台(EVO-X2)で、この2枚のGPUを試した結果です。
- 他のミニPCで同じことが起きるかは確かめていません。アドレスの割り当ては機種ごとに違います
- NVIDIAが動かなかった理由は、突き止められていません。設定を戻しても起動しませんでした
- 速さは別の記事で測ります。ここで確かめたのは「動くかどうか」だけです
まとめ:動かない原因は、自分が過去に残した設定だった
- Thunderbolt接続の外付けGPUが、Linuxで動きました。前回「動かない」と書いた構成です
- 原因は自分が残した起動設定でした。
pci=nocrsという、以前の検証で足した指定です - その設定は、動いていたOCuLink側の速度も削っていました(Gen1→Gen4に改善)
- もう1つの壁は省電力機能。Thunderbolt越しだと眠ったGPUを起こせず、触ると固まります
- NVIDIAは前進したものの動きませんでした。同じ機体・同じ設定でメーカーによって結果が分かれます
いちばんの教訓は、うまくいかなかった検証の設定を残しておくのは危ないということでした。あのときB580を動かそうとして足した指定が、次の検証を丸ごと止めていました。しかも動いていた別のGPUの足まで引っ張っていました。
同じように外付けGPUで詰まっている方がいたら、まず自分の起動設定を疑ってみることをお勧めします。GPUやケーブルを買い替える前に、確かめる価値があります。
動くようになったので、次は速さを測ります。Thunderboltは細いと言われますが、実際どれくらい影響するのでしょうか。
この記事で使った機材
AOOSTAR AG03(★このドックに9060XTを載せています)
[kimono_product id="16563″]
AG03に載せたグラフィックボード(★実測に使ったもの)
[kimono_product id="17102″]
[kimono_product id="16082″]
※検証環境:GMKtec EVO-X2(Ryzen AI Max+ 395/統合メモリ128GB)/Ubuntu 24.04/カーネル 7.0.0-29/Radeon RX 9060 XT 16GB(Thunderbolt接続)/RTX 5060 Ti 16GB(OCuLink接続)/RTX 3060 12GB。2026年8月16〜17日に実施。