MacBook Pro に GeForce GTX970 をThunderboltで外付けしてVR向けにしてみた

はじめに

普段はMacBook(Air/Pro)の携帯性を活かせて、本気の開発とか、デモとか勉強会とかするときは外付けでブースターつけるとGPUがめっちゃ速いとしたら、いいなと思っていました。どうせなら、Oculus Rift 製品版(CV1)の推奨性能を満たすところまでいけると良いですよね!ということで、MacBook Pro Retina 13インチ (Early 2015) にthunderbolt外付けで Geforce GTX970 を接続するお話です。ちなみに、こういう外部GPUというのは、海外では 「eGPU」 (external GPU)というカテゴリのようです。

 

結果、どんな感じになるかというとこんな感じです ↓

 

f:id:hammm:20151118012822p:plain

MacBook ProのThunderbolt2ポート経由で外部GPUをつなげました(PCI-E x4接続)。GTX970のパワーで3Dゲームがサクサク動きます。また、特に設定せずとも実質Optimus (NVIDIA GPUIntel GPU経由でノートPC画面に映像を出す)になっており、MacBook Proの液晶画面で3Dゲームをスムーズにプレイすることもできます。(一定fps落ちるらしいです)

 

 ただし、Oculus RiftがOptimusと相性が悪いために、対策として、GTX970のDisplayPortに別途プロジェクターをつなげてそれをプライマリモニタとして、GTX970のHDMIポートにつないだOculusに映像を出すということをしています。(きゅーこん氏の情報を参考にさせて頂きました)

また、現状ではThunderboltケーブルを刺したまま再起動すると固まるので、必ずシャットダウンで電源を落としてから特定のタイミングで挿し直す、ということが必要になります。ちょっと面倒ではあります。

 

ちなみに、現状のThunderbolt2では、今回のAkitioを含め、外部GPUサポートをうたっているPCI-Eインタフェーボックスは存在しないのですが、Thunderbolt3では対応するという噂が出ていますので、もしかするとこのような構成のPCが各社から出てくる日は近いのかもしれません。

  

以下、実現方法について書いていきます。

 

なお、安全という観点からはだいぶよろしくないことをやっています!完全無保証です!真似をする場合は自己責任でお願いします!

もし実施する場合は、電気に関する一定の知識と、基本、ほったらかしの状況では使わないといった、慎重さが必要になりますし、火事になったりする可能性もないとはいえないので、どうかご理解ください!

 

・・・と注意をした上でですが、部品を揃えれば、危険な中では「比較的」安全にコトを行う環境ができつつあります。

 

もし万が一、やってみようという方は、準備の前に・・・Windows環境でやろうとしているなら、

今すぐ「復元ポイント作成」をやっておきましょう!後できっと感謝することになると思います!

 

概要

全体像を図解しておきます。

f:id:hammm:20151117210301p:plain 

参考情報

以下の情報を主に参考にしました。

 

・eGPU(外部GPU)全般について:tech-infernoフォーラム(英語)

 ・ACアダプタ DA-2を利用した簡潔なケーブリングについて

http://forum.techinferno.com/enclosures-adapters/9426-220w-dell-da-2-ac-adapter-discussion.html  (※2番目にある w4vz さんの記事が今回の元ネタ)

  ・今回と同構成 (MacBookPro - Akitio Thunder2 PCI-E Box) (英語)

http://forum.techinferno.com/implementation-guides-apple/10614-2015-13-macbook-pro-gtx970%4016gbps-tb2-akitio-thunder2-win8-1-osx10-10-%5Btranj10%5D.html

 ・Mac系ハードでのまとめ情報(英語)

http://forum.techinferno.com/apple-egpu-discussion/10061-basic-egpu-hardware-guide-macs.html

 

・OptimusでのOculus Rift DK2対応について:きゅーこん氏

Devel/OculusRift/OptimusノートでのDirectモード - cubic9.com

 

 

用意するもの

・ノートPC

 MacBook Pro Retina 2015 13インチ

他の機種でも動作する可能性がありますが、どうなるかは不明です。

最初からIntel GPUではなくNVIDIA(GeForce)やAMD(Radeon)のGPU (dGPU) が入っているものは、特に挙動が違ってくるので注意してください。今回はIntelGPUオンリーのMacBookProで試しています。

 なお、BootCampでWindows8.1をインストールして使いました。Mac OS Xでも外部GPUの報告例はありますが、まだ試していません。また、Oculus Riftは最近(Oculus Runtime 0.7以降)Mac OS X非対応化しています。

 

Thunderbolt接続PCI-Eボックス

 Akitio Thunder2 PCI-E Box

:国内価格 ¥35000 海外 $189

f:id:hammm:20151118010931p:plain

秋葉館か、amazonで入手できますが、海外との価格差が気になりますね。

 

ビデオカード

 玄人志向のショート基板タイプ GeForce GTX970 (GF-GTX970-E4GB/OC/SHORT)

:4万円前後

f:id:hammm:20151118010951p:plain

 Akitio Boxに基盤をおさめる関係上、このカードが現状一番おさまりが良いです。ASUSGIGABYTE等、より短いものがありますが、高さ方向が高かったりしておさまり悪いようです。

なお、この玄人志向 GTX970(short)でも、上部にある6pinコネクタをつなぐとAkitio Boxの外側のフレームがおさまりませんので、もしフレーム内にちゃんとおさめたいという場合は、コネクタを超コンパクトタイプにする等しなければなりません。コネクタの工夫については、このあたり(tech-inferno)が参考になります。

 

・外部電源

 DELLの220W ACアダプタ "DA-2"

中古で2000円前後で一定出回っているようです。220Wとかすごい!ちなみにでかくて重い! (12V 18A で 8pinコネクタの奴です)

 

Amazon.co.jp: DELL DA-2 D220P-01 SX280 GX620 OptiPlex745 OptiPlex755 小型PC対応アダプター 12V-18A: パソコン・周辺機器

 

 

・カスタム電源ケーブルの部品

 以下の部品を使って手作りします。ハンダ付けは必要ありません。

 ・DCプラグ (外径5.5mm 内径2.5mm):200円

マルツで売っているこのタイプがドライバで締められるので一番楽です。ただし品質コントロールはイマイチと覚悟したほうが良いです(後述)

http://www.marutsu.co.jp/pc/i/163634/  

http://www.amazon.co.jp/dp/B011L1NFBM

f:id:hammm:20151117210655p:plainf:id:hammm:20151117210701p:plain

 

 ・PCI-E電源6ピン分岐ケーブル x 2本

 日本では(主に安全上の配慮から)販売されていないため海外から調達する。送料込み3000円前後。2本必要。(※自信のある方は自作しても良いですが、それをするならDA-2ケーブルを分解して直接つないだほうが良いかもしれないです。)

Amazon.com: StarTech.com PCIEXSPLIT6 6-Inch PCI Express Power Splitter Cable: Computers & Accessories ここから買いました。

f:id:hammm:20151117210611p:plain

 ・金属製(導電性)のヘアピンまたはクリップ、針金(太さが約1mmで電気を通す針金状のもの):無料〜100円

 たまたま持っていた太めのクリップを切断して使いました。今回の用途では、両端の先端に1cmほど差がある状態にすると使いやすいです。

f:id:hammm:20151117210912p:plain

 

・あると良いもの

 コンセントにつながる側の細めの電源ケーブル

DA-2付属のものは強烈に太くてゴツいので、細めのケーブルがあると取り回しがだいぶ楽な印象があります。定格3アンペア以上のものにしましょう。

f:id:hammm:20151119001820p:plain

 

 

カスタム電源ケーブルの作り方 

DA-2から以下の電源を供給するためのケーブルを作成します。

・Akitio Thunder2 PCI-E Box : 最大75W (DCプラグ経由)

・GTX970 : 最大150W (PCI-E電源コネクタ6pin x 2経由)

(※合計225WなのでDA-2の220Wでは足りない?と思うかもしれませんが、Akitio BoxのDCプラグ自体は実際75Wも食わないらしく、おおよそ足りているようです。)

 

1. DA-2の8pinのコネクタに、PCI-E電源コネクタ6pin をぶっさします!

個々のピンの切り欠きのサイドが合う方向にします(1ピンだけ、切り欠きのある穴に切り欠きのないピンを挿すことになりますが、多少力を入れればささります)。ノッチが上にある状態で左側が一列(2ピン分)開く形になります。

f:id:hammm:20151118231037p:plainf:id:hammm:20151118014547p:plain

2. 「ヘアピントリック(hair pin trick)」

DA-2側の、残った2ピンの上のほうのピン(ノッチに近いサイド)と、隣り合うPCI-E電源6ピンのコネクタのピン(黒色コード=GND)に導電性の「ヘアピン状のもの」をぶっさしてつなぎます。

両方とも一定深く挿すのが良いです。ぐらぐらしているようなら挿し足りないか、ピンの太さが細すぎです。

(※この端のピンは"REMOTE"というスイッチのピンになっており、隣のGNDと導通させることにより、DA-2が起動します。DA-2のランプがオレンジ色になっている場合、ここの導通がうまくいっていない状態で、電力が出ていません。電力供給中は緑色になります。)

f:id:hammm:20151118014601p:plain

3.  分岐先の6ピンコネクタの一方にDCプラグをつけます。

f:id:hammm:20151118015211p:plainf:id:hammm:20151118015230p:plainf:id:hammm:20151118015239p:plain

4. もう一方の6ピンコネクタに、2つめの6ピン分岐ケーブルを刺します。

5. 剥き出しのところをテープで絶縁してできあがり!(本当はDCプラグも絶縁したほうが良い)

f:id:hammm:20151118015328p:plain

 

6. できればここで、+とーが導通してしまっていないかテスター等で確認するのをお勧めします。

※実はDCプラグの不良品(+とーが導通している)をつかんだため、+とーがつながった状態でコンセントを入れてしまいました。この場合、ACアダプタのランプが不点灯になり、電源供給されないようです。特別火花が散ったり焦げたりといったことはありませんでしたが、心臓に悪いです。

eGPU Boxの接続

Akitio BoxにGTX970を入れて、さらに上記の電源ケーブルを接続します。

f:id:hammm:20151118015713p:plain

ちなみに、ACアダプタ DA-2とAkitio Thunder2 PCI-E Boxとを組み合わせるために、以下のようなパーツを使いました。東急ハンズ等で探してみてください。

f:id:hammm:20151118205036p:plainf:id:hammm:20151118205115p:plain

 

MacBook Proとの接続

再度書きます。このあたりのタイミングで

「復元ポイント作成」をやっておきましょう!後で必ずやてて良かったってことになりますから!

(・・・というのは、いろいろやっていたら、いくらドライバを掃除してもIntelのビデオもNVIDIAのビデオも正常に動かなくなって、どうしょうもなくなりました。復元ポイントを作っていなかったばっかりにBootCampごと再インストールになりました。復元ポイント大事!)

 

・Thunderboltケーブルを挿すタイミングは?

Windowsの黒画面でぐるぐるが回りはじめる前後あたりにThunderboltケーブルを挿すのが良いようです。

普段どおり、接続してから起動しようとしたら、黒画面のまま起動しませんでした。タイミングの工夫が必要です。

遅いと、他のデバイスに不具合が出るケースがありました。

早過ぎると、ぐるぐるが永遠に続いたりします。

ちょうど良いタイミングを見つけてください・・・。 

より安定する方法などは今後探していきます。 

 

 →こちらに詳細書きました。

hammmm.hatenablog.com

 

GeForceドライバのインストール

GTX970の存在をWindowsが認識したら、ドライバをインストールします。今回はOculus向けということで、GeForce 358.78ドライバをダウンロードして入れました。

GameWorks VR Driver Support | NVIDIA Developer

ドライバインストール後、再起動をすすめられますが、「後で」にして自力でシャットダウンしましょう。そうすれば、シャットダウン後にThunderboltケーブルを抜いて、再度ちょうど良いタイミングで挿すことができます。

(※現状、再起動をする必要があるタイミングでは必ずこの手順を行うことになります)

 

正常に動作しているかどうか?

デバイスマネージャを開いて、三角形の!がついていなければ、おおかた問題ないと思います。ベンチマーク等で動作とパフォーマンスを確認してみてください。

f:id:hammm:20151118204858p:plain

f:id:hammm:20151119001253p:plain

・コイル鳴きについて

GTX970で時々問題とされていることですが、一定、コイル鳴きのノイズがジジジ・・・とややうるさいです。fpsが高いとよりうるさいとの話。

Oculus Rift DK2の接続

今回は Oculus Runtime 0.7 を利用しました。 0.8は今後検証したいと思います。

Oculus Rift DK2をGTX970のHDMI端子に接続しただけでは正常動作しません。プログラムが異常終了する等、うまく動作しません。そもそもOculus はOptimusをサポートしないと言っているため、動作しなくても文句は言えないといった状況です。

 

そこで、GTX970(玄人志向の場合)のもうひとつの外部出力ポートであるDisplayPort端子に別のモニタ等を接続し、それを設定画面でプライマリモニタに設定します。どうしてかわかりませんが、そうすると、Oculus Rift DK2に映像が出ました!

 

うまく行く理由について、本当のところは不明なのですが、メイン面(プライマリモニタ)もOculusも両方をNVIDIA側に寄せることで、Optimus (Intelチップ)の干渉を最低限におさえる、といったことかなと。このあたりの状況はきゅーこん氏のサイトに詳しい情報が出ています。

 

とりあえず以上です。

試す方はくれぐれも気をつけて&自己責任で!

Enjoy!

 

  

 

秋葉館:  AKiTiO Thunder2 PCIe Box [T2PC-TIA-AKTU] |秋葉館.com Mac専門店