NanoPi R4S-RK3399 is a great new OpenWrt device

Welcome R4S club

  • SoC – Rockchip RK3399 hexa-core processor with dual-Core Cortex-A72 up to 2.0GHz, quad-core Cortex-A53 up to 1.5GHz, Mali-T864 GPU with OpenGL ES1.1/2.0/3.0/3.1, OpenCL, DX11, and AFBC support, 4K VP9 and 4K 10-bit H265/H264 60fps video decoder
  • System Memory – 4GB LPDDR4
  • Storage – MicroSD card slot
  • Networking – 2x GbE(RTL8211E 1Gbps - RTL8111H 1Gbps), including one native Gigabit Ethernet, and one PCIe Gigabit Ethernet
  • USB – 2x USB 3.0 Type-A ports, USB 2.0 via 4-pin header
  • Expansion – 2×5-pin header with 1x SPI, 1x I2C
  • Debugging – 3-pin debug UART header
  • Misc- 1x power LED, and 3x user LEDs (SYS, LAN, WAN), user button, 2-pin RTC battery connector, 5V fan connector
  • Power Supply
    • 5V/3A via USB-C connector or pin header
    • RK808-D PMIC and independent DC/DC enabling DVFS, software power-down, RTC wake-up, system sleep mode
  • Dimensions – 66 x 66 mm (8-layer PCB)
  • Temperature Range – -20°C to 70°C


The detailed information for NanoPi R4S

R4S OpenWrt official snapshots image
R4S OpenWrt latest compile firmware Fix reboot issues

==================NEWS================================
Ultimate device NanoPC-T6 replaces R4S T6_Club

Compiled the latest nanopc-t6 firmware that supports the openwrt main branch T6 using u-boot 24.01, and kernel 6.9.


  • SoC: Rockchip RK3588
    • CPU: Quad-core ARM Cortex-A76(up to 2.4GHz) and quad-core Cortex-A55 CPU (up to 1.8GHz)
    • GPU: Mali-G610 MP4, compatible with OpenGLES 1.1, 2.0, and 3.2, OpenCL up to 2.2 and Vulkan1.2
    • VPU: 8K@60fps H.265 and VP9 decoder, 8K@30fps H.264 decoder, 4K@60fps AV1 decoder, 8K@30fps H.264 and H.265 encoder
    • NPU: 6TOPs, supports INT4/INT8/INT16/FP16
  • RAM: 64-bit 4GB/8GB/16GB LPDDR4X at 2133MHz
  • Flash: 32GB/64GB/256GB eMMC, at HS400 mode
  • microSD: support up to SDR104 mode
  • Ethernet: 2x PCIe 2.5G Ethernet
  • 4G LTE: one mimiPCIe connector and one microSIM slot
  • USB-A: 1x USB 3.0 Type-A
  • USB-C: 1x Full function USB Type‑C™ port, support DP display up to 4Kp60, USB 3.0
  • Video input:
    • 1x Standard HDMI input port, up to 4Kp60
    • 2x 4-lane MIPI-CSI, compatible with MIPI V1.2
  • Video output:
    • 2x Standard HDMI output ports
      • compatible with HDMI2.1, HDMI2.0, and HDMI1.4 operation
      • one support displays up to 7680x4320@60Hz, another one support up to 4Kp60
      • Support RGB/YUV(up to 10bit) format
    • 2x 4-lane MIPI-DSI, compatible with MIPI DPHY 2.0 or CPHY 1.1
  • Audio:
    • 3.5mm jack for stereo headphone output
    • 2.0mm PH-2A connector for analog microphone input
  • GPIO:
    • 40-pin 2.54mm header connector
    • up to 2x SPIs, 6x UARTs, 1x I2Cs, 8x PWMs, 2x I2Ss, 28x GPIOs
  • M.2 Connectors
    • one M.2 M-Key connector with PCIe 3.0 x4 for NVMe SSDs up to 2,500 MB/s
    • one M.2 E-key connector with PCIe 2.1 x1 and USB2.0 Host
  • others:
    • 2 Pin 1.27/1.25mm RTC battery input connector for low power RTC IC HYM8563TS
    • one 38Khz IR receiver
    • MASK button for eMMC update, reset button, and Power button
    • one 5V Fan connector
    • Debug UART, 3-Pin 2.54mm header, 3.3V level, 1500000bps
    • 2 x GPIO Controlled LED (SYS, LED1)
  • Power supply: 5.5*2.1mm DC Jack, 12VDC input.
  • PCB: 8 Layer, 110x80x1.6mm
  • Ambient Operating Temperature: 0℃ to 70℃

Thanks contributed code

11 Likes

This would make an interesting little router.

What performance can we expect from something like this? Gbps NAT?

Any concerns native vs PCIe Gigabit Ethernet?

You'll have to wait for first practical experiences with this device, it's just not possible to estimate this in advance.

In general, assuming the SOC and its PCIe bridge is fast enough, 'any' PCIe card can do 1 GBit/s line speed (I'd be more concerned about the 'native' ethernet card of the SOC).

sad to see that they only make it with gigabit ethernet not 2.5gbps +

Adding support for the R4S to OpenWrt is going to be easy:

1 Like

Thanks for the link. The 1GB RAM model is considerably more expensive than the R2S (US$45 vs US$22). I was guessing it would've been around the $40 mark.
I'm curious about how hot the R4S will run but it looks like another sleek metal case from Friendlyelec.
@mj82 I'll be up for testing in mid-Jan

Nice, i would like to see some SQM and openvpn benchmarks, if you dont mind doing them :slight_smile:

@xiaobo can you try this image in your R4S, I need to know if at least it boot .

Thanks @xiaobo , I have to wait 3 to 4 weeks for the R4S to arrives and do more tests, I added the NanoPi R4S to my sources, maybe you can make some progress .

1 Like

The kernel isn't actually hanged. Serial console output is changed, and hence there is no more output.

mmc bootscript needs some adjustments.

@mj82

In line 3, here: https://github.com/openwrt/openwrt/blob/33c27ccf4aef677d28246d30e815050ead68b434/target/linux/rockchip/image/mmc.bootscript#L3

change: console=ttyS2,1500000 console=tty1 earlycon=uart8250,mmio32,0xff1a0000 root=PARTUUID=${uuid} rw rootwait

to: console=ttyS2,1500000 earlycon=uart8250,mmio32,0xff1a0000 root=PARTUUID=${uuid} rw rootwait

tty1 is the console at display output. Changing it to only ttyS2 should be fine.

1 Like

@xiaobo I updated the R4S dts adding the r8169 aliases for eth1, maybe is detected now.

@jayanta525 thanks for your suggestion, I added a boot script for the R4S

I don't think using r8169 driver on NanoPi R4S is a good idea, as you may know it performs really bad.

So I suggest using vendor driver from Realtek and it works well (at least for current):

The correct mainline driver for this hardware is indeed r8169, if that has problems with this specific hardware revision, those need to be fixed - the vendor module has no future in mainline nor OpenWrt. There is no systemic reason why the mainline r8169 module wouldn't work, I'm successfully using it with very good performance results on several different (r8168 based-) devices (x86_64).

See the following link:


However, it fails to boot on 1G RAM (DDR3 800 MHz) version, could you take a look?

Hey guys. I use a 4GB device and it works fine. The LED is not working properly.
Original DTS:

&leds {
	led@2 {
		gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
		label = "lan_led";
	};

	led@3 {
		gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
		label = "wan_led";
	};
};

&leds_gpio {
	rockchip,pins =
		<0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>,
		<1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>,
		<1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
};

But......... patch error - -

How do you add support? I don’t know how to add it into Linux menuconfig so I can compile for it.

Download and apply the patch from my repo:

wget https://patch-diff.githubusercontent.com/raw/mj22226/openwrt/pull/2.patch
git am 2.patch
1 Like

I'm getting some error's. Are you positive that your patch works?

error: patch failed: package/boot/uboot-rockchip/Makefile:38
error: package/boot/uboot-rockchip/Makefile: patch does not apply
Patch failed at 0001 uboot-rockchip: add support for NanoPi R4S
hint: Use 'git am --show-current-patch' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".