Radxa Zero 3w OTG Port Not Loading Peripherals

Creating a bug report/issue

I have searched the existing open and closed issues

Required Information

  • DietPi version | cat /boot/dietpi/.version
    G_DIETPI_VERSION_CORE=9
    G_DIETPI_VERSION_SUB=18
    G_DIETPI_VERSION_RC=1
    G_GITBRANCH=‘master’
    G_GITOWNER=‘MichaIng’
    G_LIVE_PATCH_STATUS[0]=‘applied
  • Distro version | echo $G_DISTRO_NAME $G_RASPBIAN
    trixie
  • Kernel version | uname --all
    Linux DietPi 6.1.115-vendor-rk35xx #1 SMP Fri Oct 3 09:48:39 UTC 2025 aarch64 GNU/Linux
  • Architecture | dpkg --print-architecture
    arm64
  • SBC model | echo $G_HW_MODEL_NAME or (EG: RPi3)
    Radxa ZERO 3 (aarch64)
  • Power supply used | (EG: 5V 1A RAVpower)
    5v 3A
  • SD card used | (EG: SanDisk ultra)
    SanDisk Ultra

Additional Information (if applicable)

  • Software title | (EG: Nextcloud) Docker Engine
  • Was the software title installed freshly or updated/migrated?
    Fresh install
  • Can this issue be replicated on a fresh installation of DietPi?
    Yes!
    ← If you sent a “dietpi-bugreport”, please paste the ID here →
  • Bug report ID | echo $G_HW_UUID

Steps to reproduce

  1. Plug in a peripheral in the OTG port. dmesg will report a VBUS error on startup and the peripheral will not be loaded.

  2. I have attempted to add overlays to get this to work. In this github issue it was suggested that after that release, 8.12, the overlay, dietpi-usb-otg, should work, but I’ve been unsuccessful.

Expected behaviour

  • Peripherals should load as expected on the usb 2.0 OTG port.

Actual behaviour

  • Peripherals are erroring out with this error:
    [ 14.281295] phy phy-fe8a0000.usb2-phy.0: Looking up phy-supply from device tree
    [ 14.281329] phy phy-fe8a0000.usb2-phy.0: Looking up phy-supply property in node /usb2-phy@fe8a0000/host-port failed
    [ 14.281531] phy phy-fe8a0000.usb2-phy.1: Looking up phy-supply from device tree
    [ 14.281553] phy phy-fe8a0000.usb2-phy.1: Looking up phy-supply property in node /usb2-phy@fe8a0000/otg-port failed
    [ 14.281713] phy phy-fe8a0000.usb2-phy.1: Looking up vbus-supply from device tree
    [ 14.281735] phy phy-fe8a0000.usb2-phy.1: Looking up vbus-supply property in node /usb2-phy@fe8a0000/otg-port failed
    [ 14.284251] phy phy-fe8b0000.usb2-phy.2: Looking up phy-supply from device tree
    [ 14.284284] phy phy-fe8b0000.usb2-phy.2: Looking up phy-supply property in node /usb2-phy@fe8b0000/host-port failed
    [ 14.284472] phy phy-fe8b0000.usb2-phy.3: Looking up phy-supply from device tree
    [ 14.284494] phy phy-fe8b0000.usb2-phy.3: Looking up phy-supply property in node /usb2-phy@fe8b0000/otg-port failed
    [ 14.284649] phy phy-fe8b0000.usb2-phy.3: Looking up vbus-supply from device tree
    [ 14.284670] phy phy-fe8b0000.usb2-phy.3: Looking up vbus-supply property in node /usb2-phy@fe8b0000/otg-port failed

Extra details

  • I’ve tried to edit the dietpiEnv.txt file, but to no avail. I’ll be completely transparent…I know my way around Linux based systems from an end user perspective - I know enough to get by, but when it comes to hardware integration in these systems I’m flying blind…so I may be doing something really dumb - in fact I think I am since nobody else seems to have this problem. Here is the dietpiEnv.txt file I modified. I changed the overlaypath because it didn’t seem like there was anything directly in the /boot mount for overlays.

    Thanks in advance for the help

    rootdev=UUID=4cafccb9-e429-4cb3-a34c-af23f6c5ff3a
    rootfstype=ext4
    
    The init system logs to the console defined last.
    
    consoleargs=console=tty1 console=ttyS1,115200 console=ttyFIQ0,1500000
    extraargs=net.ifnames=0 video=HDMI-A-1:1280x800
    docker_optimizations=on
    overlay_path=dtb/rockchip/overlay
    
    Multiple prefixes are supported separated by space
    overlay_prefix=radxa-zero3 rk3568 rockchip
    overlays=usbhost0 usbhost1 usbhost2 usbhost3 dietpi-usb-otg dwc3-otg
    

To see available overlays, check /boot/dtb/rockchip/overlay. Those which start with one of the prefixes defined with the overlay_prefix variable in /boot/dietpiEnv.txt are generally compatible, which however does not mean that each of them really works, or has a particular effect on the board, since not all of them make use of all hardware features the SoC theoretically supports.

So there are 3 overlays to control the dwc3 mode:

This node is enabled in the device tree: linux-rockchip/arch/arm64/boot/dts/rockchip/rk3566-radxa-zero3.dtsi at bd032d59a096344a1f29acf9965d8c46f9a847a8 · armbian/linux-rockchip · GitHub

It’s default mode is OTG: linux-rockchip/arch/arm64/boot/dts/rockchip/rk356x.dtsi at bd032d59a096344a1f29acf9965d8c46f9a847a8 · armbian/linux-rockchip · GitHub
So dwc3-otg has no effect in this particular case, all the other ones you added are invalid anyway. Try the peripheral mode:

G_SUDO G_CONFIG_INJECT 'overlays=' 'overlays=dwc3-peripheral' /boot/dietpiEnv.txt

Oh, and your overlay_path is wrong. That must only contain the vendor subdir, nothing else:

G_SUDO G_CONFIG_INJECT 'overlay_path=' 'overlay_path=rockchip' /boot/dietpiEnv.txt

Hey Michalng - thanks so much! It wasn’t actually the peripheral mode that did it, but host mode. I may have poorly explained what I was doing - I was trying to get the OTG port into host mode to connect a peripheral device, anyway, your well detailed explanation got me there.

I think it was just a lack of understanding with what the pathing and prefixes were doing in the env file. Cannot thank you enough for the guidance and kindness you showed a noob. Also thanks for your work on the project.

I marked your message as “solution” - I’m not sure if there’s anything else I need to do in order to close this out.

1 Like

Great that it works.“Plug in a peripheral in the OTG port” was actually pretty clear about what you are aiming for, I somehow caught only the word “peripheral” and that you tried two OTG overlays before looking into available overlays :sweat_smile:.

Another self-reminder to add some device tree overlays menu to dietpi-config

1 Like