armbian busterbenchmarkdevelopment boardsn-queens problemperformanceraspberry pi
The Allwinner H2+, which integrates four ARM-Cortex A7 cores that can clock up to 1.2GHz, is powering the Orange Pi Zero LTS. The tiny board, which measures just 52 x 46 mm, features 802.11 b/g/n Wi-Fi, Ethernet, up to 512 MB of RAM, USB 2.0 Type-A and a microSD card slot. There is also a 26-pin unpopulated GPIO header along with a 13-pin header for a headphone, USB 2.0, TV-out, microphone and IR signals.
This board is the next generation of the Orange Pi Zero that was first launched in November 2016 for $7 and up. It should solve various issues with the Allwinner XR819 WiFi module that many developers reported. The main modification on revision v1.5 (vs. v1.1 - I did not find the datasheet for v1.4) is the power supply logic to reduce the interferences on the Wi-Fi module.
Fig. 1: Orange Pi Zero LTS
In this article, I will install the Armbian Buster OS. Then, using VSC and the Remote-SSH extension, I will install Pip3 to install some Python libraries and finally I will test the performance of the board using my testbench algorithm: N-Queens-Problem written in Python.
Hardware and Software
In this article, the following hardware and software will be used:
The Orange Pi Zero LTS v1.5 specifications are the following:
Orange Pi Zero LTS v1.5 CPU SoC – Allwinner H2+ quad-core Cortex A7 processor @1.2 GHz GPU Mali400MP2 GPU @600 MHz
Supports OpenGL ES 2.0
System Memory 256 to 512 MB DDR3-1866 SDRAM (Shared with GPU) Storage microSD card slot Connectivity 10/100M Ethernet
802.11 b/g/n WiFi (Allwinner XR819 WiFi module) with u.FL antenna connector and external antenna
USB 1x USB 2.0 host ports
1x micro USB OTG port
Expansion headers Unpopulated 26-pin GPIO header mostly compatible with Raspberry Pi (1) header
13-pin header with headphone, 2x USB 2.0, TV-out, microphone and IR receiver signals
Debugging 3-pin header for serial console Misc 2x LEDs Supported OS Android 7.0, OpenWrt, Ubuntu or Debian Desktop/server
Armbian’s Debian 10 Buster or Ubuntu 18.04 Bionic
Power Supply 5V via micro USB port or optional PoE Dimensions - Weight 52 x 46 mm - 26 g
I tested the board using Armbian Buster. I've downloaded the 7-zip zipped image and I used the
Startup Disk Creatorof Ubuntu to write the image on a Kingstone 16GB SD-card, which is the same SD-card that I used to test the Raspberry Pi performances.
To use VSC and the Remote-SSH extension, you need first to change the default password (user: root, password: 1234). Use a terminal and connect to the board using SSH (enabled per default). You'll get something like Fig. 2. After changing the password, it is possible to connect to the remote OS using VSC and the Remote-SSH extension.
Fig. 2: Orange Pi running Armbian Buster: Changing the default password.
It is possible to monitor the CPU temperature using
armbianmonitor -munder Armbian, but I got temperatures between 10.9°C and 14.5°C (Fig. 3), and this didn't sound very good to me. The CPU had definitively a higher temperature!... It should be a wrong thermal calibration. Reading the temperature directly, it also reported some wrong values (see Fig. 4)
Fig. 3: Temperature monitor using
armbianmonitor -m... The values are too low!
Fig. 4: Temperature monitor. The values are too low!
The N-Queens Problem library needs the
tqdmmodule. And to install that, type the following:
root@orangepizero:~# sudo apt-get install python3-pip root@orangepizero:~# pip3 install tqdm # check if all cpu were identified: root@orangepizero:~# grep -c ^processor /proc/cpuinfo 4
Because the Orange Pi Zero LTS does not have a GPU temperature sensor (or any function that provides that information), I modified the
get_gpu_temp(...)function in the
def get_gpu_temp(self): #res = os.popen('vcgencmd measure_temp').readline() #res = float(res.replace('temp=','').replace('\'C\n','')) return self.get_cpu_temp()
to return the CPU temperature.
For the test, I used the same heatsink as for the Raspberry Pi:
The N-queens-problem benchmark (N=12) was launched and repeated 100 times with multi-thread and single-thread configuration:
root@orangepizero:~# git clone https://github.com/lemariva/N-Queens-Problem.git root@orangepizero:~# cd N-Queens-Problem root@orangepizero:~/N-Queens-Problem# python3 queenpool_multithread.py multithread_output.csv 12 4 100 Calculating loop number 1 (of 100) Starting calculation Elapsed time: 67.737995 There are 14200 solutions for 12 queens. 1566140517, 12, 4, 14200, 67, 737995, 51.79, 51.79 [...]
root@orangepizero:~/N-Queens-Problem# python3 queenpool_multithread.py singlethread_output.csv 12 1 100 Calculating loop number 1 (of 100) Starting calculation Elapsed time: 252.97670 There are 14200 solutions for 12 queens. 1566148971, 12, 1, 14200, 252, 97670, 27.71, 27.71 [...]
The N-queens-problem is a well-known problem that consists of placing N chess queens on an N×N chessboard so that no two queens attack each other. In this case, there are 14200 solutions for 12 queens.
The multi-thread and single-thread performances resulted as described in Fig. 5a and 5b, respectively.
Fig. 5a: Multi-thread Configuration Fig. 5b: Single-thread Configuration
The multithread performance of the Orange Pi Zero LTS is comparable to the performance of the Raspberry Pi 3B. In Fig. 5a, as the CPU temperature was under 70°C, the performance was better: It took the Orange Pi Zero LTS less than 67 seconds to solve the N-queens problem. After the 17th iteration, the temperature increased to over 70°C (as I mentioned, the sensor could not be correctly calibrated!) and the CPU performance was affected. Regarding the temperature, it increased slowly compared to the temperature of the Raspberry Pi 3B. The single-thread performance of both boards (OPi and RPi 3B) is also comparable. They needed about 252 seconds to resolve the N-queens problem.
The folowing table sumarizes the performance of the Orange Pi Zero LTS and compares it with the Raspberry Pi 3B and 3B+ models using Raspbian Stretch.
Avg. Multi-Thread Solving Time 69.97 s 62.66 s 70.85 s Multi-Thread Max. Temperature 71.75 °C 68.78 °C 78.69 °C Avg. Single-Thread Solving Time 251.65 s 213.34 s 251.30 s Single-Thread Max. Temperature 31.10 °C 54.22 °C 52.61 °CFor the tests, the Orange Pi Zero LTS was running Armbian Buster with kernel 4.19.59-sunxi (TA: 21°C), while the Raspberry Pis run Raspbian Stretch with kernel 4.14.27-v7+ (TA: 19°C).
The single-thread test was in average 3.65x slower than the multi-thread test (184.60 min vs 50.75 min to solve 45 N-queens problems). However, the temperature remained under 70°C and the system performance was not affected. The max. temperature for the single-thread solution seems too low for me (again, I think it is not calibrated!).
With the release of the Raspberry Pi 4, the market has become more difficult for competitors. But in the low-cost segment, it is still worth thinking about alternatives to raspberry. Thus, the Orange Pi Zero LTS is definitely an alternative to the old Raspberry Pi models (older than 3B+). Its price and size make it optimal for small designs. Moreover, it supports more OS than the Raspberry Pi. Its performance is comparable to the Raspberry Pi 3B and positions itself here against the much lower-power, single-core variants of the Raspberry Pi Zero.
The problems with the temperature that the older versions have seem to be resolved. Unfortunately, the internal temperature measurement is not working properly (from my point of view)! However, I was positively surprised by the board. This was my first Orange Pi and it didn't disapoint me at all, I'm thinking of buying one of its big brother (Orange Pi 3). I will test the performance of Docker running on this system in a next article.