usb/113060: Samsung printer not working in bidirectional mode

Hans Petter Selasky hselasky at freebsd.org
Sun May 27 21:40:14 UTC 2007


The following reply was made to PR usb/113060; it has been noted by GNATS.

From: Hans Petter Selasky <hselasky at freebsd.org>
To: freebsd-usb at freebsd.org
Cc: Ulrich Spoerlein <uspoerlein at gmail.com>,
 FreeBSD-gnats-submit at freebsd.org
Subject: Re: usb/113060: Samsung printer not working in bidirectional mode
Date: Sun, 27 May 2007 22:32:32 +0200

 On Sunday 27 May 2007 17:33, Ulrich Spoerlein wrote:
 > >Number:         113060
 > >Category:       usb
 > >Synopsis:       Samsung printer not working in bidirectional mode
 > >Confidential:   no
 > >Severity:       non-critical
 > >Priority:       low
 > >Responsible:    freebsd-usb
 > >State:          open
 > >Quarter:
 > >Keywords:
 > >Date-Required:
 > >Class:          sw-bug
 > >Submitter-Id:   current-users
 > >Arrival-Date:   Sun May 27 15:40:04 GMT 2007
 > >Closed-Date:
 > >Last-Modified:
 > >Originator:     Ulrich Sp=F6rlein
 > >Release:        FreeBSD 6.2-STABLE i386
 > >Organization:
 > >Environment:
 > >Description:
 >
 > The following printer, when attached via USB fails to work
 >
 > port 2 addr 2: full speed, self powered, config 1, SAMSUNG Laser Printer
 > ML-4600(0x3004), SAMSUNG ELECTRONICS CO., LT(0x04e8), rev 1.00
 >
 > Peter van Heusden identified the problem to be the bi-directional mode.
 > When adding the quirks as given below *OR* chmod a-w /dev/ulpt0 CUPS will
 > print just fine.
 >
 > Please note that under the new USB stack developed by Hans Petter Selasky
 > the printer works out of the box. This, and usb/112944 leave me to believe
 > it is a more general problem with bidirectional support under ulpt(4).
 >
 > Perhaps HPS can comment on the architectural differences between the old
 > and his new ulpt(4)?
 >
 > PS: Whitespace and sorting in usb_quirks.c are, well, interessting.
 >
 > >How-To-Repeat:
 > >Fix:
 >
 > --- ml4600.diff begins here ---
 > Index: usb_quirks.c
 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 > RCS file: /home/ncvs/src/sys/dev/usb/usb_quirks.c,v
 > retrieving revision 1.41.2.8
 > diff -u -p -r1.41.2.8 usb_quirks.c
 > --- usb_quirks.c	28 Apr 2007 20:31:30 -0000	1.41.2.8
 > +++ usb_quirks.c	27 May 2007 15:31:37 -0000
 > @@ -99,6 +99,7 @@ Static const struct usbd_quirk_entry {
 >   { USB_VENDOR_HP, USB_PRODUCT_HP_810C,		    ANY,   { UQ_BROKEN_BIDIR }},
 >   { USB_VENDOR_HP, USB_PRODUCT_HP_830C,		    ANY,   { UQ_BROKEN_BIDIR }},
 >   { USB_VENDOR_HP, USB_PRODUCT_HP_1220C,		    ANY,   { UQ_BROKEN_BIDIR }},
 > + { USB_VENDOR_SAMSUNG, USB_PRODUCT_SAMSUNG_ML4600,  ANY,   {
 > UQ_BROKEN_BIDIR }}, { USB_VENDOR_XEROX, USB_PRODUCT_XEROX_WCM15,	    ANY,=
  =20
 > { UQ_BROKEN_BIDIR }}, /* YAMAHA router's ucdDevice is the version of
 > farmware and often changes. */ { USB_VENDOR_YAMAHA,
 > USB_PRODUCT_YAMAHA_RTA54I,
 > Index: usbdevs
 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 > RCS file: /home/ncvs/src/sys/dev/usb/usbdevs,v
 > retrieving revision 1.232.2.24
 > diff -u -p -r1.232.2.24 usbdevs
 > --- usbdevs	20 May 2007 12:34:39 -0000	1.232.2.24
 > +++ usbdevs	27 May 2007 09:30:30 -0000
 > @@ -1491,6 +1491,7 @@ product RATOC REXUSB60		0xb000	REX-USB60
 >  product SAGEM USBSERIAL		0x0027	USB-Serial Controller
 >
 >  /* Samsung products */
 > +product SAMSUNG ML4600		0x3004	ML-4600 laser printer
 >  product SAMSUNG ML6060		0x3008	ML-6060 laser printer
 >
 >  /* SanDisk products */
 > --- ml4600.diff ends here ---
 >
 > >Release-Note:
 > >Audit-Trail:
 > >Unformatted:
 >
 
 Hi,
 
 The main difference between the old "ulpt" and the new "ulpt" is that the n=
 ew=20
 use asynchronous reading of data, while the old "ulpt" uses synchronous=20
 reading. That means that the new "ulpt" transfers data to/from all endpoint=
 s=20
 in the background.
 
 Maybe that has something to do with the problem, that the IN enpoint is not=
 =20
 polled.
 
 =2D-HPS


More information about the freebsd-usb mailing list