NanoPi R4S-RK3399 is a great new OpenWrt device

I have been using the R4S on my 940/880 Fios connection. It can do line-rate SQM so long as you have network traffic pinned to the 2 A72 cores (the R4S has 6 cores 2 A72 high-performance cores and low power A53 cores). The OpenWrt instructions show how to do that. The R4S is also supported by mainline OpenWrt.

Here are some performance tests with the R4S and VPN I found:

Note of warning. If you want to do something like vpn, stay clear of the R5S. I bought that one first because of the 2.5 G ports, but the processor (4 A55 cores) is significantly slower than the one in the R4S for routing tasks.


Been using this. Thank you, seems great. No issues in >1 month. Plugged in my managed switch to the nanopi and it is working plug and play. Is that a feature of the build or is OpenWRT just that smart? This is the switch:

NETGEAR 8-Port PoE Gigabit Ethernet Plus Switch (GS108PEv3)

do you use :-

	set_interface_core 4 "eth0"
	set_interface_core 8 "eth1"
# Place eth0 receive packet queues on CPU 4 (A72)
echo -n 10 > /sys/class/net/eth0/queues/rx-0/rps_cpus
# Place eth1 receive packet queues on CPU 5 (A72)
echo -n 20 > /sys/class/net/eth1/queues/rx-0/rps_cpus

or echo -n 30?


I hope somebody can help me with mdns on the R4S. I want to reflect my mdns traffic between 2 Vlan interfaces. I followed the avahi tutorials and this doesn't work.
I allready made a topic explaining my problem but there isn't much response. That is why i am asking it here.

This is the topic i made with more information.

I've finally written the post about "how to build and receive (in png or pdf) the OpenWrt grafana dashboard to your email":

1 Like

Does it support the NanoPi R4SE, which has emmc?

Does anyone know if there has been any progress on the SD card boot issue? One of my devices still has that problem, frequently. Weirdly, it happens much less often on the first R4S that I bought.

No, it would be complicated... get the normal R4S.

It's supported. But you currently can not use the emmc and need to overwrite the bootloader to ensure booting from SD Card.

1 Like

I do have the problem with recent snapshots. The problem disappeared for a long time. Not sure what changed in recent updates.

Could you be a bit more specific? Which problems are you facing?

1 Like

The same soft reboot problem returns on the snapshot build. I have to hard boot the device by unplugging the power.

Cake with WallmartShopper's build drops my downstream from 200-400Mbps to 10. I'm not going to bother debugging this now but wanted to note it here. Could be my switch. Using wifi and a TP-Link EAP265 HD (Omada).

Hello everyone,

I am currently using an R4S with FriendlyWRT. And now I am considering to switch to standard OpenWRT.

I am exploring whether I should just use the pre-built image by OpenWRT or a custom built one.

I am leaning towards using @anaelorlinski's github actions workflow for R4S custom images., but I have a few questions about how it all would work.

The advantages seem to be...

  • Improved, proprietary network driver
  • Fixes and improvements for friendly elec devices, such as fix for the reboot bug
  • Ability to pre-configure with necessary settings
  • Ability to pre-install packages

What I'd like to know is whether there are any disadvantages that I don't see. For example...

1. Do upgrades reset the config?

Let's say I build my custom image, load it on the router and configure everything.

A while later after running it like this, I decide to add another kernel patch, rebuild the firmware.

Can I just upgrade to it, get the kernel patch and keep all my settings and other modifications? Or would "upgrading" again, reset everything?

2. What is the best way to pre-configure the image?

I like the idea of having an image that is pre-configured. If the SD card ever dies, I would be able to just flash a new SD card with the existing config and everything should just work.

I see there are two ways of doing it:

  1. Just replace the default files in the openwrt build
  2. Use uci defaults

Which one would you recommend? Replacing the files is easier, because I could just copy my existing files from my FriendlyWRT install.

Using UCI defaults would be safer for future firmware upgrades, but seems to be be A LOT of work.

Do you know of any scripts that could be just run on the existing OpenWRT configs to generate the appropriate uci commands?

Thank you in advance!

He has a config script that I used as basis to do a "first boot" config.

1 Like

I originally tried openwrt master but @anaelorlinski's build was far better and had all the patches needed. He also has docker built in which made my ubiquity image simple to deploy. Its installed on a 3rd partition I create after writing his builds to an sdcard. I also use that partition to install AdGuard Home on it. because I have a pair of these sdcards I can flash a new image to the other card and then copy my 3rd partition to the new card with a sdcard reader and be backup running with a few tweaks.

1 Like

That's awesome. Thank you for sharing your experience.

Have you updated or reflashed the firmware yet? Are the files on your 3rd partition preserved?

And just to confirm, instead of expanding the storage (increasing the size of the default partition), you added another one. Correct?

I'm running an older build at present. I was waiting for him to update before I swapped again.

I've not tried flashing over the top directly. I usually wipe the card, flash the new image, mount the image via a card reader and add 3rd partition back and then copy my currently booted 3rd partition to the new partition and then reboot with new card and do the tweaks as required.

And yes. I just use the 3rd partition to fill the card. Mostly to keep things simple.

default is a 1gb root and I use the 3rd partition to max out the sdcard.

root@OpenWrt:~# fdisk -l
Disk /dev/mmcblk1: 29.72 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: BE6EBE25-F7D8-432B-8700-96B7544A688B

Device           Start      End  Sectors  Size Type
/dev/mmcblk1p1   65536   147455    81920   40M Linux filesystem
/dev/mmcblk1p2  196608  2293759  2097152    1G Linux filesystem
/dev/mmcblk1p3 2293760 62333918 60040159 28.6G Linux filesystem

But does that mean you have to re-do all configuration every time you wipe it? Or you restore the backup each time?

yes it does but its fairly simple. with the docker images on the 3rd partition all I have to do is re kick that back off and it picks up config etc from there.