I thought I would try and write a backend for SANE. I have used UsbSnoop on windows to collect some of the URB Data. What is the equivalent program on linux to snoop USB to see what I am actually sending ? With any luck the output of both should be the same.
-Thanks Steve More ** -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.alioth.debian.org/pipermail/sane-devel/attachments/20051229/e7f0b7eb/attachment.html From golan...@aol.com Fri Dec 30 04:48:29 2005 From: golan...@aol.com (golan...@aol.com) Date: Fri Dec 30 04:49:02 2005 Subject: [sane-devel] Does the Canon Lide 80 work? In-Reply-To: <43b314fa.3000...@pirsoft.dnsalias.org> References: <8c7d96624bed3dd-a24-5...@fwm-r16.sysops.aol.com> <20051228112251.gc8...@meier-geinitz.de> <8c7da0eecd11c24-c30-3...@fwm-d33.sysops.aol.com> <43b314fa.3000...@pirsoft.dnsalias.org> Message-ID: <8c7db1369b03b54-cc4-1...@mblk-m27.sysops.aol.com> After patching the backend and a recompile I get the following when attempting a 'scanimage > image.pnm' : [genesys] sane_open: start (devicename = `libusb:001:023') [genesys] sane_open: found `canon-lide-60' in devlist [sanei_usb] sanei_usb_open: trying to open device `libusb:001:023' [sanei_usb] sanei_usb_open: configuration nr: 0 [sanei_usb] sanei_usb_open: interface nr: 0 [sanei_usb] sanei_usb_open: alt_setting nr: 0 [sanei_usb] sanei_usb_open: endpoint nr: 0 [sanei_usb] sanei_usb_open: direction: 128 [sanei_usb] sanei_usb_open: address: 1 transfertype: 2 [sanei_usb] sanei_usb_open: found bulk-in endpoint (address 0x01) [sanei_usb] sanei_usb_open: we already have a bulk-in endpoint (address: 0x81), ignoring the new one [sanei_usb] sanei_usb_open: endpoint nr: 1 [sanei_usb] sanei_usb_open: direction: 0 [sanei_usb] sanei_usb_open: address: 2 transfertype: 2 [sanei_usb] sanei_usb_open: found bulk-out endpoint (address 0x02) [sanei_usb] sanei_usb_open: we already have a bulk-out endpoint (address: 0x02), ignoring the new one [sanei_usb] sanei_usb_open: endpoint nr: 2 [sanei_usb] sanei_usb_open: direction: 128 [sanei_usb] sanei_usb_open: address: 3 transfertype: 3 [sanei_usb] sanei_usb_open: found interrupt-in endpoint (address 0x03) [sanei_usb] sanei_usb_open: we already have a int-in endpoint (address: 0x83), i gnoring the new one [sanei_usb] sanei_usb_open: opened usb device `libusb:001:023' (*dn=0) [genesys] init_options: start [genesys] init_options: exit [sanei_debug] Setting debug level of genesys_gl841 to 255. [genesys_gl841] gl841_init [genesys_gl841] gl841_init_registers [genesys_gl841] gl841_setup_sensor [genesys_gl841] gl841_init_registers complete [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 12, value = 135, index = 0, len = 1 [sanei_usb] 0000: 04 .............. .. [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 12, value = 131, index = 0, len = 1 [sanei_usb] 0000: 0E .............. .. [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 12, value = 133, index = 0, len = 1 [sanei_usb] 0000: 00 .............. .. [genesys] sanei_genesys_write_register (0x0e, 0x00) completed [genesys_gl841] gl841_bulk_write_register (size = 208) [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, index = 0 , len = 2 [sanei_usb] 0000: 01 A0 .............. .. [genesys_gl841] reg[0x01] = 0xa0 [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, index = 0 , len = 2 [sanei_usb] 0000: 02 38 .8............ .. [genesys_gl841] reg[0x02] = 0x38 [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, index = 0 , len = 2 [sanei_usb] 0000: 03 5F ._............ .. [genesys_gl841] reg[0x03] = 0x5f [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, index = 0 , len = 2 [sanei_usb] 0000: 04 10 .............. .. [genesys_gl841] reg[0x04] = 0x10 [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, index =, len = 2 [sanei_usb] 0000: 05 40 .@............. [genesys_gl841] reg[0x05] = 0x40 [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, index =, len = 2 [sanei_usb] 0000: 06 18 ............... [genesys_gl841] reg[0x06] = 0x18 [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, index =, len = 2 [sanei_usb] 0000: 07 00 ............... USB error: error sending control message: No such device [sanei_usb] sanei_usb_control_msg: libusb complained: error sending control mesage: No such device [genesys_gl841] gl841_bulk_write_register: failed while writing command: Invali argument scanimage: open of device genesys:libusb:001:023 failed: Invalid argument [genesys] sane_exit: start [genesys] sane_exit: exit Any suggestions? -Aaron -----Original Message----- From: Pierre Willenbrock <pie...@pirsoft.dnsalias.org> To: sane-devel@lists.alioth.debian.org Sent: Wed, 28 Dec 2005 23:43:06 +0100 Subject: Re: [sane-devel] Does the Canon Lide 80 work? Hi, golan...@aol.com schrieb: > I made the changes you suggested and troubleshot a few things and got > the scanner to be found as a LiDE 60 with scanimage. I got an invalid > argument error when I tried to do 'scanimage >image.pnm'. > > Below is a debugging log after I issued 'export > SANE_DEBUG_GENESYS_GL841=255' and 'export SANE_DEBUG_SANEI_USB=255'. Sometimes SANE_DEBUG_GENESYS=255 is interesting, too. > ---Log--- > > [sanei_usb] sanei_usb_init: found libusb device (0x04a9/0x2214) > interface 0 at libusb:001:009 > [sanei_usb] sanei_usb_init: found 1 devices > .... > [sanei_usb] sanei_usb_open: trying to open device `libusb:001:009' > [sanei_usb] sanei_usb_open: configuration nr: 0 > [sanei_usb] sanei_usb_open: interface nr: 0 > [sanei_usb] sanei_usb_open: alt_setting nr: 0 > [sanei_usb] sanei_usb_open: endpoint nr: 0 > [sanei_usb] sanei_usb_open: direction: 128 > [sanei_usb] sanei_usb_open: address: 1 transfertype: 2 > [sanei_usb] sanei_usb_open: found bulk-in endpoint (address 0x01) > [sanei_usb] sanei_usb_open: we already have a bulk-in endpoint (address: > 0x81), ignoring the new one > [sanei_usb] sanei_usb_open: endpoint nr: 1 > [sanei_usb] sanei_usb_open: direction: 0 > [sanei_usb] sanei_usb_open: address: 2 transfertype: 2 > [sanei_usb] sanei_usb_open: found bulk-out endpoint (address 0x02) > [sanei_usb] sanei_usb_open: we already have a bulk-out endpoint > (address: 0x02), ignoring the new one > [sanei_usb] sanei_usb_open: endpoint nr: 2 > [sanei_usb] sanei_usb_open: direction: 128 > [sanei_usb] sanei_usb_open: address: 3 transfertype: 3 > [sanei_usb] sanei_usb_open: found interrupt-in endpoint (address 0x03) > [sanei_usb] sanei_usb_open: we already have a int-in endpoint (address: > 0x83), ignoring the new one > [sanei_usb] sanei_usb_open: opened usb device `libusb:001:009' (*dn=0) > [sanei_debug] Setting debug level of genesys_gl841 to 255. > [genesys_gl841] gl841_init > [genesys_gl841] gl841_init_registers > [genesys_gl841] gl841_setup_sensor > [genesys_gl841] gl841_init_registers complete > [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 12, value = 135, > index = 0, len = 1 > [sanei_usb] 0000: 04 > ................ > [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 12, value = 131, > index = 0, len = 1 > [sanei_usb] 0000: 0E > ................ > [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 12, value = 133, > index = 0, len = 1 > [sanei_usb] 0000: 00 > ................ > [genesys_gl841] gl841_bulk_write_register (size = 208) > [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, > index = 0, len = 2 > [sanei_usb] 0000: 01 A0 > ................ > [genesys_gl841] reg[0x01] = 0xa0 > [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, > index = 0, len = 2 > [sanei_usb] 0000: 02 38 > .8.............. > [genesys_gl841] reg[0x02] = 0x38 > [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, > index = 0, len = 2 > [sanei_usb] 0000: 03 5F > ._.............. > [genesys_gl841] reg[0x03] = 0x5f > [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, > index = 0, len = 2 > [sanei_usb] 0000: 04 10 > ................ > [genesys_gl841] reg[0x04] = 0x10 > [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, > index = 0, len = 2 > [sanei_usb] 0000: 05 40 > .@.............. > [genesys_gl841] reg[0x05] = 0x40 > [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, > index = 0, len = 2 > [sanei_usb] 0000: 06 18 > ................ > [genesys_gl841] reg[0x06] = 0x18 > [sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 131, > index = 0, len = 2 > [sanei_usb] 0000: 07 00 > ................ > USB error: error sending control message: Protocol error > [sanei_usb] sanei_usb_control_msg: libusb complained: error sending > control message: Protocol error > [genesys_gl841] gl841_bulk_write_register: failed while writing command: > Invalid argument > scanimage: open of device genesys:libusb:001:009 failed: Invalid argument > > I'm not sure if this is a problem with the backend not supporting my > scanner or if I have made a mistake in the setup of the scanner. Any > help would be appreciated. > This happens either with faulty usb equipment, or the scanner resets itself. This happens when it short-circuits itself(i guess) responding to an errorneous register write. I suspect register 0x03 is responsible(lamp power etc.). The attached patch should clarify this, by giving the scanner more time to react on the register writes. The last successfull write should be the one leading to the reset. Regards, Pierre Index: backend/genesys_gl841.c =================================================================== RCS file: /cvsroot/sane/sane-backends/backend/genesys_gl841.c,v retrieving revision 1.3 diff -u -r1.3 genesys_gl841.c --- backend/genesys_gl841.c 5 Dec 2005 20:50:57 -0000 1.3 +++ backend/genesys_gl841.c 28 Dec 2005 22:24:19 -0000 @@ -408,6 +408,7 @@ DBG (DBG_io2, "reg[0x%02x] = 0x%02x\n", ((u_int8_t *) reg)[2 * i], ((u_int8_t *) reg)[2 * i + 1]); + usleep(100000); }