Renesas製コントローラー搭載のPCIe USB3.0インターフェースでKinect v2を使用したときにKinect v2が正しく認識されないことがあったので、試行錯誤してわかったその対処法をメモ。

Kinect v2が認識されない

デバイス マネージャーで確認すると、「WDF KinectSensor Interface 0」のアイコンにエラーのマークが…

Kinectのプロパティ(エラー)

WDF KinectSensor Interface 0 のプロパティを確認してみると、デバイスの状態に
「このデバイスを開始できません。(コード 10)」
「{操作の失敗}
要求した操作が失敗しました。」
というメッセージが表示されていました。

使用したPCIeボードは玄人志向のUSB3.0N4-PCIe(Renesas μPD720200)です。
また、このときのドライバはIntelのWEBサイトで配布されているRenesasの「2.1.28.1」というバージョンのもの。
Station DriversというWEBサイトで配布されているRenesasの「2.1.39.0」でも同様の現象が発生…

そこで、以下の方法でMicrosoftが提供しているRenesasコントローラー用のドライバを導入してみました。

ドライバー ソフトウェアの更新(P)... を選択

デバイス マネージャーで、「ユニバーサル シリアル バス コントローラー」の中にある「Renesas Electronics USB 3.0 Host Controller」を右クリック。
ポップアップメニューから「ドライバー ソフトウェアの更新(P)…」を選択します。

ドライバの自動検索

どのような方法でドライバー ソフトウェアを検索しますか?と訊かれるので、、「ドライバー ソフトウェアの最新版を自動検索します(S)」を選択。

ドライバの検索中

Microsoftが保管しているドライバの中から、最新のものが自動検索されます。
(ネットワークに繋いでおいてください!)

ドライバインストールの完了

検索が終わると、自動的にドライバのインストールが行われます。
「ドライバー ソフトウェアが正常に更新されました。」という表示が出ればドライバの更新完了。

再起動

再起動が促されたら、再起動します。

再起動後のデバイスの様子

再起動が終わって、デバイス マネージャーを確認してみると…
WDF KinectSensor Interface 0 が正常に認識されました!
USB3.0コントローラーの表示はMicrosoftのものに変わっています。

デバイスの正常動作中

WDF KinectSensor Interface 0 のプロパティでも、デバイスの状態が「このデバイスは正常に動作しています。」になりました。

詳しい原因は把握できていないのですが、Renesas純正ドライバの場合に問題が起こる場合があるのかも?

ちなみに、動作環境などはこのへん
Getting Started – MSDN (http://msdn.microsoft.com/en-us/library/dn791990.aspx)
とか、このへん
System Requirements – MSDN (http://msdn.microsoft.com/en-us/library/dn791991.aspx)
に詳しく書かれています。

これで、Kinect StudioやSDK Browser等でもKinect v2の動作が確認できるはず…
Enjoy!

[8/28 追記] 以下の環境では、ここに書いた方法で正しく動作しました。

CPU: AMD Phenom II X6 1090T 6コア6スレッド 3.2 – 3.6GHz
RAM: DDR3 6GB
OS: Windows 8.1 Enterprise x64
GPU: NVIDIA GeForce GT520
USB: Renesas製コントローラ USB3.0 (PCI Express x1)

しかし、同様の対処をしても環境によっては動作しない場合がありました。
チップセットの制約等で十分な帯域が確保できない場合には
「USBコントローラーの帯域の超過」、「コントローラーはこのデバイスに必要なリソースを提供できません。」というメッセージが表示され、
正しく認識されるものの、使用はできないようです。

リソースの超過

実際に、

CPU: Intel Core i7 860
チップセット: Intel P55 Express Chipset
RAM: DDR3 16GB
GPU: NVIDIA GeForce GT640
USB: Renesas製コントローラ USB3.0 (PCI Express x1)

のマシンで試しましたが、認識はただしく行われるものの
使用することができませんでした。
Kinect StudioやSDK Browserのサンプル等のアプリケーションを起動しても何も表示されなかったりします。

これは、おそらくチップセットが提供するPCI Expressポートの制約によるものだと思われます。

Kinect v2 はUSB3.0で5Gb/sの帯域を確保できていないと動作しないようですが、
Intelの5シリーズチップセットのデータシートのPCI Express Root Ports欄には
Each Root Port supports 2.5 Gb/s bandwidth
と書いてあり、USB3.0のボードを取り付けても実質的にはUSB3.0の規格上の速度で通信できないようなのです…