[sane-devel] MP730 driver broken since pixma-0.12.2

Nicolas Martin nicolas.martin at freesurf.fr
Sat Apr 18 16:57:09 UTC 2009


Wade, 

As far as I can see, you are experiencing a usb interrupt transfer
issue, same kind as happened to other people when running the pixma
backend on an ASUS router or also on MAC OS X. 

What is important to know is that the pixma backend - and this is due to
Canon's PIXMA devices - make use of both usb Bulk read/write transfers,
and also of usb Interrupt read transfers. 

It is compulsory that usb interrupt read transfers fully work to operate
the pixma backend, as the scanner (and more especially older PIXMA
devices, like MP730) uses those transfer to exchange :
- status information
- time request
- button scan information

Today's PIXMA devices (that uses a generation 3 protocol) uses both, but
can work without interrupt read ; in this case, only button scan will be
disabled, but the scanner can be entirely driven with Bulk transfers.
This is not the case for MP730, a generation 2 protocol device, which
requires usb interrupt read transfers to be operated.

There's a difference also between the usb lib used by Sane, and the one
used in the pixma Standalone driver. Sane uses libusb, based on ioctl
calls to the kernel to execute usb transfers, while standalone driver
uses usbdevfs.

In order to help you and step further, could you tell us which Linux
distribution (and version) you are running ?

$ uname -a

As I told before, this kind of issue was due on MAC OS X to the darwin
libusb port, not handling timeouts in interrupt reads, and for the ASUS
router, use of a (very) old kernel 2.4.20 version, known to be buggy for
usb interrupt reads.

Nicolas


Le samedi 18 avril 2009 à 09:01 +1000, Wade Fitzpatrick a écrit :
> I have updated my findings at
> http://waddles.org/content/sane-canon-mp730-driver
> 
> Can someone suggest the next place to start work?
> 
> Thanks,
> Wade.
> 
> 2009/4/4 Nicolas Martin <nicolas.martin at freesurf.fr>
>         Sorry, posted answer in wrong thread.
>         
>         As far as I can see in the differences between older versions
>         of the
>         pixma standalone driver and today's, concerning usb exchanges
>         for MP730,
>         the older drivers did not use events polling whereas newer do
>         with usb
>         interrupt reads.
>         
>         First, did you try to remove the PIXMA_CAP_EVENTS flag for the
>         pixma 730
>         declaration (at the botom of file pixma_mp730.c) and see how
>         it
>         behaves ?
>         
>         I will also send you some modified files for the pixma backend
>         to
>         investigate why this usb low level error appears.
>         
>         Nicolas
>         
>         Le vendredi 03 avril 2009 à 03:14 +1100, Wade Fitzpatrick a
>         écrit :
>         
>         > Can you take a look at the logs on
>         > http://waddles.org/content/sane-canon-mp730-driver and tell
>         me if you
>         > think I'm on the right track with the endpoints?
>         >
>         > I CBF re-installing Windows, but I did test a successful
>         scan with
>         > mp150-0.12.2 followed immediately by a try with pixma-0.15.0
>         but it
>         > failed so I doubt it has anything to do with power-saving
>         modes.
>         >
>         > Thanks,
>         > Wade.
>         >
>         > 2009/3/21 Nicolas Martin <nicolas.martin at freesurf.fr>
>         >         Seems confirmed that a usb low level error happens
>         on first
>         >         write
>         >         attempt:
>         >
>         >         [sanei_usb] sanei_usb_write_bulk: trying to write 10
>         bytes
>         >         [sanei_usb] 000 F3 20 00 00 00 00 00 00 0C
>         >         00                   . ........
>         >         USB error: error submitting URB: Device or resource
>         busy
>         >         [sanei_usb] sanei_usb_write_bulk: write failed:
>         Device or
>         >         resource busy
>         >         USB error: could not clear/halt ep 1: Device or
>         resource busy
>         >
>         >         [pixma] WARNING:pixma_write(): count(0) != len(10)
>         >
>         >
>         >         I remember having seen this before for someone else,
>         this
>         >         happened when
>         >         the usb port was going to power saving (generally
>         after a few
>         >         seconds)
>         >
>         >         Could it be the case on system ?
>         >
>         >         Nicolas
>         >
>         >
>         
>         
>         
> 





More information about the sane-devel mailing list