USBハードドライブがあります。 xhci_hcdバスに接続すると通常それはリストされていませんlsusb
。これにより、udevadm monitor --kernel --property
デバイスが接続されていることを示す表示は表示されません。
結合または単独でデバイスを表示するために最終的に成功する2つのことがあります。
- カバーを閉じます(したがってシステムを一時停止状態にします)。
- USBバスからUSBドライバをバインド解除し、再バインドします。
_
echo -n 0000:19:00.0 > /sys/bus/pci/drivers/xhci_hcd/unbind
echo -n 0000:19:00.0 > /sys/bus/pci/drivers/xhci_hcd/bind
検出がどのように機能するか、つまりどのレイヤーなのか、つまりここでは「失敗」なのか、なぜ?
私が知っている限り:
デバイスとホスト間の通信の最初のステップは、デバイスが電気ループに抵抗器を挿入することです。これにより、ホスト(またはハブ?)がデバイスの物理的(電気的)存在を認識します。そうですか?ハードウェア(ハブ/バス?)はこの電気イベントをバスドライバに信号を送信しますか?
udevadm monitor --kernel --property
このアクティビティを表示する必要がありますか?そうでない場合は、ホスト側でこのイベントを表示できる他のものがありますか?次はどうなりますか?これはで表示されるべきですか
udevadm
?USBスタックの「トランスポート層」が引き継がれ、ホストはベンダーと製品IDを要求するUSB制御パケットをデバイスに送信します。この仕事を担当する人は誰ですか?これはすでにこれを行うバスドライバソフトウェアですか、それともまだ「ハードウェア」(ソフトウェアなど)にありますか?存在するラップトップUSBハブ/バス)?これはで表示されるべきですか
udevadm
?ホストはデバイスの応答を受信し、デバイスにどのVID / PIDがあるかを知っています。これは、必ず
lsusb
現在のデバイスが表示されることを意味しますか?
インターネットを検索しましたが、「USBでデバイス(機能)検出が機能する方法」の文書が見つかりませんでした。まだ670ページを超えるUSB仕様を読んでいません。誰でも教えてもらえますか?
- 上記の手順のうち、ハードウェア(ハブと内部ソフトウェア)によって実行される手順は何ですか?
- ドライバはいつ通知(イベント、割り込み、ポーリングなど)を受け取りますか?
- (USBバスドライバにデバッグステートメントを追加せずに)プロセスの初期に何が起こっているのかを知らせる(より良いですか?より専門的な?)ツールはありますか?
はじめに:
- バスは
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
- デバイスは
Bus 002 Device 002: ID 1e68:001b TrekStor GmbH & Co. KG DataStation maxi g.u
ドライブです。 - Debian カーネル 3.16.0-4-amd64