Re: Raspberry Pi 3B USB Printing Issue

From: Archimedes Gaviola <archimedes.gaviola_at_gmail.com>
Date: Thu, 10 Mar 2022 13:09:58 UTC
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 .
>

Hi Hans,

Thanks for your immediate response! I'll also try my spare RPi 3B if it
behaves the same. Noted on this HC driver you've mentioned. I'll explore
the sysctl knobs for debugging.


>
> Is the device self-powered?
>

Yes it's a self-powered device.


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

Okay I'll add this patch.

Thanks and best regards,
Archimedes