MichaIng Posted June 27, 2022 Posted June 27, 2022 Since Linux 5.15, the USB3 port on ROCK64 does not work anymore with Armbian. The following kernel errors are shown: usb 5-1: USB disconnect, device number 2 [...] usb usb5-port1: Cannot enable. Maybe the USB cable is bad? This has been reported by multiple users with multiple drives and cables, also disabling UAS does not help. lsusb shows the drive/device, but lsblk does not. I know the ROCK64 is not currently supported by Armbian/has no maintainer, so I'm not expecting anything, just posting this as information and probably someone with more insights into the rockchip64 kernel build has an idea or workaround.
Werner Posted June 28, 2022 Posted June 28, 2022 What was the last known working version? Ideally kernel and uboot version
MichaIng Posted June 28, 2022 Author Posted June 28, 2022 v21.08.2 (Linux 5.10) is the latest which works. U-boot seems irrelevant since only updating the kernel breaks it and updating/flashing U-boot doesn't solve it. It works on NanoPi NEO3 (same SoC), which probably indicates an issue with the device tree, if the USB3 host is the same? 1
TonyMac32 Posted July 2, 2022 Posted July 2, 2022 I'll take a look momentarily, the same patch enabled the usb3 for both the Rock64 and the Renegade, and it looks like mainline has that enabled by default but the patch still exists. May or may not be a cause, I would hope redundant entries simply got ignored... 1
TonyMac32 Posted July 4, 2022 Posted July 4, 2022 So far no luck. We do have a redundant patch adding the nodes, but that isn't the culprit. The driver complains it doesn't have the host-drv pin defined, but it's shared with the USB2 (same situation between Renegade and Rock64) EDIT: A PHY driver was added back in the dark days before USB3 support by the kernel. It is only used by the Rock64 and Renegade, (and apparently also the RK3328 Station M-whatever). I've removed the entries and USB3 is working again now that mainline supports it without said special case driver. I will open a PR tonight with the fixes. 2
useful64 Posted July 4, 2022 Posted July 4, 2022 The only way I found to get it work was unbind the device and rebind it again: # printf 'ff600000.dwc3' > /sys/bus/platform/drivers/dwc3/unbind printf 'ff600000.usb' > /sys/bus/platform/drivers/dwc3/unbind sleep 5 # printf 'ff600000.dwc3' > /sys/bus/platform/drivers/dwc3/bind printf 'ff600000.usb' > /sys/bus/platform/drivers/dwc3/bind If it is already working, I recommend syncing and powering off the device before (sync /dev/sdx; udisksctl power-off --block-device /dev/sdx), unbind it (if you want to do it for testing purposes). 1
Solution TonyMac32 Posted July 5, 2022 Solution Posted July 5, 2022 I've pushed the fix to the build system, this new forum organization stuck my answer at the very top so it was removed from the discussion flow. 1
Recommended Posts