Rock 3B 6.12 Kernel, only one Ethernet port working -- Road to DietPi -- [RESOLVED : Update U-Boot]

Hello,

I tried to install DietPi on the board by using the provided script at first, met some problems but ultimately succeeded with the help of DietPi’s dev . Now the board is on the 6.12 kernel, but only one of the Ethernet port works :

Full story here : Rock 3B’s road to DietPi

Now I’m trying to backport the drivers / dtb from Radxa to the latest firmware / Kernel , do you guys have a way to do that ? I’m willing to dig in this :slight_smile:

Boot your board and OS using mainline U-Boot built for ROCK 3B and both Ethernet ports should work using mainline Linux. Both ports worked when I added initial support for ROCK 3B in mainline Linux and U-Boot.

1 Like

That is called technical support, not development. They download Armbian, brand to Dietpi and sell it to you. When problems goes up, they sent you here or to Armbian. Bad open source practice.

I’ll try to do that. How did you do it ?

dev = developer … There’s work done behind DietPi. They don’t support the board to begin with.
No one sent me here I’m just covering all the bases since the Discord is a pain to use.
I’m here because Radxa images are not up to date. " Bad open source practice "

I don’t think so, at least not hardware related. AFAIK they only apply branding to Armbian images. Which you can build on your own at any moment Getting Started - Armbian Documentation This is the reason why up-to-date exists.

We didn’t understand each other properly. Bad open source practice in sense of taking someone credits.

Providing uptodate images is extremely costly which no hardware vendor (except rpi) can assure. And certainly beyond one man projects.

The U-Boot documentation has some information on how to build and flash U-Boot.

https://docs.u-boot.org/en/latest/board/rockchip/rockchip.html#building

1 Like

have You managed to do that?
I’m trying to find out those:

  • pwm fan control
  • sata dtb

seems like recent (from 2023 :wink: radxa image had no support for those :confused:

BTW: kernel 6.13 works perfectly on 3B

Not yet, was busy, but good news for kernel 6.13 , i’ll give it a try :slight_smile:

1 Like

uname -a
Linux rock-3b 6.19.0-rc5-00139-g983d014aafb1 #1 SMP PREEMPT Sat Jan 17 00:40:53 UTC 2026 aarch64 GNU/Linux

Only one eth though, nvme broken / pcie on fresh start, dito for hdmi you have to modify the dts to make it work again

With Claude code help :

ROCK 3B: Fixing eth1 “Failed to reset the dma” on Mainline Kernel 6.x

Problem Description

When running mainline Linux kernel 6.x (tested with 6.19-rc5) on Radxa ROCK 3B, the second Ethernet port (eth1) fails to initialize with:

rk_gmac-dwmac fe2a0000.ethernet eth1: Failed to reset the dma
rk_gmac-dwmac fe2a0000.ethernet eth1: stmmac_hw_setup: DMA engine initialization failed
rk_gmac-dwmac fe2a0000.ethernet eth1: __stmmac_open: Hw setup failed

Symptoms:

  • eth0 works fine
  • eth1 PHY detected (RTL8211F) but interface fails to come up
  • ip link set eth1 up returns “Connection timed out”
  • Vendor kernel 5.10 works perfectly with both ports

Root Cause

The issue is NOT a Device Tree problem - it’s a U-Boot PHY reset issue.

The RTL8211F Ethernet PHYs require proper reset sequencing before Linux boots. Vendor U-Boot (or U-Boot built for ROCK 3A) does not properly reset the second PHY, causing the mainline stmmac driver to fail DMA initialization.

This was confirmed by Kwiboo (Jonas Karlman), who upstreamed ROCK 3B support to U-Boot and Linux:

“Use mainline U-Boot on any board with RTL8211F Ethernet PHYs for mainline Linux. Make sure you use a build for your board or you will have Ethernet issues in Linux, i.e. use a ROCK 3A image for 3B and you will only have one Ethernet port working.”

References:


Solution: Build and Flash Mainline U-Boot for ROCK 3B

Prerequisites

sudo apt install -y build-essential gcc-aarch64-linux-gnu bison flex \
    libssl-dev python3-dev python3-pyelftools python3-setuptools \
    swig device-tree-compiler bc git

Build Steps

mkdir -p ~/uboot-rock3b && cd ~/uboot-rock3b

# 1. ARM Trusted Firmware
git clone --depth 1 https://github.com/ARM-software/arm-trusted-firmware.git
cd arm-trusted-firmware
make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3568 bl31
export BL31=$(pwd)/build/rk3568/release/bl31/bl31.elf
cd ..

# 2. Rockchip DDR Binary
git clone --depth 1 https://github.com/rockchip-linux/rkbin.git
export ROCKCHIP_TPL=$(pwd)/rkbin/bin/rk35/rk3568_ddr_1560MHz_v1.23.bin

# 3. Mainline U-Boot
git clone --depth 1 https://source.denx.de/u-boot/u-boot.git
cd u-boot

# IMPORTANT: Use rock-3b defconfig, NOT rock-3a!
make CROSS_COMPILE=aarch64-linux-gnu- rock-3b-rk3568_defconfig
make CROSS_COMPILE=aarch64-linux-gnu- BL31=$BL31 ROCKCHIP_TPL=$ROCKCHIP_TPL -j$(nproc)

Flash to SPI

:warning: BACKUP FIRST!

# Backup
sudo dd if=/dev/mtdblock0 of=~/spi-backup-$(date +%Y%m%d).bin bs=4M

# Flash
sudo dd if=u-boot-rockchip-spi.bin of=/dev/mtdblock0 bs=4K
sync && sudo reboot

Results

After mainline U-Boot:

U-Boot 2026.04-rc1
Model: Radxa ROCK 3B
Net:   eth1: ethernet@fe010000, eth0: ethernet@fe2a0000

In Linux - both ports working at 1Gbps! :tada:

[   13.623312] rk_gmac-dwmac fe010000.ethernet eth0: Link is Up - 1Gbps/Full
[   13.972066] rk_gmac-dwmac fe2a0000.ethernet eth1: Link is Up - 1Gbps/Full

Additional Notes

NVMe Support

If NVMe isn’t detected, ensure your DTS has:

&pcie3x2 {
    vpcie3v3-supply = <&vcc3v3_sys2>;
};

Recovery Options

  1. Boot from SD card (flash u-boot-rockchip.bin at sector 64)
  2. Maskrom mode + rkdeveloptool
  3. Restore backup: sudo dd if=~/spi-backup-*.bin of=/dev/mtdblock0 bs=4K

Final Configuration

Component Status
eth0 :white_check_mark: 1Gbps
eth1 :white_check_mark: 1Gbps
WiFi (Intel 7265) :white_check_mark: Working
NVMe :white_check_mark: Working
U-Boot Mainline 2026.04-rc1
Kernel Mainline 6.19-rc5

Credits

  • @Kwiboo (Jonas Karlman) - For upstreaming ROCK 3B support and explaining the RTL8211F PHY reset issue
  • Armbian/DietPi community - For documenting the issue

Links


Tested on: Radxa ROCK 3B 8GB, Debian 11, Mainline Kernel 6.19-rc5

I could have done this sooner if I had followed @Kwiboo’s advice :expressionless_face: :man_facepalming:

What’s left to do

HDMI & NPU, but I’ve got the power supply chip pins (for the HDMI ) damaged on my board, I’ll have to do some soldering first. I’ll keep you updated.

Update, still on NPU, currently its working with rknn, goal is to use rocket driver , I will keep you posted :vulcan_salute:

1 Like