Comment 200 for bug 85488

Revision history for this message
Nicolas M (nicolas-martin-gmail) wrote :

Well, I'm now able to run correctly my Canon N650U with xsane although it was not working at all in Feisty, even when trying with scanbuttond. Everything works, preview, scan, calibration, and return of the lamp back to stop position.
Here are the few steps I've done for that.

- I've noticed that if you try a scan with xsane only (no scanbuttond running) and then kill xsane to exit, udev becomes unstable.
At that point, using next scanbuttond with xsane _does not_ work also. I needed to restart udev (sudo invoke-rc.d udev stop / sudo invoke-rc.d udev start) or better : reboot the computer
=> So first point: a clean udev freshly running and not hung by a previous xsane crash scan.

- I've then used udol's idea and played with scanbuttond parameters. This did the trick.
However, udol's tweaks made the CPU go to 100% load. So I checked a little bit deeper the scanbuttond parameters
In fact, the -p and -r parameters are expressed in microseconds, not milliseconds. That's why the default settings use large numbers. This gives default 333 millisec for polling and 2 sec for retry. This last figure is a little bit high, compared to the USB_SUSPEND timeout. That's makes the scan lamp not return completly back after the scan.
After a few tweaks, I've used the following scanbuttond command, changing the retry delay to 1sec:
$ scanbuttond -r 1000000
With this tweak, xsane runs perfectly with my CanoScan N650U.
=> At least, I can now wait for a Feisty fix.

- I've just thrown the following in a small script to run my scanner now:
scanbuttond -r 1000000
xsane
killall scanbuttond

- scanbuttond polling can be checked with:
$ sudo udevmonitor -e
You should see udev events when the scanner is plugged in and scanbuttond running.