Home > Allwinner H-Series, Hardware, Linux, Testing, Ubuntu > Getting Started with NanoPi NEO Development Board – Ubuntu Core Firmware

Getting Started with NanoPi NEO Development Board – Ubuntu Core Firmware

NanoPi NEO is an exciting ARM Linux board due to the power it packs into its small size, and its low price starting at $7.99. It’s made by FriendlyARM, and since I’ve read some people had never heard about the company before, I’d like to point out it has been providing development boards well before the Raspberry Pi board was launched, with products such mini2440 based on a Samsung ARM9 processor introduced around year 2010. Anyway, I asked the company if they were willing to send 2 samples for review, as I plan to remove the USB & Ethernet port on one of them. Instead I got a 4 boards and accessories, so I’m going to start reviewing the board by writing a quick start guide, showing how to setup it, and check out the Ubuntu core provided by the company. If you are a fan of armbian made Debian distribution, NanoPi NEO will soon be supported too.

NanoPi NEO Pictures

So company send the parcel by DHL, and for some reasons declared an $11 value for 6 boards in the invoice, despite the board selling for respectively $7.99 and $9.99, and the two PSU-ONECOM debug boards going for $4 each… This resulted in higher custom duties than expected…

Click to Enlarge

Click to Enlarge

I opened all packages, with the board stored in anti-static bags as they should.

Click to Enlarge

Click to Enlarge

The complete package content include two NanoPi NEO 512MB RAM, two NanoPi NEO with 256MB RAM, two PSU-ONECOM debug board (which I don’t recommend, more details below), two 5V/2A power adapter and corresponding USB cables, as well as two blank 8GB micro SD cards. Each NEO board package also features a piece of paper with the specifications, and a getting started guide partially written for NanoPi-T3 (no you can’t use HDMI with NanoPi NEO), but still two useful links pointing the NEO Wiki, and Friendlyarm github account.

Click to Enlarge

Click to Enlarge

The top of the board features Ethernet, USB host, and micro USB (power) ports, as well as the micro SD slot, and I/O headers, while we’ll find the only two main ICs on the back with Allwinner H3 quad core Cortex A7 processor, and a Samsung RAM chip.

In case you wonder how to differentiate between the 512MB and 256MB version in case you buy both model, there’s a 512M RAM sticker on the former, and no sticker on the latter.

NanoPi_NEO_512MB_vs_256MB

If for some reasons, the sticker is detached, or remove, just check the back of the board for the Samsung memory part number: 2G (2 Gbit) = 256 MB, and 4G (4Gbit) = 512MB. Easy enough.

Samsung_Memory_256MB_vs_512MBNanoPi NEO can be considered a competitor of several other small ARM or MIPS Linux boards including Raspberry Pi Zero, Orange Pi One, Next Thing CHIP, and Mediatek LinkIt 7688, so I’ve taken a “family pictures” to show the respective size of the boards, and NanoPi NEO is clearly one of the smallest, and more powerful than most other board save for Orange Pi One.

Click to Enlarge

Click to Enlarge

However, it’s also much thicker than most because of its RJ45 jack, and vertical USB port.

NanoPi_NEO_Ethernet_USBI had planned to shoot a video showing how to remove the Ethernet and USB port (and possibly serial header), but I’ll probably skip it, because the company has now decided to also sell NanoPi NEO 512MB without Ethernet nor USB for $9.98 + shipping.

Getting Started with Ubuntu Core image for NanoPi NEO

So now, that we’ve checked out the hardware, it’s time to play with the board. Eventually, armbian will release an image, and it may become the preferred option, because of community support, but in the meantime, I’ll use the “Ubuntu Core + Qt Embedded” image released by the company. The instructions below are to be follow in a terminal windows in Debian, Ubuntu, or Mint operating system, but if you use Windows 10 you can flash the image with Win32DiskImager just like with a Raspberry Pi, or install Windows Subsystem for Linux, and follow the exact same procedure as in Linux.

First, you’ll need to download the image (currently nanopi-neo-core-qte-sd4g-20160704.img.zip) through mediafire, and uncompress it:


Now insert a micro SD card into your computer, and check the device name (/dev/sdX, or /dev/mmcblkpX) with lsblk command:


That step is very important. In my case, my 8GB SD card (the 3.7GB image should also work on 4GB micro SD cards) is /dev/sdb, so that’s what I’ll use. If I used /dev/sda instead, the instructions would completely wipe out my hard drive, and I’d lose all my data and OS. Anyway, let’s go ahead, and umount the SD card, and flash the image, checking the progress with pv:


The third step should take a few minutes to complete. Now we can take the micro SD card out, and insert it into the board, connect an Ethernet cable and the power, and after a few seconds (about 5 to 10 seconds). you should be able to ssh to the board with its IP address, which you can get from your router DHCP list.:


All good that was easy, and the board works out of the box. What’s not so nice is that the image is based on Ubuntu 15.10, an unsupported version of Ubuntu at this time.

Another way to connect to the board, especially if you don’t plan to use Ethernet is through the serial console. I’ve first done so using the company’s PSU-ONECOM debug board, plus a NULL modem cable, and an RS232 to USB adapter, since my computer does not have a DB9 connector.

NanoPi_NEO_RS232_Board

That’s fun, and it works, but that’s what I’d consider the old way of doing things simply because most recent computers or laptop don’t have a COM port. So instead, I’d recommend to use a standard USB to TTL, which normally cost $1 shipped, to connect to your computer, as it’s just more convenient to most people.NanoPi_NEO_USB_to_TTL_BoardSimply connect GND, Rx, and Tx to GND, Tx and Rx pins on the serial header of the board as shown below.NanoPi_NEO_Serial_Header

That’s the board output in minicom connected to /dev/ttyUSB0 with 115200 8N1 settings. In Windows, you may want to use Putty.

Let’s type some other command to find out more:


So the image is using a Linux 3.4.39 legacy kernel (mainline support should be a few weeks or months away), the rootfs size is 3.6GB with 3.0GB free (You’ll want to resize it with parted + resize2fs), and the quad core Cortex A7 processor has a maximum frequency of 1.2 GHz, instead of 1.29 GHz for boards with a different voltage regulation, but that’s OK, as the board has been mostly designed for IoT applications, and not necessarily for maximum performance. The GPIO module is compiled, but an error is generated after I load it, and now GPIOs are exported, which differs from my experience with the images I used with Orange Pi Allwinner H3 boards, where GPIOs are listed and ready to use.

Power consumption on this type of board is a topic that will require a separate post, but since I’ve been asked I’ve taken some quick measurements using a “kill-a-watt” power meter, and power consumption at idle is around 2.0 watts. Since the platform should also support standby/sleep mode, I tried it with pm-suspend:


Power consumption only dropped to 1.4 watts, and I was not able to resume by connecting a USB keyboard. So either the method I used is not correct, and suspend is not fully supported in the kernel. I’ll have to study a bit more, but obviously tips or links that could help me are welcome in comments.

Finally, I also checked whether it would be feasible to install an heatsink for people who may want to push the board to its limits.

NanoPi_NEO_HeatsinkThe Ethernet jack pins prevents to simply put some thermal paste on the processor and RAM, so you’d have to add some thermal pads on both ICs before fitting a heatsink, unless you use a smaller heatsink that does not cover the area under the RJ45 connector. There’s also no obvious way to keep the heatsink in place.

If you are interested in the board, it sells for $7.99 with 256MB RAM, and $9.98/$9.99 with 512MB RAM without/with Ethernet and USB host ports, plus shipping which normally amounts to $4 to $5 by airmail.

  1. Chris
    July 20th, 2016 at 18:23 | #1

    Great article! …. but do you know whats about CE Mark happens? I try to get information since your last article… but get no precise answer. “it is sent for CE Verification…” – for real?, how long does this take? Expectations? … Will they get CE Mark for sure? Do you have contact with FriendlyARM? It’s not possible to import them into EU a legal way without CE Mark… Are you able to get more information about that?

    • Brendan
      July 20th, 2016 at 19:22 | #2

      Hey Chris, no makings on the board for CE but the box does have the logo. I can take pictures if you like?

  2. July 20th, 2016 at 19:31 | #3

    @Chris
    Yes, @Brendan is right. I can see both CE and FCC logo on the other side of the box.

  3. Chris
    July 20th, 2016 at 20:04 | #4

    @Brendan
    Thank you!

    @cnxsoft
    Ok, that are really great news!!!!

  4. tkaiser
    July 20th, 2016 at 21:48 | #5

    Armbian will support the boards soon (FA’s tech support said they shipped today dev samples to Igor and me). If anyone wants to play he can take the Armbian image for NanoPi M1 and use this fex file: https://github.com/igorpecovnik/lib/blob/master/config/fex/nanopineo.fex

    Use fex2bin to convert/save it as /boot/bin/nanopineo.bin, then do as root a

    Also in /etc/defaults/cpufreq-utils the 240MHz value has to be adjusted to 480MHz (I made a mistake when preparing NanoPi M1 support, now FA will send this board too so we’ll provide updates next week) and a reboot is necessary.

    Regarding suspend from sleep you need sources configured for legacy kernel in the fex file. Currently that’s the — non existing — power key bound to pin PL03.

  5. TLS
    July 20th, 2016 at 23:57 | #6

    @Chris
    As it doesn’t have Wi-Fi, why does it need CE or FCC? The power adapter does (well CE/UL), but you only have to pass EMI certification otherwise afaik.

  6. Chris
    July 21st, 2016 at 03:27 | #7

    @TLS
    I am not responsible for Laws themselfs or if they make sense but: it has to have a CE Mark and a CE Certification if you want it to import to the whole European Union… which are some small countries which may be interessted in buying…

  7. July 21st, 2016 at 04:29 | #8

    kernel 3.4.39? any mainline kernel for the h3 yet?

  8. Deets
    July 21st, 2016 at 04:43 | #9

    Ethernet and USB ports only worth half a penny each these days, eh?

  9. July 21st, 2016 at 06:21 | #10

    @Deets
    the descriptions says “With USB-A Port & Ehternet Port Unsoldered” so maybe the parts are included in the package, just not soldered? I don’t know.

  10. July 21st, 2016 at 10:05 | #11

    The Ubuntu core image will run /opt/QtE-Demo/run.sh by default.
    It’s completely useless since there’s no display, and it can be disabled in /etc/rc.local.

  11. Sander
    July 21st, 2016 at 11:51 | #12

    (second try):

    “its IP address, which you can get from your router DHCP list.:”

    On Linux and MacOS you can use:

    I will post an oneliner on a next, separate post.

  12. Sander
    July 21st, 2016 at 11:58 | #13

    The one-liner (I wish I knew how I could put in a code-block):

  13. July 21st, 2016 at 12:05 | #14

    @Sander
    Thanks. Useful!
    You need to use < -pre-> something here < -/pre-> without the dash. I’ve done it for you.

  14. tkaiser
    July 21st, 2016 at 13:21 | #15

    @Sander
    On OS X there’s no need for arp-scan (also not included). The following works there:

    No idea about FA’s OS image but at least with Armbian and a DHCP server with dynamic DNS updates simply pinging the deivce’s host name should also work directly afterwards (‘ping nanopineo’ in this case)

  15. July 21st, 2016 at 13:47 | #16

    @tkaiser
    I can confirm that “ping FriendlyARM” does not work with their image.

  16. July 21st, 2016 at 18:08 | #17

    I can also confirm it’s not designed to run high loads, at least not without heatsink, unless the image as some issues.
    I’ve been running the “LoveRPi” Phoronix test for over 4 hours, and the CPU temperature is @ 80 C with the IR thermometer, and each of the test iteration take longer than the other.

  17. theguyuk
    July 21st, 2016 at 18:10 | #18

    All good news and while Friendlyarm, OrangePi have got better at communicating, supplying hardware to the likes of Armbian, more board and soc makers need to up their game and join in.

    Armbian has the potential to be a gathering of developers, makers with a resulting blooming of a vibrant strong healthy eco system of products.

    What the NanoPi Neo needs next is a version where all USB ports are brought out to separate micro USB ( lower weight, packet size for postage ) Ethernet and HDMI header not fitted but brought out to a second GPIO bank , 1GB to 2GB ram (Why! Because build it they will come. Give makers the space and let them developed, explore the need )

    Think a Allwinner H3 Arduino similar style board but more oomph, grunt, speed etc.

  18. tkaiser
    July 21st, 2016 at 18:23 | #19

    @cnxsoft
    Using Phoronix test suite to compare different boards with same SoC is pretty much a waste of time. DRAM might make a difference with some workloads (NanoPi NEO has a single bank configuration and a very conservative DRAM clockspeed — to save on energy is still my assumption) but everything else is just settings (that’s why the first Orange Pi measurements done by Michael Larabel looked so horrible) and PCB design (copper layers to spread the heat for example).

    My usual quick test is installing Armbian (see above for the minimal NEO adoptions currently needed), then taking the 20 seconds to install cpuburn-a7 and then install RPi-Monitor using

    Then execute cpuburn-a7, check temperature / clockspeed 3 minutes later and compare with https://github.com/igorpecovnik/lib/issues/298#issuecomment-220017171 (the three graphs here and below for Orange Pi One, PC and Plus 2E)

  19. Sander
    July 21st, 2016 at 18:53 | #20

    @tkaiser

    Cool!

    This works on Linux:

  20. mdel
    July 22nd, 2016 at 03:38 | #21

    “the company has now decided to also sell NanoPi NEO 512MB without Ethernet nor USB for $9.98”

    well that’s better.
    wait.. you mean the same board with missing connectors ? not even a microsub in place of the usb port ?
    i give up, someone send them an rpi zero..

    At least the 1 cent price difference made me laugh a bit (and the massive heatsink too).

    80c at full load with that kind of cooling is respectable but still would not make the device safe for mobile use, i’ll try to heat my lipo batteries at that temp, see what happens.
    I think it’s safe to assume that the stock 1.2GHz is not realistic for mobile use, you’ll have to limit power draw significantly.

  21. July 22nd, 2016 at 09:13 | #22

    @mdel
    Actually I can understand the point of removing the full USB port and leaving the pins to integrated your own low profile USB device, like a WiFI dongle, but I don’t see the benefit of replace the USB port with a micro USB port.

  22. mdel
    July 22nd, 2016 at 16:02 | #23

    @cnxsoft
    well there’s not much to it, ease of use.

    I look at the rpi zero or arducam and i see something i can recognize, low profile board with only low profile connectors (microusb, dsi connector, unpopulated gpios).

    And considering the minimal form factor of the arducam, i would say it would have been understandable if they didn’t include microusb but they did and it probably didn’t made much difference in the final board size.

    Granted usb is only 4 wires so it’s not that hard to solder a cable to it, although if they only leave the footprint of vertical usb connector, it won’t be that easy.

    It would also be better to chose a soc that can operate without heatsink but that’s probably asking too much and at that point the soc power draw will be limited so will be it’s nominal performance and that should be fine for your project.

  23. tkaiser
    July 22nd, 2016 at 16:28 | #24

    @cnxsoft
    Currently testing FA’s OS image. If DHCP/DNS is setup correclty simply accessing ‘friendlyarm’ after initial boot should suffice to login remotely via SSH for example:

  24. July 22nd, 2016 at 16:33 | #25

    @tkaiser
    Not setup in the image:

    I’m confused… Is yours the output from an actual NanoPi board? Why haven’t our MAC addresses the same prefix?

  25. tkaiser
    July 22nd, 2016 at 16:56 | #26

    @cnxsoft
    Nope, this is an Orange Pi PC. Agreed, I should wait for the hardware to arrive and then check again 🙂

    BTW: Wasted an hour to get RPi-Monitor with all tweaks up and running with this OS images. This is way more time than adding support for a new H3 board to Armbian 🙁

  26. July 22nd, 2016 at 16:58 | #27

    @tkaiser
    I did try to set it up with armbianmonitor -r, but then I realized the script expects rpi-monitor to be in the package repo…. so I gave up. I’m now happy I did, as if it took you nearly one hour, it may have taken me one day…

  27. tkaiser
    July 22nd, 2016 at 17:19 | #28

    @cnxsoft
    If you already copied armbianmonitor you can use the script for CLI based monitoring too. On other OS images than Armbian just a symlink is needed (will be created automagically when running Armbian, we try to choose the correct thermal source on all the +40 SBC we currently support):

    wget -O /usr/local/bin/armbianmonitor “https://raw.githubusercontent.com/igorpecovnik/lib/master/scripts/armbianmonitor/armbianmonitor”
    mkdir -p -m 755 /etc/armbianmonitor/datasources/
    ln -s /sys/class/thermal/thermal_zone1/temp /etc/armbianmonitor/datasources/soctemp
    chmod 755 /usr/local/bin/armbianmonitor

    Looks then like this:

    [email protected]:~# armbianmonitor -m
    Stop monitoring using [ctrl]-[c]
    Time CPU load %cpu %sys %usr %nice %io %irq CPU
    10:11:42: 1008MHz 1.02 1% 0% 0% 0% 0% 0% 43°C
    10:11:47: 480MHz 1.02 1% 0% 0% 0% 0% 0% 43°C
    10:11:52: 480MHz 1.01 1% 0% 0% 0% 0% 0% 43°C
    10:11:57: 480MHz 1.09 1% 0% 0% 0% 0% 0% 42°C
    10:12:02: 480MHz 1.08 1% 0% 0% 0% 0% 0% 43°C^C

    (the ‘high’ load is nothing to worry about, it’s just FriendlyARM using Allwinner’s defaults and can be lowered by grabbing NanoPi’s fex file and setting the value of line 499 to 0. Afterwards average load drops towards 0 and the role of the Micro USB port can be switched between host and OTG through sysfs as explained here for example. Armbian contains all of these changes already of course)

  28. July 22nd, 2016 at 18:07 | #29

    @tkaiser
    That option is quite nice.
    Since people may ask, the CPU is at 45C at idle (with heatsink).

  29. tkaiser
    July 22nd, 2016 at 18:42 | #30

    @mdel
    Check this thread here how easy it is to get a H3 device that idles at RPi Zero level (being as slow as an RPi Zero) and jump to RPi 2 performance within milliseconds: http://forum.armbian.com/index.php/topic/1614-running-h3-boards-with-minimal-consumption/

    Then even the unsoldered variant provides a Micro USB port (that can be used to both power the board and be used at the same time — for example to be used as g_ether network connection) and 2 more USB ports are available for easy soldering on the 12 pin header at the side (H3 has 4 real USB ports + 1 real Ethernet PHY unlike RPi SoCs that have just one single USB2 port).

    And H3 has a fifth CPU core called AR100 or ARISC: http://linux-sunxi.org/AR100 (when sent to deep sleep the AR100 has taken over, consumption drops below 0.4W and ARM cores can be woken up when needed. Some linux-sunxi devs already started to explore how to run code on AR100 independently from Linux running on the ARM cores so maybe just by software changes we get H3 boards that consume 0.3W while doing some useful stuff, waking up the ARM cores just from time to time to sent data over the wires or something like that)

  30. July 26th, 2016 at 09:11 | #31

    @Sander
    That command does not work for me:

    arp-scan works, but it does not return the client name like in the router DHCP list.
    For example I have Raspberry Pi Connected.
    arp-scan command line: 192.168.0.109 b8:27:eb:97:d6:23 (Unknown)
    Router page: raspberrypi B8-27-EB-97-D6-23 192.168.0.109

  31. Tony
    July 27th, 2016 at 12:36 | #32

    Hi. I have loaded this onto my SD card, but I can’t figure out how to make my TPlink TL-WN722N to work. I can see it in LSUSB but it does not load.

    Can anyone point me in the right direction?
    Thanks,

  32. tkaiser
    July 27th, 2016 at 12:50 | #33

    @Tony
    Use Armbian, the TL-WN722N should work out of the box. Only minor modifications are needed as outlined here: http://forum.armbian.com/index.php/topic/1580-nanopi-neo/?view=getlastpost

    As soon as NEO developer samples arrive here we will support the board officially (maybe with 2 images, one optimized for minimal consumption and a multi-purpose image for normal/most use cases)

  33. Tony
    July 28th, 2016 at 11:17 | #34

    Thanks @tkaiser – got it going – looking forward to a minimal armbian release for the neo.

  34. tkaiser
    August 17th, 2016 at 20:55 | #35

    FYI: Armbian released 2nd preview images for NEO: http://www.armbian.com/nanopi-neo/

    We did a lot of testing and came to the conclusion to focus on low consumption. With new NEO settings the board does not exceed 2W consumption even in worst case conditions since we currently limit CPU clockspeed to 912 MHz to let the voltage regulator remain at the lower level which helps a lot with lowering consumption. In real world applications the performance drop is around 20-25% compared to 1200 MHz cpufreq which is negligible unless one wants to do HPC with the NEO. But then he chose the wrong device anyway: With benchmarking it’s pretty easy to deadlock the board when running heavy stuff without heatsink+fan. Only heatsink is not enough, maybe different components and not the SoC overheat then. No idea, the NEO is made for IoT stuff and not HPC and should be used like this.

    Feedback welcome (use the link on download page)!

  35. tkaiser
    August 22nd, 2016 at 13:05 | #36

    As a result of finding optimal settings for the NEO and all the consumption/performance testing the last weeks we finally figured out which settings provide which savings (eg. disable Ethernet PHY in H3 –> 200 mW less, disable HDMI/GPU –> 210 mW less and so on).

    We added a new tool to Armbian called h3consumption that allows to adjust this stuff. On NEO not that useful since there Armbian settings are already optimized for lowest consumption possible (unfortunately NEO needs more than the other small H3 devices) but on other H3 boards huge savings are possible based on use case: http://forum.armbian.com/index.php/topic/1614-running-h3-boards-with-minimal-consumption/?view=getlastpost

  36. February 5th, 2017 at 06:50 | #37

    Thanks for the baud rate info , 115200 8n1, no hardware flow control. I am planning to use this as flight controller of a micro helicopter. All other boards are too heavy. After desoldering the ethernet and usb , this nano board is half the weight of Raspberry Pi Zero. Finally it fits my weight budget for the heli.

  37. Mal
    February 5th, 2017 at 11:52 | #38

    Has anyone seen a Hilsch Ranques vortex tube being used for cooling these? The cold air would be quite free of any moisture, so I figured that this moving gas, being that it is a decent insulator, could be a possible static charge builder . Does anybody know of any reasons that using this type of cooling might be or is not a good idea ?

  1. No trackbacks yet.