USB 하드 드라이브가 있습니다. xhci_hcd 버스에 연결하면대개그것은 나열되지 않습니다 lsusb
. 이렇게 하면 udevadm monitor --kernel --property
장치가 연결되어 있다는 표시가 나타나지 않습니다.
결합되거나 단독으로 장치를 표시하는 데 궁극적으로 성공하는 두 가지 사항이 있습니다.
- 덮개를 닫습니다(따라서 시스템을 일시 중지 상태로 전환).
- 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
드라이브 입니다. - 데비안 커널 3.16.0-4-amd64