주변기기 또는 OTG 모드에서 USB 트래픽을 추적하는 방법은 무엇입니까?

주변기기 또는 OTG 모드에서 USB 트래픽을 추적하는 방법은 무엇입니까?

dwc2이 모듈과 함께 USB OTG를 사용하기 위해 Raspberry Pi Zero에 Raspbian Jessie를 설정했습니다 . 지금 내가 하고 싶은 일은주변 장치 측에서 들어오는 USB 트래픽을 스니핑합니다.. 커널 모듈을 찾아서 테스트했지만 usbmon(분명히 제가 아는 한) 작동하지 않는 것 같습니다. 아무 것도 기록되지 않습니다.

테스트 목적으로 호스트 측(Linux의 다른 컴퓨터)에서 정확히 동일한 작업을 시도했지만 usbmon불행히도 그것은 나에게 필요한 것이 아닙니다.

결론: 이것이 가능합니까? 그렇다면 어떻게? 이것을 사용할 수 있습니까 usbmon, 아니면 다른 작업(예: 특정 옵션을 사용하여 커널을 다시 컴파일하는 등)을 수행해야 합니까?

답변1

도구가 USBMon아직 완성되지 않았습니다.

동일한 이름을 가진 최신 커널 모듈이 있습니다.

커널 모듈 usbmon을 로드할 수 있는지 확인 modprobe usbmon하고( ) 다음을 사용하여 USB 트래픽을 스니핑할 수 있습니다.

당신은 또한 볼 수 있습니다http://discussions.flightaware.com/ads-b-flight-tracking-f21/monitoring-usb-utilization-on-raspberry-pi-t20691.html

답변2

편리한 RPi가 없기 때문에 이것이 효과가 있는지 확실하게 말할 수는 없지만 다음 명령을 성공적으로 사용하여 원격 시스템에서 USB 트래픽을 모니터링 tcpdump했습니다 .wireshark

$ ssh user@remotehost 'tcpdump -U -i usbmon2 -w -' | wireshark -k -i -

여기서는 연결된 USB 장치의 버스 ID usbmon2입니다 . 2로 이를 얻을 수 있습니다 lsusb.

답변3

많은 조사 후에는 컨트롤러가 상태에 있을 때 USB 트래픽을 추적하는 것이 불가능해 보입니다(만약 그렇다면 어디에서도 정보를 찾을 수 없습니다).장비(또는 주변기기) 모드. 컨트롤러가 다음과 같이 구성된 경우에만주인.

추적이 생성되지 않기 때문에 usbmon불행히도 처음부터 해당 추적이 필요하기 때문에 어떤 도구(Wireshark, dumpcap...)도 사용할 수 없습니다.

그래서 지금 해야 할 일은 libcomposite커널 모듈을 수정하여 디버깅 정보를 추가하거나 심지어 스니핑용으로 설계된 특정 모듈을 작성하는 것입니다(그러나 이는 이 문제에 대한 현재 지식을 훨씬 뛰어넘습니다).

관련 정보