Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

USB3 Port Issues on Radxa Zero 3 (Armbian vs. Vendor Builds): USB hub fails, upside-down speed bug

Featured Replies

I’ve noticed two USB-C/USB3 issues with the Radxa Zero 3{E,W} when running Armbian (Edge & Current), which don’t occur on Radxa’s vendor builds (kernel 6.1).

 

1. Issues

  • All branches (Vendor, Current, Edge)
    • Depending on cable orientation, USB3 devices register inconsistently on either:  
      • Bus 001 → USB 2.0 (480M)  
      • Bus 002 → USB 3.0 (5000M)  
    • Reference: previous forum post
       
  • Armbian dfb7c4f: Current (6.12) & Edge (6.16)
    • My unpowered USB3 hub fails to work at all (it's fine on Radxa's builds & Vendor).
    • On touch, the hub feels more electrically charged than on vendor builds.
    • Plugging in a single device works, but it will still suffer from the cable “upside-down” speed bug.

 

2. Logs

  • Vendor branch
    • armbianmonitor -u: link
  • Edge branch (same behavior as Current)
    • armbianmonitor -u: link
  • Tried with U-Boot master and ATF mainline → no improvement  
    • build script diffs: link
    • U-Boot: 0c558bb
    • ATF: still v2.13, cannot set branch:master (or 9ee2ff1 directly) as Armbian's build script will fail
  • lsusb {-t} outputs: link
  • Build command used:
    ./compile.sh build BOARD=radxa-zero3 BRANCH=edge RELEASE=trixie \
      BUILD_DESKTOP=yes BUILD_MINIMAL=no \
      DESKTOP_ENVIRONMENT=gnome \
      DESKTOP_APPGROUPS_SELECTED="browsers desktop_tools" \
      KERNEL_CONFIGURE=no

 

3. Notes

  • My USB-PD passthrough adapter’s ethernet device does not appear on the OTG port (seems broken on both Armbian & Radxa vendor images).
  • No relevant fixes appear left in the kernel repos:

 

4. Device Tree References

 

I think this is due to the DT overlays, but this is a new topic for me. Could somebody please help me or point towards the next steps?

Edited by twwn
formatting

  • Author

Yes, the vendor image was compiled by myself.

 

I'm not that bothered by the orientation bug, but the inability to operate a hub given a single USB port badly curtails the use of the SBC.

 

Unfortunately device tree issues are entirely out of my league.

 

I've also edited my post to update the build script diffs. For one, I wasn't actually using ATF master, apparently it was just a cached v2.13. Armbian's build script (at least the rockchip64 part) actually breaks if you set ATFBRANCH='branch:master'.

 

I'll try to get the minor fixes merged, but unfortunately BOOT_SCENARIO="binman-atf-mainline", while now working fine for current and edge, would break vendor as it needs to be set globally.

@twwn

 

Add to rk3566-radxa-zero-3.dtsi -->  snps,usb2-lpm-disable;

https://github.com/armbian/build/blob/main/patch/kernel/archive/rockchip64-6.12/dt/rk3566-radxa-zero-3.dtsi#L495

 

 &usb_host0_xhci {
	dr_mode = "peripheral";
+	snps,usb2-lpm-disable;
 	status = "okay";
 };

 

See if it makes a difference.

 

Information:

https://www.kernel.org/doc/Documentation/devicetree/bindings/usb/dwc3.txt

This remembers me a recent set of changes to the DWC3 driver for RK3399 to fix exactly these kind of issues exposed here, including the single-orientation problem, plus some more issues with the displayport over usb type-c functionality.

 

The PR had a lot of comments but finally it got merged because both the author and me tested the whole apparatus and it proved to improve significantly the situation on rk3399: https://github.com/armbian/build/pull/8271


Patches should address some issues in the dwc3 driver in general, and I see from the device tree that rk356x uses the snps,dwc3 compatibility string, so probably also rk356x benefits from them as well. It would although require some device tree tinkering: I tested on Orange PI4 LTS board and the device tree fixes are within this hunk; rk356x-based devices can probably share several declarations but that depends upon the rk356x capabilities. I would start from changing dr_mode to otg and removing regulator-always-on; property from the vbus supply.

I have a Radxa Zero 3E and was facing the same issue. 

Since RK3566 is a stripped down version of RK3588. I figured the quirks on RK3588 might be able to apply to RK3566 as well.

The issue seems to be fixed now after I implemented these quirks taken from rk3588-base.dtsi on top of rk356x-base.dtsi. tested on Linux 6.17.9 and 6.18.0-rc7(Armbian linux-edge-rockchip64)

	usb_host1_xhci: usb@fd000000 {
		compatible = "rockchip,rk3568-dwc3", "snps,dwc3";
		reg = <0x0 0xfd000000 0x0 0x400000>;
		interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru CLK_USB3OTG1_REF>, <&cru CLK_USB3OTG1_SUSPEND>,
			 <&cru ACLK_USB3OTG1>;
		clock-names = "ref_clk", "suspend_clk",
			      "bus_clk";
		dr_mode = "host";
		phys = <&usb2phy0_host>, <&combphy1 PHY_TYPE_USB3>;
		phy-names = "usb2-phy", "usb3-phy";
		phy_type = "utmi_wide";
		power-domains = <&power RK3568_PD_PIPE>;
		resets = <&cru SRST_USB3OTG1>;
		snps,dis_u2_susphy_quirk;
+		snps,dis_enblslpm_quirk;
+		snps,dis-u2-freeclk-exists-quirk;
+		snps,dis-del-phy-power-chg-quirk;
+		snps,dis-tx-ipgap-linecheck-quirk;
		status = "disabled";
	};

 

If anyone else has other RK356x devices please try it out and I think it would be nice if someone could submit a patch to mainline kernel dts.

Not for nothing but i just discovered the 2GB zeroW I have will only populate usb3.0 devices correctly on the Radxa OS images, but not Armbian -- flipping doens't matter. 

However my 4GB zeroW will show all devices correctly on Armbian and Radxa OS.  

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.