[sane-devel] SANE not working with Canon Canoscan LiDE N676U

  lszkclek at yahoo.com
Mon Mar 9 19:30:21 UTC 2015

Greetings. I hope someone can help me with this problem. Basically 
sane-find-scanner always detects the scanner but scanimage -L almost 
always responds with No devices found, and running these as regular user 
or as root yields the same result.

I have sane-backends vesion 1.0.24-2.1.10 on openSUSE 13.2 (Linux 
version 3.16.7-7-desktop). I've read all the relevant man pages I could 
find, and read on various forums about other people having similar 
problems and I tried solutions posted and nothing has solved the problem.

This is what happens:

Running sane-find-scanner reports "found USB scanner (vendor=0x04a9 
[Canon], product=0x220d [CanoScan]) at libusb:003:005". If I don't run 
it as root, it still says that but also says could not open USB device 
... at ... Access denied (insufficient permissions)" several times for 
all the USB ports.

Almost every time I run "scanimage -L" it reports "No scanners were 

However, running "scanimage -L" occasionally reports "device 
`plustek:libusb:003:005' is a Canon CanoScan N670U/N676U/LiDE20 flatbed 
scanner" however, it often takes several minutes to get to that point; 
it just seems to sit for a long time, then sits for a while longer after 
the message. This usually only happens once until I reboot.

When running YaST scanner configuration it shows "Not configured: Canon 
CanoScan USB scanner (vendor=0x04a9 [Canon], product=0x220d [CanoScan]) 
at libusb:003:005" and "plustek No scanner recognized by this driver".

A couple of times I was able to get skanlite to work (if scanimage found 
the scanner), and it will scan a preview image. But if I try anything 
after that, such as scanning a full image, skanlite freezes and leaves 
the scanner lamp on. After that happens, "scanimage -L" will say "No 
scanners were identified."

This is how my config files are setup:

In /etc/sane.d/dll.conf all backends are prefixed with '#' except for 

In /etc/sane.d/plustek.conf I have the line "[usb] 0x04a9 0x220d" and 
the line "device auto".

Here's what I've tried.

I have both USB2 and USB3 ports on my computer. I've tried every USB 
port, both USB2 and USB3. I get the same results with all of them. All 
other USB devices work without problems, e.g. mouse, keyboard, USB flash 
drive, and webcam. The BIOS setup has options for legacy OS USB support, 
which I've tried setting to enabled, disabled, auto, and UEFI only mode. 
There's also an option for USB "compatibility patch" which I've tried 
enabling and disabling. None of those seem to make a difference. The 
scanner is plugged directly into the computer.

I have an older computer that runs Microsoft Windows 2000 Professional 
with the Canon scanner drivers and the Scangear tool box software that 
comes with the scanner. The scanner works just fine on that computer and 
has for years. I noticed that when I plug the scanner into that wintel 
box, it initializes as soon as I plug it in: the carriage moves 
slightly, the lamp illuminates white, then after a couple of seconds, 
the carriage moves back to the home position and the lamp turns off. The 
scanner does nothing when I plug it into the computer running Linux.

I've tried running all the commands as root, and I get the same results.

When running scanimage in debugging mode, all the messages look normal 
to me except for the following:

[sanei_usb] sanei_usb_read_bulk: trying to read 1 bytes
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms 
(first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with 
length 1
libusb: debug [libusb_handle_events_timeout_completed] doing our own 
event handling
libusb: debug [handle_events] poll() 4 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [handle_events] timerfd triggered
libusb: debug [libusb_cancel_transfer]
libusb: debug [disarm_timerfd]
libusb: debug [handle_events] poll() 4 fds with timeout in 0ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=-2 transferred=0
libusb: debug [handle_bulk_completion] handling completion status -2 of 
bulk urb 1/1
libusb: debug [handle_bulk_completion] abnormal reap: urb status -2
libusb: debug [handle_bulk_completion] abnormal reap: last URB handled, 
libusb: debug [usbi_handle_transfer_cancellation] detected timeout 
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0x20dfe60 has 
callback 0x7fe88ba325f0
libusb: debug [sync_transfer_cb] actual_length=0
[sanei_usb] sanei_usb_read_bulk: read failed: Operation timed out
libusb: debug [libusb_clear_halt] endpoint 82
[plustek]  * could not read version register!
[sanei_usb] sanei_usb_close: closing device 0
libusb: debug [libusb_release_interface] interface 0
libusb: debug [libusb_close]
libusb: debug [usbi_remove_pollfd] remove fd 11
[plustek] open failed: -1
[dll] init: backend `plustek' is version 1.0.0
[plustek] sane_get_devices (0x7fffc99960a8, 0)
[dll] sane_get_devices: found 0 devices
[dll] sane_exit: exiting
[dll] sane_exit: calling backend `plustek's exit function
[plustek] sane_exit
[dll] sane_exit: finished

I also see in the output "libusb: error [_get_usbfs_fd] libusb requires 
write access to USB device nodes." and I tried changing permissions on 
the USB nodes, but that didn't change anything.

Some people have mentioned issues with XHCI and suggest using EHCI 
instead, but I'm unable to affect that apparently with trying both USB2 
and USB3 ports and changing the BIOS settings I mentioned earlier. I 
have no BIOS option for disabling XHCI as some motherboards have. Also, 
some people mentioned a companion controller in the USB interface, and I 
think these USB controllers have them, but I'm not sure how to use them. 
The errors from libusb suggest to me USB issues so that is why I've been 
exploring these options, but I might be barking up the wrong tree.

I'm at a total loss at this point so I hope someone has some good ideas.

More information about the sane-devel mailing list