Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Mar 2022 23:36:43 +0800
From:      Archimedes Gaviola <archimedes.gaviola@gmail.com>
To:        Hans Petter Selasky <hps@selasky.org>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: Raspberry Pi 3B USB Printing Issue
Message-ID:  <CAJFbk7FMa_8EXM70HdhgdLmkpjpRD54fRrO=uctHV4uQ2_nNhA@mail.gmail.com>
In-Reply-To: <8226461b-5740-9c19-0575-2740bd952e16@selasky.org>
References:  <CAJFbk7EzSfPNbaGxiweKrivwNrKXCPVzA1b7_=0_bTvbs8oBow@mail.gmail.com> <7c67118e-f6ec-c87d-9a81-3ee6a5952f49@selasky.org> <CAJFbk7GYbLAFTJY077Nzh3CTBJM6bk8swr4AkgGMaukCxrfcHQ@mail.gmail.com> <60f98b10-dcdc-cdf4-3d7a-fe9fd4dff223@selasky.org> <CAJFbk7EAjrQG5Kj_upVKW72opOS%2B8d63VrMnQdLxcJjUcfsd=g@mail.gmail.com> <8226461b-5740-9c19-0575-2740bd952e16@selasky.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--000000000000aea77205d9f319c4
Content-Type: text/plain; charset="UTF-8"

On Thu, Mar 10, 2022 at 8:53 PM Hans Petter Selasky <hps@selasky.org> wrote:

> On 3/10/22 13:37, Archimedes Gaviola wrote:
> > On Thu, Mar 10, 2022 at 3:47 PM Hans Petter Selasky <hps@selasky.org>
> wrote:
> >
> >> On 3/10/22 00:24, Archimedes Gaviola wrote:
> >>> On Thu, Mar 10, 2022 at 4:14 AM Hans Petter Selasky <hps@selasky.org>
> >> wrote:
> >>>
> >>>> On 3/9/22 18:55, Archimedes Gaviola wrote:
> >>>>> Hi,
> >>>>>
> >>>>> I have an Epson printer connected to one of the USB ports of my RPi
> 3B.
> >>>> The
> >>>>> printer is detected as a ugen(4) driver and then I have a text file -
> >>>>> myfile3.txt which contains 10 lines of repeating sentences.
> >>>>>
> >>>>> freebsd@generic:~ % dmesg | grep EPSON
> >>>>> ugen1.4: <EPSON EPSON UB-U03II> at usbus1
> >>>>>
> >>>>> freebsd@generic:~ % cat myfile3.txt
> >>>>> The quick brown fox jumps over the lazy dog.
> >>>>> The quick brown fox jumps over the lazy dog.
> >>>>> The quick brown fox jumps over the lazy dog.
> >>>>> The quick brown fox jumps over the lazy dog.
> >>>>> The quick brown fox jumps over the lazy dog.
> >>>>> The quick brown fox jumps over the lazy dog.
> >>>>> The quick brown fox jumps over the lazy dog.
> >>>>> The quick brown fox jumps over the lazy dog.
> >>>>> The quick brown fox jumps over the lazy dog.
> >>>>> The quick brown fox jumps over the lazy dog.
> >>>>>
> >>>>> freebsd@generic:~ % cat myfile3.txt  > /dev/usb/1.4.1
> >>>>>
> >>>>> I print the file successfully through device file redirection with
> cat
> >>>>> command as described above. However, there were times that printing
> >>>> seemed
> >>>>> to suspend and withhold especially when my RPi 3B system got idle for
> >>>> some
> >>>>> period of time. Suspended or withhold in such a way that out of the
> 10
> >>>>> lines there were only 2-3 lines to be printed in the paper. So, the
> >> only
> >>>>> remedy I have for now is to reboot the system to be able to get back
> to
> >>>>> normal printing. I'm using the 14.0-CURRENT #0
> >> main-n253384-45c23c2608e:
> >>>>> Thu Feb 24 09:18:58 UTC 2022 and my RPi 4B does not manifest this
> >>>> behavior
> >>>>> using this same 14.0-CURRENT version. Any idea what's going on?
> >>>>>
> >>>>> I found these sysctl knobs thinking if some tweaks would help but not
> >>>> sure
> >>>>> what are the exact settings beyond these defaults.
> >>>>>
> >>>>> hw.usb.timings.port_resume_delay: 40
> >>>>> hw.usb.timings.port_powerup_delay: 300
> >>>>> hw.usb.timings.port_reset_recovery: 10
> >>>>> hw.usb.timings.port_root_reset_delay: 200
> >>>>> hw.usb.timings.port_reset_delay: 50
> >>>>>
> >>>>> (Resend this message without dmesg and sysctl outputs as files are
> >> quite
> >>>>> big, sorry I didn't notice it.)
> >>>>>
> >>>>
> >>>> Hi,
> >>>>
> >>>> Why are you not using /dev/ulpt<N> ?
> >>>>
> >>>> /dev/usb/1.4.1 is the raw BULK endpoint.
> >>>>
> >>>
> >>>
> >>> Hi Hans,
> >>>
> >>> The ulpt(4) driver isn't detected with this Epson printer. Only my
> other
> >>> printer which is an Xprinter brand is able to get detected with
> ulpt(4).
> >>>
> >>
> >> Hi,
> >>
> >> Is it correctly detected if you the VID and PID to
> >> /usr/src/sys/dev/usb/serial/ulpt.c ?
> >>
> >
> > Hi Hans,
> >
> > Not sure how to make the current ugen(4) driver into ulpt(4). Is there a
> > need to disable ugen(4) and recompile the kernel and let ulpt(4) driver
> > loaded and enabled? As far as vendor ID and product ID of this Epson
> > printer are concerned, these are  0x04b8 and  0x0200 respectively. I
> > checked it with usbconfig below. I checked also
> > /usr/src/sys/dev/usb/usbdevs file and it seems only the vendor ID is
> > present but no product ID on these particular model which is TM-U220B.
> >
> > root@generic:~ # usbconfig -u 1 -a 4 dump_device_desc
> > ugen1.4: <EPSON EPSON UB-U03II> at usbus1, cfg=0 md=HOST spd=FULL
> (12Mbps)
> > pwr=ON (10mA)
> >
> >    bLength = 0x0012
> >    bDescriptorType = 0x0001
> >    bcdUSB = 0x0110
> >    bDeviceClass = 0x0000  <Probed by interface class>
> >    bDeviceSubClass = 0x0000
> >    bDeviceProtocol = 0x0000
> >    bMaxPacketSize0 = 0x0008
> >    idVendor = 0x04b8
> >    idProduct = 0x0202
> >    bcdDevice = 0x0200
> >    iManufacturer = 0x0001  <EPSON>
> >    iProduct = 0x0002  <EPSON UB-U03II>
> >    iSerialNumber = 0x0003  <20160118193053218M03C>
> >    bNumConfigurations = 0x0001
> >
> >
> >>
> >> When you use the printer via the BULK endpoint, there might be a missing
> >> flush packet, to flush all the printed text. This happens when the
> >> payload length is a multiple of the wMaxPacketSize.
> >>
> >
> > Okay this is noted but what I found lately in usbdump are the presence of
> > ioerrors ERR=IOERROR in capturing the ugen1.4.1 device while printing
> were
> > the printed outputs are intermittent. This time I'm going to use the word
> > "intermittent" as I don't have any idea when this occurs. It just behaves
> > anytime without any warnings or notices to the system not even logs in
> the
> > dmesg. On the other hand, normal printing will prompts with ERR=0 with
> > complete outputs.
> >
> > root@generic:~ # usbdump -d ugen1.4.1 -v
> > 19:14:11.861532 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:14:12.147498 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0
> >   frame[0] WRITE 1264 bytes
> > 19:14:23.491555 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:14:23.777222 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0
> >   frame[0] WRITE 1264 bytes
> > 19:14:32.325817 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:14:32.612222 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0
> >   frame[0] WRITE 1264 bytes
> > 19:18:46.334624 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:18:46.620474 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0
> >   frame[0] WRITE 1264 bytes
> > 19:18:53.975846 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:18:54.262223 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0
> >   frame[0] WRITE 1264 bytes
> > 19:21:38.505907 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:21:38.792224 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0
> >   frame[0] WRITE 1264 bytes
> > 19:22:06.235833 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:22:06.521723 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0
> >   frame[0] WRITE 1264 bytes
> > 19:22:16.344551 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:22:16.630472 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0
> >   frame[0] WRITE 1264 bytes
> > 19:22:31.625887 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:22:31.911723 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0
> >   frame[0] WRITE 1264 bytes
> > 19:22:40.325843 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:22:40.612223 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0
> >   frame[0] WRITE 1264 bytes
> > 19:23:53.484761 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:23:53.514428 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,
> >   frame[0] WRITE 128 bytes
> > 19:23:57.055902 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:23:57.084227 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:00.244450 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:00.274206 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:03.974541 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:04.004203 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 144 bytes
> > 19:24:06.975851 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:07.004209 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:09.605790 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:09.633980 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:12.385923 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:12.413760 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:15.224542 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:15.253771 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:18.174530 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:18.203756 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:21.125927 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:21.153752 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 136 bytes
> > 19:24:24.275854 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:24.303756 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 144 bytes
> > 19:24:27.485857 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:27.772223 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:36.194633 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:36.223750 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:39.115831 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:39.143771 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 144 bytes
> > 19:24:41.855851 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:41.883758 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:44.215882 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:44.243755 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:47.634603 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:47.663751 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:50.324493 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:50.353755 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:52.864637 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:52.893756 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 144 bytes
> > 19:24:54.944528 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:54.973743 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:24:57.254498 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:24:57.537227 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:06.024607 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:06.053747 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:25:08.214550 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:08.243749 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 144 bytes
> > 19:25:10.355858 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:10.383752 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:25:12.435851 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:12.463752 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:25:14.574555 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:14.603740 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:25:17.814561 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:17.844015 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:25:19.924529 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:19.954029 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:25:28.075867 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:28.104036 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 144 bytes
> > 19:25:30.195823 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:30.224035 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:25:32.574567 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:32.604028 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:25:34.624522 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:34.654016 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 128 bytes
> > 19:25:36.895889 usbus1.4
> > SUBM-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=1264,IVAL=0
> >   frame[0] WRITE 1264 bytes
> > 19:25:36.924007 usbus1.4
> > DONE-BULK-EP=00000001,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
> >   frame[0] WRITE 144 bytes
> >
> > 86 packets captured
> > 41546 packets received by filter
> > 0 packets dropped by kernel
> >
> > What could be these ioerrors? As I am also firm that my Epson printer's
> > status is good and this only happens in RPi 3B but not RPi 4B. My RPi 4B
> > using the same printer and ugen(4) driver is very stable.
>
> Hi,
>
> IOERROR usually means an electrical error. The RPI3B will use a
> transaction translator for the FULL speed traffic, which is driven by
> software. Maybe there is a bug in the HC driver,
> "dev/usb/controller/dwc_otg.c". There are some sysctls to enable full HC
> debugging, see hw.usb.xxx.debug=17 .
>
> Is the device self-powered?
>
>
Try something like this:
>
> > diff --git a/sys/dev/usb/serial/ulpt.c b/sys/dev/usb/serial/ulpt.c
> > index c566da92437..d663800f4fc 100644
> > --- a/sys/dev/usb/serial/ulpt.c
> > +++ b/sys/dev/usb/serial/ulpt.c
> > @@ -499,6 +499,9 @@ static const STRUCT_USB_HOST_ID ulpt_devs[] = {
> >         {USB_IFACE_CLASS(UICLASS_PRINTER),
> >          USB_IFACE_SUBCLASS(UISUBCLASS_PRINTER),
> >          USB_IFACE_PROTOCOL(UIPROTO_PRINTER_1284)},
> > +
> > +       /* Epson printer */
> > +       {USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_TMU220B, 0)},
> >  };
> >
> >  static int
> > diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs
> > index 01c25d7c096..632b8f19610 100644
> > --- a/sys/dev/usb/usbdevs
> > +++ b/sys/dev/usb/usbdevs
> > @@ -1941,6 +1941,7 @@ product EPSON 1270                0x0120
> Perfection 1270 scanner
> >  product EPSON 2480             0x0121  Perfection 2480 scanner
> >  product EPSON 3590             0x0122  Perfection 3590 scanner
> >  product EPSON 4990             0x012a  Perfection 4990 Photo scanner
> > +product EPSON TMU220B          0x0200  TM-U220B
> >  product EPSON CRESSI_EDY       0x0521  Cressi Edy diving computer
> >  product EPSON N2ITION3         0x0522  Zeagle N2iTion3 diving computer
> >  product EPSON STYLUS_875DC     0x0601  Stylus Photo 875DC Card Reader
>
>
Hi Hans,

The patch above has no effect. My Epson printer is still obtaining the
ugen(4) driver after I apply and recompile the kernel. Anything I've missed?

Thanks,
Archimedes

--000000000000aea77205d9f319c4
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Thu, Mar 10, 2022 at 8:53 PM Hans =
Petter Selasky &lt;<a href=3D"mailto:hps@selasky.org">hps@selasky.org</a>&g=
t; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p=
x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 3/1=
0/22 13:37, Archimedes Gaviola wrote:<br>
&gt; On Thu, Mar 10, 2022 at 3:47 PM Hans Petter Selasky &lt;<a href=3D"mai=
lto:hps@selasky.org" target=3D"_blank">hps@selasky.org</a>&gt; wrote:<br>
&gt; <br>
&gt;&gt; On 3/10/22 00:24, Archimedes Gaviola wrote:<br>
&gt;&gt;&gt; On Thu, Mar 10, 2022 at 4:14 AM Hans Petter Selasky &lt;<a hre=
f=3D"mailto:hps@selasky.org" target=3D"_blank">hps@selasky.org</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On 3/9/22 18:55, Archimedes Gaviola wrote:<br>
&gt;&gt;&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; I have an Epson printer connected to one of the USB po=
rts of my RPi 3B.<br>
&gt;&gt;&gt;&gt; The<br>
&gt;&gt;&gt;&gt;&gt; printer is detected as a ugen(4) driver and then I hav=
e a text file -<br>
&gt;&gt;&gt;&gt;&gt; myfile3.txt which contains 10 lines of repeating sente=
nces.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; freebsd@generic:~ % dmesg | grep EPSON<br>
&gt;&gt;&gt;&gt;&gt; ugen1.4: &lt;EPSON EPSON UB-U03II&gt; at usbus1<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; freebsd@generic:~ % cat myfile3.txt<br>
&gt;&gt;&gt;&gt;&gt; The quick brown fox jumps over the lazy dog.<br>
&gt;&gt;&gt;&gt;&gt; The quick brown fox jumps over the lazy dog.<br>
&gt;&gt;&gt;&gt;&gt; The quick brown fox jumps over the lazy dog.<br>
&gt;&gt;&gt;&gt;&gt; The quick brown fox jumps over the lazy dog.<br>
&gt;&gt;&gt;&gt;&gt; The quick brown fox jumps over the lazy dog.<br>
&gt;&gt;&gt;&gt;&gt; The quick brown fox jumps over the lazy dog.<br>
&gt;&gt;&gt;&gt;&gt; The quick brown fox jumps over the lazy dog.<br>
&gt;&gt;&gt;&gt;&gt; The quick brown fox jumps over the lazy dog.<br>
&gt;&gt;&gt;&gt;&gt; The quick brown fox jumps over the lazy dog.<br>
&gt;&gt;&gt;&gt;&gt; The quick brown fox jumps over the lazy dog.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; freebsd@generic:~ % cat myfile3.txt=C2=A0 &gt; /dev/us=
b/1.4.1<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; I print the file successfully through device file redi=
rection with cat<br>
&gt;&gt;&gt;&gt;&gt; command as described above. However, there were times =
that printing<br>
&gt;&gt;&gt;&gt; seemed<br>
&gt;&gt;&gt;&gt;&gt; to suspend and withhold especially when my RPi 3B syst=
em got idle for<br>
&gt;&gt;&gt;&gt; some<br>
&gt;&gt;&gt;&gt;&gt; period of time. Suspended or withhold in such a way th=
at out of the 10<br>
&gt;&gt;&gt;&gt;&gt; lines there were only 2-3 lines to be printed in the p=
aper. So, the<br>
&gt;&gt; only<br>
&gt;&gt;&gt;&gt;&gt; remedy I have for now is to reboot the system to be ab=
le to get back to<br>
&gt;&gt;&gt;&gt;&gt; normal printing. I&#39;m using the 14.0-CURRENT #0<br>
&gt;&gt; main-n253384-45c23c2608e:<br>
&gt;&gt;&gt;&gt;&gt; Thu Feb 24 09:18:58 UTC 2022 and my RPi 4B does not ma=
nifest this<br>
&gt;&gt;&gt;&gt; behavior<br>
&gt;&gt;&gt;&gt;&gt; using this same 14.0-CURRENT version. Any idea what&#3=
9;s going on?<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; I found these sysctl knobs thinking if some tweaks wou=
ld help but not<br>
&gt;&gt;&gt;&gt; sure<br>
&gt;&gt;&gt;&gt;&gt; what are the exact settings beyond these defaults.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; hw.usb.timings.port_resume_delay: 40<br>
&gt;&gt;&gt;&gt;&gt; hw.usb.timings.port_powerup_delay: 300<br>
&gt;&gt;&gt;&gt;&gt; hw.usb.timings.port_reset_recovery: 10<br>
&gt;&gt;&gt;&gt;&gt; hw.usb.timings.port_root_reset_delay: 200<br>
&gt;&gt;&gt;&gt;&gt; hw.usb.timings.port_reset_delay: 50<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; (Resend this message without dmesg and sysctl outputs =
as files are<br>
&gt;&gt; quite<br>
&gt;&gt;&gt;&gt;&gt; big, sorry I didn&#39;t notice it.)<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Why are you not using /dev/ulpt&lt;N&gt; ?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; /dev/usb/1.4.1 is the raw BULK endpoint.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Hi Hans,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The ulpt(4) driver isn&#39;t detected with this Epson printer.=
 Only my other<br>
&gt;&gt;&gt; printer which is an Xprinter brand is able to get detected wit=
h ulpt(4).<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Hi,<br>
&gt;&gt;<br>
&gt;&gt; Is it correctly detected if you the VID and PID to<br>
&gt;&gt; /usr/src/sys/dev/usb/serial/ulpt.c ?<br>
&gt;&gt;<br>
&gt; <br>
&gt; Hi Hans,<br>
&gt; <br>
&gt; Not sure how to make the current ugen(4) driver into ulpt(4). Is there=
 a<br>
&gt; need to disable ugen(4) and recompile the kernel and let ulpt(4) drive=
r<br>
&gt; loaded and enabled? As far as vendor ID and product ID of this Epson<b=
r>
&gt; printer are concerned, these are=C2=A0 0x04b8 and=C2=A0 0x0200 respect=
ively. I<br>
&gt; checked it with usbconfig below. I checked also<br>
&gt; /usr/src/sys/dev/usb/usbdevs file and it seems only the vendor ID is<b=
r>
&gt; present but no product ID on these particular model which is TM-U220B.=
<br>
&gt; <br>
&gt; root@generic:~ # usbconfig -u 1 -a 4 dump_device_desc<br>
&gt; ugen1.4: &lt;EPSON EPSON UB-U03II&gt; at usbus1, cfg=3D0 md=3DHOST spd=
=3DFULL (12Mbps)<br>
&gt; pwr=3DON (10mA)<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 bLength =3D 0x0012<br>
&gt;=C2=A0 =C2=A0 bDescriptorType =3D 0x0001<br>
&gt;=C2=A0 =C2=A0 bcdUSB =3D 0x0110<br>
&gt;=C2=A0 =C2=A0 bDeviceClass =3D 0x0000=C2=A0 &lt;Probed by interface cla=
ss&gt;<br>
&gt;=C2=A0 =C2=A0 bDeviceSubClass =3D 0x0000<br>
&gt;=C2=A0 =C2=A0 bDeviceProtocol =3D 0x0000<br>
&gt;=C2=A0 =C2=A0 bMaxPacketSize0 =3D 0x0008<br>
&gt;=C2=A0 =C2=A0 idVendor =3D 0x04b8<br>
&gt;=C2=A0 =C2=A0 idProduct =3D 0x0202<br>
&gt;=C2=A0 =C2=A0 bcdDevice =3D 0x0200<br>
&gt;=C2=A0 =C2=A0 iManufacturer =3D 0x0001=C2=A0 &lt;EPSON&gt;<br>
&gt;=C2=A0 =C2=A0 iProduct =3D 0x0002=C2=A0 &lt;EPSON UB-U03II&gt;<br>
&gt;=C2=A0 =C2=A0 iSerialNumber =3D 0x0003=C2=A0 &lt;20160118193053218M03C&=
gt;<br>
&gt;=C2=A0 =C2=A0 bNumConfigurations =3D 0x0001<br>
&gt; <br>
&gt; <br>
&gt;&gt;<br>
&gt;&gt; When you use the printer via the BULK endpoint, there might be a m=
issing<br>
&gt;&gt; flush packet, to flush all the printed text. This happens when the=
<br>
&gt;&gt; payload length is a multiple of the wMaxPacketSize.<br>
&gt;&gt;<br>
&gt; <br>
&gt; Okay this is noted but what I found lately in usbdump are the presence=
 of<br>
&gt; ioerrors ERR=3DIOERROR in capturing the ugen1.4.1 device while printin=
g were<br>
&gt; the printed outputs are intermittent. This time I&#39;m going to use t=
he word<br>
&gt; &quot;intermittent&quot; as I don&#39;t have any idea when this occurs=
. It just behaves<br>
&gt; anytime without any warnings or notices to the system not even logs in=
 the<br>
&gt; dmesg. On the other hand, normal printing will prompts with ERR=3D0 wi=
th<br>
&gt; complete outputs.<br>
&gt; <br>
&gt; root@generic:~ # usbdump -d ugen1.4.1 -v<br>
&gt; 19:14:11.861532 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:14:12.147498 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3D0<b=
r>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:14:23.491555 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:14:23.777222 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3D0<b=
r>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:14:32.325817 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:14:32.612222 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3D0<b=
r>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:18:46.334624 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:18:46.620474 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3D0<b=
r>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:18:53.975846 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:18:54.262223 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3D0<b=
r>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:21:38.505907 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:21:38.792224 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3D0<b=
r>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:22:06.235833 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:22:06.521723 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3D0<b=
r>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:22:16.344551 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:22:16.630472 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3D0<b=
r>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:22:31.625887 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:22:31.911723 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3D0<b=
r>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:22:40.325843 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:22:40.612223 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3D0<b=
r>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:23:53.484761 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:23:53.514428 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:23:57.055902 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:23:57.084227 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:00.244450 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:00.274206 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:03.974541 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:04.004203 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 144 bytes<br>
&gt; 19:24:06.975851 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:07.004209 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:09.605790 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:09.633980 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:12.385923 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:12.413760 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:15.224542 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:15.253771 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:18.174530 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:18.203756 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:21.125927 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:21.153752 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 136 bytes<br>
&gt; 19:24:24.275854 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:24.303756 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 144 bytes<br>
&gt; 19:24:27.485857 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:27.772223 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3D0<b=
r>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:36.194633 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:36.223750 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:39.115831 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:39.143771 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 144 bytes<br>
&gt; 19:24:41.855851 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:41.883758 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:44.215882 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:44.243755 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:47.634603 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:47.663751 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:50.324493 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:50.353755 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:52.864637 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:52.893756 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 144 bytes<br>
&gt; 19:24:54.944528 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:54.973743 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:24:57.254498 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:24:57.537227 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3D0<b=
r>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:06.024607 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:06.053747 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:25:08.214550 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:08.243749 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 144 bytes<br>
&gt; 19:25:10.355858 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:10.383752 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:25:12.435851 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:12.463752 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:25:14.574555 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:14.603740 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:25:17.814561 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:17.844015 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:25:19.924529 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:19.954029 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:25:28.075867 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:28.104036 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 144 bytes<br>
&gt; 19:25:30.195823 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:30.224035 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:25:32.574567 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:32.604028 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:25:34.624522 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:34.654016 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 128 bytes<br>
&gt; 19:25:36.895889 usbus1.4<br>
&gt; SUBM-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D1264,IVAL=3D0<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 1264 bytes<br>
&gt; 19:25:36.924007 usbus1.4<br>
&gt; DONE-BULK-EP=3D00000001,SPD=3DFULL,NFR=3D1,SLEN=3D0,IVAL=3D0,ERR=3DIOE=
RROR<br>
&gt;=C2=A0 =C2=A0frame[0] WRITE 144 bytes<br>
&gt; <br>
&gt; 86 packets captured<br>
&gt; 41546 packets received by filter<br>
&gt; 0 packets dropped by kernel<br>
&gt; <br>
&gt; What could be these ioerrors? As I am also firm that my Epson printer&=
#39;s<br>
&gt; status is good and this only happens in RPi 3B but not RPi 4B. My RPi =
4B<br>
&gt; using the same printer and ugen(4) driver is very stable.<br>
<br>
Hi,<br>
<br>
IOERROR usually means an electrical error. The RPI3B will use a <br>
transaction translator for the FULL speed traffic, which is driven by <br>
software. Maybe there is a bug in the HC driver, <br>
&quot;dev/usb/controller/dwc_otg.c&quot;. There are some sysctls to enable =
full HC <br>
debugging, see hw.usb.xxx.debug=3D17 .<br>
<br>
Is the device self-powered?<br>=C2=A0 <br></blockquote><blockquote class=3D=
"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2=
04,204,204);padding-left:1ex">
Try something like this:<br>
<br>
&gt; diff --git a/sys/dev/usb/serial/ulpt.c b/sys/dev/usb/serial/ulpt.c<br>
&gt; index c566da92437..d663800f4fc 100644<br>
&gt; --- a/sys/dev/usb/serial/ulpt.c<br>
&gt; +++ b/sys/dev/usb/serial/ulpt.c<br>
&gt; @@ -499,6 +499,9 @@ static const STRUCT_USB_HOST_ID ulpt_devs[] =3D {<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0{USB_IFACE_CLASS(UICLASS_PRINTER),<br=
>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 USB_IFACE_SUBCLASS(UISUBCLASS_PRINTE=
R),<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 USB_IFACE_PROTOCOL(UIPROTO_PRINTER_1=
284)},<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0/* Epson printer */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0{USB_VPI(USB_VENDOR_EPSON, USB_PRODUCT_EPS=
ON_TMU220B, 0)},<br>
&gt;=C2=A0 };<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 static int<br>
&gt; diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs<br>
&gt; index 01c25d7c096..632b8f19610 100644<br>
&gt; --- a/sys/dev/usb/usbdevs<br>
&gt; +++ b/sys/dev/usb/usbdevs<br>
&gt; @@ -1941,6 +1941,7 @@ product EPSON 1270=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 0x0120=C2=A0 Perfection 1270 scanner<br>
&gt;=C2=A0 product EPSON 2480=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A00x0121=C2=A0 Perfection 2480 scanner<br>
&gt;=C2=A0 product EPSON 3590=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A00x0122=C2=A0 Perfection 3590 scanner<br>
&gt;=C2=A0 product EPSON 4990=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A00x012a=C2=A0 Perfection 4990 Photo scanner<br>
&gt; +product EPSON TMU220B=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0x0200=C2=A0 =
TM-U220B<br>
&gt;=C2=A0 product EPSON CRESSI_EDY=C2=A0 =C2=A0 =C2=A0 =C2=A00x0521=C2=A0 =
Cressi Edy diving computer<br>
&gt;=C2=A0 product EPSON N2ITION3=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00x0522=
=C2=A0 Zeagle N2iTion3 diving computer<br>
&gt;=C2=A0 product EPSON STYLUS_875DC=C2=A0 =C2=A0 =C2=A00x0601=C2=A0 Stylu=
s Photo 875DC Card Reader<br>
<br></blockquote><div><br></div><div>Hi Hans,</div><div><br></div><div>The =
patch above has no effect. My Epson printer is still obtaining the ugen(4) =
driver after I apply and recompile the kernel. Anything I&#39;ve missed?</d=
iv><div><br></div><div>Thanks,</div><div>Archimedes <br></div></div></div>

--000000000000aea77205d9f319c4--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJFbk7FMa_8EXM70HdhgdLmkpjpRD54fRrO=uctHV4uQ2_nNhA>