Beagleboard USB-Paket-Sniffer

Ich hatte mir vor ein paar Wochen ein Beagleboard zugelegt und mir dann das vor einiger Zeit erstellte USB-Sniffer-Projekt angeschaut. ( https://gitorious.org/beagleboard-usbsniffer/ )

Ich verstehe, dass das Projekt auf einem Proxy-Treiber basiert, der sowohl als USB-Geräte-/Gadget-Treiber registriert ist und die Daten zwischen beiden weiterleitet, während die Daten protokolliert werden.

Die Frage, die ich habe, ist, wie dies getan wird, ohne die Daten, die über die beiden Schnittstellen gesendet werden, tatsächlich zu stören (das Beagleboard ist zwischen den beiden Schnittstellen unsichtbar).

Beifall

Wie Sie es beschreiben, kopiert es die Daten einfach in beide Richtungen, höchstwahrscheinlich jeweils ein Paket. Das würde eine kleine Latenz hinzufügen, aber die Daten nicht verändern.

Antworten (1)

Es ist etwas komplizierter, als die rohen USB-Pakete einfach zwischen den beiden Schnittstellen weiterzuleiten, und es ist für den USB-Host nicht vollständig transparent.

Das BeagleBoard muss sich tatsächlich wie ein Ein-Port-USB-Hub verhalten, wie es der USB-Host sieht. Wenn Sie dann das USB-Gerät an das BeagleBoard anschließen, kann der Host es über das BeagleBoard auflisten, als ob Sie es an einen anderen gewöhnlichen Hub angeschlossen hätten. Aber jetzt hat die Software auf dem BeagleBoard die Möglichkeit, die USB-Pakete zu kopieren und/oder aufzuzeichnen, während sie durch diesen "virtuellen Hub" fließen.

Es ist also nicht genau so, als würde man das Gerät direkt an den Host anschließen, aber es gibt Ihnen genug Transparenz, um 99,9 % der USB-Probleme zu debuggen. Aber es gibt einige Eckfälle, die sich normalerweise auf den Aufzählungsprozess selbst beziehen, bei denen Ihnen dies nicht helfen kann. Dafür benötigen Sie einen echten USB-Analysator.