RE: ntdev digest: September 22, 2005


The USB_START_ISO_TRANSFER_ASAP flag should never ever be used in
production drivers, neither for tx nor for rx. If the system is really
busy, say
it runs some kind of 3D video test, these requests will be failing
As per Microsoft USB folks, you should always use an explicit StartFrame and
should always schedule transactions at least 5 frames in advance to let USB
stack have sufficient time to get ready for them in all respects.

Hope that helps,

----- Original Message -----
Subject: Re: How to send IN urb in each SOF in usb ISO mode?
From: ze zefeng
Date: Fri, 23 Sep 2005 09:16:31 +0800
X-Message-Number: 17

Asks for your help .
1) When I set USB_START_ISO_TRANSFER_ASAP , there will be 6 empty SOF
between each IN token , So I don’t use it .
But as you have suggested, I should queue up a bunch of URBs .I
understand it like that I should send a URB with multiple packets and
set USB_START_ISO_TRANSFER_ASAP . Does it ? But that will make the
return pkts in one buffer , I should to parser them ?

2) Sorry for making you confused , what I said in second paragraph is
not right :slight_smile: I just means sending a URB with multiple packets , and
the ruturn data size will more than what I have specifed in
‘UrbIsochronousTransfer.TransferBufferLength’ .

2005/9/23, Tim Roberts :
>ze zefeng wrote:
> >Hi,
> > I’m developping usb ISO driver now . And our usb device need ISO
> >driver to send IN urb in each SOF(in each 1 ms).
> > I have sent urb ‘URB_FUNCTION_GET_CURRENT_FRAME_NUMBER’ to get
> >the CurrentFrame .And set 'UrbIsochronousTransfer.StartFrame =3D
> >CurrentFrame '. But in this way , the IN urb will can’t be sent out .
> >
> >
>May I ask why you are trying to manage the frame numbers? If you want
>every frame, why not just queue up a bunch of URBs and set

>I’ve never seen the frame numbers used successfully in a USB driver.
> > I also send 2 pkts in one urb . But the max IN data is 780 bytes
> >,and our max pkts size will be 500bytes . So this way also can’t be
> >accepted.
> >
> >
>I don’t understand this paragraph.
> > So do anyone know how to send IN urb in each SOF ? Any idea are welcom=
> >
> >
>Sure. Queue up a couple of URBs with multiple packets in each URB, and
>set USB_START_ISO_TRANSFER_ASAP. That’s what capture drivers do.
>Tim Roberts,
>Providenza & Boekelheide, Inc.
>Questions? First check the Kernel Driver FAQ at
>You are currently subscribed to ntdev as:
>To unsubscribe send a blank email to