Hi,

I'm not an expert in reading USB snoopy logs so some of my
interpretation may be wrong. You should have a look at the USB spec
(www.usb.org), especially the chapters explaining how a control and a
bulk transfer work.

On Fri, Jul 04, 2003 at 11:35:18AM +0200, gnawa wrote:
> 00000000      0.00000000      UsbSnoop - IRP_MJ_INTERNAL_DEVICE_CONTROL, 
> IOCTL_INTERNAL_USB_SUBMIT_URB        
> 00000001      0.00002039              
> 00000002      0.00002654      >>>>>>> URB 2162 going down...  

A URB (USB request block) is goes from the application to the
operating system which sends it to the device. 2162 is the number of
that block.

> 00000003      0.00003799      -- URB_FUNCTION_VENDOR_DEVICE:  

It's a control message.

> 00000004      0.00005140        TransferFlags          = 00000000 
> (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)      

USBD_TRANSFER_DIRECTION_OUT means that data (the TransferBuffer) is
sent from the host to the device.

> 00000005      0.00006118        TransferBufferLength = 00000001       

The buffer has a size of one byte.

> 00000006      0.00007180        TransferBuffer       = 8181bf08       

I think that's the pointer to the buffer. Doesn't matter.

> 00000007      0.00008018        TransferBufferMDL    = 00000000       

No idea.

> 00000008      0.00008828              
> 00000009      0.00010783          0000: 41    

The buffer itsself. One byte with a value of 0x41.

> 00000010      0.00011622        UrbLink                 = 00000000    
> 00000011      0.00012488        RequestTypeReservedBits = 40  
> 00000012      0.00013326        Request                 = 0c  
> 00000013      0.00014164        Value                   = 0083        
> 00000014      0.00015114        Index                   = 0000        

These are the values used in the control message (see USB spec). See
also the sanei_usb_control_msg function, you'll recognize some of the
arguments there.

> 00000015      0.00411477              
> 00000016      0.00412091      <<<<<<< URB 2162 coming back... 

Now the URB is finished (sent).

> 00000017      0.00413237      -- URB_FUNCTION_CONTROL_TRANSFER:       
> 00000018      0.00414271        PipeHandle           = 813c7574       
> 00000019      0.00415360        TransferFlags        = 00000002 
> (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK) 
> 00000020      0.00416282        TransferBufferLength = 00000001       
> 00000021      0.00417204        TransferBuffer       = 8181bf08       
> 00000022      0.00418126        TransferBufferMDL    = 813b0e68       
> 00000023      0.00419076        UrbLink              = 00000000       
> 00000024      0.00425976        SetupPacket          : 40 0c 83 00 00 00 01 
> 00        

That's the control data actual used for the control message. If you
look closely, you see how it looks like: 0x40 = request type, 0c =
request, 00 83 (little endian) = value, 00 00 = index, 01 00 = size of
the buffer.

> i need some help for understand what is "urb", the meaning of >>>>>> and 
> <<<<<< (i think it's direction of messages in or out...), ..., ..., ..., etc.

It's the "direction" of the URB. >>> sent from application to
operating system, <<< sent back from os to application.

> the logs are very long :) (making a preview of scannig the log is about 17Mb 
> and then with real scanning the log is about 7Mb) on 10x10(cm) of area...

That's not unusual. Especially if the scanner chip is not that
intelligent :-)

E.g. some drivers ask the scanner if it has finished moving back the
scanhead. They do this every few milliseconds so you get an enourmous
amount of traffic just for this testing.

Bye,
  Henning

Reply via email to