[BIOS] USB DRD is still broken on 118/119/120 BIOSes
Your system information
- Steam client version:
- SteamOS version: ---
- Opted into Steam client beta?: Yes
- Opted into SteamOS beta?: --- (Not using SteamOS)
- Have you checked for updates in Settings > System?: Yes
Please describe your issue in as much detail as possible:
The default choice for later BIOSes to switch on DRD by default is still causing me random issues with USB devices on the Deck not being enumerated again randomly. I have no clue what the cause was, but it triggered today when I noticed that I didn't have any connection to the ethernet dock and I thought that the new .121 firmware caused problems. I tried every step possible to get them back, you can read it here.
Nothing worked besides disabling DRD, which made everything working again. Mind you that I had DRD on as of today with no issues.
After today I couldn't enumerate anything out of it. I still can reproduce it just by turning DRD on with 0118 + using the latest Dock firmware of one week ago (.121). As soon as I turn DRD on I lose all external USB connectivity.
Well, after opening an issue here, Mario found the offending commit quite quickly. It's this one. Not sure what is the cause of the breakage right now, but this seems to be the cause.
I hope it's not an hardware issue and only a driver bug.
Well, it seems that with Linux 6.6.1 the BIOS behaviour has gotten even worse now: regardless of the USB setting method (DRD or XHCI), I can't get any USB working at all from the external interface of the Deck. The only way to get them back on my unit is rolling the BIOS back to 116 and select XHCI from the BIOS (since 116 is the first version to force DRD on by default).
Mind you that in BIOS mode everything seems to work fine (USB sticks are detected and they are being able to be selected for booting. But as soon as the kernel start, any linux distribution with 6.6.1 will fail to find their rootfs if they are on an external USB stick and no USB keyboard will work).
Can anyone in the firmware team take a look at this issue and chime in? Beetween wireless issues all over the place and now this, I'm not really sure if Valve is tracking stuff.
Thanks,
Marco.
This issue was caused by an unrelated upstream driver misconfiguration. Sorry for the noise.
Until it wasn't. Device yesterday stopped again enumerating stuff with 119. Problem is still present. Logs on the AMD freedesktop page.
I am encountering this issue as well. When I tried to boot a live Linux image, it does not work with the "USB Configuration" set to "DRD" in the BIOS. It says that the root file system cannot be found after selecting a boot option from the GRUB menu. When switching to "XHCI", it works. This was on a LCD Steam Deck 64 GB model.
BIOS 120 is affected as well. DRD does nothing (dwc modules/udc never loads in userspace)
BIOS 120 is affected as well. DRD does nothing (dwc modules/udc never loads in userspace)
Yeah, it's extremely inconsistent. On the latest kernel (6.6.8) now it seems to work again, but you never know when it will stop working for no apparent reason.
On the latest kernel (6.6.8)
A lot of good that does for us on Steam OS 3.0 :D
So kernel combo can also affect if it works or not? Wow.
Latest SteamOS stable is 6.1.52. I was trying to use the deckjoy project to turn my deck into a hardwired controller for the PC only to have issues with USB DRD. Also tried to set up usb ethernet gadget to directly remote control my deck over usb. Not working in SteamOS 3.5.7.
Just to complicate things further: I upgraded SteamOS to 3.5.17 today and noticed that DRD was suddenly broken when it was working for me previously. I was on BIOS version 120. I upgraded the BIOS to v121 (which reverted mode back to XHCI, forcing me to change it back to DRD on another reboot cycle. I thought DRD was the default in these newer BIOS versions?!) and now I have a working UDC again:
(deck@steamdeck ~)$ uname -a
Linux steamdeck 6.1.52-valve16-1-neptune-61 #1 SMP PREEMPT_DYNAMIC Tue, 06 Feb 2024 00:51:49 +0000 x86_64 GNU/Linux
(deck@steamdeck ~)$ sudo ls /sys/class/udc
dwc3.1.auto