The Banana Pi BPI-M2-Zero board has been out for a few years now with a number of revisions and I managed to get my hands on one of the newer versions (v1.3) with the ARM-based Allwinner H3 chip for testing!
As a disclaimer, I did receive the board for free from BananaPi themselves, though they had no editorial input and all words are my own. There are also Amazon affiliate links on this page and I will earn a small commission if you click and purchase anything through the relevant page. It helps to keep me supplied with electronics to talk about here, I hope you don’t mind..
Banana Pi M2 ZERO Specifications
|CPU||Quad-Core 1GHz Allwinner Cortex A7|
|RAM||512MB DDR3 RAM|
|OpenGL ES 2.0|
|1080p60 H.264 Decoding, 1080p30 H.264 Encoding|
|Connectivity||WLAN (SDIO AP6212) + Bluetooth|
|MicroUSB OTG (1)|
|Mini HDMI (1 at 1080p30)|
|CSI Camera Connector|
|microSD Card Slot|
|40 Pin Raspberry Pi compatible GPIO header|
|via GPIO Header (5V)|
|Dimensions||65x30mm (Length x Height)|
Upon opening the box and having a look, it’s a very clean board. With a striking blue PCB and all of the I/O you would expect (with the ability to drop it into your Raspberry Pi Zero cases with no problem), it will stand out on a desk full of green! The feature I immediately found myself enjoying (when constantly restarting for SD benchmarks) was the dedicated reset and power keys. They’re small additions but are proving incredibly useful and preventing the need from yanking the power cables out constantly.
The packaging is simple, though a box is often more than you’ll get elsewhere and it survived the trip to Europe from China just fine so no complaints there.
As always (where possible), I’m using Armbian as my operating system of choice for this testing and I’m using the latest available in the archive,
21.08.1 Hirsuite on kernel
5.16.11-sunxi. Boot storage is in the form of the best-performing Amazon Basics 64GB microSD card and the SSD used for testing is the Samsung 850 EVO. For USB Ethernet, I use the Linksys 1Gbit USB Ethernet adapter.
The first “mainstream” test we’ll go with is UnixBench. The BPI-M2-ZERO looks to scale well with its 4 threads and is on par with the Raspberry Pi Zero 2 W in this particular test. As a fun extra piece of information, it took a total of 12.995s to compile UnixBench too.
Geekbench comes in 2 “flavours” and as I’ve used the 2.4.2 LinuxARM build in the past, I’ve included that in addition to the newer 5.4.0 Preview build so it can be used for comparison. It should be noted that to get Geekbench 5.4.0 to complete the multi-core tests,
zram had to be enabled and bumped up to around 350MB.
5.4.0 ARM Preview
WAV to MP3 LAME Encoder
These results are from the Phoronix Test Suite’s LAME WAV to MP3 encoder test. You can verify and compare it with your own SBC if you like on the test page.
Sticking with Phoronix, we’ve run their PyBench test to see how the board performs when running Python. Like above, you can compare and verify the results here.
Banana Pi M2 ZERO WiFi/Ethernet Performance
By default, I use a USB to Ethernet adapter when I first start up my boards as there’s usually a driver available and with DHCP I can get up and running quickly without having to mess around feeding the image SSIDs/passwords ahead of time. With the BananaPi BPI-M2-ZERO though, once I got to WiFi it leaves a little to be desired. It uses the AMTEK AP6212 chip and for all images I tried, it fell back to a default firmware/configuration with very limited performance. To remedy this and get any kind of usable connection, you need to obtain an antenna for the BananaPi M2 Zero to connect to the RF port on the board (directly to the right of the HDMI port). Once connected, I went from only finding my phone’s hotspot when sitting next to the BananaPi, to finding 20-plus networks. Result!
It would be great if sinovoip either look into including a small antenna, or at least offer it as an add-on item and note that it’s highly beneficial to have. Or if this is a software issue, addressing this would go a long way.
On the USB ethernet front, I have no complaints, it’s around what I’d expect going through my usual micro USB to USB-A adapter that’s used in all of my testing.
All test results are taken from the average of 5 minutes of an iperf3 run in both directions. The iperf3 server is running on an idle Gbit server connected via CAT6 ethernet to a UniFi USW-Lite-16-PoE switch and the BPI-M2-ZERO in direct line of sight 1 metre away from the UniFi U6-LR access point.
Even with the antenna, whilst the upload on WiFi is stable at around 34Mbit, the download speed is slightly slower with an average of 26Mbit. The fluctuations in speed though saw it going from around 6Mbit to 35Mbit. When the antenna is detached (bear in mind this is still 1m away from the AP with direct line of sight) there are fluctuations from 680Kbit to 13Mbit on the download side and fluctuations between 520Kbit to 6.68Mbit on the upload side of things.
Banana Pi M2 ZERO MicroSD Card Performance
I’ve taken these results directly from my best/fastest microSD Card comparison post as they are also interesting to include here. The Amazon Basics card has been the overall winner in most cases but the Transcend and others are all very close. If you have a preferred brand or one, in particular, is on offer, you’ll find they’re much the same. Though having the higher random read/write performance may prove extremely useful on the higher-end ones depending on your use case.
|SD Card Model||Sequential Read||Sequential Write||Random Read||Random Write||IOPing|
|SanDisk Ultra (8GB)||21.86 MB/s||14.27 MB/s||5.24 MB/s||0.63 MB/s||0.9 ms|
|SanDisk Ultra (16GB)||22.03 MB/s||14.43 MB/s||6.29 MB/s||2.5 MB/s||2.69 ms|
|SanDisk Ultra (32GB)||21.89 MB/s||17.7 MB/s||6.51 MB/s||2.16 MB/s||2.74 ms|
|SanDisk Extreme (64GB)||21.96 MB/s||22.03 MB/s||5.68 MB/s||3.29 MB/s||0.74 ms|
|SanDisk Extreme PRO (128GB)||22 MB/s||22.07 MB/s||5.02 MB/s||3.39 MB/s||0.79 ms|
|Kingston Canvas Select Plus (32GB)||11.26 MB/s||10.2 MB/s||4.36 MB/s||1.86 MB/s||0.8 ms|
|KIOXIA EXCERIA (32GB)||21.95 MB/s||16.4 MB/s||7.93 MB/s||3.79 MB/s||0.73 ms|
|Samsung EVO Plus (32GB)||21.74 MB/s||20.73 MB/s||5.07 MB/s||1.51 MB/s||1.07 ms|
|Amazon Basics (64GB)||22.14 MB/s||22.43 MB/s||8.22 MB/s||3.91 MB/s||1.01 ms|
|Verbatim Premium (16GB)||22.09 MB/s||11.7 MB/s||7.11 MB/s||2.12 MB/s||0.87 ms|
|SanDisk MAX ENDURANCE (32GB)||21.96 MB/s||21.77 MB/s||5.51 MB/s||3.26 MB/s||0.68 ms|
|Integral ultima PRO (64GB)||21.87 MB/s||21.97 MB/s||7.7 MB/s||3.81 MB/s||1.07 ms|
|Patriot EP Series (64GB)||21.87 MB/s||19.17 MB/s||6.62 MB/s||2.37 MB/s||0.76 ms|
|Kodak (64GB)||21.78 MB/s||20.9 MB/s||3.28 MB/s||0.73 MB/s||0.85 ms|
|Intenso (64GB)||22.17 MB/s||22.03 MB/s||8.39 MB/s||3.83 MB/s||1.01 ms|
|Transcend (32GB)||21.89 MB/s||13.77 MB/s||7.62 MB/s||2.32 MB/s||0.66 ms|
|Samsung EVO Select (32GB)||21.88 MB/s||20.73 MB/s||6.12 MB/s||1.53 MB/s||1.01 ms|
|Samsung PRO Plus (128GB)||21.97 MB/s||20.47 MB/s||6.45 MB/s||1.16 MB/s||0.76 ms|
|SanDisk HIGH ENDURANCE (64GB)||21.8 MB/s||21.27 MB/s||4.63 MB/s||2.86 MB/s||0.77 ms|
|Samsung PRO Endurance (32GB)||21.84 MB/s||20.9 MB/s||6.35 MB/s||1.65 MB/s||1.06 ms|
USB SSD & microSD Card Comparison
For this comparison, I’ve taken all of the above SD card benchmarks and taken the average of each value. As you can see, the sequential read and write speeds are quite similar, though as expected, the random read/writes are where the USB SSD takes over. It’s nowhere near hitting what the SSD is capable of, however, if you want some additional storage that’s a little more reliable than the microSD card in the long term then it’s a better option. It’s worth noting though that you cannot boot from the USB SSD.
Thermals & Power
Temperatures were measured using the SoC’s onboard temperature sensor with an ambient room temperature of 27.9celsius (it’s gotten toasty here in Sweden all of a sudden!) The load was generated using
stress-ng --cpu 4 and left for 15 minutes so it got nice and warm. For the heatsink, I’m using one of your typical small, cheap AliExpress aluminium heatsinks with the
thermal insulating tape removed and replaced with a smidgen of Arctic MX-4 thermal paste. Not the most scientific or reproducible of tests but hey, if you want to try it, at least you now know what you’re getting.
Banana Pi M2 ZERO Power Draw
The load for the power draw test was also generated using
stress-ng --cpu 4 so we’re not pushing every possible component to the max here. It’s a good base measurement though.
I stand by what I said at the beginning of this post before I began testing. It’s a nice board with the features you’d expect and great performance in a “Pi Zero” form factor. It will fit in your existing Raspberry Pi Zero case and with it being GPIO compatible with the Raspberry Pi, your hats and accessories should also work as expected.
The WiFi issue was a bit of a disappointment (maybe the length of that section shows, sorry!) as I feel a lot of users will be purchasing this to simply plug in and use WiFi without the need for a USB ethernet/WiFi adapter and the exclusion of an antenna in the box does let it down a little. If you’re able to salvage an antenna from another board (I took mine from an OrangePi Zero2!) or you have one to hand then that will help you immensely. Maybe I’m doing something wrong though?!
For its price, it’s a capable board and a solid alternative to the Raspberry Pi Zero W 2 on the compute side of things if you’re struggling to find stock (stay tuned for a comparison piece!) The Allwinner H3 chip in the BPI-M2-ZERO doesn’t quite scale as well as the RP3A0-AU in the Zero W 2 but it definitely puts up a good fight and if you’re interested in an alternative, the BananaPi M2 Zero may be a board for you (just get an antenna too!) If you want a Raspberry Pi 3 style board with the power of a BPI-M2-ZERO, you can plug it into many of the Raspberry Pi Zero to Pi 3 adapter boards available on the market.
Do you have this board working just fine without an additional antenna for WiFi? Is there another test that you’d like to see me run? Would you like a comparison against another board? I’m aware that I’m not doing any kind of GPU/desktop testing here, is that something you’d like to see too? Let me know in the comments, or via Twitter and I’ll see what I can do.
Hi, thanks for testing. Did you try any fullhd video screen testing? 1920×1080, 60hz for example(1280×720 is ok). Im having trouble with this resolution, as it always flicker really weird way. I tried old 3.14 kernel, also 5.13, 5.14, 5.15 with libreelec media center distro and also with ubuntu or armbian. Im suspecting there is kind of interference in hdmi port as i newer saw such a image glitch in my SBC history.
after reducing CPU clock and disabling 3 other cores flickering almost stop, but its still visible. I’m thinking what to try next to fix it?
echo 480000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 0 > /sys/devices/system/cpu/cpu1/online
echo 0 > /sys/devices/system/cpu/cpu2/online
echo 0 > /sys/devices/system/cpu/cpu3/online
Interesting! Not ideal having to do all of that though to prevent flickering – have you posted on the BananaPi forums at all? Perhaps their staff/others will be able to assist with this issue. Unfortunately I don’t have much time to test this myself at the moment :(
Regarding the operating temperatures which seemed to me quite strong compared to the Raspberry zero 2W, I go from 60 degrees to 40 degrees by removing the USBGigabit module and connecting only with the integrated wifi module ! (with a small antenna connected to the APEX connector of the board!) – (I installed a small heatsink on the cortex A7 – same dimension as the A7)
– Linux banana 5.15.72-sunxi #22.08.4 SMP Fri Oct 7 16:45:35 UTC 2022 armv7l GNU/Linux
– température : paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) | column -s $'\t' -t | sed 's/\(.\)..$/.\1°C/'