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 |
Let’s select Personal – Timezone, language, hostname, and then Locales to enable/disable the locales we’d like to use, and finally select the default locale as shown below. I went with C.UTF-8.
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.
Note my room temperature was around 30-31°C, and throttling may not happen at all with a lower ambient temperature.
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.
Again the ambient temperature of 30-31°C likely played a role but considering single-threaded benchmarks trigged CPU throttling at around 85°C, I’d expect this type of problem to show up for most people, even in much cooler rooms.
Nevertheless, I went to bed and noticed the temperature dropped at 4 am the following day.
There was a small spike in CPU usage at that time too.
I thought there may be a scheduled task, but I could not find anything in crontab, and instead, the board just restarted at that time:
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.
I also add to install the program on my computer following the standard instructions for Ubuntu, and synchronized the Pictures folder on my computer to a directory on the hard drive connected to NanoPi NEO3.
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.
The temperature probably peaked while transferring larger files like videos. There was a dropped around 15:06, as folder scanning on the laptop was not complete, and it resumes a few minutes later once all ~1,600 files (70GB) were scanned on the host.
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
Did you measure the power consumption? I guess that is the reason to use a device like this instead of a an x86 with more software support.
Also I would be a little skeptical with only using a sd cars having experienced a fair share of sd card corruption on raspberry pi’s.
I haven’t measured power consumption. This kind of hardware usually consumes 4 to 10W depending on the load and accessories. Other reasons to use this instead of x86 is price, size, and noise levels.
@Bbbbb
Armbian has many flash media optimisations which dramatically prolongs SD card / flash media life. On most of consumer grade OS (like Raspbian / Debian / Ubuntu …), nobody cares about that “small thing” https://docs.armbian.com/#performance-tweaks
@Jean-Luc Locales problem were fixed – they are now set only to normal user if created, root remains English …
And thats why we love armbian. Thanks Igor
Define, “more software support”. If you’re wanting Windows, yeah. If you’re wanting Linux, methinks you fail to understand “Linux”. Almost everything that makes sense is, “available,” on it. If it’s not on the distro and you can’t manage to compile, being an x86 machine doesn’t magically make that software available.
It would be nice if we can figure out why wan upload is capped at 500Mbps, the poster saying both nic can work at 941Mbps. It’s could be some software or configuration issue making it slower when TX packets. Otherwise it’s a perfect gigabit gateway/firewall.
I still feel Orange Pi Zero LTS is better on price. With enclosure in the picture this looks like a final product, except that it does not have FCC certification, which it really should have.
Orange Pi Zero LTS is nice, but with fairly different specs: less RAM. Fast Ethernet, USB 2.0, 32-bit Arm vs 64-bt Arm (So no Armv8 crypto extension for OPI board). It all depends what you’d plan to do with it.
> even after around 11 hours after sbc-bench.sh benchmark completed, the idle temperature did not return to normal until a reboot
sbc-bench switches the cpufreq governor to performance so the SoC stays at the upper clockspeed all the time until this changes (e.g. by running cpufreq-set -g ondemand or rebooting).
A difference of 12°C between idling at above 1GHz and the normal idle clockspeed still lets me think that there’s something seriously wrong with the DVFS table (feeding RK3328 with voltages too high).
I purchased the R2S before the metal case was available.
Is there a way to purchase just the case separate?
Yes, the case is sold for $7 on FriendlyELEC. Maybe it’s on Aliexpress too.
it’s $7 + $22 shipping which is way too much
I need you img ! sun Q U