Have to agree with Wade here. sanei_usb selects a config and
interface, then loops thru all configs and interfaces, and pulls out
endpoints. That's just broken, and it's not only affecting this
machine. We'll re-write sanei_usb after the release.
I'll start a new thread at that time.

allan

On Sat, Apr 25, 2009 at 8:14 AM, Wade Fitzpatrick
<wade.fitzpatrick at gmail.com> wrote:
> Nicolas
>
> My latest testing was on kernel 2.6.27-gentoo-r8. I don't see why a
> different kernel version would change the interface/endpoint numbering
> anyway - surely that is hardware specific to the MP730. I have the latest
> version of everything: kernel 2.6.27-gentoo-r8, libusb-0.1.12-r5, sane
> backends 1.0.20cvs. It's not a version problem, the MP730 has *never* worked
> using libsane. It worked enough to do scans using Wittawat Yamwong's
> ``scan'' utility until pixma-0.12.1 but never using libsane. We just never
> got that far in testing it back then.
>
> Ubuntu users also complained about it but obviously never bothered to ask on
> sane-devel.
> http://ubuntuforums.org/showthread.php?t=592643&highlight=mp730
> http://ubuntuforums.org/showthread.php?t=962535&highlight=mp730
>
> I didn't mean to suggest that the patch I have is ready for inclusion in
> CVS, only that it should apply to current if somebody wants to use it for
> testing. I'm well aware that fixing this properly will mean a significant
> rewrite of sanei/sanei_usb.c and will probably touch most if not all backend
> drivers if you solve it the way I would, which is to specify the requisite
> interfaces and endpoints in the [backend]_config_t structure and pass that
> into sanei_usb code.
>
> Let's take the remaining problems into another thread.
>
> Cheers,
> Wade.
>
> 2009/4/25 Nicolas Martin <nicolas.martin at freesurf.fr>
>>
>> Hi Wade,
>>
>> Sorry if act sometimes like "guardians of the temple", but we need to be
>> very accurate on the changes we make into the code, as there are lots of
>> shared code in Sane backends (especially pixma) and libs.
>>
>> - So for points 1 and 2: we can close those.
>>
>> - Point 3: this is still to investigate, as we must be sure this
>> endpoint issue is not brought by kernel 2.6.18-ck1 (BTW, do you know
>> what does the -ck1 bring ?). This ck kernel is dated sept-2006 (on
>> kernel.org), and after googling a little bit "2.6.18 usb endpoints" it
>> looks like there are some issues around that...
>> My suggestion would still be to test with a recent kernel, with which we
>> are sure Sane and endpoints work fine (recent Ubuntu distros can help a
>> lot for that) and check if we can reproduce your endpoints issue.
>> My fear here is not to introduce into the Sane code, some turnarounds
>> and tweaks only for specific kernels, buggy on usb.
>>
>> Concerning points 1 and 2 you raise, this is interesting:
>>
>> The pixma_mp730.c file has been left almost untouched for a while (no
>> requests or testing ability so far), so it may be in a less "enhanced"
>> state than other ones covering more recent Pixma models, that have been
>> recently updated.
>> Dennis Lou wrote a while back the pixma_imageclass.c file, based on the
>> pixma_mp730.c file, and which covers several Canon ImageClass models in
>> the pixma backend. The code has been nicely brushed up, and is now in a
>> better shape than mp730's one.
>> So for the 2 issues you raise, I'll take a look and compare the
>> pixma_mp730.c code with pixma_imageclass.c and pixma_mp150.c , probably
>> will help a lot to solve those issues, thanks to your cooperation for
>> testing and feedback.
>>
>> Nicolas
>>
>>
>> Le vendredi 24 avril 2009 ? 01:19 +1000, Wade Fitzpatrick a ?crit :
>> > Hi Nicolas
>> >
>> > Thanks for reviewing my patches. I have to agree with you... too many
>> > late nights... must be coding in my sleep...
>> > ? ? ?1. I had the PIXMA_CAP_EVENTS flag removed at some stage as
>> > ? ? ? ? that's what got the driver working again between pixma-0.12.1
>> > ? ? ? ? and pixma-0.12.2. It doesn't seem to make any difference now
>> > ? ? ? ? and I can't explain why so just ignore it. I don't think the
>> > ? ? ? ? resolution and maximum scan area parameters are correct but
>> > ? ? ? ? that's an issue for another day.
>> > ? ? ?2. I don't remember adding that line but I guess I must have. It
>> > ? ? ? ? may have been an accidental 'p' in vim. Ignore this one too.
>> > ? ? ?3. I checked out a fresh new cvs today and applied just the lines
>> > ? ? ? ? you pasted below to sanei/sanei_usb.c - it works just fine
>> > ? ? ? ? with that change alone. I ran through about 30 successful
>> > ? ? ? ? tests too: using ADF, button-controlled, ADF
>> > ? ? ? ? +button-controlled, Gray, Color and at various resolutions and
>> > ? ? ? ? geometries on and off the platen glass, pressing Cancel during
>> > ? ? ? ? a scan, pressing Ctrl-C during a scan, jamming the paper in
>> > ? ? ? ? the ADF, batch scans etc.
>> > The only problems I can find now are:
>> > ? ? ?1. Scanning at 1200dpi Grayscale. Sometimes it hangs depending on
>> > ? ? ? ? the x and y values - the larger the values, the sooner it
>> > ? ? ? ? fails. If it does succeed, the data is always bogus.
>> > ? ? ?2. The return code after a successful scan is always ECANCELED
>> > ? ? ? ? which causes a problem for batch mode as it will only scan one
>> > ? ? ? ? page. It doesn't seem to matter for single scans.
>> > Does this hold true for other models too?
>> > Does batch mode succeed on other models with ADF?
>> >
>> > I can't believe I've spent so much time on such a trivial change :(
>> >
>> > Regards,
>> > Wade.
>> > 2009/4/23 Nicolas <nicolas0martin at gmail.com>
>> > ? ? ? ? Hi Wade,
>> >
>> > ? ? ? ? Good news that you succeeded in having your MP730 work after
>> > ? ? ? ? 2,5 years !
>> >
>> > ? ? ? ? I did carefully inspect the small changes you have done to the
>> > ? ? ? ? pixma backend, but there are some points I don't understand
>> > ? ? ? ? clearly, or maybe I've missed sthg, but you can surely give us
>> > ? ? ? ? some more info here:
>> >
>> > ? ? ? ? 1/ File backend/pixma_mp730.c
>> >
>> > ? ? ? ? I don't understand the change you've brought here individually
>> > ? ? ? ? for each device, the line that you replaced for MP730:
>> >
>> > ? ? ? ? - ?DEVICE ("Canon MultiPASS MP730", "MP730", MP730_PID, 1200,
>> > ? ? ? ? 637, 868, PIXMA_CAP_ADF),
>> > ? ? ? ? + ?DEVICE ("Canon MultiPASS MP730", "MP730", MP730_PID, 1200,
>> > ? ? ? ? 637, 868, PIXMA_CAP_ADF|PIXMA_CAP_EVENTS),
>> >
>> > ? ? ? ? has exactly the same effect than the original one in the
>> > ? ? ? ? device definition:
>> > ? ? ? ? - ? ? ? ?PIXMA_CAP_GRAY|PIXMA_CAP_EVENTS|cap ? ? ? ? ? \
>> > ? ? ? ? + ? ? ? ? ? ? ?PIXMA_CAP_GRAY|cap /* capabilities */
>> > ? ? ? ? ?\
>> >
>> > ? ? ? ? Here, you move the PIXMA_CAP_EVENTS flag from the global
>> > ? ? ? ? device definition to the individual definition of each device.
>> >
>> > ? ? ? ? - For MP730, this looks to have the same effect, or where is
>> > ? ? ? ? the difference ?
>> > ? ? ? ? - But this changes the definition for all other devices here,
>> > ? ? ? ? and I would not like to bring here any regression to other
>> > ? ? ? ? devices.
>> >
>> > ? ? ? ? So: could you give the motivation for this modification here ?
>> >
>> > ? ? ? ? 2/ file pixma_io_sanei.c
>> >
>> > ? ? ? ? The only diff I see here adds a PDBG debug statement:
>> > ? ? ? ? + PDBG (pixma_dbg (3, "sanei_usb_read_bulk returned error
>> > ? ? ? ? code: %i\n", error));
>> >
>> > ? ? ? ? The other line is a commented line:
>> >
>> > ? ? ? ? + ? ? ?/*error = pixma_map_status_errno (pixma_get_be16
>> > ? ? ? ? (buf)); */
>> >
>> > ? ? ? ? And I don't understand the comment you added:
>> > ? ? ? ? "The call to |pixma_map_status_errno() in |
>> > ? ? ? ? backend/pixma_io_sane.c:pixma_read()
>> > ? ? ? ? is in the wrong place as |pixma_read() may be re-entrant so as
>> > ? ? ? ? to read a partial buffer."
>> >
>> > ? ? ? ? - There are _no_ calls to |pixma_map_status_errno() in current
>> > ? ? ? ? cvs ||pixma_read()
>> > ? ? ? ? The one here is added as part of you modifications, but is
>> > ? ? ? ? commented out.
>> > ? ? ? ? - This part of the pixma code is common to all pixma devices
>> > ? ? ? ? - The modifications you added here do not bring any functional
>> > ? ? ? ? change.
>> >
>> > ? ? ? ? So one again, what are those changes for ?
>> >
>> > ? ? ? ? 3/ File sanei_usb.c
>> >
>> > ? ? ? ? This is the only file where modifications appear to have a
>> > ? ? ? ? functional impact:
>> > ? ? ? ? |+ ? ? ? ? ? ? ? ? /* don't try to read non-scanner device
>> > ? ? ? ? classes */
>> > ? ? ? ? + ? ? ? ? ? ? ? ? if (interface->bInterfaceClass == 0x07) {
>> > ? ? ? ? + ? ? ? ? ? ? ? ? ? DBG (3, "sanei_usb_open: skipping Printer
>> > ? ? ? ? interface\n");
>> > ? ? ? ? + ? ? ? ? ? ? ? ? ? continue;
>> > ? ? ? ? + ? ? ? ? ? ? ? ? }
>> > ? ? ? ? + ? ? ? ? ? ? ? ? if (interface->bInterfaceClass == 0x08) {
>> > ? ? ? ? + ? ? ? ? ? ? ? ? ? DBG (3, "sanei_usb_open: skipping Mass
>> > ? ? ? ? Storage interface\n");
>> > ? ? ? ? + ? ? ? ? ? ? ? ? ? continue;
>> > ? ? ? ? + ? ? ? ? ? ? ? ? }
>> > ? ? ? ? + ? ? ? ? ? ? ? ? if (interface->bInterfaceClass == 0xff && i
>> > ? ? ? ? == 3) {
>> > ? ? ? ? + ? ? ? ? ? ? ? ? ? DBG (3, "sanei_usb_open: skipping second
>> > ? ? ? ? Vendor Specific interface\n");
>> > ? ? ? ? + ? ? ? ? ? ? ? ? ? continue;
>> > ? ? ? ? + ? ? ? ? ? ? ? ? }
>> >
>> > ? ? ? ? As Allan pointed out, this may need some deeper analysis to
>> > ? ? ? ? the sanei_usb code, but modifications in this file are very
>> > ? ? ? ? sensitive, as they impact all usb devices
>> > ? ? ? ? supported by Sane, not only pixma.
>> > ? ? ? ? As for the 1.0.20 release, I would not recommend to add this
>> > ? ? ? ? change now, as it probably needs deeper testing and
>> > ? ? ? ? understanding.
>> >
>> > ? ? ? ? In other words, to step further, Wade:
>> > ? ? ? ? Could you give a try with the current Sane CVS files and patch
>> > ? ? ? ? only file sanei_usb.c, see if it is still ok?
>> > ? ? ? ? If not, this means there's something I did not catch, so we'll
>> > ? ? ? ? need to talk again to finalize the changes, if any, required
>> > ? ? ? ? for MP730.
>> >
>> > ? ? ? ? Nicolas
>>
>> >
>>
>>
>
>



-- 
"The truth is an offense, but not a sin"

Reply via email to