I had picked up a beagleboard a few weeks ago and had then looked into the USB sniffer project that had been created a while back. (https://gitorious.org/beagleboard-usbsniffer/)

I understand that the project is based off a proxy driver in which is registered as both a USB device/gadget driver and forwards the data between the both whilst logging the data.

The question I have is as to how this is done without actually interferring the data being sent through the two interfaces (the beagleboard is invisble between the two interfaces).


  • \$\begingroup\$ As you describe it, it just copies the data in both directions, quite probably a packet at a time. That would add a small latency but not alter the data. \$\endgroup\$
    – pjc50
    Aug 7, 2014 at 15:40

1 Answer 1


It's a little more complicated than simply forwarding the raw USB packets between the two interfaces, and it isn't completely transparent to the USB host.

The BeagleBoard actually needs to behave as a one-port USB hub, which is how the USB host views it. Then, when you plug the USB device into the BeagleBoard, the host can enumerate it through the BeagleBoard as though you had plugged it into any other ordinary hub. But now the software on the BeagleBoard has the opportunity to copy and/or record the USB packets as they flow through this "virtual hub".

So, it isn't exactly like plugging the device directly into the host, but it gives you enough visibility to debug 99.9% of USB issues. But there are some corner cases, usually relating to the enumeration process itself, that this can't help you with. For those, you need a true USB analyzer.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.