FriendlyElec has just launched the NanoPi R5S mini router powered by a Rockchip RK3568 processor, and the company kindly sent me two samples for review. In the first part of the review, I’ll check out the device itself, the internal design, the preinstalled OpenWrt, and run some networking benchmarks with iperf3.
NanoPi R5S unboxing
The router comes fully assembled together with a 3M sheet with 6 rubber feet, which, as we’ll see below, are not really necessary.
A microSD card socket can be found on one of the sides, while the rear panel comes with a USB-C port for power, a WiFi antenna hole (which can also be used to run cables for GPIO. UART console, etc…), two 2.5GbE RJ45 LAN ports, a Gigabit Ethernet WAN port, and HDMI video output.
We’ll find a Mask button for firmware flashing on the other side, and the front panel features four LEDs for “System” and Ethernet ports, as well as two USB 3.0 ports.
NanoPi R5S teardown
There are several reasons you might want to open the device: curiosity, M.2 NVMe SSD installation, soldering an SPI flash, connecting some GPIOs, an RTC battery, or a UART to TTL debug board. So it’s been made relatively easy to open with just four screws that needs to be loosened.
This will reveal the bottom side of the board with the M.2 Key M socket (I’ve purchased an NVMe SSD, and waiting for delivery), SPI flash footprint (right side), and a Samsung KLM8G1GETF-B041 eMMC 5.1 flash with 8GB capacity.
We’ll need to loosen four more screws before taking out the board from the enclosure.
Rayson RS512M32LM4 D2BDS is a 2GB LPDDR4X memory chip, and we’ve got the advertised RTL8211F (GbE) and 2x RTL8125BG (2.5GbE) Ethernet chips, plus an RK809 PMIC. We’ll also find the 16-pin SDIO/I2C connector and 2-pin RTC battery connectors on the left, 4-pin SWD and 3-pin UART headers (both unpopulated) on the top right, as well as a GPIO connector and fan header on the bottom right.
The Rockchip RK3568 processor is covered with a thermal pad that’s in direct contact with the metal enclosure for optimal cooling.
Test setup with 2.5GbE USB dongle and UP Xtreme i11 mini PC
Regular readers may remember that I had some performance issues with an RTL8156B USB dongle a while ago, but this is now fixed as Realtek sent me another one with RTL8156BG which I tested at 2.34Gbps/2.29Gbps with an iperf3 full duplex test when connected to my laptop and transferring data to/from UP Xtreme i11 mini PC through a TP-Link 2.5GbE switch.
I’ve now reused the same setup but with NanoPi R5S in the middle.
The TP-Link switch is only used as a Gigabit Ethernet switch here connecting the WAN port of the NanoPi R5S router to the internet through Xiaomi AX6000 router in case I have to install some packages on the devices. While it makes for a nicer photo to place the R5S on top of the TP-Link switch, both devices are quite hot, and it’s not recommended to do so. I only have short Ethernet cables, but I still managed to move the router on the table for testing.
OpenWrt and iperf3 benchmarking
FriendlyWrt is preinstalled on the router so it works out of the box. It’s also possible to access the LuCI interface or SSH immediately using “root” user and “password” as the password. That’s convenient, but insecure and possibly breaks the law in some countries. In any case, it’s a good idea to at least change the password the first time.
FriendlyWrt is based on OpenWrt 22.03.0-rc1 and Linux 5.10.66 kernel. There’s less than about 250MB RAM used at idle using default settings, so that leaves plenty of RAM to play with since the system comes with 2GB RAM.
I haven’t connected an SSD yet, so only the root partition is mounted with 920KB used out of the 6.7 GB available. All interfaces acquired IP addresses properly at boot time with DHCP, and the devices on the LAN can also be accessed with <hostname>.lan, and got some IPv6 addresses too.
Let’s start with some iperf3 benchmarking running “iperf3 -s” on NanoPiu R5S and running the following commands on the laptop:
- Download: (Rx from R5S point-of-view)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
iperf3 -t 60 -c 192.168.2.1 -i 10 Connecting to host 192.168.2.1, port 5201 [ 5] local 192.168.2.130 port 48782 connected to 192.168.2.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-10.00 sec 2.23 GBytes 1.92 Gbits/sec 0 1.69 MBytes [ 5] 10.00-20.00 sec 2.02 GBytes 1.74 Gbits/sec 0 1.69 MBytes [ 5] 20.00-30.00 sec 2.33 GBytes 2.00 Gbits/sec 0 2.64 MBytes [ 5] 30.00-40.00 sec 1.66 GBytes 1.42 Gbits/sec 0 2.64 MBytes [ 5] 40.00-50.00 sec 2.62 GBytes 2.25 Gbits/sec 0 2.64 MBytes [ 5] 50.00-60.00 sec 2.01 GBytes 1.73 Gbits/sec 0 2.64 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 12.9 GBytes 1.84 Gbits/sec 0 sender [ 5] 0.00-60.05 sec 12.9 GBytes 1.84 Gbits/sec receiver iperf Done. |
- Upload (Tx from R5S point-of-view):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ iperf3 -t 60 -c 192.168.2.1 -i 10 -R Connecting to host 192.168.2.1, port 5201 Reverse mode, remote host 192.168.2.1 is sending [ 5] local 192.168.2.130 port 48786 connected to 192.168.2.1 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 1.29 GBytes 1.11 Gbits/sec [ 5] 10.00-20.00 sec 1.31 GBytes 1.12 Gbits/sec [ 5] 20.00-30.00 sec 1.33 GBytes 1.14 Gbits/sec [ 5] 30.00-40.00 sec 1.27 GBytes 1.09 Gbits/sec [ 5] 40.00-50.00 sec 1.30 GBytes 1.12 Gbits/sec [ 5] 50.00-60.00 sec 1.30 GBytes 1.12 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.06 sec 7.80 GBytes 1.12 Gbits/sec 0 sender [ 5] 0.00-60.00 sec 7.80 GBytes 1.12 Gbits/sec receiver iperf Done. |
That’s not quite the 2.35 Gbps and 1.85 Mbps advertised by FriendlyElec, as I only got 1.84 Gbps and 1.12 Gbps in this configuration. There’s also some variations on the Rx side when looking at the 10-second reports. The good news is that there are no retransmissions at all.
Let’s now try the same with the other WAN port on NanoPi R5S, and run the commands from UP Xtreme i11:
- Download (Rx):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
devkit@UPX-i11:~$ iperf3 -t 60 -c 192.168.2.1 -i 10 Connecting to host 192.168.2.1, port 5201 [ 5] local 192.168.2.207 port 52052 connected to 192.168.2.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-10.00 sec 2.59 GBytes 2.22 Gbits/sec 0 1.67 MBytes [ 5] 10.00-20.00 sec 2.62 GBytes 2.25 Gbits/sec 0 1.93 MBytes [ 5] 20.00-30.00 sec 2.60 GBytes 2.24 Gbits/sec 0 1.93 MBytes [ 5] 30.00-40.00 sec 2.47 GBytes 2.12 Gbits/sec 0 1.93 MBytes [ 5] 40.00-50.00 sec 2.43 GBytes 2.08 Gbits/sec 0 1.93 MBytes [ 5] 50.00-60.00 sec 2.45 GBytes 2.10 Gbits/sec 0 4.90 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 15.2 GBytes 2.17 Gbits/sec 0 sender [ 5] 0.00-60.00 sec 15.1 GBytes 2.17 Gbits/sec receiver iperf Done. |
- Upload (Tx);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
devkit@UPX-i11:~$ iperf3 -t 60 -c 192.168.2.1 -i 10 -R Connecting to host 192.168.2.1, port 5201 Reverse mode, remote host 192.168.2.1 is sending [ 5] local 192.168.2.207 port 52056 connected to 192.168.2.1 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 1.31 GBytes 1.13 Gbits/sec [ 5] 10.00-20.00 sec 1.29 GBytes 1.11 Gbits/sec [ 5] 20.00-30.00 sec 1.32 GBytes 1.14 Gbits/sec [ 5] 30.00-40.00 sec 1.30 GBytes 1.11 Gbits/sec [ 5] 40.00-50.00 sec 1.33 GBytes 1.14 Gbits/sec [ 5] 50.00-60.00 sec 1.27 GBytes 1.09 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 7.82 GBytes 1.12 Gbits/sec 0 sender [ 5] 0.00-60.00 sec 7.82 GBytes 1.12 Gbits/sec receiver iperf Done. |
Rx looks better here at 2.17 Gbps, but Tx is still fairly slow at 1.12 Gbps.
Let’s see what numbers we have when using both WAN ports at the same time with UP Xtreme i11 running “iperf3 -s” and the laptop the following commands:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
jaufranc@cnx-laptop-4:~$ iperf3 -t 60 -c 192.168.2.207 -i 10 Connecting to host 192.168.2.207, port 5201 [ 5] local 192.168.2.130 port 49762 connected to 192.168.2.207 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-10.00 sec 1.39 GBytes 1.19 Gbits/sec 0 3.15 MBytes [ 5] 10.00-20.00 sec 1.42 GBytes 1.22 Gbits/sec 0 3.15 MBytes [ 5] 20.00-30.00 sec 1.44 GBytes 1.24 Gbits/sec 0 3.15 MBytes [ 5] 30.00-40.00 sec 1.42 GBytes 1.22 Gbits/sec 0 3.15 MBytes [ 5] 40.00-50.00 sec 1.42 GBytes 1.22 Gbits/sec 0 3.15 MBytes [ 5] 50.00-60.00 sec 1.39 GBytes 1.19 Gbits/sec 0 3.15 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 8.49 GBytes 1.21 Gbits/sec 0 sender [ 5] 0.00-60.05 sec 8.48 GBytes 1.21 Gbits/sec receiver iperf Done. |
That’s a number that could have been expected due to the low Tx numbers we got before. At 1.21 Gbps, it’s still higher than the 1.12 Gbps we got with Tx only. A bit odd.
Let’s that again but in reverse:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ iperf3 -t 60 -c 192.168.2.207 -i 10 -R Connecting to host 192.168.2.207, port 5201 Reverse mode, remote host 192.168.2.207 is sending [ 5] local 192.168.2.130 port 49766 connected to 192.168.2.207 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 2.04 GBytes 1.75 Gbits/sec [ 5] 10.00-20.00 sec 2.04 GBytes 1.75 Gbits/sec [ 5] 20.00-30.00 sec 2.04 GBytes 1.75 Gbits/sec [ 5] 30.00-40.00 sec 2.05 GBytes 1.76 Gbits/sec [ 5] 40.00-50.00 sec 2.05 GBytes 1.76 Gbits/sec [ 5] 50.00-60.00 sec 2.05 GBytes 1.76 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.05 sec 12.3 GBytes 1.75 Gbits/sec 0 sender [ 5] 0.00-60.00 sec 12.3 GBytes 1.76 Gbits/sec receiver iperf Done. |
1.75 Gbps. I am no idea what’s going on, and how it’s possible.
I’ve also run the test again using full-duplex for 600 seconds to check out CPU, memory, and temperatures as reported in LuCI.
CPU load was between 2.0 and 2.5.
CPU #0 had relatively low utilization with most of the resources on CPU #1 to #3.
The temperature never exceeded 60°C in a room with a 28°C ambient temperature.
And somehow memory usage did not change at all with almost 1.8GB free.
In case you wonder about the performance during a full-duplex test: 1.66 Gbps and 736 Mbps.
The results are a bit disappointing. I’m now considering switching to FriendlyCore (Ubuntu Core) to check if we get similar results, and perform further testing. I plan to start on Saturday using the second router. If you want me to check some other parts in OpenWrt let me know in the comments section.
Continue reading “NanoPi R5S preview – Part 2: Ubuntu 20.04 (FriendlyCore)“.

Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress