CM5: Armbian with rpi-cm4-io disconnects USB hub during booting

I tried to flash Armbian_community_…Armsom-cm5-rpi-cm4-io_… .

After flashing, there is one critical problem.
USB hub always connects and disconnects 2 times during booting.
I have tried with too many variations, but I got the same problem.

  • sever/desktop, communityRel/ selfBuild, 25.5.0-trunk.200/ other version,
    CONFIG_USB_ONBOARD_HUB check/ not
  • CM4-nano-B with external usb hub is OK, but onboard hub has the problem.
  • Official debian, armsom-cm5-rpi-cm4-io-debian-12-xfce4-arm64, does not have this problem.

This page suggests Armbian_community_25.5.0-trunk.185.
Because armbian/build has no tag of 25.5.0-trunk.185, I tried to use 25.5.0-trunk.200 near to 185. The same problem.

dmesg outputs:

[ 6.190239] hub 1-1:1.0: USB hub found

[ 7.868081] rk-pcie 2a200000.pcie: PCIe Link Fail, LTSSM is 0x3, hw_retries=0
[ 7.868642] usb 1-1: USB disconnect, device number 2

[ 9.326443] hub 1-1:1.0: USB hub found

[ 11.213062] rk-pcie 2a200000.pcie: PCIe Link Fail, LTSSM is 0x3, hw_retries=1
[ 11.213297] usb 1-1: USB disconnect, device number 4

Please let me know how to fix the disconnection of usb hub.

Thanks.

Why do we need an armbian system? Does the firmware we maintain not meet the requirements

I found the reason. (Different function of Pin 100)

  • cm5-io: PCIe_PWR_EN
  • rpi-cm4-io: nEXTRST used for USB hub reset

With rpi-cm4-io and no pcie device,

  • linux sets PCIe_PWR_EN=0 (turn off pcie)
  • But rpi-cm4-io thinks that nEXTRST=0 (always reset usb hub)

The temporary solution is:

  • For the pause of compile, please turn on kernel config
  • When kernel config appears,
    sudo vi ./cache/sources/linux-kernel-worktree/6.1__rk35xx__arm64/arch/arm64/boot/dts/rockchip/rk3576-armsom-cm5-rpi-cm4-io.dts
  • Add the following fix in order to always turn on pcie
        vcc3v3_pcie0: vcc3v3-pcie0 {
...
                regulator-boot-on;
                regulator-always-on;
                enable-active-high;
...
        };

Because “sudo apt dist-upgrade” overwrites .dtb, make sure backup and restore.