HDL LOGO

TN_152 USB3.0 Compatibility Issues Explained(FTDI社)
USB3.0ポートにおけるFTDIドライバについて

2014/08/20-
 
 このページは、FTDI社の、テクニカルノートTN_152 USB3.0 Compatibility Issues Explained」の弊社なりの訳です。
間違いがあるかもしれません。必ず原文をお確かめの上ご参考になさってください。
2014/08/19 : 公開 (原書バージョンは1.0です)

1. Introduction

 USB3.0はユニバーサルシリアルバスインタフェースの最新のスーパースピード規格です。既存のデバイスとの互換性を保ちつつ、より高速なデータ転送を可能とします。
しかしながら、USB3.0の登場はFTDI製品との互換性にいくつかの問題となりました。本書で解説してみたいと思います。

2. Drivers

 PC上で稼働する全てのハードウェアは、アプリケーションとの通信のためソフトウェアドライバのサポートを必要とします。USBには異なるクラスをサポートするUSBホストコントローラドライバが必要です。通常、これらはOSにより提供されます。USBホストと通信する周辺機器(IC)に対しては、その周辺機器(IC)のベンダー(たとえばFTDI)がドライバを提供します。
WindowsのドライバはWindows2000から全てのOSで動作し、全てのUSBホストコントローラをサポートします。
2.1 Known Issues (Pre Windows 8) -既知の問題 (Windows 8以前のOS)
 USB3.0の誕生はWindows8より先であり、Microsoftは8以前のOSに対し、USBホストコントローラをサポートしていませんでした。
そのためシリコンベンダ各社が独自でドライバを作成しました。これが、USB1.1と2.0で保たれていた互換性とは異なるレジストリの構造を許してしまいました。

Windows8以前のOSでは、下記のようなレジストリ構造でした
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\ROOT_HUB
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\ROOT_HUB20
このシステムに準ずると、USB3.0では以下のようになるべきです
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\ROOT_HUB30
しかしながら、下記のような異なる例が見受けられます
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IUSB3\ROOT_HUB30
2.1.1 Installation (ドライバのインストール)
 USB3.0ポートに接続した際、FTDIデバイスドライバのインストールが始まらないという報告があります。
これは、いくつかのディスクリプタが正常に返されない、もしくは異なる場所に格納されていることにすこし関係します。
若干の回避策があります。
I. もしPCにUSB2.0ポートがあるならば先に2.0ポートに接続しデバイスドライバのインストールを行います。その後USB3.0ポートに接続し直します。
II. この場合、デバイスがシリアルナンバーを保有している必要があります。
2.1.2 Location ID Retuned As 0 (ロケーションIDがゼロとなる)
 Location IDはFTDIのフォーマットでは完全には定義されていない部分です。Location IDはインデックス、シリアルナンバー、またはプロダクトディスクリプションによるポート認識、オープンを補助する為に追加されました。
 USB2.0ポートに接続されている際、Location情報は接続ポートの基本情報より与えられます。値は具体的なレジストリより生成されます。ここで、サードパーティのレジストリ構造がMicrosoftのgeneric driverの構造と異なっている場合、正常に算出されません。
 この場合の回避策はありません。インデックス、シリアルナンバー、またはプロダクトディスクリプションにより、ポートをリストアップ、オープンするしかありません。
2.1.3 Device names
 参考までに、Windowsマシンのホストポートは以下のようなフォーマットになります。(#には数字が入ります)
\device\usbpdo-#
FTDIによりテストされたUSB3.0カードのひとつは、以下のようなものでした。 (#には数字が入ります)
\device\device#
このような食い違いの存在が、予想できない挙動の原因であるには納得がいきます。

2.2 Windows 8

 Windows8となり、MicrosoftはOSの一部としてUSB3.0のドライバを提供しています。このことにより、サードパーティのホストドライバによる問題は解消しています。
結論として、Microsoftのドライバを使用することにより先に述べた問題も解決します。FTDIのドライバに対して特別な修正は不要です。

3. Conclusion (まとめ)

 全てのホストコントローラをサポートするようにFTDIドライバを修正することは、理論上は可能です。しかし対応すべき別のホストデバイスが、今後新たに発生することは明らかです。
よって、全てのUSBホストベンダーに対応したデバイスドライバを用意することはモデルの保守とはなり得ませんし、USBのプラグランドプレイの精神に反することとなります。

 この問題は、だいたいはWindows7(またはそれより古いOS)に限定されていること、またWindows8(+Microsoftのデバイスドライバ)により問題が解消しています。
よって、これはUSBホストベンダによる問題であり、USBデバイスの製造者が解決する問題ではない、というのがFTDIとしての見解です。

みなさまの参考になれば幸いです。
間違いなど見つけられましたらぜひご指摘下さい。
ひとことコメント 
メールでのご質問はこちらへどうぞ
FTDIシリーズトップへ
 USBシリーズ専用サイトへ