02 February 2020

「egpu」のハナシ。

 普段、macを使ってるんです。iphoneを買ってしばらく経ってwindowsから切り替えたんですが、普段使うには最高ですね、mac。今はmac mini(2018)を使ってます。

 でも、ゲームで遊ぶのにはwindowsだよなあ、って思うようになって。それからbootcampを導入して、steamでassetto corsaとかスト5とかをヒマな日に遊んでいたんですが、グラフィック面でパワー不足を感じていたんです。
そんな折、egpuの話を目にして「これ、イイじゃない」と全くノープランで買ったところとんでもない地雷だったっつーオハナシをこれからします。

・ノープランで購入
 そもそもegpuとは何ぞや、っつーオハナシなんですが。パソコン本体とは別にグラフィックボード(gpu)を用意し接続することで、グラフィック機能を強化できちゃうという夢のデバイスなんですよ。

 目にしたのはここらへん。見る限りでは買って挿すとサクっとできる感じしかしません。
 なので何の予備知識もなく予算と相談しながらakitio nodeっつー箱とradeon 5700っつーグラボを購入したのが12月。マトモにwindowsで稼働するのは1月下旬になります。
 届いたアレコレをサクサク組み立て。接続はthunderbolt3で。macではegpuからmac mini本体を経由して映像が出る感じで、ドライバとかを気にする必要もなく、全く問題なく稼働しました。

・まさかの事態
 はてさて、問題はwindowsです。事前に把握していた流れとしては
・OSが立ち上がるまで待つ
・egpuを接続して電源オン
・グラボのドライバをインストール
・電源を切って再起動(egpuは連動)
・まずは本体から映像が出力される
・ハードウェアがegpuの存在を把握した時点で出力が切り替わる
・egpuから映像が出力される
 と、ざっくりこんな感じなんですが。ウキウキでドライバをインストールして再起動したらとりあえず起動時のwindowsロゴ時点で停止。あとは延々とナゾのノイズが乱れまくる画面を見せつけられてガックリ。

 少し調べたら「windowsロゴが出たタイミングでegpuの電源を入れるとウマく行くよ!」的なお話を見かけて試してみたもののダメで。

 ここらへんのフォーラムを探したら「ブートローダーをなんとかするんだ!」的なお話を見かけて試してみてもやっぱりダメ。

 理由はデバイスのエラー(コード12)。この理由は結構有名みたい。

 フォーラムをイロイロ調べてみたら解決策がたくさん出ていて、かつ誰もが同じ方法で解決できていないコトも判った時点で、解決まで長期戦を覚悟したのが正月休み(ほぼすべて費やした)でした。

 macで使えてるんだったらイイじゃないとも思いましたが、違う違う、そうじゃない。macでgpuを活かせるアプリなんてわたしは何一つ持ってない。windowsで使えなくては意味がないんです。なんとか解決しなくては…

 というワケで、解決に向けまずは現状の確認から始めました。わたしの環境は…
・セキュリティオプションは全オフ
・mac mini(2018)
・windowsを外付けSSD(2TB)にインストール

 最初はコレだけしか気にせず情報を集めていたのですが、最終的には
・本体からの映像出力がHDMI
・windowsのバージョンは1909
ココもヒントになりました。

 前段が長くなりました。ここから解決編です。

・解決策
 集めていた情報の中で、egpuに出力が切り替わってからも、本体のHDMIからは信号が出続けているという話を見かけたトコが最大のヒントになりました。
 わたしはイロイロな接続方法やブートローダーを試す中で、ずっと本体のHDMIとの接続は変えていませんでした。
 なんとなく役立つんじゃないかと予感だけで買っておいたUSB-C -> mini DisplayPortケーブルが届いていたので、

・macのセキュリティオプションは全オフ
 macをリカバリモードでブートして、ターミナルからcsrutilをオフに。そして外部デバイスからの起動を許可します。
・本体の映像はUSB-Cから出力する
 HDMIからだと、egpuを認識して出力が切り替わった後もノイズが出力され続け、抜いたとしても出力先を失い先に進めなくなり手詰まりになる。
・OSは内蔵SSDにインストール
 外部SSDでは試した範囲でエラー12から脱出できませんでした。ハードウェア的な問題っぽい。ひょっとしたらワンチャンあるかもしれないケド、成功してしまったので試していません。
・windowsのバージョンは1903
 build 1909で更新されたpci.sysには根本的な問題があり、今のところどう頑張ってもエラー12が出る。1903のpci.sysに置き換えてウマく行った例もあるが、変更のために必要なアクセス権の取得が面倒。よってここからbuild 1903をダウンロードして、インストール後windows updateを停止させました。

 と、これらを実践することでやっと機能してくれました。ゴミにならなくてホントに良かった。最初に躓いてから約1ヶ月。長かったなあ。

・egpuのメリット
 というワケでなんだかんだで動いてくれました。egpuはゲームで遊ぶトキのみの起動で画質をガン上げしてもストレスなし。ブラウジングや音楽再生・文書作成程度の作業ならegpuの電源を切っておくことで静かに作業できるので快適です。特にビジュアル的なオハナシが無いので今回は画像もなくオシマイにします。

 新たな問題として、macを動かしているトキに映像出力が死ぬ問題が発生しました。ケーブルとかポートの問題だと断定して、ケーブルを新調したら解決しています。

windowsアップデートでイイ感じ
 2020年10月のアップデート(20H2)で、pci.sysの問題が解決しました。今後同様のことが怒らないとイイんですが…