I’ve received NanoPi NEO 2 boards, add-boards and sensor modules last week, where we could see how small the boards were, and how it could be suitable for IoT projects or “hardware hacking” education. Before testing the board with the add-ons, I have to select the image to run on the board, and currently we have two choices: Ubuntu 16.04.2 FriendlyELEC image with Linux 3.10 “legacy” kernel, or Armbian Ubuntu 16.04.2 Xenial nightly build with Linux 4.10 “mainline” kernel. So I decided to try both: dfssf
- nanopi-neo2-ubuntu-core-qte-sd4g-20170329.img.zip (296 MB) is the image from FriendlyELEC (previously FriendlyARM)
- Armbian_5.27.170401_Nanopineo2_Ubuntu_xenial_dev_4.10.0.7z (222 Mb) is the image from Armbian, which I downloaded on March 31st despite the filename including “170401” string
You can flash the image with Win32DiskImager (Windows) or dd (linux) to a micro SD card the usual way, and while I’ve never personally had troubles with dd, I’ve been told Etcher was better, as it verifies the SD card after flashing, and dd may miss errors. Etcher works in Windows, Linux, and Mac OS with a graphical user interface or from the command line. I used Etcher GUI in my Ubuntu 16.04 computer, and it’s indeed easy to use, shows the progress, and a big plus for me is that you can’t mess with your USB hard drive, as it will filter them. Another small advantage is that you don’t need to uncompress the firmware, as Etcher will do that for you, at least for zip files, but i had to manually uncompress Armbian .7z archive before loading to Etcher.
Note that I used the exact same micro SD card (the 8GB SanDisk Ultra sold by FriendlyELEC) and the same board for both images. I started with FriendlyELEC image, and then repeated the test with Armbian image.
I connected the Gigabit Ethernet port to my GbE switch, as well as FriendlyELEC Matrix USB2UART board with the provide cabled including 5V, GND, Tx and RX. It will power the board too, but if you’re going to run benchmarks, there won’t always be enough, and I also used a USB power supply connected to the micro USB port. Having 5V on the serial cable makes it inconvenient, because when I need to power cycle the board I had to remove both the debug board and the extra USB power supply. So instead I used 3 jumper wires without 5V as shown in the picture below.
FriendlyELEC Ubuntu 16.04.2 Boot Log and Info
I used minicom connected to /dev/ttyUSB0 with 115200 8N1 configuration to boot the board, and this is the boot log for Ubuntu 16.04.2 image with Linux 3.10 once I got the debug board issue mentioned above out of the way (so it’s not the very first boot):
|
1 |
It will login automatically in the console, and you don’t need to to enter the username & password. If you need to use sudo later the password for “pi” user is simply “pi”
Let’s check some of the system details:
|
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 42 43 44 45 |
pi@NanoPi-NEO2:~$ uname -a Linux NanoPi-NEO2 3.10.65 #5 SMP PREEMPT Wed Mar 29 09:50:17 CST 2017 aarch64 ax pi@NanoPi-NEO2:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 224M 0 224M 0% /dev tmpfs 47M 1.7M 46M 4% /run /dev/mmcblk0p2 7.2G 938M 6.3G 13% / tmpfs 235M 0 235M 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 235M 0 235M 0% /sys/fs/cgroup /dev/mmcblk0p1 100M 20M 80M 21% /boot tmpfs 47M 0 47M 0% /run/user/1000 pi@NanoPi-NEO2:~$ cat /proc/cpuinfo Processor : AArch64 Processor rev 4 (aarch64) processor : 0 processor : 1 processor : 2 processor : 3 Features : fp asimd aes pmull sha1 sha2 crc32 CPU implementer : 0x41 CPU architecture: AArch64 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4 Hardware : sun50iw2 Serial : 34005035c2003c2a074c pi@NanoPi-NEO2:~$ lsmod Module Size Used by vfe_v4l2 767532 0 videobuf2_dma_contig 7817 1 vfe_v4l2 videobuf2_memops 1704 1 videobuf2_dma_contig videobuf2_core 23559 1 vfe_v4l2 vfe_io 28412 1 vfe_v4l2 sunxi_ir_rx 7214 0 sunxi_keyboard 5500 0 ss 31327 0 pi@NanoPi-NEO2:~$ ls -l /sys/class/gpio/ total 0 --w------- 1 root root 4096 Jan 1 00:01 export lrwxrwxrwx 1 root root 0 Jan 1 00:01 gpiochip0 -> ../../devices/soc.0/1c2080 lrwxrwxrwx 1 root root 0 Jan 1 00:01 gpiochip352 -> ../../devices/soc.0/1f02 --w------- 1 root root 4096 Jan 1 00:01 unexport pi@NanoPi-NEO2:~$ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq 1536000 |
Linux 3.10.65 is used, and the root file system was automatically resized during the first boot to make use of the complete storage available on the micro SD card. We have 928 MB used out of 7.2 GB. It will show four Aarch64 cores part of sun50iw2 family. There are some module loaded specifically for camera support such as vfe_v4l2 module, which you could disable in /etc/modules if you don’t need it. I’ll need GPIO support for BakeBit Starter Kit, and it seems enabled by default.
Just like in NanoPi NEO Ubuntu, there’s a Qt demo enabled in /etc/rc.local, so you may want to remove the lines below since we don’t have an LCD display connected to the board:
|
1 2 3 4 |
. /usr/bin/setqt4env /usr/bin/lcd2usb_print "CPU: {{CPU}}" "Mem: {{MEM}}" "IP: {{IP}}" "LoadAvg: {{LO ADAVG}}" 2>&1 > /dev/null& /opt/QtE-Demo/run.sh& |
Armbian Ubuntu 16.04.2 Boot Log and Info
The boot log for Armbian is much shorter (and cleaner):
|
1 |
The image appears to be for OrangePi PC 2 board, and there are some errors about failure to set voltage and CPU frequency, so maybe it will have to be fixed soon.
You’ll need to login with root / 1234, and the first time, you’ll be asked to change root password, and create a new user part of sudoers. I’ve run the same command with the Armbian image as I did with the FriendlyELEC (FE) one:
|
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
root@nanopineo2:~# uname -a Linux nanopineo2 4.10.0-sun50iw2 #23 SMP Fri Mar 31 03:48:12 CEST 2017 aarch64 x root@nanopineo2:~# df -h Filesystem Size Used Avail Use% Mounted on udev 232M 0 232M 0% /dev tmpfs 49M 1.7M 47M 4% /run /dev/mmcblk0p1 7.2G 1.2G 5.9G 17% / tmpfs 242M 0 242M 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 242M 0 242M 0% /sys/fs/cgroup tmpfs 242M 0 242M 0% /tmp log2ram 50M 756K 50M 2% /var/log tmpfs 49M 0 49M 0% /run/user/0 root@nanopineo2:~# cat /proc/cpuinfo processor : 0 Processor : AArch64 Processor rev 4 (aarch64) Hardware : sun50iw1p1 BogoMIPS : 48.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4 processor : 1 Processor : AArch64 Processor rev 4 (aarch64) Hardware : sun50iw1p1 BogoMIPS : 48.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4 processor : 2 Processor : AArch64 Processor rev 4 (aarch64) Hardware : sun50iw1p1 BogoMIPS : 48.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4 processor : 3 Processor : AArch64 Processor rev 4 (aarch64) Hardware : sun50iw1p1 BogoMIPS : 48.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4 root@nanopineo2:~# lsmod Module Size Used by sun4i_codec 53248 3 sun8i_codec_analog 28672 1 snd_soc_core 176128 2 sun4i_codec,sun8i_codec_analog snd_pcm_dmaengine 16384 1 snd_soc_core snd_pcm 118784 2 snd_pcm_dmaengine,snd_soc_core snd_timer 32768 1 snd_pcm root@nanopineo2:~# ls -l /sys/class/gpio/ total 0 --w------- 1 root root 4096 Jan 1 1970 export lrwxrwxrwx 1 root root 0 Jan 1 1970 gpiochip0 -> ../../devices/platform/so0 lrwxrwxrwx 1 root root 0 Jan 1 1970 gpiochip352 -> ../../devices/platform/2 --w------- 1 root root 4096 Jan 1 1970 unexport |
The obvious advantage is that the Armbian image is running the latest Linux 4.10.0 kernel with all new features and security patchsets. The rootfs is also automatically resized during the first boot, but there must be more packages installed by default, since 1.2 GB is used out of 7.2 GB. while we had only 928 MB used in FE image. The reported hardware is sun50iw1p1 against sun50iw2 in FE image, but I assume it does not matter that much. Different modules are loaded by default in that image, no camera modules, but instead audio modules. The listed GPIOs are the same as in FE image.
Linux 4.8 and greater is supposed to support the new GPIO subsystem with the ability to list GPIOs using lsgpio command:
|
1 2 |
cnxsoft@nanopineo2:~$ lsgpio                                                          bash: lsgpio: command not found |
But the command is not installed, and not part of any Ubuntu packages, so it would have to be build from source, but I have not checked it yet. All examples provided by FriendlyELEC for their BakeBit Starter Kit are going to use sysfs interface since they provide a Linux 3.10 image.
NanoPi NEO 2 Benchmarks
I’m going to running the same benchmarks as on NanoPi NEO with Phoronix and iperf. Since Ubuntu 16.04 comes with PHP 7, Phoronix Test Suite installation is a little different:
|
1 2 3 |
sudo apt install php-cli php-gd php-xml php-zip wget http://phoronix-test-suite.com/releases/repo/pts.debian/files/phoronix-test-suite_7.0.1_all.deb sudo dpkg -i phoronix-test-suite_7.0.1_all.deb |
I made sure the heatsink faced upwards when running the benchmarks, as in the past I had troubles when the heatsink faced the table since – as you mum or teacher must have told you – heat is going up, and if the heatsink faces down, heat may be trapped.
Then I ran the benchmark using FE and Armbian images:
|
1 2 |
phoronix-test-suite benchmark 1607222-GA-1607218GA60 phoronix-test-suite benchmark 1704017-RI-1607222GA95 |
You’ll find all results here, but let’s have a look at some of the results starting with Ripper, a multi-thread password cracking program. FA stands for FriendlyARM in the chart.
I’ve included all the boards for broad results. In this particular benchmark NanoPi NEO 2 is about the same speed as NanoPi NEO board, and both images have similar performance. Please note that the image may not have been optimized for the best performance, but rather low power consumption with lower CPU and RAM frequencies, which may explain for example why Orange Pi One is a little faster. You’ll note the importance of have a heatsink, by looking at “NanoPi NEO 512MB No Heatsink” result. The results with the image used on NanoPi NEO 2 also seem more “stable”, as the SE +/- values are much smaller in all tests.
FLAC audio encoding is a single thread test, and here NanoPi NEO and NEO 2 have similar performance using Ubuntu FA image, but for some reason the Armbian image was slower here.
So far we did not see any improvement use NEO 2 over NEO, but if we look at C-Ray benchmark, there’s a clear advantage of using the 64-bit processor (H5) over the 32-bit processor (H3).
Smallpt v1.0 is another example showing much better performance on NanoPi NEO 2, and it’s even faster than Raspberry Pi 3 board.
But overall, there’s basically no difference between using FriendlyELEC or Armbian Ubuntu image, except for the FLAC audio encoding. But let’s have a look at Ethernet performance.
Ethernet Performance with Ubuntu 16.04.2 + Linux 3.10 FriendlyELEC image.
iperf upload (iperf -s running on computer):
|
1 2 3 4 5 6 7 8 |
iperf -t 60 -c computer_ip Client connecting to 192.168.0.104, TCP port 5001 TCP window size: 67.6 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.0.105 port 42055 connected with 192.168.0.104 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 336 MBytes 47.0 Mbits/sec |
iperf download (iperf -s running on board):
|
1 2 3 4 5 6 7 8 |
iperf -t 60 -c nanopi-neo-2_ip Client connecting to 192.168.0.105, TCP port 5001 TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.0.104 port 47876 connected with 192.168.0.105 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 5.69 GBytes 815 Mbits/sec |
full duplex:
|
1 2 3 4 5 6 7 |
iperf -t 60 -c computer_ip -d Client connecting to 192.168.0.105, TCP port 5001 TCP window size: 348 KByte (default) ------------------------------------------------------------ [ 6] local 192.168.0.104 port 46690 connected with 192.168.0.105 port 5001 [ 6] 0.0-60.0 sec 5.53 GBytes 792 Mbits/sec [ 4] 0.0-60.1 sec 113 MBytes 15.7 Mbits/sec |
There seems to be a serious problem with upload speed.
I did an extra test with a 1.6 GB HTTP download to /dev/null:
|
1 |
wget http://192.168.0.104/ubuntu-16.04.2-desktop-amd64.iso -O /dev/null |
The download speed on NanoPi NEO 2 was 57.1 MB/s. Acceptable.
Ethernet Performance on Ubuntu 16.04.2 + Linux 4.10 Armbian image.
I’m repeated the same test with Armbiab image:
iperf upload:
|
1 2 3 4 5 6 |
Client connecting to 192.168.0.104, TCP port 5001 TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.0.105 port 44070 connected with 192.168.0.104 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 6.30 GBytes 901 Mbits/sec |
iperf download:
|
1 2 3 4 5 6 7 |
------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.0.105 port 5001 connected with 192.168.0.104 port 49080 [ ID] Interval Transfer Bandwidth [ 4] 0.0-60.0 sec 5.52 GBytes 790 Mbits/sec |
iperf full duplex:
|
1 2 3 4 5 6 7 8 9 |
Client connecting to 192.168.0.104, TCP port 5001 TCP window size: 264 KByte (default) ------------------------------------------------------------ [ 5] local 192.168.0.105 port 44074 connected with 192.168.0.104 port 5001 [ 4] local 192.168.0.105 port 5001 connected with 192.168.0.104 port 49066 [ ID] Interval Transfer Bandwidth [ 4] 0.0-60.0 sec 2.86 GBytes 409 Mbits/sec [ 5] 0.0-60.0 sec 5.54 GBytes 793 Mbits/sec cnxsoft@nanopineo2:~$ |
HTTP download: 108 MB/s.
So there’s no competition here, Armbian image is much better if you need good Gigabit Ethernet performance. The poor upload performance is gone, and the HTTP download is twice as fast, and close to the maximum theoretically possible throughput.
Finally , I did a quick test with CHARGER DOCTOR to check the power consumption in idle mode: 0.21A @ 4.65V (~0.98 Watt). Last year, NanoPi NEO consumed about 2 Watts in idle mode with a non-optimized Ubuntu + Qt Embedded image.
Based on the results I got here, I’ll probably try Armbian image with BakeBit Starter Kit to test GPIO, I2C, UART,… and only revert to FriendlyELEC image in case one of the module does not work.
NanoPi NEO 2 sells for $14.99, and the heatsink set for $2.97 with shipping adding a few dollars.

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. We also use affiliate links in articles to earn commissions if you make a purchase after clicking on those links.









