Nanopi Neo3 Plus

Hi DietPi Team,

I would like to request official support and a dedicated image for the FriendlyElec NanoPi NEO3 Plus.

Currently, there is no official image for this specific board on the download page, and using standard rockchip images or older legacy images doesn’t boot or fails to initialize the hardware properly.

However, I have discovered an interesting workaround that might help implement official support easily:

  • The NanoPi NEO3 Plus shares the same Rockchip RK3528 / RK3528A SoC as the NanoPi Zero2.

  • If I flash the official DietPi NanoPi Zero2 image, the board boots up perfectly, and the system is fully stable.

  • The main issue: The NanoPi NEO3 Plus features a dedicated Gigabit Ethernet port (RTL8211F chip) and a USB 3.0 Type-A port, whereas the Zero2 image limits or misconfigures certain hardware components due to the different Device Tree (.dtb).

Could you please consider adding a dedicated build for the NanoPi NEO3 Plus? Since the kernel and base configuration from the NanoPi Zero2 image already boot flawlessly on this SoC, adapting the Device Tree to enable the proper Gigabit Ethernet capabilities and USB 3.0 bus on the NEO3 Plus should be relatively straightforward.

I have the hardware ready and running DietPi v10.5.2 via the Zero2 image right now, so I am more than happy to test any beta/experimental images, provide logs (dmesg, lsusb, etc.), or do troubleshooting to help bring native support for this micro-server board.

Thank you so much for your amazing work with DietPi!

Some info in case is needed.

root@DietPi:\~# lsusb -t
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=ohci-platform/1p, 12M
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=ehci-platform/1p, 480M
/:  Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 480M
/:  Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 5000M
root@DietPi:\~# ethtool eth0
Settings for eth0:
Supported ports: \[ TP    MII \]
Supported link modes:   10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes:  10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes:  10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Auto-negotiation: on
master-slave cfg: preferred slave
master-slave status: slave
Port: Twisted Pair
PHYAD: 1
Transceiver: external
MDI-X: Unknown
Supports Wake-on: ug
Wake-on: d
Current message level: 0x0000003f (63)
drv probe link timer ifdown ifup
root@DietPi:\~# cat /proc/device-tree/model
FriendlyElec NanoPi Zero2root@DietPi:\~#

# root@DietPi:\~# lshw -short
H/W path   Device          Class       Description

system      FriendlyElec NanoPi Zero2


/0                         bus         Motherboard
/0/0                       processor   cpu
/0/1                       processor   cpu
/0/2                       processor   cpu
/0/3                       processor   cpu
/0/4                       processor   cpu-map
/0/5                       processor   idle-states
/0/6                       memory      963MiB System memory
/1         usb1            bus         Generic Platform OHCI controller
/2         usb2            bus         EHCI Host Controller
/3         usb3            bus         xHCI Host Controller
/4         usb4            bus         xHCI Host Controller
/5         mmc0            bus         MMC Host
/5/5048    /dev/mmcblk0    disk        124GB SD128
/5/5048/1  /dev/mmcblk0p1  volume      116GiB EXT4 volume
/6         mmc2            bus         MMC Host
/7         card0           multimedia  rk3528acodec
/8         input0          input       adc-keys
/9         input1          input       adc2-keys
/a         eth0            network     Ethernet interface
root@DietPi:\~# dmesg | grep -E "eth|wlan|usb|rockchip"
\[    5.829649\] psci: probing for conduit method from DT.
\[    6.113445\] rockchip-gpio ff610000.gpio: probed /pinctrl/gpio@ff610000
\[    6.114752\] rockchip-gpio ffaf0000.gpio: probed /pinctrl/gpio@ffaf0000
\[    6.116004\] rockchip-gpio ffb00000.gpio: probed /pinctrl/gpio@ffb00000
\[    6.117227\] rockchip-gpio ffb10000.gpio: probed /pinctrl/gpio@ffb10000
\[    6.118565\] rockchip-gpio ffb20000.gpio: probed /pinctrl/gpio@ffb20000
\[    6.119332\] rockchip-pinctrl pinctrl: probed pinctrl
\[    6.158066\] usbcore: registered new interface driver usbfs
\[    6.158608\] usbcore: registered new interface driver hub
\[    6.159648\] usbcore: registered new device driver usb
\[    6.165574\] arm-scmi firmware:scmi: SCMI Protocol v2.0 'rockchip:' Firmware version 0x0
\[    6.291477\] rockchip-thermal ffad0000.tsadc: tsadc is probed successfully!
\[    7.302329\] rockchip-usb2phy ffdf0000.usb2-phy: error -ENXIO: IRQ index 0 not found
\[    7.303276\] phy phy-ffdf0000.usb2-phy.0: Looking up phy-supply from device tree
\[    7.303291\] phy phy-ffdf0000.usb2-phy.0: Looking up phy-supply property in node /usb2-phy@ffdf0000/otg-port failed
\[    7.303399\] phy phy-ffdf0000.usb2-phy.0: Looking up vbus-supply from device tree
\[    7.303410\] phy phy-ffdf0000.usb2-phy.0: Looking up vbus-supply property in node /usb2-phy@ffdf0000/otg-port failed
\[    7.304404\] phy phy-ffdf0000.usb2-phy.1: Looking up phy-supply from device tree
\[    7.304442\] vcc5v0_host: could not add device link phy-ffdf0000.usb2-phy.1: -ENOENT
\[    7.315216\] mpp_service mpp-srv: 6c47657a381c author: Yandong Lin 2025-01-16 video: rockchip: mpp: Fix missing enable_irq in timeout work
\[    7.347402\] rockchip-system-monitor rockchip-system-monitor: system monitor probe
\[    7.358657\] rockchip-vop2 ff840000.vop: Adding to iommu group 3
\[    7.365952\] rockchip-vop2 ff840000.vop: \[drm:vop2_bind\] vp0 assign plane mask: \[0x0\], primary plane phy id: INVALID\[-1\]
\[    7.366986\] rockchip-vop2 ff840000.vop: \[drm:vop2_bind\] vp1 assign plane mask: \[0x0\], primary plane phy id: INVALID\[-1\]
\[    7.369271\] rockchip-vop2 ff840000.vop: \[drm:vop2_bind\] Esmart2-win0 as cursor plane for vp0
\[    7.375676\] rockchip-vop2 ff840000.vop: failed to init opp info
\[    7.376712\] rockchip-vop2 ff840000.vop: Unsupported VOP aclk dvfs
\[    7.377809\] rockchip-drm display-subsystem: bound ff840000.vop (ops 0xffff800009334940)
\[    7.380140\] \[drm\] Initialized rockchip 4.0.0 20140818 for display-subsystem on minor 0
\[    7.380923\] rockchip-drm display-subsystem: failed to parse loader memory
\[    7.382301\] rockchip-drm display-subsystem: \[drm\] Cannot find any crtc or sizes
\[    7.383847\] rockchip-drm display-subsystem: \[drm\] run display error_event monitor
\[    7.402034\] rk_gmac-dwmac ffbe0000.ethernet: IRQ eth_lpi not found
\[    7.402825\] rk_gmac-dwmac ffbe0000.ethernet: PTP uses main clock
\[    7.403763\] rk_gmac-dwmac ffbe0000.ethernet: Looking up phy-supply from device tree
\[    7.403780\] rk_gmac-dwmac ffbe0000.ethernet: Looking up phy-supply property in node /ethernet@ffbe0000 failed
\[    7.403812\] rk_gmac-dwmac ffbe0000.ethernet: supply phy not found, using dummy regulator
\[    7.405276\] rk_gmac-dwmac ffbe0000.ethernet: clock input or output? (output).
\[    7.406637\] rk_gmac-dwmac ffbe0000.ethernet: TX delay(0x30).
\[    7.407777\] rk_gmac-dwmac ffbe0000.ethernet: Can not read property: rx_delay.
\[    7.408938\] rk_gmac-dwmac ffbe0000.ethernet: set rx_delay to 0xffffffff
\[    7.410177\] rk_gmac-dwmac ffbe0000.ethernet: integrated PHY? (no).
\[    7.411322\] rk_gmac-dwmac ffbe0000.ethernet: cannot get clock mac_clk_rx
\[    7.412475\] rk_gmac-dwmac ffbe0000.ethernet: cannot get clock mac_clk_tx
\[    7.413682\] rk_gmac-dwmac ffbe0000.ethernet: cannot get clock clk_mac_speed
\[    7.415137\] rk_gmac-dwmac ffbe0000.ethernet: init for RGMII_RXID
\[    7.416522\] rk_gmac-dwmac ffbe0000.ethernet: User ID: 0x40, Synopsys ID: 0x51
\[    7.417709\] rk_gmac-dwmac ffbe0000.ethernet:         DWMAC4/5
\[    7.418817\] rk_gmac-dwmac ffbe0000.ethernet: DMA HW capability register supported
\[    7.419948\] rk_gmac-dwmac ffbe0000.ethernet: RX Checksum Offload Engine supported
\[    7.421290\] rk_gmac-dwmac ffbe0000.ethernet: TX Checksum insertion supported
\[    7.422583\] rk_gmac-dwmac ffbe0000.ethernet: Wake-Up On Lan supported
\[    7.423850\] rk_gmac-dwmac ffbe0000.ethernet: TSO supported
\[    7.424921\] rk_gmac-dwmac ffbe0000.ethernet: Enable RX Mitigation via HW Watchdog Timer
\[    7.426130\] rk_gmac-dwmac ffbe0000.ethernet: Enabled RFS Flow TC (entries=10)
\[    7.427478\] rk_gmac-dwmac ffbe0000.ethernet: TSO feature enabled
\[    7.428646\] rk_gmac-dwmac ffbe0000.ethernet: Using 40/40 bits DMA host/device width
\[    7.575671\] usbcore: registered new interface driver rndis_wlan
\[    7.576282\] usbcore: registered new interface driver asix
\[    7.577275\] usbcore: registered new interface driver cdc_ether
\[    7.578311\] usbcore: registered new interface driver rndis_host
\[    7.579362\] usbcore: registered new interface driver cdc_ncm
\[    7.592629\] usbcore: registered new interface driver cdc_acm
\[    7.593728\] ehci-platform ff100000.usb: EHCI Host Controller
\[    7.593750\] ohci-platform ff140000.usb: Generic Platform OHCI controller
\[    7.593775\] ohci-platform ff140000.usb: new USB bus registered, assigned bus number 1
\[    7.593922\] ohci-platform ff140000.usb: irq 55, io mem 0xff140000
\[    7.594690\] usbcore: registered new interface driver uas
\[    7.594956\] ehci-platform ff100000.usb: new USB bus registered, assigned bus number 2
\[    7.595579\] usbcore: registered new interface driver usb-storage
\[    7.596429\] ehci-platform ff100000.usb: irq 54, io mem 0xff100000
\[    7.611233\] ehci-platform ff100000.usb: USB 2.0 started, EHCI 1.00
\[    7.612171\] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
\[    7.613099\] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
\[    7.614271\] usb usb2: Product: EHCI Host Controller
\[    7.616533\] usb usb2: Manufacturer: Linux 6.1.115-vendor-rk35xx ehci_hcd
\[    7.618636\] usb usb2: SerialNumber: ff100000.usb
\[    7.626358\] usbcore: registered new interface driver uvcvideo
\[    7.632097\] dwmmc_rockchip ffc30000.mmc: No normal pinctrl state
\[    7.632842\] dwmmc_rockchip ffc30000.mmc: No idle pinctrl state
\[    7.634617\] dwmmc_rockchip ffc30000.mmc: IDMAC supports 32-bit address mode.
\[    7.635906\] dwmmc_rockchip ffc30000.mmc: Using internal DMA controller.
\[    7.637580\] dwmmc_rockchip ffc30000.mmc: Version ID is 270a
\[    7.639784\] dwmmc_rockchip ffc30000.mmc: DW MMC controller at irq 58,32 bit host data width,256 deep fifo
\[    7.641692\] dwmmc_rockchip ffc30000.mmc: Looking up vmmc-supply from device tree
\[    7.642363\] dwmmc_rockchip ffc30000.mmc: Looking up vqmmc-supply from device tree
\[    7.646655\] usbcore: registered new interface driver usbhid
\[    7.647337\] usbhid: USB HID core driver
\[    7.648580\] rockchip,bus gpu-bus: Looking up bus-supply from device tree
\[    7.648930\] rockchip,bus gpu-bus: bin=0
\[    7.649396\] rockchip,bus gpu-bus: leakage=15
\[    7.650039\] rockchip,bus gpu-bus: leakage-volt-sel=0
\[    7.650906\] rockchip,bus gpu-bus: Looking up pvtm-supply from device tree
\[    7.650918\] rockchip,bus gpu-bus: Looking up pvtm-supply property in node /gpu-bus failed
\[    7.650947\] rockchip,bus gpu-bus: error -ENODEV: \_opp_set_regulators: no regulator (pvtm) found
\[    7.652098\] usb usb1: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 6.01
\[    7.652222\] rockchip,bus gpu-bus: failed to set opp config
\[    7.652918\] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
\[    7.653416\] rockchip,bus gpu-bus: failed to init opp info
\[    7.654068\] usb usb1: Product: Generic Platform OHCI controller
\[    7.654581\] rockchip,bus gpu-bus: failed to get OPP table
\[    7.655106\] usb usb1: Manufacturer: Linux 6.1.115-vendor-rk35xx ohci_hcd
\[    7.655595\] rockchip,bus gpu-bus: failed to init power control
\[    7.656200\] usb usb1: SerialNumber: ff140000.usb
\[    7.659829\] rockchip-saradc ffae0000.saradc: Looking up vref-supply from device tree
\[    7.673588\] optee: probing for conduit method.
\[    7.676420\] usbcore: registered new interface driver snd-usb-audio
\[    7.705100\] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
\[    7.706384\] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
\[    7.706392\] usb usb3: Product: xHCI Host Controller
\[    7.706398\] usb usb3: Manufacturer: Linux 6.1.115-vendor-rk35xx xhci-hcd
\[    7.706405\] usb usb3: SerialNumber: xhci-hcd.1.auto
\[    7.714013\] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
\[    7.714981\] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.01
\[    7.716306\] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
\[    7.717680\] usb usb4: Product: xHCI Host Controller
\[    7.718812\] usb usb4: Manufacturer: Linux 6.1.115-vendor-rk35xx xhci-hcd
\[    7.719860\] usb usb4: SerialNumber: xhci-hcd.1.auto
\[    7.770720\] dwmmc_rockchip ffc30000.mmc: Successfully tuned phase to 90
\[    7.788680\] \[WLAN_RFKILL\]: Enter rfkill_wlan_init
\[    7.876581\] rockchip-dmc dmc: bin=0
\[    7.877347\] rockchip-dmc dmc: leakage=15
\[    7.878048\] rockchip-dmc dmc: leakage-volt-sel=2
\[    7.878883\] rockchip-dmc dmc: Looking up center-supply from device tree
\[    7.879372\] rockchip-dmc dmc: avs=0
\[    7.879727\] rockchip-dmc dmc: current ATF version 0x100
\[    7.880965\] rockchip-dmc dmc: normal_rate = 1056000000
\[    7.881783\] rockchip-dmc dmc: failed to get vop bandwidth to dmc rate
\[    7.882808\] rockchip-dmc dmc: failed to get vop pn to msch rl
\[    7.884273\] rockchip-dmc dmc: l=10000 h=2147483647 hyst=5000 l_limit=0 h_limit=0 h_table=0
\[    7.966935\] rockchip-suspend not set sleep-mode-config for mem-lite
\[    7.967548\] rockchip-suspend not set wakeup-config for mem-lite
\[    7.968661\] rockchip-suspend not set sleep-mode-config for mem-ultra
\[    7.969756\] rockchip-suspend not set wakeup-config for mem-ultra
\[    8.007851\] dwmmc_rockchip ffc30000.mmc: Successfully tuned phase to 180
\[    8.645411\] rockchip-cpuinfo cpuinfo: SoC            : 35281001
\[    8.645964\] rockchip-cpuinfo cpuinfo: Serial         : aa0ec46fbbd33a11
\[   13.143162\] rk_gmac-dwmac ffbe0000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0
\[   13.231307\] rk_gmac-dwmac ffbe0000.ethernet eth0: PHY \[stmmac-1:01\] driver \[RTL8211F Gigabit Ethernet\] (irq=POLL)
\[   13.231973\] rk_gmac-dwmac ffbe0000.ethernet eth0: No Safety Features support found
\[   13.232000\] rk_gmac-dwmac ffbe0000.ethernet eth0: PTP not supported by HW
\[   13.232903\] rk_gmac-dwmac ffbe0000.ethernet eth0: configuring for phy/rgmii-rxid link mode
\[   17.331038\] rk_gmac-dwmac ffbe0000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
\[   17.331077\] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

should be similar to this request already open on GitHub NanoPi NEO3 Plus · Issue #8019 · MichaIng/DietPi · GitHub

Once it has Armbian support/a config, we can add it. But until then: I have other boards here which require custom vendor implementations to tinker with, hence won’t start tinkering with the NEO3 Plus.