Mit dem NanoPi NEO3 hat FriendlyELEC die neuste Version seiner kompakten Raspberry-Pi-Alternative auf den Markt gebracht. In diesem Test wird die Variante mit 2 Gigabyte DDR4 RAM genauer unter die Lupe genommen.
NEO3 – Technische Daten und Preis
Einplatinenrechner gibt es wie Sand am Meer, doch was macht den NanoPi NEO3 besonders? Werfen wir dazu erstmal einen Blick auf die technischen Daten:
Verbauter SoC | Rockchip RK3328 |
CPU-Architektur | ARM Cortex A53 |
CPU-Frequenz | 400Mhz – 1,296GHz |
CPU-Kerne | 4 |
Arbeitsspeichertyp | 32bit DDR4 |
Arbeitsspeicher | 1GB/2GB |
Ethernet | Gigabit |
USB | USB 3.0 |
Netzanschluss | USB Type-C |
Maße | 48x48mm |
Im Gegensatz zu der Konkurrenz, wie dem Raspberry Pi Zero W oder dem OrangePi Zero LTS, bietet der NEO3 zwar kein WLAN, dafür aber Gigabit-Ethernet und USB 3.0. Begrüßenswert finde ich, dass der Einplatinenrechner über USB-Typ-C mit Strom versorgt wird.
Bei den Preisen sieht es wie folgt aus:
Ohne Gehäuse und mit nur einem Gigabyte RAM verlangt FriendlyELEC 20$ für den NanoPi.
Das RAM-Upgrade von 1GB auf 2GB schlägt mit 5$ zu Buche. Bestellt man gleich das passende Gehäuse dazu, werden nochmal 2$ draufgeschlagen (was allerdings, wie ich finde, für den Preis ein absoluter No-Brainer ist).
Der Versand ist vergleichsweise teuer. 10$ kostet der Versand über den normalen Postweg aus China. Der DHL-Express-Versand kostet 22$.
Ich persönlich habe meinen NanoPi bei Aliexpress vom Embedunion-Electronics Store bestellt. So habe ich insgesamt nur 28,11€ bezahlt. Zum Zeitpunkt meiner Bestellung hat FriendlyELEC nur eine deutlich teurere Versandoption angeboten.
Zur offiziellen FriendlyELEC-Seite geht es hier.
Erster Eindruck und Benchmarks
In diesem Test wird der NEO3 mit Armbian Buster betrieben, obwohl es sich zum Zeitpunkt des Tests noch in der Testphase befindet (WIP). Somit könnte die Performance des Mini-Rechners in Zukunft noch besser werden.
Zum Benchmark wird die Software Sysbench sowie der 7-zip-Benchmark über den Armbianmonitor verwendet.
FriendlyELEC selbst bietet mit FriendlyCore eine auf Ubuntu 18.04 basierende Linux-Distribution sowie mit FirendlyWrt eine Abwandlung von openWrt an. Beide basieren auf dem Linux-5.4.12-Kernel und sind auf der Wiki-Seite des NEO3 zu finden.
Grundsätzlich ist die Performance auf den ersten Blick sehr gut, obwohl die Armbian-Version noch einen Bug aufweist. Bei jedem Start des Computers wird ein Prozess mit folgendem Kommando gestartet:
/usr/bin/brcm_patchram_plus_rk3399 -d --enable_hci --no2bytes --use_baudrate_for_downloade
--tosleep 200000 --baudrate 1500000 --patchram /lib/firmware/brcm/BCM4345C5.hcd /dev/ttyS0
Dabei scheint es sich auf den ersten Blick um ein Problem mit dem Bluetooth-Treiber zu handeln, denn der Prozess lastet einen Kern komplett aus und sorgt damit für hohe Temperaturen. Als kleiner Workaround habe ich den Prozess kurzerhand mit „kill -9 <PID>“ beendet und konnte nun realistischere Benchmarks durchführen.
(Alternativ kann man das Problem auch vorerst dauerhaft lösen, indem man mit „systemctl disable rk3399-bluetooth.service“ den dazugehörigen Service deaktiviert.)
Das Ergebnis des 7-zip-Benchmarks sieht wie folgt aus:
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs LE)
LE
CPU Freq: 597 1122 1506 1503 1509 1509 1509 1509 1509
RAM size: 1985 MB, # CPU hardware threads: 4
RAM usage: 882 MB, # Benchmark threads: 4
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 2356 326 703 2292 | 59806 396 1288 5102
23: 2284 334 697 2327 | 56523 396 1235 4891
24: 2191 342 688 2356 | 53658 396 1188 4710
25: 2108 352 683 2407 | 49487 396 1112 4404
---------------------------------- | ------------------------------
Avr: 339 693 2346 | 396 1206 4777
Tot: 367 949 3561
Monitoring output recorded while running the benchmark:
Time CPU load %cpu %sys %usr %nice %io %irq CPU C.St.
08:47:30: 1512MHz 0.15 14% 8% 5% 0% 0% 0% 75.8°C 0/6
08:47:35: 600MHz 0.14 0% 0% 0% 0% 0% 0% 65.8°C 0/6
08:47:40: 1512MHz 0.13 1% 0% 1% 0% 0% 0% 68.8°C 0/6
08:47:45: 1512MHz 0.20 52% 1% 50% 0% 0% 0% 84.2°C 0/6
08:47:51: 1296MHz 0.42 95% 1% 94% 0% 0% 0% 83.8°C 0/6
08:47:56: 1512MHz 0.47 79% 2% 76% 0% 0% 0% 83.5°C 0/6
08:48:02: 1200MHz 0.67 93% 1% 92% 0% 0% 0% 84.6°C 1/6
08:48:08: 1296MHz 1.26 79% 2% 77% 0% 0% 0% 84.2°C 0/6
08:48:13: 1296MHz 1.40 87% 2% 84% 0% 0% 0% 83.8°C 0/6
08:48:18: 1296MHz 1.61 92% 2% 90% 0% 0% 0% 85.0°C 1/6
08:48:24: 1296MHz 1.80 96% 1% 95% 0% 0% 0% 83.5°C 0/6
08:48:29: 1512MHz 2.06 66% 3% 62% 0% 0% 0% 83.8°C 1/6
08:48:34: 1200MHz 2.13 83% 2% 80% 0% 0% 0% 85.4°C 1/6
08:48:39: 1296MHz 2.28 87% 2% 84% 0% 0% 0% 85.4°C 1/6
08:48:44: 1512MHz 2.50 91% 2% 88% 0% 0% 0% 86.5°C 1/6
08:48:49: 1296MHz 2.62 94% 2% 91% 0% 0% 0% 85.0°C 1/6
08:48:55: 1296MHz 2.81 97% 2% 95% 0% 0% 0% 86.2°C 1/6
08:49:01: 1008MHz 2.91 94% 2% 92% 0% 0% 0% 84.6°C 2/6
Die Sysbench-Ergebnisse findet ihr im Anhang
Fazit
Der NanoPi NEO3 bietet viel Leistung auf kleiner Fläche und obwohl er doch recht warm wird, sollte er mit den meisten Aufgaben, die man auf so einem kleinen Zwerg laufen lassen kann, klarkommen. Dieses Problem sollte mit einem zusätzlichen Lüfter leicht zu beheben sei. Glücklicherweise integriert FriendlyELEC dazu einen passenden Anschluss auf dem Board.
Alles in allem dürfte der NanoPi für alle interessant sein, die viel Leistung auf kleiner Fläche und moderne Schnittstellen benötigen.
Bei mir persönlich wird der NEO3, sobald eine stabile Armbian-Version vorliegt, den OrangePi Zero LTS ersetzen.
Ich hoffe, dass der Test des NanoPi NEO3 euch gefallen hat und ich euch einen kleinen Einblick bieten konnte.
Anhang
sysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 run
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
WARNING: --num-threads is deprecated, use --threads instead
sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 2
Initializing random number generator from current time
Prime numbers limit: 20000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 597.28
General statistics:
total time: 10.0026s
total number of events: 5977
Latency (ms):
min: 3.32
avg: 3.35
max: 8.45
95th percentile: 3.30
sum: 19997.95
Threads fairness:
events (avg/stddev): 2988.5000/0.50
execution time (avg/stddev): 9.9990/0.00
sysbench --test=memory --num-threads=4 run
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
WARNING: --num-threads is deprecated, use --threads instead
sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Running memory speed test with the following options:
block size: 1KiB
total size: 102400MiB
operation: write
scope: global
Initializing worker threads...
Threads started!
Total operations: 42729648 (4270780.10 per second)
41728.17 MiB transferred (4170.68 MiB/sec)
General statistics:
total time: 10.0002s
total number of events: 42729648
Latency (ms):
min: 0.00
avg: 0.00
max: 0.42
95th percentile: 0.00
sum: 17987.44
Threads fairness:
events (avg/stddev): 10682412.0000/9118.91
execution time (avg/stddev): 4.4969/0.00