[sane-devel] hp 2300c
Henning Meier-Geinitz
henning at meier-geinitz.de
Fri Jul 4 11:36:06 BST 2003
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
More information about the sane-devel
mailing list