概要
USBデバイスをパソコンに接続すると、1. Unknown Deviceになったり、2. xHCIホストコントローラに接続したSuperSpeedデバイスがHigh-Speedデバイスとして認識されてしまう、といった問題が発生することがあります。一体何が起きていて問題になっているのでしょうか? 今回は、USBの相性問題と呼ばれる現象について考えられる原因を調査しました。
USBデバイスとPCの相性問題
PCは各メーカーのUSBホストコントローラICを搭載しています。各社のICは独特の特性を持ち、接続相手の機器との間で相性問題が発生することがあります。また、ホストコントローラICが同一でも、それが搭載されている基板設計・製造が各社で違うので相性問題が発生する可能性もあります。
USBデバイスとMicrosoft OSの相性問題
Windows7以前のUSB機器は、Windows10への対応に不備がある場合に相性問題が発生する場合があります。このようなケースでは、USBドライバーを最新版に更新することで解消される場合もあります。USB機器メーカーが提供しているUSBドライバーを入手し、更新してみると良いでしょう。
USBのセレクティブサスペンド(省電力機能)による相性問題
USB機器の省電力機能によって、PC管理下にあるUSB機器のスリープやスタンバイが実行されると接続が解除されます。その後、PCがPower OnするとUSB機器が正常にリブートできないため、接続に失敗します。USBのセレクティブサスペンドを無効にすることで解消できる場合があります。
SuperSpeedでの接続が不成功になる問題
1. ホストがデバイス側のポーリングLFPSに対して応答せずCompliance Modeに入ってしまいます。
(参考by LeCroy Analyzer Solution)
2. ホスト側の終端抵抗がSSの送受信ラインに見付からない状態。(Termination OFF状態)
上記のような問題が発生すると正常な処理が完了せずにタイムアウトとなりホストとデバイス間のLink Trainingが実行されません。その場合にはUnknown Deviceと認識されてしまったり、SuperSpeedのデバイスにもかかわらずHigh-Speed(USB2.0)で接続されてしまう可能性があります。前者のケースでは接続したUSB機器が使用できません。後者のケースではUSB接続はされますが通信速度が遅いという問題が発生します。
まとめ
USB機器の相性問題に関する原因は多種多様且つ複雑です。各メーカーのホストコントローラICの相性問題、Microsoft OSのバージョンによる相性問題、省電力機能の設定など、色々な可能性があります。また、SuperSpeedデバイスに対して、初期のLink Trainingで問題が発生すると、High-Speed(USB2.0)で接続されてしまい通信パフォーマンスが低下します。相性問題が発生した場合、専用のUSBアナライザを使用してUSB通信のトレースを取得し、まずホストかデバイスかどちら側に問題があるか切り分けすることをお勧めします。
本記事に関するお問い合わせ