Re: ulpt problem (USB_ERR_IOERROR)

From: Patrick Lamaiziere <patfbsd_at_davenulle.org>
Date: Fri, 17 Jul 2009 00:50:02 +0200
Le Thu, 16 Jul 2009 22:22:10 +0200,
Hans Petter Selasky <hselasky_at_c2i.net> a écrit :

> Could you try to add an "if (sc->sc_fflags == 0)" in front, like this:
> 
> 	/* 
> 	 * Only read status while the device is not opened, due to
> 	 * possible hardware or firmware bug in some printers.
> 	 */
> 	if (sc->sc_fflags == 0)
> 		usbd_transfer_start(sc->sc_xfer[ULPT_INTR_DT_RD]);

It works fine with this check. Cool!

But why, that is not clear. FreeBSD 7.2 checks the status of the
printer only when the device is opened and before each write.
http://fxr.watson.org/fxr/source/dev/usb/ulpt.c?v=FREEBSD7#L637

> > Not related but I noticed that usb_write() in usb_dev.c returns -1
> > if I hit Ctrl-C when doing a "cat file > /dev/unlpt0". Because
> > usb_fifo_wait(f) returns -1 (should be EINTR?).
> 
> If cv_wait_sig() returns -1, then they do not behave like in the
> manual page:

Yes I saw, I will try to dig more into the code.
(will open a new thread for this)

Thank you very much, regards.
Received on Thu Jul 16 2009 - 20:50:07 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:52 UTC