Re: Raspberry Pi 3B USB Printing Issue

From: Archimedes Gaviola <archimedes.gaviola_at_gmail.com>
Date: Thu, 10 Mar 2022 12:37:08 UTC
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.

Thanks,
Archimedes