# How to calculate the max transfers per frame and the remaining bytes in USB protocol?

Could someone explain the attached table and how the values are calculated? (the table is taken from the official usb 2.0 specification page 42).

What I could understand is just the relation between the bytes/frame and bytes/second (as in Full Speed the second consists of 1000 frames). But how is the max transfers, the bytes remaining, frame bandwidth per transfer, and the bytes/frame calculated? But how is the max transfers,

The max transfers is the number of complete packets of the chosen size that can be sent in a frame.

the bytes remaining,

Once you've sent max transfers * frame size, this is the number of bytes that are left over in the frame.

and the bytes/frame calculated?

Bytes/frame are the number of payload bytes sent in the frame, or the number of bytes/transfer * max transfers.

So, if you send one byte, there's 46 bytes in the packet that carries that byte. The max transfers is the number of packets in a frame, which is 1495 bytes, or 1495/46 = 32.5. We're not counting the half-packet, so that becomes 32, which takes up 32*46=1472 bytes. 23 of the 1495 are unused, so that's bytes remaining. Your bytes/frame, since each transfer passed only one byte, is 32*1=32.

• Thank you for the answer! I almost got everything, just few questions yet. How did you get this 1495? Shouldn't it be Max Speed (12 MBit) / 8 (to get it in byte) / 1000 to get per frame, which gives 1500 byte/frame? Could you also show where did frame bandwidth per transfer come from? Aug 23, 2019 at 20:14
• I got 1495 from calculations from the table...I'm not sure where the other 5 bytes went, maybe into a frame sync. The frame bandwidth per transfer is the percentage of the 1495 bytes are used for each packet. Aug 23, 2019 at 20:34
• Thanks a lot! I guess the 5 bytes are disappeared because of the rounding of the fractions according to your calculations. Aug 23, 2019 at 20:38