[sane-devel] canon630u 'Device busy' - Sane 1.0.9, Xsane 0.90, Mandrake 9.0

Henning Meier-Geinitz henning@meier-geinitz.de
Tue, 7 Jan 2003 11:36:00 +0100


Hi,

On Tue, Jan 07, 2003 at 04:10:42PM +1000, Andrew Kovacs wrote:
> Whenever I try to use my Canon FB630 USB scanner, with either scanimage or
> xsane, it returns a 'Device busy' message.

I'm not a canon expert...

[...]

> Edit the canon630u.conf backend to include both:
> 
> usb vendor=0x04a9 product=0x2204
> /dev/usb/scanner0

User only one of these two lines. The usb line should be enough for
kernels later than 2.4.12. And the format for the first one is:
usb 0x04a9 0x2204

See man sane-usb, man sane-canon630u.

> I have checked my scanner permissions to ensure that I get crw-rw-rw for
> /dev/usb/scanner0, and this is correct.
> A clue to the problem may be that every time I boot up, the system changes
> this back to crw-------.  I don't know where this is set.

That's because your system uses the device file system (devfs). Check
your distribution's manual on how to set up permissions for devfs.

> I have provided the following file listings and command outputs, as I have
> noticed that these are the most requested information by those 'in the know'
> (and that's definitely not me!).

Thanks. That's a good bug report.

> This is my existing canon630u.conf file.
> [root@localhost root]# cat /usr/local/etc/sane.d/canon630u.conf
> # Options for the canonusb backend
> 
> # Autodetect the Canon CanoScan FB630u
> usb 0x04a9 0x2204
> 
> # device list for non-linux-systems (enable if autodetect fails):
> #/dev/scanner
> /dev/usb/scanner0

Looks good for me. As I mentioned, the usb line alone should work. And
in fact it does, otherwise your scanner wouldn't be detected by
scanimage -L at all.

> T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  3 Spd=12  MxCh= 0
> D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
> P:  Vendor=04a9 ProdID=2204 Rev= 0.01
> S:  Product=CanoScan FB630U
> C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=500mA
> I:  If#= 0 Alt= 0 #EPs= 2 Cls=10(unk. ) Sub=01 Prot=00 Driver=usbscanner
> E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
> E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

Looks ok.

> The output of various scanimage commands.
  
> [root@localhost root]# SANE_DEBUG_CANON630U=255 scanimage -d canon630u:/dev/usb/scanner0
[...]

> [canon630u] sane_start
> [canon630u] CANON_set_scan_parameters:
> [canon630u] gray  = 0 (ignored)
> [canon630u] res   = 75
> [canon630u] gain  = 1
> [canon630u] in 600dpi pixels:
> [canon630u] left  = 0, top    = 0
> [canon630u] right = 1199, bottom = 1199
> [canon630u] CANON_start_scan called
> [canon630u] write_byte(fd, 0x42, 0x06);
> [canon630u] write_byte(fd, 0x0b, 0x0d);
> [canon630u] write_byte(fd, 0x0c, 0x4c);
> [canon630u] write_byte(fd, 0x0d, 0x2f);
> [canon630u] read_byte(fd, 0x0b, &result); /* got 0d */
> [canon630u] read_byte(fd, 0x0c, &result); /* got 4c */
> [canon630u] read_byte(fd, 0x0d, &result); /* got 2f */
> [canon630u] write_byte(fd, 0x70, 0x73);
> [canon630u] init: 5
> [canon630u] read_byte(fd, 0x02, &result); /* got 20 */

Looks like the backend expects a different answer from the scanner
here. But that's a question for the canon630u backend author (Nathan
Rutman <nathan@gordian.com>).

Bye,
  Henning