How many packet to transfer 512 bytes in a bulk IN EP from devicewith MPS = 512? - Embedded

This is a discussion on How many packet to transfer 512 bytes in a bulk IN EP from devicewith MPS = 512? - Embedded ; Hi, Could anybody answer my question: How many packet to transfer 512 bytes in a bulk IN EP from device with MPS = 512? I thought it requires 2 packets, one 512 and the other zero-length packets, doesn't it? Is ...

+ Reply to Thread
Results 1 to 4 of 4

Thread: How many packet to transfer 512 bytes in a bulk IN EP from devicewith MPS = 512?

  1. How many packet to transfer 512 bytes in a bulk IN EP from devicewith MPS = 512?

    Hi,

    Could anybody answer my question: How many packet to transfer 512
    bytes in a bulk IN EP from device with MPS = 512?

    I thought it requires 2 packets, one 512 and the other zero-length
    packets, doesn't it?

    Is this written in USB 2.0 specification? I tried to search related
    topic in spec but couldn't find it.

    Thanks in advance.


    Cuthbert

  2. Re: How many packet to transfer 512 bytes in a bulk IN EP from devicewith MPS = 512?

    On Mar 25, 4:29 pm, Cuthbert wrote:
    > Hi,
    >
    > Could anybody answer my question: How many packet to transfer 512
    > bytes in a bulk IN EP from device with MPS = 512?
    >
    > I thought it requires 2 packets, one 512 and the other zero-length
    > packets, doesn't it?
    >
    > Is this written in USB 2.0 specification? I tried to search related
    > topic in spec but couldn't find it.
    >
    > Thanks in advance.
    >
    > Cuthbert


    Sounds right. As long as the enumeration succeeds in setting up the
    EPs MPS. To send a 512 bytes of data it will take 2 packets. A zero
    length packet or a less than max size packet says to the other end
    that this is the completion of the transaction.
    Its at USB 2.0 doc "Ch 5.8.3 Bulk Transfer Packet Size Constraints".

  3. Re: How many packet to transfer 512 bytes in a bulk IN EP from devicewith MPS = 512?

    On Mar 26, 7:00 am, Janaka wrote:
    > On Mar 25, 4:29 pm, Cuthbert wrote:
    >
    > > Hi,

    >
    > > Could anybody answer my question: How many packet to transfer 512
    > > bytes in a bulk IN EP from device with MPS = 512?

    >
    > > I thought it requires 2 packets, one 512 and the other zero-length
    > > packets, doesn't it?

    >
    > > Is this written in USB 2.0 specification? I tried to search related
    > > topic in spec but couldn't find it.

    >
    > > Thanks in advance.

    >
    > > Cuthbert

    >
    > Sounds right. As long as the enumeration succeeds in setting up the
    > EPs MPS. To send a 512 bytes of data it will take 2 packets. A zero
    > length packet or a less than max size packet says to the other end
    > that this is the completion of the transaction.
    > Its at USB 2.0 doc "Ch 5.8.3 Bulk Transfer Packet Size Constraints".



    Thanks for the reply, Janaka.

    I got some clarification from USB-IF fourm.

    Roger Fiander said:

    "It all depends on how the transfer is set up.
    If the transfer is of known size (e.g. if the length has been
    previously communicated by a class-specific command either via ep.0 or
    a bulk endpoint) then the ZLP is not mandated.
    On the other hand, if a transfer has been set up speculatively, then
    the sending end can cause an early termination by sending a short
    packet. "

    But, I also found another weird thing on Linux USB host driver:
    I have tried to send a 512-byte data from Linux USB Host, but it
    wouldn't send out extract 512-bytes data via bulk OUT EPs. Instead, it
    sent out 511 bytes when I requested to send 511 bytes or 513 bytes,
    512 transmitted data with one byte null data "0x00," when I requested
    to send 512 bytes. Does anybody know why?

    Thanks,
    Cuthbert

  4. Re: How many packet to transfer 512 bytes in a bulk IN EP from devicewith MPS = 512?

    On Mar 26, 2:09 pm, Cuthbert wrote:
    > On Mar 26, 7:00 am, Janaka wrote:
    >
    >
    >
    > > On Mar 25, 4:29 pm, Cuthbert wrote:

    >
    > > > Hi,

    >
    > > > Could anybody answer my question: How many packet to transfer 512
    > > > bytes in a bulk IN EP from device with MPS = 512?

    >
    > > > I thought it requires 2 packets, one 512 and the other zero-length
    > > > packets, doesn't it?

    >
    > > > Is this written in USB 2.0 specification? I tried to search related
    > > > topic in spec but couldn't find it.

    >
    > > > Thanks in advance.

    >
    > > > Cuthbert

    >
    > > Sounds right. As long as the enumeration succeeds in setting up the
    > > EPs MPS. To send a 512 bytes of data it will take 2 packets. A zero
    > > length packet or a less than max size packet says to the other end
    > > that this is the completion of the transaction.
    > > Its at USB 2.0 doc "Ch 5.8.3 Bulk Transfer Packet Size Constraints".

    >
    > Thanks for the reply, Janaka.
    >
    > I got some clarification from USB-IF fourm.
    >
    > Roger Fiander said:
    >
    > "It all depends on how the transfer is set up.
    > If the transfer is of known size (e.g. if the length has been
    > previously communicated by a class-specific command either via ep.0 or
    > a bulk endpoint) then the ZLP is not mandated.
    > On the other hand, if a transfer has been set up speculatively, then
    > the sending end can cause an early termination by sending a short
    > packet. "
    >
    > But, I also found another weird thing on Linux USB host driver:
    > I have tried to send a 512-byte data from Linux USB Host, but it
    > wouldn't send out extract 512-bytes data via bulk OUT EPs. Instead, it
    > sent out 511 bytes when I requested to send 511 bytes or 513 bytes,
    > 512 transmitted data with one byte null data "0x00," when I requested
    > to send 512 bytes. Does anybody know why?
    >
    > Thanks,
    > Cuthbert


    As Roger says above, it probably depends on the class of device you
    have enumerated (is it CDC, HID, MSD .....???) and what configuration/
    capabilities the USB client enumerates itself with. My guess is that
    your client enumerates with a bulk OUT EP that has transfer size
    "speculatively" setup. My understanding is that even with "known
    transfer size" EP, you can get ZLP or short packets depending on the
    USB class our client device uses (eg: HID). Please correct me if I am
    wrong, because I dont want to read through the USB spec again if I
    dont have to !!! It is a dry read indeed .

+ Reply to Thread