Re: LibUsbK Isochronous Write C# example

Travis <[email protected]> Wed, 22 Oct 2014 09:25:35 -0600
Newsgroups gmane.comp.lib.libusb.devel.windows
Message-ID <[email protected]>
Greetings,

Yes, I think I understand the problem.  You can use the polling interval 
in the endpoint descriptor to change the transfer rate as well.

I have "C" example code for setting the start frame but here is the just 
of it.
1) Start by setting the 'ISO_ALWAYS_START_ASAP' pipe policy to false.
2) Use UsbK_GetCurrentFrameNumber() to determine what the frame count is 
currently set to
3) Update IsoContext.StartFrame before submitting each transfer with 
your modified value.

One problem I see in your code is you have not created an IsoContext for 
each transfer.  You need an IsoContext for each aync transfer operation. 
IE: For every overlapped handle, you need an IsoContext.

Regards,
Travis

On 10/20/2014 3:07 PM, Stephen B wrote:
> Hello,
>
> I think I understand the concept of ISO pipes, and also that the data 
> stream should be continuous. This is what I'm having problems with; 
> scheduling new write transfers one after another, with some time in 
> between (the time it takes for a full transfer of data to be "used 
> up"/emptied by the device).
> From this article 
> (http://msdn.microsoft.com/en-us/library/windows/hardware/dn376866(v=vs.85).aspx 
> <http://msdn.microsoft.com/en-us/library/windows/hardware/dn376866%28v=vs.85%29.aspx>) 
> I understand that I need to set the StartFrame for each transfer, with 
> a small offset between each, so the transfers won't be sent instantly. 
> This does not interrupt the stream of data because the device needs 
> time to process the packets of the transfer.
>
> But I don't know how to set the startframe for each subsequent 
> transfer... This is a summary of my code (I use 5 buffers now, but 
> that doesn't matter): http://pastebin.com/29GZmswb
> The only related piece of code I know of is the 0 in "Iso = new 
> IsoK(64, 0)", but I don't understand how to set the StartFrame for the 
> next transfers. I think something isn't right with my code structure.
>
> When I run this, I get the following results when I capture the 
> transfers with USBPcap (5 buffers used while capturing this): 
> http://imgur.com/USTj9g2
> You can notice the transfers are spamming my device (even my 
> hard-drive is getting really noisy while capturing these transfers).
>
> Thank you once again in advance for your help. I hope I don't have a 
> complete misunderstanding of the ISO concept, and I also hope that I 
> have clarified the issue better now.
>
> Kind regards,
> Stephen
>
> 2014-10-14 21:18 GMT+02:00 Travis <[email protected] 
> <mailto:[email protected]>>:
>
>     Greetings,
>
>     I'm not sure which part to clarify here.
>
>     ISO pipes have a single and fairly specific purpose.  They are
>     used when
>     data must be transferred in real-time with very low latency.  The best
>     example of this is audio/video but there are certainly other
>     applications for it.
>
>     With ISO, sending packets continuously is the only way it can work.
>     Think of ISO as a stream.  You need you continually read/write to/from
>     the stream or it will either overflow or run dry. (deepening on
>     whether
>     it is a read or write stream)
>
>     Regards,
>     Travis
>
>     On 10/12/2014 8:40 AM, Stephen B wrote:
>     > Hello,
>     >
>     > I'm still having trouble to understand the previous answer; "libusbK
>     > doesn't have transfer complete callbacks as window
>     > I/O is entirely event driven."
>     > Can anyone clarify this for me? My issue is how can I stop my
>     program
>     > from sending packets instantly, one after another.
>     >
>     > Thanks a lot in advance!
>     >
>     > Kind regards,
>     > Stephen
>     >
>     > 2014-08-31 17:50 GMT+02:00 Stephen B <[email protected]
>     <mailto:[email protected]>
>     > <mailto:[email protected]
>     <mailto:[email protected]>>>:
>     >
>     >     Hello,
>     >
>     >     Thank you, I tried to implement your procedure. This is the C#
>     >     code I have: http://pastebin.com/29GZmswb
>     >     I can see my device is alternating between the 3 data buffers (I
>     >     temporarily use the data values to control LEDs). When I
>     look at a
>     >     USBPcap capture I see it sends packets very rapidly: about 8000
>     >     packets in 30 seconds, while my device is programmed to use one
>     >     buffer every 5 seconds (very slowly for testing purposes). I
>     don't
>     >     think sending packets continuously is expected behaviour, or
>     is it?
>     >
>     >     Thanks in advance!
>     >
>     >     Kind regards,
>     >     Stephen
>     >
>     >
>     >     2014-08-29 19:41 GMT+02:00 Travis <[email protected]
>     <mailto:[email protected]>
>     >     <mailto:[email protected]
>     <mailto:[email protected]>>>:
>     >
>     >         Greetings,
>     >
>     >         For ISO to work properly you must always have multiple
>     pending
>     >         requests.  libusbK doesn't have transfer complete
>     callbacks as
>     >         window
>     >         I/O is entirely event driven.  The best way to handle
>     this is
>     >         to create
>     >         a separate thread for each of your pipes and let them be
>     >         responsible for
>     >         transferring data.
>     >
>     >         I don't have a good C# example of how to do this but
>     consider the
>     >         following pipe transfer thread proc:
>     >         1) Init overlapped pool (OvlK_Init)
>     >         2) Reset pipe (UsbK_ResetPipe)
>     >         2) submit Read #1 (OvlK_Acquire UsbK_IsoReadPipe)
>     >         3) submit Read #2
>     >         4) submit Read #3
>     >         5) MAIN LOOP (do while true)
>     >               - Wait for Read #1 to complete (OvlK_Wait)
>     >               - re-submit read #1 (OvlK_ReUse UsbK_IsoReadPipe)
>     >               - Wait for Read #2 to complete
>     >               -  re-submit read #2
>     >               - Wait for Read #3 to complete
>     >               - re-submit read #3
>     >         6) Shut down (OvlK_Free)
>     >
>     >         In the above, we are always fighting to keep 3 transfers
>     >         pending all of
>     >         the time.  The process is the same regardless of whether you
>     >         are reading
>     >         or writing.
>     >
>     >         Regards,
>     >         Travis
>     >
>     >         On 8/27/2014 1:20 PM, Stephen B wrote:
>     >         > Hello,
>     >         > Thank you very much, it works now!
>     >         > Now, I asked a question on SO some time ago and
>     someone gave
>     >         me a very
>     >         > helpful answer, but I still don't understand the last
>     part about
>     >         > callbacks:
>     >         >
>     >
>     http://stackoverflow.com/questions/24724987/libusb-confusion-about-continous-isochronous-usb-streams
>     >         > Let's say my device will also use 5 buffers, and it will
>     >         output the
>     >         > data with a certain frequency (not worrying about
>     >         synchronization
>     >         > yet). From his answer, I understand that I am able to
>     receive
>     >         > callbacks once the device processes one buffer (a transfer
>     >         of, in this
>     >         > example, 64 packets). But I wonder how this is possible,
>     >         because I
>     >         > couldn't find anything in the usb documentation that
>     states
>     >         that iso
>     >         > endpoints can send some sort of confirmation that a buffer
>     >         has been
>     >         > emptied and inform the host that a new buffer must be
>     >         prepared. If my
>     >         > understanding is correct, WaitAndRelease returns when
>     all 64
>     >         packets
>     >         > have left the host, and not when the device responds with
>     >         some sort of
>     >         > confirmation.
>     >         >
>     >         > So I'm still a bit confused, I'm now thinking that a
>     secondary
>     >         > endpoint (interrupt maybe?) is required to implement this
>     >         callback
>     >         > function. What do you suggest?
>     >         >
>     >         > Thanks a lot for the help so far! The lib is working and
>     >         that's a big
>     >         > step already :)
>     >         >
>     >         > Kind regards,
>     >         > Stephen
>     >         >
>     >         >
>     >         > 2014-08-26 15:57 GMT+02:00 Travis
>     <[email protected] <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>
>     >         > <mailto:[email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>>>:
>     >         >
>     >         >     Greetings,
>     >         >
>     >         >     997 is the code you are looking for! It means that the
>     >         operation
>     >         >     is in
>     >         >     progress.  All of the read/write functions will return
>     >         this when used
>     >         >     asynchronously. Look at the Read.Iso example again.
>     >         >
>     >         > 000000739.91009617[ERR](libusbK.sys)[XferIsoEx] Last
>     packet
>     >         offset
>     >         >     references data that is out-of-range.
>     >         IsoPacket[16].Offset=2048
>     >         >     The above line appears because the data buffer is not
>     >         big enough
>     >         >     to hold
>     >         >     what is defined by the ISO packets.
>     >         >
>     >         >     Since this is a high speed device, you will need
>     to use
>     >         intervals of 8
>     >         >     ISO packets.  Start with something simple.  64 ISO
>     >         packets each
>     >         >     with 128
>     >         >     bytes.
>     >         >     --
>     >         >     // 64 packets per transfer
>     >         >     Iso = new IsoK(64, 0);
>     >         >
>     >         >     // each packet holds 'MaximumPacketSize' amount of
>     data
>     >         bytes
>     >         > Iso.SetPackets(pipeInfo.MaximumPacketSize);
>     >         >
>     >         >     // Create a pool of 4 overlapped contexts (we only
>     use 1
>     >         here)
>     >         >     OvlPool = new OvlK(usb.Handle, 4,
>     KOVL_POOL_FLAG.NONE);
>     >         >
>     >         >     // Get one of our overlapped contexts
>     >         >     KOVL_HANDLE ovlkHandle;
>     >         >     OvlPool.Acquire(out ovlkHandle);
>     >         >
>     >         >     // Create a data buffer big enough to hold data
>     >         referenced by all iso
>     >         >     packets
>     >         >     byte[] dataBuffer = new
>     byte[pipeInfo.MaximumPacketSize
>     >         * 64];
>     >         >
>     >         >     // Always issue a reset pipe prior to re/starting
>     an ISO
>     >         stream.
>     >         >     usb.ResetPipe(pipeInfo.PipeId);
>     >         >
>     >         >     // Submit the transfer
>     >         >     usb.IsoWritePipe(pipeInfo.PipeId, dataBuffer,
>     >         dataBuffer.Length,
>     >         >     ovlkHandle, Iso.Handle/*isoCtx*/);
>     >         >     int errorCode = Marshal.GetLastWin32Error();
>     >         >     if (errorCode != ErroCodes.ErrorIoPending)
>     >         >     {
>     >         >          // TODO: something went wrong. Handle error
>     condition
>     >         >     }
>     >         >     else
>     >         >     {
>     >         >          if (!OvlPool.WaitAndRelease(ovlkHandle, 1000, out
>     >         transferred))
>     >         >          {
>     >         >              // TODO: something went wrong.  Handle error
>     >         condition
>     >         >          }
>     >         >          else
>     >         >          {
>     >         >              // Success!
>     >         >          }
>     >         >     }
>     >         >     --
>     >         >
>     >         >     Regards,
>     >         >     Travis
>     >         >
>     >         >     On 8/26/2014 3:54 AM, Stephen B wrote:
>     >         >     > Hello,
>     >         >     >
>     >         >     > Right, I was using the WinUSB driver. Replaced
>     it and
>     >         error 50 is
>     >         >     > solved but now I get error 997 (Overlapped I/O
>     >         operation is in
>     >         >     > progress) after the write operation.
>     >         >     > This is the DebugView log output:
>     >         >     > 000000010.00000000[DriverEntry](libusbK.sys)
>     v3.0.7.0
>     >         built-on:
>     >         >     Apr 27
>     >         >     > 2014 10:22:29
>     >         >     >
>     >  000000020.00078391(libusbK.sys)[Registry_ReadAllDeviceKeys]
>     >         Found 1
>     >         >     > DeviceInterfaceGUIDs strings.
>     >         >     >
>     >  000000030.00079931(libusbK.sys)[Registry_ReadAllDeviceKeys]
>     >         >     > DeviceIdleEnabled=1
>     >         >     >
>     >  000000040.00081051(libusbK.sys)[Registry_ReadAllDeviceKeys]
>     >         >     > DeviceIdleIgnoreWakeEnable=0
>     >         >     >
>     >  000000050.00082031(libusbK.sys)[Registry_ReadAllDeviceKeys]
>     >         >     > UserSetDeviceIdleEnabled=0
>     >         >     >
>     >  000000060.00082917(libusbK.sys)[Registry_ReadAllDeviceKeys]
>     >         >     > DefaultIdleState=0
>     >         >     >
>     >  000000070.00083897(libusbK.sys)[Registry_ReadAllDeviceKeys]
>     >         >     > DefaultIdleTimeout=5000
>     >         >     >
>     >  000000080.00084877(libusbK.sys)[Registry_ReadAllDeviceKeys]
>     >         >     > SystemWakeEnabled=0
>     >         >     > 000000090.00090663(libusbK.sys)[Device_OnAdd]
>     [dev-id=#1]
>     >         >     > SymbolicLink=\DosDevices\libusb0-0255
>     >         >     > 000000100.00110821(libusbK.sys)[Device_OnAdd]
>     >         [dev-id=#1] assigned
>     >         >     > DeviceInterfaceGUID
>     >         {DE984606-810A-8A58-82DD-3568CB9B776F}.
>     >         >     > 000000110.00275162(libusbK.sys)[Device_Create]
>     >         DeviceSpeed=High
>     >         >     > RemoteWakeCapable=False SelfPowered=False
>     >         >     > 000000120.00276701(libusbK.sys)[Device_Configure]
>     >         Using single
>     >         >     > interface configuration..
>     >         >     > 000000130.00309784(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=00h
>     >         >     Creating
>     >         >     > pipe queue.
>     >         >     > 000000140.00311371(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=00h queue
>     >         >     > starting..
>     >         >     > 000000150.00314217(libusbK.sys)[Device_OnD0Entry]
>     >         Active. D4 -> D0
>     >         >     > 000000166.82585812[4192]
>     >         >     > 000000176.82591820[4192] AllK required
>     contiguous memory =
>     >         >     534200 (64bit)
>     >         >     > 000000186.82594538[4192]   8 HotK Handles:
>     HandleSize
>     >         2112 PoolSize
>     >         >     > 16912 (bytes)
>     >         >     > 000000196.82597113[4192]   64 LstK Handles:
>     HandleSize
>     >         64 PoolSize
>     >         >     > 4112 (bytes)
>     >         >     > 000000206.82599640[4192]  1024 LstInfoK Handles:
>     >         HandleSize 64
>     >         >     > PoolSize 65552 (bytes)
>     >         >     > 000000216.82602358[4192]   64 UsbK Handles:
>     HandleSize
>     >         96 PoolSize
>     >         >     > 6160 (bytes)
>     >         >     > 000000226.82604837[4192]   32 DevK Handles:
>     HandleSize
>     >         112 PoolSize
>     >         >     > 3600 (bytes)
>     >         >     > 000000236.82607317[4192]  4096 OvlK Handles:
>     >         HandleSize 104
>     >         >     PoolSize
>     >         >     > 426000 (bytes)
>     >         >     > 000000246.82609797[4192]   64 OvlPoolK Handles:
>     >         HandleSize 96
>     >         >     PoolSize
>     >         >     > 6160 (bytes)
>     >         >     > 000000256.82612276[4192]   32 StmK Handles:
>     HandleSize
>     >         176 PoolSize
>     >         >     > 5648 (bytes)
>     >         >     > 000000266.82614470[4192]
>     >         >     > 000000276.82617807[4192] Dynamically allocated
>     as needed:
>     >         >     > 000000286.82620192[4192] KLST_DEVINFO = 2596
>     bytes each
>     >         >     > 000000296.82862473[4192]
>     >         (libusbK.dll)[l_EnumKey_Guids] Skipping
>     >         >     > USB\ROOT_HUB\4&22692171&0..
>     >         >     > 000000306.82866192[4192]
>     >         (libusbK.dll)[l_EnumKey_Guids] Skipping
>     >         >     > USB\ROOT_HUB\4&2C0CBE2A&0..
>     >         >     > 000000316.82870102[4192]
>     >         (libusbK.dll)[l_EnumKey_Guids] Skipping
>     >         >     > USB\ROOT_HUB\4&2EA0F109&0..
>     >         >     > 000000326.82873869[4192]
>     >         (libusbK.dll)[l_EnumKey_Guids] Skipping
>     >         >     > USB\ROOT_HUB\4&8756F75&0..
>     >         >     > 000000336.82877636[4192]
>     >         (libusbK.dll)[l_EnumKey_Guids] Skipping
>     >         >     > USB\ROOT_HUB\4&BB39B4E&0..
>     >         >     > 000000346.82881403[4192]
>     >         (libusbK.dll)[l_EnumKey_Guids] Skipping
>     >         >     > USB\ROOT_HUB20\4&36D5FDB7&0..
>     >         >     > 000000356.82885361[4192]
>     >         (libusbK.dll)[l_EnumKey_Guids] Skipping
>     >         >     > USB\ROOT_HUB20\4&7B02F80&0..
>     >         >     > 000000366.84401226[4192] LstK Init: handle
>     >         0x000000001B72EE58
>     >         >     > 000000376.88146448(libusbK.sys)[Device_OnFileCreate]
>     >         begins
>     >         >     > 000000386.88147306(libusbK.sys)[Device_OnFileCreate]
>     >         Process ID=4192
>     >         >     >
>     000000396.88148260(libusbK.sys)[Device_OnFileCreate] ends
>     >         >     > 000000406.88162613(libusbK.sys)[XferCtrl]
>     >         bmDir=DeviceToHost(1)
>     >         >     > bmType=Standard(0) bmRecipient=Device(0)
>     >         bmReserved=000 bRequest=6
>     >         >     > wIndex=0 wValue=512 wLength=0
>     >         >     > 000000416.88164711(libusbK.sys)[XferCtrl]
>     >         bmDir=DeviceToHost(1)
>     >         >     > bmType=Standard(0) bmRecipient=Device(0)
>     >         bmReserved=000 bRequest=6
>     >         >     > wIndex=0 wValue=512 wLength=0
>     >         >     > 000000426.88214540[4192]
>     (libusbK.dll)[k_Init_Version]
>     >         libusbK.sys
>     >         >     > v3.0.7.0
>     >         >     > 000000436.88220263[4192] UsbK Init: handle
>     >         0x000000001B73FE78
>     >         >     >
>     000000446.88879156(libusbK.sys)[Interface_SetAltSetting]
>     >         >     selected alt
>     >         >     > setting index 1 on interface number 0
>     >         >     >
>     000000456.88880396(libusbK.sys)[Interface_InitContext]
>     >         >     configured Read
>     >         >     > pipe: PipeID=81h MaximumPacketSize=64
>     >         MaximumTransferSize=262144
>     >         >     > PipeType=Interrupt
>     >         >     >
>     000000466.88881016(libusbK.sys)[Interface_InitContext]
>     >         configured
>     >         >     > Write pipe: PipeID=02h MaximumPacketSize=64
>     >         >     MaximumTransferSize=262144
>     >         >     > PipeType=Interrupt
>     >         >     >
>     000000476.88881588(libusbK.sys)[Interface_InitContext]
>     >         >     configured Read
>     >         >     > pipe: PipeID=83h MaximumPacketSize=512
>     >         MaximumTransferSize=2097152
>     >         >     > PipeType=Bulk
>     >         >     >
>     000000486.88882160(libusbK.sys)[Interface_InitContext]
>     >         configured
>     >         >     > Write pipe: PipeID=04h MaximumPacketSize=512
>     >         >     > MaximumTransferSize=2097152 PipeType=Bulk
>     >         >     >
>     000000496.88882971(libusbK.sys)[Interface_InitContext]
>     >         >     configured Read
>     >         >     > pipe: PipeID=85h MaximumPacketSize=128
>     >         MaximumTransferSize=131072
>     >         >     > PipeType=Isochronous
>     >         >     >
>     000000506.88883543(libusbK.sys)[Interface_InitContext]
>     >         configured
>     >         >     > Write pipe: PipeID=06h MaximumPacketSize=128
>     >         >     > MaximumTransferSize=131072 PipeType=Isochronous
>     >         >     > 000000516.88883972(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=81h
>     >         >     Creating
>     >         >     > pipe queue.
>     >         >     >
>     000000526.88884449(libusbK.sys)[Pipe_InitQueueConfig]
>     >         Configuring
>     >         >     > sequential queue..
>     >         >     > 000000536.88885784(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=81h queue
>     >         >     > starting..
>     >         >     > 000000546.88886356(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=02h
>     >         >     Creating
>     >         >     > pipe queue.
>     >         >     >
>     000000556.88886690(libusbK.sys)[Pipe_InitQueueConfig]
>     >         Configuring
>     >         >     > sequential queue..
>     >         >     > 000000566.88887310(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=02h queue
>     >         >     > starting..
>     >         >     > 000000576.88887644(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=83h
>     >         >     Creating
>     >         >     > pipe queue.
>     >         >     >
>     000000586.88888025(libusbK.sys)[Pipe_InitQueueConfig]
>     >         Configuring
>     >         >     > sequential queue..
>     >         >     > 000000596.88888645(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=83h queue
>     >         >     > starting..
>     >         >     > 000000606.88889027(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=04h
>     >         >     Creating
>     >         >     > pipe queue.
>     >         >     >
>     000000616.88889408(libusbK.sys)[Pipe_InitQueueConfig]
>     >         Configuring
>     >         >     > sequential queue..
>     >         >     > 000000626.88889933(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=04h queue
>     >         >     > starting..
>     >         >     > 000000636.88890314(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=85h
>     >         >     Creating
>     >         >     > pipe queue.
>     >         >     >
>     000000646.88890648(libusbK.sys)[Pipe_InitQueueConfig]
>     >         Configuring
>     >         >     > parallel queue..
>     >         >     > 000000656.88891411(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=85h queue
>     >         >     > starting..
>     >         >     > 000000666.88891745(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=06h
>     >         >     Creating
>     >         >     > pipe queue.
>     >         >     >
>     000000676.88892078(libusbK.sys)[Pipe_InitQueueConfig]
>     >         Configuring
>     >         >     > parallel queue..
>     >         >     > 000000686.88892603(libusbK.sys)[Pipe_InitContext]
>     >         pipeID=06h queue
>     >         >     > starting..
>     >         >     > 000000696.89122868[4192] LstK Dispose: Freed
>     >         >     Handle:000000001B72EE58h
>     >         >     > Explicit:True
>     >         >     > 000000709.90101719[4192] IsoK Init: handle
>     >         0x000000001B6BFD00
>     >         >     > 000000719.90591049[4192] OvlK Init: handle
>     >         0x000000001B7AA4A8
>     >         >     > 000000729.90827751(libusbK.sys)[Pipe_Reset]
>     pipeID=06h
>     >         >     > 000000739.91009617[ERR](libusbK.sys)[XferIsoEx] Last
>     >         packet offset
>     >         >     > references data that is out-of-range.
>     >         IsoPacket[16].Offset=2048
>     >         >     > 000000749.91096878[4192]
>     [ERR](libusbK.dll)[OvlK_Wait]
>     >         Unknown
>     >         >     > OverlappedK failure. errorCode=000006F8h
>     >         >     > 000000759.91620255[4192] UsbK Dispose: Freed
>     >         >     Handle:000000001B73FE78h
>     >         >     > Explicit:True
>     >         >     > 000000769.92062855[4192] IsoK Dispose: Freed
>     >         >     Handle:000000001B6BFD00h
>     >         >     > Explicit:True
>     >         >     >
>     000000779.92470455(libusbK.sys)[Interface_ReleaseAll]
>     >         releasing all
>     >         >     > interfaces bound to file object 0x51c5350
>     >         >     > 000000789.92471409(libusbK.sys)[Device_OnFileClose]
>     >         >     > OpenedFileHandleCount=0
>     >         >     > 000000799.92485809[4192] OvlK Dispose: Freed
>     >         >     Handle:000000001B7AA4A8h
>     >         >     > Explicit:True
>     >         >     >
>     >         >     > I see something is out of range, so I tried reducing
>     >         the number of
>     >         >     > packets per transfer, but no luck. I think I need to
>     >         solve the 997
>     >         >     > error first. I wonder what's causing it?
>     >         >     >
>     >         >     > Kind regards,
>     >         >     > Stephen
>     >         >     >
>     >         >     >
>     >         >     > 2014-08-25 23:34 GMT+02:00 Travis
>     >         <[email protected] <mailto:[email protected]>
>     <mailto:[email protected] <mailto:[email protected]>>
>     >         >     <mailto:[email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>>
>     >         >     > <mailto:[email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>> <mailto:[email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>>>>:
>     >         >     >
>     >         >     >     Greetings,
>     >         >     >
>     >         >     >     Ensure that you have installed the "libusbK.sys"
>     >         driver with
>     >         >     your
>     >         >     >     device
>     >         >     >     and not the WinUSB driver. However, if this was
>     >         the problem
>     >         >     then I
>     >         >     >     would not expect the read iso example to
>     work either.
>     >         >     >
>     >         >     >     If that doesn't help, you can also install the
>     >         debug version
>     >         >     of the
>     >         >     >     library and driver and use DebugView to see the
>     >         messages. For
>     >         >     >     instruction on this there are several posts
>     in the
>     >         archives.
>     >         >     >
>     >         >     >     Regards,
>     >         >     >     Travis
>     >         >     >
>     >         >     >     On 8/25/2014 2:55 PM, Stephen B wrote:
>     >         >     >     > Hello,
>     >         >     >     >
>     >         >     >     > I am trying to write isochronous data to
>     my USB
>     >         device. I
>     >         >     tried
>     >         >     >     > the xfer-iso c example but had no luck to
>     >         compile it, and
>     >         >     >     preferably I
>     >         >     >     > want to use C# anyway. So I looked at the C#
>     >         examples and
>     >         >     found
>     >         >     >     > Read.Isochronous. This compiles and works, but
>     >         unfortunately
>     >         >     >     there is
>     >         >     >     > no Write example.
>     >         >     >     >
>     >         >     >     > I tried to create it myself using the c
>     example and
>     >         >     >     > the Read.Isochronous example, but with no luck
>     >         yet. When
>     >         >     >     writing, the
>     >         >     >     > following line always returns error 50 (the
>     >         request is not
>     >         >     >     supported):
>     >         >     >     > usb.IsoWritePipe(pipeInfo.PipeId, dataBuffer,
>     >         >     dataBuffer.Length,
>     >         >     >     > ovlkHandle, Iso.Handle);
>     >         >     >     >
>     >         >     >     > I also can't find any iso out packets with
>     USBPcap.
>     >         >     >     >
>     >         >     >     > Does anyone have any idea what's causing
>     this? I
>     >         have attached
>     >         >     >     my code
>     >         >     >     > along with a descriptor report of my device.
>     >         There are 5
>     >         >     unnecessary
>     >         >     >     > endpoints from my base firmware code, but I
>     >         decided to
>     >         >     keep them in
>     >         >     >     > for now to prevent causing more bugs, as my
>     >         device has
>     >         >     worked and
>     >         >     >     > transferred iso data with libusb in the past.
>     >         >     >     >
>     >         >     >     > Thanks in advance for any help!
>     >         >     >     >
>     >         >     >     > Kind regards,
>     >         >     >     > Stephen
>     >         >     >     >
>     >         >     >     >
>     >         >     >     >
>     >         >     >
>     >         >
>     >
>      ------------------------------------------------------------------------------
>     >         >     >     > Slashdot TV.
>     >         >     >     > Video for Nerds. Stuff that matters.
>     >         >     >     > http://tv.slashdot.org/
>     >         >     >     >
>     >         >     >     >
>     >         >     >     >
>     _______________________________________________
>     >         >     >     > Libusb-win32-devel mailing list
>     >         >     >     > [email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>
>     >         >     <mailto:[email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>>
>     >         >     >   
>      <mailto:[email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>
>     >         >     <mailto:[email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>>>
>     >         >     >     >
>     >         >
>     https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
>     >         >     >
>     >         >     >
>     >         >     >
>     >         >
>     >
>      ------------------------------------------------------------------------------
>     >         >     >     Slashdot TV.
>     >         >     >     Video for Nerds.  Stuff that matters.
>     >         >     > http://tv.slashdot.org/
>     >         >     > _______________________________________________
>     >         >     >     Libusb-win32-devel mailing list
>     >         >     > [email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>
>     >         >     <mailto:[email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>>
>     >         >     >   
>      <mailto:[email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>
>     >         >     <mailto:[email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>>>
>     >         >     >
>     > https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
>     >         >     >
>     >         >     >
>     >         >     >
>     >         >     >
>     >         >     >
>     >         >
>     >
>     ------------------------------------------------------------------------------
>     >         >     > Slashdot TV.
>     >         >     > Video for Nerds.  Stuff that matters.
>     >         >     > http://tv.slashdot.org/
>     >         >     >
>     >         >     >
>     >         >     > _______________________________________________
>     >         >     > Libusb-win32-devel mailing list
>     >         >     > [email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>
>     >         >     <mailto:[email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>>
>     >         >     >
>     > https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
>     >         >
>     >         >
>     >         >
>     >
>     ------------------------------------------------------------------------------
>     >         >     Slashdot TV.
>     >         >     Video for Nerds.  Stuff that matters.
>     >         > http://tv.slashdot.org/
>     >         > _______________________________________________
>     >         >     Libusb-win32-devel mailing list
>     >         > [email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>
>     >         >     <mailto:[email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>>
>     >         >
>     https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
>     >         >
>     >         >
>     >         >
>     >         >
>     >         >
>     >
>      ------------------------------------------------------------------------------
>     >         > Slashdot TV.
>     >         > Video for Nerds.  Stuff that matters.
>     >         > http://tv.slashdot.org/
>     >         >
>     >         >
>     >         > _______________________________________________
>     >         > Libusb-win32-devel mailing list
>     >         > [email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>
>     >         >
>     https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
>     >
>     >
>     >
>      ------------------------------------------------------------------------------
>     >         Slashdot TV.
>     >         Video for Nerds.  Stuff that matters.
>     > http://tv.slashdot.org/
>     >  _______________________________________________
>     >         Libusb-win32-devel mailing list
>     > [email protected]
>     <mailto:[email protected]>
>     >         <mailto:[email protected]
>     <mailto:[email protected]>>
>     > https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
>     >
>     >
>     >
>     >
>     >
>     >
>     ------------------------------------------------------------------------------
>     > Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
>     > Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS
>     Reports
>     > Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
>     > Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
>     > http://p.sf.net/sfu/Zoho
>     >
>     >
>     > _______________________________________________
>     > Libusb-win32-devel mailing list
>     > [email protected]
>     <mailto:[email protected]>
>     > https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
>
>
>     ------------------------------------------------------------------------------
>     Comprehensive Server Monitoring with Site24x7.
>     Monitor 10 servers for $9/Month.
>     Get alerted through email, SMS, voice calls or mobile push
>     notifications.
>     Take corrective actions from your mobile device.
>     http://p.sf.net/sfu/Zoho
>     _______________________________________________
>     Libusb-win32-devel mailing list
>     [email protected]
>     <mailto:[email protected]>
>     https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
>
>
>
>
> ------------------------------------------------------------------------------
> Comprehensive Server Monitoring with Site24x7.
> Monitor 10 servers for $9/Month.
> Get alerted through email, SMS, voice calls or mobile push notifications.
> Take corrective actions from your mobile device.
> http://p.sf.net/sfu/Zoho
>
>
> _______________________________________________
> Libusb-win32-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel


------------------------------------------------------------------------------