In the first part of the review of NanoPi NEO3 and Nano R2S I checked out the hardware, with both tiny gateways powered by a Rockchip RK3328 processor but a different features as NEO3 includes a Gigabit Ethernet port and a USB 3.0 port, while R2S comes with dual Gigabit Ethernet ports and a USB 2.0 port.
I’ve now had time to test both gateways using Armbian 20.08.1 release based on Ubuntu 20.04 Focal. Note that while NanoPi R2S is officially supported by Armbian, NanoPi NEO3 images are currently tagged as “suitable for testing“. Having that said I did not come across any specific issues on NEO3, and it may mostly mean it’s easier to get support on the forums with R2S.
I flashed two microSD cards using USBImager with:
- Armbian_20.08.1_Nanopi-r2s_focal_current_5.8.6_minimal.img.xz
- Armbian_20.08.1_Nanopineo3_focal_current_5.8.6_minimal.img.xz
That means Ubuntu 20.04 with Linux 5.8.6, but since Armbian is always updated, I ended the review with Linux 5.8.15. I’ll focus the review on thermal testing, as well as Ethernet and USB performance.

System Setup
Both are headless systems so you can’t connect them to any display to do the configuration. Instead, we can connect with SSH using root and 1234 password.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
jaufranc@cnx-laptop-4:~/edev/sandbox$ ssh root@192.168.1.11 The authenticity of host '192.168.1.11 (192.168.1.11)' can't be established. ECDSA key fingerprint is SHA256:9zJ3dqlsSKuFU5pXTxIZJ8RaBMolJOx8SN+s74SjVv8. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.1.11' (ECDSA) to the list of known hosts. root@192.168.1.11's password: _ _ ____ _ _ _ _____ | \ | | _ \(_) | \ | | ___ ___ |___ / | \| | |_) | | | \| |/ _ \/ _ \ |_ \ | |\ | __/| | | |\ | __/ (_) | ___) | |_| \_|_| |_| |_| \_|\___|\___/ |____/ Welcome to Armbian 20.08.1 Focal with Linux 5.8.6-rockchip64 No end-user support: work in progress System load: 0.00 0.07 0.22 Up time: 19 min Local users: 2 Memory usage: 5 % of 1919MB IP: 192.168.1.11 CPU temp: 58°C Usage of /: 22% of 3.4G Last login: Thu Sep 3 19:53:03 2020 New to Armbian? Documentation: https://docs.armbian.com Support: https://forum.armbian.com New root password: ********** Repeat password: ********** Detected timezone: Asia/Bangkok (+07, +0700) Do you want to set locales and console keyboard automatically from your location [Y/n] Generating locales: th_TH.UTF-8 Console keyboard layout: th Creating a new user account. Press <Ctrl-C> to abort Please provide a username (eg. your forename): jaufranc Create password: ********** Repeat password: ********** Please provide your real name (eg. John Doe): Jean-Luc Dear Jean-Luc, your account jaufranc has been created and is sudo enabled. Please use this account for your daily work from now on. |
This will take us through Armbian’s wizard to set a new root password, update locales, and create a new user account. Subsequent login will just show system info.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
ssh jaufranc@192.168.1.8 jaufranc@192.168.1.8's password: _ _ _ ____ ____ ____ | \ | | __ _ _ __ ___ _ __ (_) | _ \|___ \/ ___| | \| |/ _` | '_ \ / _ \| '_ \| | | |_) | __) \___ \ | |\ | (_| | | | | (_) | |_) | | | _ < / __/ ___) | |_| \_|\__,_|_| |_|\___/| .__/|_| |_| \_\_____|____/ |_| Welcome to Armbian 20.08.1 Focal with Linux 5.8.6-rockchip64 System load: 0.01 0.02 0.06 Up time: 19 min Memory usage: 11 % of 979MB IP: 192.168.1.8 CPU temp: 46°C Usage of /: 6% of 15G [ Menu-driven system configuration (beta): sudo apt update && sudo apt install armbian-config ] To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. |
We can see my NanoPi R2S comes with 1GB RAM and idles at 46°C, while NanoPi NEO3 features 2GB RAM, and the CPU temperature is at 58°C at idle both a few minutes after boot. So the metal case really helps the latter.
Let’s install armbianmonitor to get pretty temperature charts:
1 2 3 4 5 6 7 8 |
sudo armbianmonitor -r Extracting templates from packages: 100% to 5 minutes. Be patient please<br>กำลังเลือกแพกเกจ perl-modules-5.30 ที่เดิมไม่ได้เลือก<br>(กำลังอ่านฐานข้อมูล ... 20537 แฟ้มและไดเรกทอรีติดตั้งอยู่) ... Restarting rpimonitor (via systemctl): rpimonitor.service. กำลังประมวลผลการสะกิดสำหรับ systemd (245.4-4ubuntu3.2) ... กำลังประมวลผลการสะกิดสำหรับ libc-bin (2.31-0ubuntu9) ... Now you're able to enjoy RPi-Monitor at http://192.168.1.8:8888 |
Alright… Maybe I should not have asked the initial script to set locales and the console keyboard automatically from my location…
Let’s install armbian-config and change the settings:
1 2 |
sudo apt update && sudo apt install armbian-config sudo armbian-config |
So hopefully, all output from the commands in the rest of the review will be entirely in English.
NanoPi NEO3 / R2S thermal testing with SBC Bench
I’ll use Thomas Kaiser’s sbc-bench.sh script to benchmark the system and check for any CPU throttling:
1 2 3 |
wget https://raw.githubusercontent.com/ThomasKaiser/sbc-bench/master/sbc-bench.sh chmod +x sbc-bench.sh sudo ./sbc-bench.sh -c |
NanoPi R2S results:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
sbc-bench v0.7.3 Installing needed tools. This may take some time... Done. Checking cpufreq OPP... Done. Executing tinymembench. This will take a long time... Done. Executing OpenSSL benchmark. This will take 3 minutes... Done. Executing 7-zip benchmark. This will take a long time... Done. Executing cpuminer. This will take 5 minutes... Done. Checking cpufreq OPP... Done. ATTENTION: Throttling might have occured. Check the log for details. Memory performance: memcpy: 1823.3 MB/s memset: 8075.5 MB/s (4.9%) Cpuminer total scores (5 minutes execution): 5.19,5.10,5.09,5.08,5.07,5.06,5.05,5.04,5.03,5.02,5.01,5.00,4.99,4.98,4.97,4.96,4.95,4.94 kH/s 7-zip total scores (3 consecutive runs): 3871,3812,3731 OpenSSL results: type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-cbc 125653.55k 378521.71k 744476.42k 1011597.99k 1129977.17k 1137830.57k aes-128-cbc 125576.42k 378576.92k 742996.48k 1011358.04k 1129693.18k 1138059.95k aes-192-cbc 120053.83k 338667.82k 610043.48k 781201.41k 849619.63k 854573.06k aes-192-cbc 119750.26k 337591.06k 609919.74k 781286.06k 850703.70k 854425.60k aes-256-cbc 116585.73k 311847.45k 529623.72k 654216.53k 702300.16k 705473.19k aes-256-cbc 116563.15k 311329.66k 529655.89k 654095.70k 702305.62k 704872.45k Full results uploaded to http://ix.io/2Ahg. Please check the log for anomalies (e.g. swapping or throttling happenend) and otherwise share this URL. |
We can see throttling occured, but looking at the data and temperature chart it only happened at the very-end of 7-zip multi-threaded benchmark, and during cpuminer.
Let’s repeat the test with NanoPi NEO3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
sbc-bench v0.7.3 Installing needed tools. This may take some time... Done. Checking cpufreq OPP... Done. Executing tinymembench. This will take a long time... Done. Executing OpenSSL benchmark. This will take 3 minutes... Done. Executing 7-zip benchmark. This will take a long time... Done. Executing cpuminer. This will take 5 minutes... Done. Checking cpufreq OPP... Done. ATTENTION: Throttling might have occured. Check the log for details. Memory performance: memcpy: 1815.9 MB/s (0.6%) memset: 7900.5 MB/s (3.0%) Cpuminer total scores (5 minutes execution): 3.07,3.06,3.05,3.04,3.03,3.02,3.01,3.00,2.99,2.98,2.97,2.94,2.93 kH/s 7-zip total scores (3 consecutive runs): 2477,2431,2403 OpenSSL results: type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-cbc 109940.58k 327522.77k 635521.11k 857270.61k 951416.15k 959261.35k aes-128-cbc 109803.05k 329568.64k 641739.26k 877921.62k 970678.27k 965099.52k aes-192-cbc 104812.70k 294756.05k 525494.87k 667558.91k 721756.16k 728055.81k aes-192-cbc 104803.51k 293656.68k 526266.03k 667227.82k 726540.29k 728312.49k aes-256-cbc 102166.79k 270806.70k 453774.08k 557345.11k 601008.81k 598043.31k aes-256-cbc 101311.90k 271965.97k 453066.92k 554613.08k 596350.29k 602286.76k Full results uploaded to http://ix.io/2Ahn. Please check the log for anomalies (e.g. swapping or throttling happenend) and otherwise share this URL. |
That one hurts! The small heatsink inside the case does not help too much, and throttling occurred virtually immediately with even tinybench being affected. You’ll also notice the much lower benchmark scores due to throttling despite both platforms using a Rockchip RK3328 processor. For example, R2S scores around 3,800 in 7-zip, while NEO3 only gets around 2,450, that’s a 35% drop.
Nevertheless, I went to bed and noticed the temperature dropped at 4 am the following day.
1 2 3 4 |
jaufranc@nanopineo3:~$ uptime 14:49:29 up 10:48, 2 users, load average: 0.09, 0.10, 0.03 jaufranc@nanopineo3:~$ date Sun Oct 11 14:49:32 +07 2020 |
Micro power failures are common where I live, but NanoPi R2S did not reboot despite being connected to the same 100W power supply (MINIX NEO P2 USB-C multi-port power supply):
1 2 |
jaufranc@nanopi-r2s:~$ uptime 14:45:54 up 1 day, 7 min, 1 user, load average: 0.00, 0.00, 0.00 |
So I have no explanation for the reboot, nor the temperature chart because even after around 11 hours after sbc-bench.sh benchmark completed, the idle temperature did not return to normal until a reboot. [Update: The higher temperature is because sbc-bench.sh sets the governor to “performance”]
Checking NanoPi NEO3 temperature with Syncthing
Not every workload requires the CPU to be under load at all times, so to check how NanoPi NEO3 would perform as a mini NAS I planned to install OpenMediaVault (OMV) via armbian-config. But it’s not there, because OMV does not support Ubuntu. I could have installed Debian to load OMV on the board, but I noticed Syncthing continuous file synchronization program that would also use Ethernet and storage, so I installed it instead using armbian-config going into Software->Softy.
The download rate varies a lot, and it looks like Syncthing transfers files one by one as I see transfer peaks on System Monitor on my laptop instead of a continuous transfer rate, so the load on the system is not as high as it could, and indeed after running the synchronization for about one hour, the temperature never exceeded 85°C. The room temperature was around 28-29°C at the time.
Ethernet Performance
I’ve installed iperf to test network performance
NanoPi R2S full-duplex on LAN port:
1 2 3 4 |
[ 6] local 192.168.1.4 port 33936 connected with 192.168.1.8 port 5001 [ ID] Interval Transfer Bandwidth [ 6] 0.0-60.0 sec 5.85 GBytes 838 Mbits/sec [ 4] 0.0-60.0 sec 5.64 GBytes 806 Mbits/sec |
That’s almost as good as it gets as the board can move data in both directions at high throughput at the same time.
NanoPi R2S full-duplex on WAN port:
1 2 3 4 5 6 |
Client connecting to 192.168.1.12, TCP port 5001 TCP window size: 178 KByte (default) ------------------------------------------------------------ [ 6] local 192.168.1.4 port 58254 connected with 192.168.1.12 port 5001 [ 4] 0.0-60.0 sec 6.35 GBytes 908 Mbits/sec [ 6] 0.0-60.0 sec 4.01 GBytes 574 Mbits/sec |
It’s fast in one direction, and a bit slower in the other. It will likely not matter for most use cases, but if you have a Torrent node that downloads and uploads files at the same time performance may not be optimal.
SI also tested R2S WAN port upload only:
1 2 |
[ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 6.51 GBytes 931 Mbits/sec |
and download only:
1 2 |
[ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 6.57 GBytes 941 Mbits/sec |
All good here.
Switching to NanoPi NEO3 with full-duplex transfer:
1 2 3 4 5 6 |
Client connecting to 192.168.1.11, TCP port 5001 TCP window size: 178 KByte (default) ------------------------------------------------------------ [ 6] local 192.168.1.4 port 36400 connected with 192.168.1.11 port 5001 [ 4] 0.0-60.0 sec 6.53 GBytes 934 Mbits/sec [ 6] 0.0-60.0 sec 4.46 GBytes 638 Mbits/sec |
Pretty good, but still a bit slower in one direction.
So I tested upload only as well:
1 2 3 4 5 6 |
Client connecting to 192.168.1.11, TCP port 5001 TCP window size: 246 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.1.4 port 36974 connected with 192.168.1.11 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 6.57 GBytes 940 Mbits/sec |
and download only:
1 2 3 4 5 6 |
Client connecting to 192.168.1.4, TCP port 5001 TCP window size: 722 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.1.11 port 36982 connected with 192.168.1.4 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 6.57 GBytes 940 Mbits/sec |
Exactly 940 Mbits/s for both, and that’s excellent for such a small and cheap device.
USB Performance
I’ve connected a USB 3.0 hard drive to one of the gateways to check USB performance. However, none of the partitions on the USB drive would automount:
1 2 3 4 5 6 7 |
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk ├─sda1 8:1 0 244.1G 0 part ├─sda2 8:2 0 244.1G 0 part ├─sda3 8:3 0 244.1G 0 part └─sda4 8:4 0 199.1G 0 part |
So for testing, I installed pmount…
1 |
sudo apt install pmount |
in order to mount the EXT-4 partition as the current user (i.e. no sudo):
1 2 |
pmount /dev/sda2 cd /media/sda2 |
Let’s now run iozone on NanoPi NEO RS2 to check USB performance:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
iozone -e -I -a -s 100M -r 1024k -r 16384k -i 0 -i 1 Iozone: Performance Test of File I/O Version $Revision: 3.489 $ Compiled for 64 bit mode. Build: linux Include fsync in write timing O_DIRECT feature enabled Auto Mode File size set to 102400 kB Record Size 1024 kB Record Size 16384 kB Command line used: iozone -e -I -a -s 100M -r 1024k -r 16384k -i 0 -i 1 Output is in kBytes/sec Time Resolution = 0.000001 seconds. Processor cache size set to 1024 kBytes. Processor cache line size set to 32 bytes. File stride size set to 17 * record size. kB reclen write rewrite read reread 102400 1024 34079 34181 34261 34582 102400 16384 34401 34409 34471 34823 iozone test complete. |
Around 34MB/s is OK considering we have a USB 2.0 port.
Time to unmount the drive
1 |
pumount /dev/sda2 |
and move it to Nano NEO3 to repeat the same procedure with a USB 3.0 port.
1 2 3 4 5 |
iozone -e -I -a -s 100M -r 1024k -r 16384k -i 0 -i 1 kB reclen write rewrite read reread 102400 1024 50482 84674 86797 88894 102400 16384 79433 84791 85789 87346 |
The results are higher with around 85MB/s, but a bit disappointing for a USB 3.0 port since I’d usually get around 90 to 100+MB/s on this drive.
Final words
Both are nice little gateways that serve different purposes with NanoPi R2S being equipped with two Gigabit Ethernet ports and a USB 2.0 port, and NanoPi NEO3 featuring a Gigabit Ethernet port and a USB 3.0 port, and both devices work well with Armbian (Ubuntu Focal) with performance as expected. But under any heavy or not that heavy workloads, NanoPi NEO3 will heat up pretty quickly, at least with the plastic case mine shipped with, so if the USB 2.0 speed limitation is not an issue for your use case, you may prefer NanoPi R2S with its metal case which helps the gateway stay cool in most loads. However, as we’ve seen with Syncthing syncing pictures (and some videos) not all use cases will make NanoPi NEO3 CPU throttle.
I’d like to thank FriendlyELEC for sending the review samples, and the Armbian community for providing easy to use firmware images. The gateways can be purchased with or without case on Aliexpress (here and there) or directly on the company’s website. Make sure to purchase NanoPi R2S with the black metal case, and not the yellow plastic case, or it will likely suffer from similar overheating issues as NanoPi NEO3 SBC with a plastic case.

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