ulpt problem (USB_ERR_IOERROR)

Patrick Lamaiziere patfbsd at davenulle.org
Thu Jul 16 22:50:07 UTC 2009

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.

> > 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.

More information about the freebsd-current mailing list