2017/10/23

古いPCにOculus Riftを繋ごうとして苦労した話


サマーセールに続いて値下げになったOculus Riftさん。
古めのPCへの接続と安定運用への試行錯誤をそっと置いておく記事です。



接続しているPCはかなり前にBTOで買ったi7 870というかなり古めのPCです。
マザボもこれまた古めのH55系を使っています。
最低動作環境はi3 6100ですのでOculus HOMEだと「スペック足りてないよ」という警告が出ます。
ただPASSMARK的にはスコアはほぼ同じななんですよね。なので言うほど不具合無く使えています。
…ただi7とi3が同速度というあたりで世代の差を感じます。


もっと新しいPCもあるのですが、そちらは本来仕事PCで絶讃進行中の案件を複数抱えています。
今回はPCI-expressカードを増設したりします。折角の安定環境を崩したくないので古い方のPCで構築することにしました。

ちなみにこのPCは元々ゲーム用に使っていたので、CPUはアレですが、GPUはGeforce GTXの1060とギリVR Readyのカードを乗せて電源周りも換装済みです。

USBの増設


Oculus Rift+touchにはHMDとSensor2つのためにUSB3.0のポートが3つ必要になります。
H55のマザーボードUSB3.0なんか付いていないので増設することになります。
で買ったのはOculus公式でオススメされているInateckのKTU3FR-4Pです。
聞いたこと無いところだったので調べてみたらドイツのメーカーだそうです。
型番は違いますが、ボード上刻印は「KTU3FR-4P」ですので同一かなと。

Inateck 4ポートUSB3.0増設ボード UASP対応 補助電源需要 PCIex1 Rev.2用インターフェースカード KT4001
これをPCI-Expressに差し、補助電源ケーブルを手近に余っていたSATA電源に刺しました。
PCを起動して、認識したのを確認。windows10だとドライバレスで動くらしいので、そのままにしておきました。

センサーの設置


付属のセンサーは卓上におけるスタンドが付属していますが、机の上に置き場がないのとルームスケールを後で試したいので、部屋の隅に取り付けることにしました。

平安伸銅工業 強力太タイプの突っ張り棒 バネ入り ホワイト 耐荷重30~8kg 取付寸法170~280cm RTW-170

センサーはカメラ用の1/4インチネジが使えるので、固定具にはこれを買いました。
ひねりも無く突っ張り棒のオススメに載っていたものです。
MyArmor カメラホルダー

突っ張り棒を部屋の隅に立てます。
縦に突っ張るだけなので一人でも楽に出来ます。
センサーのスタンドを外して、クランプ式の固定具に装着します。
後は突っ張り棒に挟み込んで固定しておしまいです。

ケーブル根元を引っ張りそうで怖かったので、とりあえずそこらにあったクリップを挟んで回避。
後で見た目が良いのに置き換える予定。
これをとりあえずOculus推奨の左右2つの配置で設置します。
→今は対角に配置しています。

接続~Poor tracking Quality


センサーのUSBケーブルを繋いで、電源を入れてOculusのソフトウェアをインストール。
機器のセットアップへと進みます。

touchのペアリングが無事終了し、センサー類のチェックへと進みます。
ここで現れたのが「Poor Tracking Quality」というエラー。
要するに「トラッキング品質が低いよ」という警告です。

偶に品質チェックを通過しても、ゲーム中に切断されたりと散々でした。

カードとの相性はお墨付きのはず。
電力が足りないのか、でも補助電源付いてるしなぁ。
と調べてみたら、どうやらUSB3.0未対応マザボの場合は、エンドポイント不足ということもあるらしい。さらにはH55だとPCI-Expressは5Gbpsでないという話も。

解決編


さてここからがこの記事の本題です。
これを一応解決したことをメモ代わりに置いておきます。
ちなみにどれが効果あって無かったのか、精査していないのでとりあえずやったことを全部書きます。

・余計なUSBデバイスを外す
エンドポイント不足に効果があるかは分かりませんが、とりあえず使用頻度が低いデバイスを外しました。
エンドポイントというのはUSBの通信に使うバッファのことです。
凄い乱暴に言えばソシャゲなどの装備やデッキ枠にある「コスト」みたいなものです。
このエンドポイントを消費することで、PCはパーツを認識していきます。

で、このPCはUSBオーディオ系のデバイスやヘッドセットばかり4つも付いていて、さすがに多過ぎだろうと。
他にも使わないけど余っていたので繋いでいたウェブカメラやWacomの板タブなども外しました。
最終的に残っていた外部デバイスは以下の通りです。
  • Bluetoothドングル x1
  • G300s(ゲーミングマウス) x1
  • どっかのメカニカルキーボード PS2接続
  • G633(USBオーディオデバイス)
  • UR22((USBオーディオデバイス)

・メーカードライバを入れた
このUSBカードはWin10ではドライバーレスでも動作しますが、win10用のドライバもメーカーから出ています。
「Driver for Windows Ver-3.8.33709.0」というのがそれです。
「入れない方が安定した」「入れた方が安定した」と賛否あるみたいですが、自分のところでは後者でした。また後述のOculus Tray tooolsの為にも入れています。

・セレクティブサスペンドUSBを無効にした
良く出てくる対処法その1。
セレクティブサスペンドというのはUSBの省電力機構です。

・デバイスマネージャーからUSB3.0カード周りの「電力の節約のために、コンピューターでこのデバイスの電源をオフにできるようにする」をオフにした。
良く出てくる対処法その2。

・USBケーブルの引き回しを変えた
いきなりアナログな話になってしまいました。
最初は突っ張り棒に沿わせていましたが、これを少し離すように引き回したら、各々で品質チェックを数回繰り返すというテストで、結果が変わったのだからよく分からないものです。
延長入れてUSB3.0の規格上で許容される長さギリギリ近いので電気的な何かがあるのでしょうか。

・センサーの1つはUSB2.0端子へ
最終的には対角配置にしたのですが、うち後ろ側は2.0へ繋ぎました。
特に今のところ遅延や不具合は感じていません。
ちなみに7畳という部屋の対角位置にはケーブルの長さが足りなかったので延長ケーブルを使っています。一応USB3.0のケーブルですが、接続先は2.0端子です。
延長ケーブルは近くの電気店に駆け込んで買ったこれです。

エレコム USBケーブル USB3.0 A-A延長タイプ スタンダード 2m ブラック USB3-E20BK

Oculus Tray Toolsを使う
有志が作ったOculus RIFTのHackツール
このツールにはFlecso FL1100チップ(KTU3FR-4Pに使われてる)に関するTweak機能があり、上に書いた電源設定を含めた動作改善を計る機能がついています。
これでサクッとオンにしました。

他にも「Spoof CPU」という機能があり、これをオンにすると最低要求仕様である「i3 6100」より古いシステムを使っているときに表示される警告を非表示に出来たりもします。

これでとりあえず安定して使えています。

Windows Game Modeに注意


Windows10のCreater Updateあたりからゲームモードというものが追加されました。
これは登録したアプリ(ゲーム)は、優先的にリソースを使いゲームの動作を快適にする、という主旨の機能です。
設定はゲーム起動中にWin+Gキーを押してゲームバーを表示し、ギヤマークの中から設定出来ます。
これを使うとフレームレートの向上が見込めたりするのですが、Oculus Riftを使う場合はオンにしないことをオススメします。
というのも裏で動くセンサーを処理するOVRのサービスプロセスの動作を抑制してしまうため、余計に動きがガクガクになります。
具体的には、アプリがアクティブ中は妙にガクガクしてフレームレートが出ず、非アクティブにすると逆にスムーズになります。
同様のツールはサードパーティーでもありますので、同様のツールをお使いで同じような現象が出る場合は、設定の検討をしてみるといいかもしれません。