[sane-devel] usb-IO-error with genesys

Philipp Schmid Philipp8288@web.de
Fri, 08 Apr 2005 16:06:21 +0200


Hello,

I am very interested in doing some developpment on the genesys driver. 
So I tried the genesys driver from the cvs html tree with a lide50 
scanner. But it doesn't work on my system because it ends in an usb 
IO-error.


e.g. if I try scanimage with SANE_DEBUG_SANEI_USB=128 and 
SANE_DEBUG_GENESYS=255,
I get:


amd2800:/home/philipp# scanimage
[sanei_debug] Setting debug level of genesys to 255.
[genesys] SANE Genesys backend version 1.0 build 2 from sane-backends 1.0.15
[genesys] sane_init: authorize != null
[sanei_debug] Setting debug level of sanei_usb to 128.
[sanei_usb] sanei_usb_init: couldn't open /dev/usb/scanner0: No such device
[sanei_usb] sanei_usb_init: couldn't open /dev/usb/scanner1: No such device

...

[genesys] sane_init: config file line 22: trying to attach `usb 0x0461 
0x0377'
[sanei_usb] sanei_usb_find_devices: vendor=0x0461, product=0x0377
[genesys] sane_init: exit
[genesys] sane_get_devices: start: local_only = false
  sane_get_devices: num_devices = 1
[genesys] sane_get_devices: exit
[genesys] sane_open: start (devicename = `libusb:003:002')
[genesys] sane_open: found `canon-lide-50' in devlist
[genesys] WARNING: Your scanner is not fully supported or at least
[genesys]          had only limited testing. Please be careful and
[genesys]          report any failure/success to
[genesys]          henning@meier-geinitz.de. Please provide as many
[genesys]          details as possible, e.g. the exact name of your
[genesys]          scanner and what does (not) work.
[sanei_usb] sanei_usb_open: trying to open device `libusb:003:002'
[sanei_usb] sanei_usb_open: found bulk-in endpoint (address 1)
[sanei_usb] sanei_usb_open: we already have a bulk-in endpoint (address: 
129), ignoring the new one
[sanei_usb] sanei_usb_open: found bulk-out endpoint (address 2)
[sanei_usb] sanei_usb_open: we already have a bulk-out endpoint 
(address: 2), ignoring the new one
[sanei_usb] sanei_usb_open: found interupt-in endpoint (address 3)
[sanei_usb] sanei_usb_open: we already have a int-in endpoint (address: 
131), ignoring the new one
[sanei_usb] sanei_usb_open: opened usb device `libusb:003:002' (*dn=0)
[genesys] init_options: start
[genesys] init_options: exit
[genesys] genesys_init
[genesys] genesys_init_registers
[genesys] genesys_create_slope_table: 8 steps, step_type = 0, 
exposure_time = 250, same_speed =0
[genesys] genesys_create_slope_table: yres = 600.00
[genesys] slope_table[0] = 1
[genesys] slope_table[1] = 1
[genesys] slope_table[2] = 1
[genesys] slope_table[3] = 1
[genesys] slope_table[4] = 55
[genesys] slope_table[5] = 82
[genesys] slope_table[6] = 105
[genesys] slope_table[7] = 125
[genesys] genesys_create_slope_table: returns sum_time=371, completed
[genesys] genesys_create_slope_table: 255 steps, step_type = 1, 
exposure_time = 250, same_speed =0
[genesys] genesys_create_slope_table: yres = 600.00
[genesys] slope_table[0] = 0

...

[genesys] slope_table[254] = 62
[genesys] genesys_create_slope_table: returns sum_time=9767, completed
[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] genesys_write_register (0x0e, 0x00) completed
[genesys] genesys_bulk_write_register (size = 162)
[sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 130, 
index = 0, len = 8
[sanei_usb] 0000: 01 11 00 00 A2 00 00 00                         
................
[sanei_usb] sanei_usb_write_bulk: trying to write 162 bytes
[sanei_usb] 0000: 01 20 02 30 03 1F 04 13 05 40 06 18 07 00 08 01 . 
.0.....@......
[sanei_usb] 0010: 09 03 0A 05 0B 07 10 00 11 00 12 00 13 00 14 00 
................
[sanei_usb] 0020: 15 00 16 33 17 05 18 31 19 2A 1A 00 1B 00 1C 00 
...3...1.*......
[sanei_usb] 0030: 1D 02 1E F0 1F 01 20 10 21 08 22 10 23 10 24 08 ...... 
.!.".#.$.
[sanei_usb] 0040: 25 00 26 00 27 D4 28 01 29 FF 2C 02 2D 58 2E 6E 
%.&.'.(.).,.-X.n
[sanei_usb] 0050: 2F 6E 30 00 31 40 32 2A 33 F8 34 40 35 01 36 00 
/n0.1@2*3.4@5.6.
[sanei_usb] 0060: 37 00 38 2A 39 F8 3D 00 3E 00 3F 01 52 13 53 17 
7.8*9.=.>.?.R.S.
[sanei_usb] 0070: 54 03 55 07 56 0B 57 0F 58 23 59 00 5A C1 5B 00 
T.U.V.W.X#Y.Z.[.
[sanei_usb] 0080: 5C 00 5D 00 5E 00 60 00 61 00 62 00 63 00 64 00 
\.].^.`.a.b.c.d.
[sanei_usb] 0090: 65 00 66 11 67 00 68 51 69 20 6A 40 6B FF 6C 00 
e.f.g.hQi j@k.l.
[sanei_usb] 00A0: 6D 01                                           
m...............
[sanei_usb] sanei_usb_write_bulk: wanted 162 bytes, wrote 162 bytes
[genesys] reg[0x01] = 0x20
[genesys] reg[0x02] = 0x30

...

[genesys] reg[0x6a] = 0x40
[genesys] reg[0x6b] = 0xff
[genesys] reg[0x6c] = 0x00
[genesys] reg[0x6d] = 0x01
[genesys] genesys_bulk_write_register: wrote 162 bytes
[genesys] genesys_set_fe (init)
[genesys] genesys_set_fe(): setting DAC 0
[genesys] genesys_fe_write_data (0x04, 0x0080)
[genesys] genesys_bulk_write_register (size = 6)
[sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 130, 
index = 0, len = 8
[sanei_usb] 0000: 01 11 00 00 06 00 00 00                         
................
[sanei_usb] sanei_usb_write_bulk: trying to write 6 bytes
[sanei_usb] 0000: 51 04 3A 00 3B 80                               
Q.:.;...........
[sanei_usb] sanei_usb_write_bulk: wanted 6 bytes, wrote 6 bytes
[genesys] reg[0x51] = 0x04
[genesys] reg[0x3a] = 0x00
[genesys] reg[0x3b] = 0x80
[genesys] genesys_bulk_write_register: wrote 6 bytes
[genesys] genesys_fe_write_data: completed
[genesys] genesys_fe_write_data (0x00, 0x0000)
[genesys] genesys_bulk_write_register (size = 6)
[sanei_usb] sanei_usb_control_msg: rtype = 0x40, req = 4, value = 130, 
index = 0, len = 8
[sanei_usb] 0000: 01 11 00 00 06 00 00 00                         
................
[sanei_usb] sanei_usb_write_bulk: trying to write 6 bytes
[sanei_usb] 0000: 51 00 3A 00 3B 00                               
Q.:.;...........
USB error: error writing to bulk endpoint 2: Connection timed out
[sanei_usb] sanei_usb_write_bulk: write failed: Connection timed out
[genesys] genesys_bulk_write_register: failed while writing bulk data: 
Error during device I/O
[genesys] genesys_fe_write_data: Failed while bulk writing registers: 
Error during device I/O
[genesys] genesys_set_fe: writing reg0 failed: Error during device I/O
scanimage: open of device genesys:libusb:003:002 failed: Error during 
device I/O
[genesys] sane_exit: start
[genesys] sane_exit: exit
amd2800:/home/philipp#


After scanimage I've got an entry in /var/log/messages:


Apr  8 08:41:05 localhost kernel: usb 3-4: bulk timeout on ep2out
Apr  8 08:41:05 localhost kernel: usb 3-4: usbfs: USBDEVFS_BULK failed 
ep 0x2 len 162 ret -110

I think the second message is from drivers/usb/core/devio.c in the linux 
kernel source tree
(I am using version 2.6.9):

    kfree(tbuf);
    if (i < 0) {
        dev_warn(&dev->dev, "usbfs: USBDEVFS_BULK failed "
             "ep 0x%x len %u ret %d\n", bulk.ep, bulk.len, i);
        return i;
    }
    return len2;

I don't know what to do to prevent this IO-error.

Thanks for helping

    Philipp