What I’ve Been Using Previously
So, I’ve been primarily using development boards produced by the folks at Raspberry Pi, big fan of their Pi 3B(s), though I bemoan their lack of support for USB3.0 🙁 I’ve also been using boards from the BeagleBone folks, primarily their Black boards. I like their high GPIO count as well as access to the two PRU sub-processors. Though I’m not a big fan of the alternate ASM needed for it and also… the lack of USB3.0 🙁
I realize that there is a Beaglebone X15 board, which DOES have the SuperSpeed USB3, but it’s a whole other kind of beast… more geared towards desktop computing or larger projects than the kind used by the smaller boards. It’s also quite a bit pricier.
The Other Offerings
This lead me to take a look at the other ARM SBC offerings out there. OrangePi, ODROID, and FriendlyELEC.
While both OrangePi and ODROID had USB3.0 offerings, I avoided them for various reasons:
- OrangePi – Support issues reported in the forums regarding their drivers/distros.
- ODROID – USB3.0 transfer speeds were lackluster. Also potential problematic OS/distro support, though better than OrangePi. Non-Pi formfactors.
I eventually settled on FriendlyElec’s Nano Pi M4 offering for a few reasons:
- Raspberry Pi form factor and compatible header pins.
- USB3.0 with third party benchmarks showing performance exceeding 250MB/sec for read and write!
- PCIEv2 2-lanes available
- 4GB of ram
- MASSIVE heatsink (I read this to mean potential for passive cooling)
- 5V 3A power requirements listed.
- Good number of distros supporting it including Armbian.
These were very compelling points for the NanoPi M4. However, I would come to find that there were issues with each and every one of those pluses…
So, I acquired three exactly the same boards with three accompanying heatsinks. As you can see in the photograph above, the heatsink completely covers one side of the board. There is a small square of heat conductive material that serves as the contact point.
Temperature: These boards get VERY warm/hot
I found that when running the board in this setup, the heat sink would get rather hot. Not from any kind of computationally expensive task, just installation of APT packages under Armbian and/or their FriendlyElec Ubuntu Bionic distro. I saw temperature spikes up past 40°C. While not exceptionally high for a desktop, this was definitely warmer than I had expected, coming from a Raspberry Pi background.
Installing a heatsink, IMHO, is a necessity, if you want to keep this board running cool enough to not shorten its operational life or for stable operation.
With the heatsink, the heatsink got VERY hot to the touch. Adding a fan on top helped and kept them cool. So while the heat sink offers some passive cooling benefits, a small fan to ensure sufficient airflow is a must. Otherwise, it’s just a storage mechanism for heat.
Power Supply: Make sure it is beefy and dumb
I also noticed that the boards had a hard time remaining running. They would boot up, run for a bit, then crash/hang for unknown reasons. I would later diagnose this as an AC->USB adapter issue where there wasn’t enough power being delivered. Switching to a beefier power adapter helped to resolve this, but it was still flaky. Only one out of three boards kept running past an hour.
Using 5V 2.4A USB power supplies allows the boards to boot and run. However, only one board runs reliably for longer than an hour, just idling. While others have noted that the power draw rarely ever maxes out, I’m finding that the power draw probably spikes very frequently. Their specs note that a 5V 3A power source is required… and I’m keen on agreeing with them that this is the case. Haven’t gotten around to sticking a power measurement tool in-line, but then again, it won’t measure short spikes. Definitely a beefier DUMB supply is required. The USB power pulling power doesn’t know how to negotiate, so it won’t be able to ask for more power from a smart USB 5V power source.
Update: Meter Readings and Stress Testing
Got a USB voltage/current meter in-line and tried it with my 2.4A(smarter) and 3A(dumb) power supplies. While running sqrt() stress against the system AND running the FriendlyElec Qtdemo, I’m seeing at most a 5.17V @ 1.3A pull on the meter. This is with a 5″ raspberry pi HDMI display mounted on the stable Nano Pi M4 running at 1.2Ghz/1.4Ghz. So not sure what’s going on, but will keep it going for a bit to see. It averages around 1A and periodically spikes to 1.2A-1.3A. So not seeing anything that would show it spiking past into the 2A+ range. -_-;; Odd.
PCIEv2 X2: Mmm… Special Sauce Missing
So one of the selling points… one of two major ones, was the PCIEv2 that was exposed from the ARM chip via the 24pin header. I had done a good deal of pin matching prior to getting this board in the hopes/belief that I would be able to wire it up to one of those 1x=>16x PCIE adapters to attach a GPU to this device and do some compute work, mainly so I didn’t have to take up precious space in my file server.
However, there were numerous signal lines missing from the 24pin GPIO header. And while I didn’t kill a board, I also wasn’t able to enumerate or even get a detect going. Conductivity traces and such verified.. but no love. Multiple PCIE boards tried. The PCIE x16 slot has its own power input for the 12V sourcing and 5V sourcing.
Maybe I’ll be able to circle back on this once someone *cough*FriendlyElec*cough* devices to publish a generic interface mechanism to their 24pin “pcie/usb/etc” header port. Considering they have a SATA module that uses that port, I’m guessing they know how to make it work. Though… I am a bit disappointed they only exposed 2 lanes instead of the 4 that the ARM chip is capable of.
Uptime: Stability, CPU clock speeds, etc.
If I buy a board advertised as being able to do 1.2Ghz/1.4Ghz, I kind of expect it to be able to do that and run at that speed, given sufficient power/cooling. By all accounts, a 5V 2.4A should be able to supply the idling board with no Wifi, no HDMI, no USB devices, nor anything connected to it other than the Ethernet port. However, the longest uptime I’ve been able to achieve thus far is about 2 days. One one board. Each one hooked up to the same kind of power supply and with ample cooling and lots of idling.
And that was with the CPU set to 600Mhz, fixed. If left to self-govern to 1.2/1.4Ghz, instability seems to creep in. This is with FriendlyElec’s own Ubuntu Bionic distro image running off of an SD card. WTH?
Btw, boards were sourced from Friendly Elec directly and via Amazon, with Friendly Elec as the listed seller. So these were not boards purchased from a shady third party. *sighs*
In STARK contrast, my two Raspberry Pi 2(s) and one Raspberry Pi 3 in my closet, being powered from 5W USB dongles have uptimes in excess of 70 days. They just work.
So I’ve been also chatting with a friend who went with ODROID for their alternative to Raspberry Pi. And his experience hasn’t been great either, also experiencing stability issues, despite employing a beefy PSU.
I’m so disappointed in the Nano Pi M4(s). The only things where they have come through on is the USB3.0 throughput and performance. The stability issues are a show stopper. As are the overheating issues.
Going to keep working on it for a bit longer, but if people have any insight into getting this board to behave itself and perform without freaking. please drop me a line. https://www.facebook.com/wingedpower
Continued review of the boards here at https://wingtechcorner.com/2019/04/15/nano-pi-m4-sbc-board-review-part-ii/
Want to give it a go yourself?
- Friendly Elec Resources
- Raspberry Pi Resources
- OS/Image Downloads: https://www.raspberrypi.org/downloads/
- Raspberry Pi 3 B+: https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/
- For Nano Pi M4: https://www.armbian.com/nanopi-m4/