web-dev-qa-db-ja.com

USBデバイスのリセットとは何ですか?

2台のWD Elements外部USBドライブで構築されたこの新しいソフトウェアRAID-1を持っています。Linuxが次のメッセージをかなり繰り返していることがわかります。

...
[302148.036912] usb 1-3.1: reset high-speed USB device number 19 using ehci_hcd
[302153.052029] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302186.031481] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302217.050210] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302281.043543] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302312.090158] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302351.076851] usb 1-3.1: reset high-speed USB device number 19 using ehci_hcd
...

それで、それは何と言いますか?これは正常ですか?これは私が修正しようとするべき問題ですか?

更新
実際、これらのメッセージは、私が思っていたドライブに対するものではありません。他のUSBドライブもUSBハブ経由でこのコンピューターに接続しています。とにかく、私の質問は基本的にこのメッセージが平易な英語で何を意味するのですか?

21
ILIV

私が試してみましょう。

文字通り、メッセージにはLinux USBスタックが特定のデバイス(デバイス#19と#20、それらが何であれ)に「USB_RESET」が発行されたと書かれています。エラーは10〜30秒に1回発生するようです。 USBリセットは接続されたデバイスを「デフォルト状態」に強制するため、リセット後、ログには新しい列挙メッセージが含まれているはずです。ログの冗長性が非常に低下しているようです。

操作の途中でUSBデバイスをリセットすることは、かなり劇的な状況です。コントローラは、「トランザクションエラー」が発生した場合、この「ポート」リセットを使用します。トランザクションエラーは、リンクがUSBトランザクションのすべての必要なフェーズを完了していないか、CRCエラーがある場合に発生します。通常のUSBでは、EHCIコントローラーは失敗したトランザクションを自動的に再試行し(通常、最大3回)、XACT_ERROR割り込みを設定します。統計的には、エラー理論により、リンクが3回続けて適切に応答しない場合は、特定のUSBセグメントに何らかの問題があり、そのほとんどが電気的です。したがって、トランザクションエラーは致命的と見なされ、ソフトウェアはリンクの回復を試みます。ツリー4がリンクを回復しようとして失敗した場合、ホストはこのポートを停止していると見なし、終了します。

しかしLinuxでは、理論上の3回の試行では不十分であると誰かが判断し、Linuxソフトウェアはさらに32(32)回の試行を実行し、合計で96(!!!)回になります。ハードウェアリンクが電気的に限界に達している場合、96回の試行が99.99%の確率で成功する可能性があります。 Linuxソフトウェアの教祖は、これが疑わしいデバイス/ケーブルの操作性の向上に役立つと主張しています。本質的に、この手法はこの特定のUSB接続に関する深刻な問題を隠し、長期的にはユーザーを助けません。

問題は、ドライブへの限界電圧(VBUS)供給、VBUSグリッチ、または信号線の信号劣化にある可能性があります。最初に非常に短い高品質の認定ケーブルを試し、エラーの統計が変化するかどうかを確認します。

26
Ale..chenski

このエラーについては、記事 Linux:ehci_hcdエラーとソリューションを使用して高速USBデバイスをリセットする で説明されています。

このエラーは、USB 2.0がシステムで機能しないか、USB 1.1の速度でしか機能しない可能性があることを示しています。この問題を解決するには:

  1. ハードウェアの交換:ほとんどの場合、マザーボードを交換する必要があります。
  2. Ehci_hcdドライバーを削除する
  3. Ehci_hcdドライブUSB 2.0インターフェイスを無効にして、USB 1.1として使用します。つまり、ehci_hcdを無効にします。

マザーボードを交換したくない場合は、ehci_hcdドライバーを削除するために、ファイル/etc/modprobe.d/blacklist.confを編集して次の行を追加します。

blacklist ehci_hcd

最後に、mkinitrdスクリプトを使用して、ehci_hcdなしでinitrdルートファイルシステムとして機能できるディレクトリ構造を構築します。

# mkinitrd -o /boot/initrd.$(uname -r).img $(uname -r)

テストとして再起動します。

/ var/log/messagesファイルに「kernel:usb 1-2.2:reset high speed USB device using ehci_hcd and address 6」というエラーが表示されるのはなぜですか?

5
harrymc