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.

NanoPi M5 (RK3576): gigabit RX broken due to double RGMII delay in DTB

Featured Replies

**Board:** NanoPi M5 (RK3576)
**Kernel:** 6.18.33-current-rockchip64 (#1 SMP PREEMPT Sat May 23 11:07:21 UTC 2026)
**Armbian build:** v26.8.0-trunk.53

## Problem

Gigabit RX is completely non-functional on `end0` (GMAC0, `ethernet@2a220000`). The interface comes up at 1000Mb/s, TX works, but no packets are ever received. DHCP never gets an OFFER, `ethtool -S end0` shows RX counters stuck at zero.

Forcing 100Mb/s via `ethtool -s end0 speed 100 duplex full autoneg off` works around the issue — RX starts working immediately.

## Root cause

The DTB sets `phy-mode = "rgmii-id"` together with `rx_delay = <0x3f>`. The RTL8211F PHY in `-id` mode already applies its own internal RX delay, and the driver applies an additional hardware delay on top of it. The double delay breaks gigabit RX entirely.

```
# /boot/dtb/rockchip/rk3576-nanopi-m5.dtb — broken
phy-mode = "rgmii-id";
tx_delay = <0x21>;
rx_delay = <0x3f>;   # <-- causes double RX delay
```

## Fix

Change `phy-mode` to `rgmii-rxid` (PHY applies RX delay internally) and remove `rx_delay`. This applies to both GMAC0 (`ethernet@2a220000`) and GMAC1 (`ethernet@2a230000`).

```
# Fixed
phy-mode = "rgmii-rxid";
tx_delay = <0x21>;
# rx_delay removed
```

After applying this fix gigabit works correctly at 1000Mb/s with full RX functionality.

## Workaround

```bash
ethtool -s end0 speed 100 duplex full autoneg off
```

Or patch the DTB manually:

```bash
dtc -I dtb -O dts -o /tmp/nanopi.dts /boot/dtb/rockchip/rk3576-nanopi-m5.dtb
sed -i 's/phy-mode = "rgmii-id"/phy-mode = "rgmii-rxid"/g' /tmp/nanopi.dts
sed -i '/rx_delay/d' /tmp/nanopi.dts
dtc -I dts -O dtb -o /boot/dtb/rockchip/rk3576-nanopi-m5.dtb /tmp/nanopi.dts
reboot
```

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.