Help getting Canon LiDE 30 USB scanner to work
Vincent Stemen
vince.dragonfly at hightek.org
Tue Jun 10 20:57:20 PDT 2008
New information:
It still does not work, but I appear to be a step closer.
I compiled a new kernel without uscanner. Same result as before with or
without uscanner.ko loaded.
Compiled and installed a new libusb-0.1.12nb2 package from pkgsrc.
Same result.
Compiled and installed a new sane-backends-1.0.18 package from pkgsrc.
Now it recognizes the scanner
# scanimage -L
device `plustek:libusb:/dev/usb1:/dev/ugen0' is a Canon N1240U/LiDE30
USB flatbed scanner
However, it always thinks the device is busy.
# scanimage > zzz.pnm
scanimage: sane_start: Device busy
Here is the strange thing.
I uninstalled the new sane-backends and re-installed the original
package to confirm if the original one was linked with libusb. It was.
However, now the original package also sees the scanner with "scanimage
-L". Before installing the new one I compiled, scanimage would never
see the scanner at all. Both packages now always think the device is
busy though, so it still does not work.
I traced it with truss. It successfully opened /dev/usb[0-3].
It also had several successful opens of /dev/ugen0, getting a busy
status on the final open. Here is the truss output relating to
/dev/ugen0.
===========================================================
open("/dev/ugen0",0x0,00) = 6 (0x6)
fcntl(0x6,0x3,0x0) = 0 (0x0)
ioctl(6,USB_GET_DEVICE_DESC,0xbfbfe0d0) = 0 (0x0)
fstat(6,0xbfbfdfc0) = 0 (0x0)
fcntl(0x6,0x3,0x0) = 0 (0x0)
fcntl(0x6,0x4,0x0) = 0 (0x0)
close(6) = 0 (0x0)
. ..
open("/dev/ugen0",0x2,00) = 3 (0x3)
fcntl(0x3,0x3,0x0) = 2 (0x2)
ioctl(3,USB_SET_TIMEOUT,0xbfbfe1cc) = 0 (0x0)
ioctl(3,USB_DO_REQUEST,0xbfbfe170) = 0 (0x0)
ioctl(3,USB_SET_TIMEOUT,0xbfbfe1cc) = 0 (0x0)
ioctl(3,USB_DO_REQUEST,0xbfbfe170) = 0 (0x0)
fstat(3,0xbfbfe1a0) = 0 (0x0)
fcntl(0x3,0x3,0x0) = 2 (0x2)
fcntl(0x3,0x4,0x2) = 0 (0x0)
close(3) = 0 (0x0)
. ..
open("/dev/ugen0",0x2,00) = 3 (0x3)
fcntl(0x3,0x3,0x0) = 2 (0x2)
ioctl(3,USB_SET_CONFIG,0xbfbfdf74) = 0 (0x0)
open("/dev/ugen0.3",0x2,00) ERR#6 'Device not
configured'
open("/dev/ugen0.3",0x1,00) = 6 (0x6)
fcntl(0x6,0x3,0x0) = 1 (0x1)
ioctl(6,USB_SET_TIMEOUT,0xbfbfde40) = 0 (0x0)
extpwrite(0x6,0xbfbfdea8,0x4,0x80000,0xffffffff,0xffffffff) = 4 (0x4)
open("/dev/ugen0.2",0x2,00) ERR#6 'Device not
configured'
open("/dev/ugen0.2",0x0,00) = 7 (0x7)
fcntl(0x7,0x3,0x0) = 0 (0x0)
. ..
Then it does a bunch of ioctl's on file descriptors 6 and 7.
. ..
fstat(7,0xbfbfe160) = 0 (0x0)
fcntl(0x7,0x3,0x0) = 0 (0x0)
fcntl(0x7,0x4,0x0) = 0 (0x0)
close(7) = 0 (0x0)
fstat(6,0xbfbfe160) = 0 (0x0)
fcntl(0x6,0x3,0x0) = 1 (0x1)
fcntl(0x6,0x4,0x1) = 0 (0x0)
close(6) = 0 (0x0)
fstat(3,0xbfbfe160) = 0 (0x0)
fcntl(0x3,0x3,0x0) = 2 (0x2)
fcntl(0x3,0x4,0x2) = 0 (0x0)
close(3) = 0 (0x0)
. ..
open("/usr/pkg/etc/sane.d/genesys.conf",0x0,00) = 3 (0x3)
fcntl(0x3,0x3,0x0) = 0 (0x0)
fstat(3,0xbfbfe6a0) = 0 (0x0)
extpread(0x3,0x2827e000,0x4000,0x80000,0xffffffff,0xffffffff) = 624
(0x270)
open("/dev/ugen0",0x2,00) = 6 (0x6)ff) = 624
(0x270)
fcntl(0x6,0x3,0x0) = 2 (0x2)
ioctl(6,USB_SET_CONFIG,0xbfbfe664) = 0 (0x0)
extpread(0x3,0x2827e000,0x4000,0x80000,0xffffffff,0xffffffff) = 0 (0x0)
fstat(3,0xbfbfe730) = 0 (0x0)ff) = 0 (0x0)
fcntl(0x3,0x3,0x0) = 0 (0x0)
fcntl(0x3,0x4,0x0) = 0 (0x0)
close(3) = 0 (0x0)
. ..
*******
This appears to be where the problem is. The last open used fd #6 but
I never saw a close(6) before trying to open "/dev/ugen0 again below.
*******
. ..
open("/usr/pkg/var/lock/sane/LCK..libusb:_dev_usb1:_dev_ugen0",0xa01,0644) = 3 (0x3)
fcntl(0x3,0x3,0x0) = 1 (0x1)
getpid() = 5531 (0x159b)
extpwrite(0x3,0xbfbfe240,0x11,0x80000,0xffffffff,0xffffffff) = 17 (0x11)
fstat(3,0xbfbfe180) = 0 (0x0)
fcntl(0x3,0x3,0x0) = 1 (0x1)
fcntl(0x3,0x4,0x1) = 0 (0x0)
close(3) = 0 (0x0)
open("/dev/ugen0",0x2,00) ERR#16 'Device busy'
open("/dev/ugen0",0x0,00) ERR#16 'Device busy'
. ..
open("/dev/ugen0",0x2,00) ERR#16 'Device busy'
open("/dev/ugen0",0x0,00) ERR#16 'Device busy'
unlink(0xbfbfe4e0) = 0 (0x0)
scanimage: sane_start: Device busy
extpwrite(0x2,0xbfbfe200,0x23,0x80000,0xffffffff,0xffffffff) = 35 (0x23)
fstat(1,0xbfbfec20) = 0 (0x0)
fcntl(0x1,0x3,0x0) = 1 (0x1)
fcntl(0x1,0x4,0x1) = 0 (0x0)
close(1) = 0 (0x0)
. ..
===========================================================
Am I on the right track? Does this look like a potential Dragonfly
problem or a libusb problem?
More information about the Users
mailing list