[sane-devel] hp 2300c

Henning Meier-Geinitz henning@meier-geinitz.de
Fri, 4 Jul 2003 12:36:06 +0200


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