I've also tested scanning on:

# scanimage -L
device `xerox_mfp:libusb:000:002' is a Samsung M2070 Series multi-function 
peripheral

with kernel diff:

        https://marc.info/?l=openbsd-bugs&m=160991986510827&w=2

and it works. Is there anything else I can help with to get your diff
commited to CVS?

On Wed, Jan 13, 2021 at 08:03:07PM +0000, Mikolaj Kucharski wrote:
> Marcus,
> 
> On Sat, Jan 09, 2021 at 11:55:38PM +0000, Mikolaj Kucharski wrote:
> > Marcus,
> > 
> > I was suspecting there is more than one issue, but didn't manage to dive
> > into it. With your last kernel diff:
> > 
> >     https://marc.info/?l=openbsd-bugs&m=160991986510827&w=2
> > 
> > and below sane-backends diff makes my Canon MG3250 USB scanner work
> > consistenly.
> > 
> > This is awesome, thank you Marcus!
> > 
> > I'll be testing more over next coming days, but so far this looks good.
> 
> I did few scans and printing over last days and kernel diff + sane
> backends diff together work very reliably. No issues so far encountered.
> 
> 
> > Small comment below about the sane backends diff.
> > 
> > 
> > On Sat, Jan 09, 2021 at 11:12:56PM +0100, Marcus Glocker wrote:
> > > 
> > > Hello Mikolaj,
> > > 
> > > I think you're mixing up two different issues now.
> > > 
> > > The first issue is with our ugen(4) implementation, where the DATA
> > > toggle gets out of sync with xhci(4), and therefore after the first
> > > successful data exchange, all following will fail, until you
> > > detach/attach the device which will reset the DATA toggle again.
> > > 
> > > The second issue seems to be a bug in the sane-backends software.  I
> > > had a problem related to that with my PIXMA scanner as well.  It could
> > > be the same issue you're seeing.  I've opened an issue upstream for
> > > that:
> > > 
> > > https://gitlab.com/sane-project/backends/-/issues/412
> > > 
> > > In the meantime I've also provided a patch upstream for the issue.
> > > They are currently checking whether it's the right fix to do.  Can you
> > > try this patch with our sane-backends port as well, and see whether if
> > > fixes your issue?
> > > 
> > > 
> > > Index: graphics/sane-backends/Makefile
> > > ===================================================================
> > > RCS file: /cvs/ports/graphics/sane-backends/Makefile,v
> > > retrieving revision 1.95
> > > diff -u -p -u -p -r1.95 Makefile
> > > --- graphics/sane-backends/Makefile       20 Dec 2020 09:56:36 -0000      
> > > 1.95
> > > +++ graphics/sane-backends/Makefile       9 Jan 2021 22:07:38 -0000
> > > @@ -5,7 +5,7 @@ BROKEN-alpha=             ICE hp5590.c:1141: error:
> > >  COMMENT=         API for accessing scanners, backends
> > >  
> > >  DISTNAME=                sane-backends-1.0.31
> > > -REVISION=                1
> > > +REVISION=                2
> > >  
> > >  SHARED_LIBS +=  sane                 2.1      # unknown
> > >  
> > > Index: graphics/sane-backends/patches/patch-backend_pixma_pixma_io_sanei_c
> > > ===================================================================
> > > RCS file: 
> > > graphics/sane-backends/patches/patch-backend_pixma_pixma_io_sanei_c
> > > diff -N 
> > > graphics/sane-backends/patches/patch-backend_pixma_pixma_io_sanei_c
> > > --- /dev/null     1 Jan 1970 00:00:00 -0000
> > > +++ graphics/sane-backends/patches/patch-backend_pixma_pixma_io_sanei_c   
> > > 9 Jan 2021 22:07:38 -0000
> > > @@ -0,0 +1,15 @@
> > > +$OpenBSD$
> > > +
> > 
> > Could it make sense to add 
> > https://gitlab.com/sane-project/backends/-/issues/412
> > as a comment to this diff?
> > 
> > 
> > > +Index: backend/pixma/pixma_io_sanei.c
> > > +--- backend/pixma/pixma_io_sanei.c.orig  Sun Aug 23 13:59:20 2020
> > > ++++ backend/pixma/pixma_io_sanei.c       Tue Jan  5 15:30:06 2021
> > > +@@ -538,8 +538,7 @@ pixma_wait_interrupt (pixma_io_t * io, void *buf, 
> > > unsi
> > > + #endif
> > > +       error = map_error (sanei_usb_read_int (io->dev, buf, &count));
> > > +     }
> > > +-  if (error == PIXMA_EIO ||
> > > +-      (io->interface == INT_BJNP && error == PIXMA_EOF))     /* EOF is 
> > > a bjnp timeout error! */
> > > ++  if (error == PIXMA_EIO || error == PIXMA_EOF)
> > > +     error = PIXMA_ETIMEDOUT;    /* FIXME: SANE doesn't have ETIMEDOUT!! 
> > > */
> > > +   if (error == 0)
> > > +     error = count;

-- 
Regards,
 Mikolaj

Reply via email to