[tcpdump-workers] Link-Layer Header Type request: USB 2.0

Tomasz Moń desowin at gmail.com
Mon Jul 22 00:22:52 EDT 2019

On Sun, Jul 21, 2019 at 10:47 PM Guy Harris <gharris at sonic.net> wrote:
> It looks as if USB 3.1's packets are different from USB 2.0's packets, so this would be 2.0-specific.

USB 3 operates on different hardware signals. USB 3 hubs do contain
USB 3 and USB 2.0 hubs inside them.
The USB 2.0 data is sent on the D+/D- differential pair, while the USB
3 data uses dedicated Superspeed
differential pairs for RX and TX.

Valid USB 1.0 and 1.1 packets can be dissected as USB 2.0. However,
this is not always true the other way round.
For example USB 1.1 device won't understand SPLIT packet. Fortunately
compliant USB 2.0 Host won't ever send SPLIT
to the USB 1.1 device as this PID can only be sent on High Speed link
(which was introduced in USB 2.0).

USB 1.0 and 1.1, did feature Low- and Full- speed transmission speeds.
USB 2.0 features Low-, Full- and High- speed transmission speeds.

As the proposed Link-Layer Header Type operates on packet level, it
has no information about the speed the packet was transmitted at.

> > The new Link-Layer Header Type is supposed to contain the USB 2.0
> > packets. That is, anything that appears on the bus between the Start-
> > and End-of-Packet delimiters. The packet format is described in
> > Chapter 8 Protocol Layer of Universal Serial Bus Specification
> > Revision 2.0.
> So that's the PID as the first byte and continuing from there?

Yes. PID is 4 bits long. The first byte contains PID and completed PID.

More information about the tcpdump-workers mailing list