I'm trying to set up a Raspberry Pi 3B (or a 3B+) to run an
Elgato Stream Deck (if you've never heard of that it's basically a fancy macro
keyboard). I've had no problems using the Stream Deck on my x86_64 desktop (Fedora 32)
and on a Raspberry Pi 3B or 3B+ running Raspbian (kernel 5.4.51-v7+).
However all of my attempts trying to run my code on Fedora (tried using both 32 and 33
alpha 64-bit) result in the USB bus on the Raspberry Pi locking up after a minute or so.
It appears to be the whole bus as unplugging the Stream Deck and plugging it back in have
no effect. Only a full reboot appears to restore functionality. The following messages
appear in the kernel:
dwc2 3f980000.usb: dwc2_hc_halt() Channel can't be halted
So it would seem to me that Raspbian still has some secret sauce for the USB bus on the
Raspberry Pi that hasn't been upstreamed yet. Googling around appears to confirm this.
Raspbian uses dwc_otg_hcd, a highly optimized driver for host-only mode (despite the
name). The upstream kernel offers dwc2 which can switch between host mode and OTG mode and
is also apparently buggy as well.
This isn't really a call for help or action as there's probably not much the
Fedora community can do. Really it's more of an opportunity to vent my frustration at
the Raspberry Pi Foundation developers that haven't worked harder at upstreaming all
of their changes.
The USB on the RPi 0-3 devices is somewhat broken, and there's issues
that make it extremely slow which the RPi foundation hacks around with
their completely different driver. It was clear from the outset that
the hacks for that driver would never go upstream and as a result the
upstream driver on the RPi basically runs at half speed and has issues
with devices that need high bandwidth.
I've seen some devices that also manage to hit USB in such a way on
the RPi to cause issues too, we had a wifi adapter that did this, and
it's also sometimes a bug in the device driver that just happens to
trigger on the RPi due to the issues. You can see one example in the
following two links, I wonder if the Stream Deck driver has similar