Re: Raspberry Pi 3B USB Printing Issue

From: Archimedes Gaviola <archimedes.gaviola_at_gmail.com>
Date: Mon, 14 Mar 2022 09:20:30 UTC
On Sun, Mar 13, 2022 at 11:25 PM Archimedes Gaviola <
archimedes.gaviola@gmail.com> wrote:

>
>
> On Sun, Mar 13, 2022 at 2:27 PM Archimedes Gaviola <
> archimedes.gaviola@gmail.com> wrote:
>
>>
>>
>> On Sun, Mar 13, 2022 at 12:38 AM Hans Petter Selasky <hps@selasky.org>
>> wrote:
>>
>>> On 3/12/22 16:31, Archimedes Gaviola wrote:
>>> >>
>>> >> IOERROR usually means an electrical error. The RPI3B will use a
>>> >> transaction translator for the FULL speed traffic, which is driven by
>>> >> software.
>>> >
>>>
>>> Hi Archimedes,
>>>
>>> > Hi Hans,
>>> >
>>> > I'm curious about the transaction translator you've mentioned, any
>>> idea why
>>> > there's a need for translation and what is being translated?
>>>
>>> When the High Speed USB HUB was invented, there was a need to support
>>> FULL and LOW speed USB transactions. Because FULL and LOW speed
>>> transactions are slow and take up much bandwidth, a transactions
>>> translator was invented which translates between High Speed USB and
>>> FULL/LOW speed USB. That means the RPi 3B consists of a single USB HIGH
>>> speed port, followed by a USB HUB. These transactions are not visible in
>>> usbdump .
>>>
>>>  >Does this only
>>> > happen when RPi 3B (acting as host controller) is transmitting data to
>>> the
>>> > Epson printer? Are translation events visible in the usbdump? In this
>>> case
>>> > there's a way to possibly track what's going on and how to identify any
>>> > info that is being translated?
>>>
>>> By turning on the HC debugging, you can possibly track via debug
>>> messages what is going on. Maybe it is a timing issue, that the SW is
>>> too slow serving the micro transactions.
>>>
>>> Any idea also if translation is being
>>> > performed in RPi 4B?
>>>
>>> The later RPi's do the transaction translator bits in HW or via the XHCI
>>> block.
>>>
>>> As I have conducted several printing cases with my
>>> > Epson printer without any issues with either of the 4 ports.
>>> >
>>> > Sorry for these questions as I am catching-up to the USB technology
>>> > internal workings under the hood.
>>>
>>> You are welcome!
>>>
>>
>>
>> Thank you so much Hans for answering my questions, really appreciate it!
>> I have a much better understanding now.
>>
>> I came from testing with 13.0-RELEASE having the same RPi 3B hardware and
>> setup and it's very stable. I haven't encountered any IOERROR and
>> incomplete printed outputs that were encountered with 14.0-CURRENT
>> (February 24, 2022). By the way, I found in the repository here
>> https://download.freebsd.org/snapshots/arm64/aarch64/ISO-IMAGES/14.0/
>> that there were two latest snapshots released dated March 3 and March 10,
>> respectively. I need to take printing tests first, especially the latest to
>> check if it also manifests before I go back to the Feb. 24 snapshot and do
>> a thorough test with debugging. I'll provide updates for any observations.
>>
>> Thanks,
>> Archimedes
>>
>
>
> Hi Hans,
>
> Initial testing conducted with the latest 14.0-CURRENT (March 10, 2022
> snapshot) seems to be stable. Another test will be performed tomorrow.
>
> Thanks,
> Archimedes
>

Hi Hans,

I still encountered the issue this morning with 14.0-CURRENT (March 10,
2022 snapshot). I just noticed when I left my RPi 3B idle for a long period
of time (2-3 hours and more) and started printing, then the issue pops-up.
Another concern I encountered was when I started enabling
hw.usb.dwc_otg.debug but after 1-2 minutes my USB keyboard and network
interface (remotely connected over SSH from my laptop) seemed to freeze and
I got disconnected.

freebsd@generic:~ % uname -a
FreeBSD generic 14.0-CURRENT FreeBSD 14.0-CURRENT #0
main-n253697-f1d450ddee6: Thu Mar 10 09:32:38 UTC 2022
root@releng1.nyi.freebsd.org:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC
arm64

root@generic:~ # sysctl -w hw.usb.dwc_otg.debug=1
hw.usb.dwc_otg.debug: 0 -> 1

See attached initial debug info (no printing testing yet).

Thanks,
Archimedes