Sunday, 6 November 2016

Safety-First IoT Part 1 - Getting started with the Nano Pi NEO Air

Nano Pi NEO Air

On my Technology Policy Blog I've written about the challenges of The Internet Of Things, and how
to address them. Here on Make The Future I'm beginning this series of more technical articles on how
to put my recommendations into practice.

Meet the Nano Pi

The Nano Pi NEO Air is one of a number of low-cost boards inspired by the Raspberry Pi, many of which are
suitable for managing your own Internet of Things collection in the workplace or home.

The Raspberry Pi is a highly versatile single-board computer aimed at hobbyists, students
and Internet Of Things products. The Raspberry Pi occupies the "top of the line" position in this niche, with
WiFi, HDMI, Four USB-A ports, audio output, a gigabyte of RAM and top-notch software support.

An ecosystem of lower-cost alternatives have grown up, which aim at more specialised
subsets of the Raspberry Pi's market, typically by reducing features to save either size or cost.

The Nano Pi NEO AIR is the latest in a of a family of very small single board computers from FriendlyARM. The Air has the following notable features:

  • Tiny 40x40mm size
  • 8MB on-board flash pre-loaded with Ubuntu Linux
  • External WiFi antenna
  • Idle power consumption around 1 Watt (200mA @ 5V)
  • Weighs less than ten grams
  • No video output (but a dedicated 4-pin serial console connector)
  • No USB-A ports but (but headers for two external ports)

This board, which costs under US$20, is extremely well placed for mobile battery powered applications, or for IoT sensor applications that need the power offered. (My position is that if you don't need a Linux runtime in an IoT device, you should use a less complicated embedded platform with a smaller vulnerability surface instead).

One immediate application of the Nano Pi NEO Air is as a bridge for Apple's HomeKit, allowing you to control existing home-automation appliances via your iPhone (more on this in a future post).

Unboxing and Assembly

The Neo AIR is available from FriendlyARM with a number of optional extras. I recommend you order the following in addition to the board itself:

  • A case, either 3D printed PLA or laser-cut Acrylic
  • A heatsink (my board has run fine without a heatsink so far)
  • An external WiFi antenna


If you don't already have a USB-to-TTL-serial converter, you will need one for initial setup. (See also my post on using a HC-06 Bluetooth module instead.)

The Neo Air comes disassembled, you will need to solder on the input-output header pins.

The Acrylic case screws together easily, and well done FriendlyArm for including five of each of the screws and posts, even though only four are needed. Losing an important screw can be very frustrating.

Setting up the Operating System

Once your Air is assembled, you need to connect a serial adapter for first boot setup. The only text editor installed out of the box is 'vi' so it's time to either learn vi, or edit your files elsewhere and paste the contents in.

You can use either a USB-to-serial cable or a Bluetooth-to-serial module.

Here's what you need to do.

  1. Connect to the serial console from another computer over USB or Bluetooth
    • On Mac do cu -l /dev/tty.HC-06-DevB (or whatever name your interface device is given)
    • On Linux do cu -l /dev/ttyUSB0 (Press the RETURN TILDE and PERIOD keys in sequence to exit cu)
    • On windows use Hyperterminal or other terminal software
  2. Log in as root (password 'fa') and change the passwords for 'root' and 'fa' accounts immediately.
    • # passwd root
    • # passwd fa
  3. Edit the system hostname (vi /etc/hostname)
  4. Configure the wifi
    • Get the example configuration file from the FriendlyARM Wiki
    • Edit the file on your Air: vi /etc/wpa_supplicant/wpa_supplicant.conf
  5. Reboot
  6. Login as root with your new password
  7. Update software and add some essentials
    • apt-get update
    • apt-get upgrade
    • apt-get install avahi-daemon avahi-utils man-db nano
  8. Reboot again
  9. Now you should be able to ssh to your Air using the name you gave it, eg ssh scampi.local
For those who can't use vi: If you don't know how to use the vi editor, you can paste in your files using cat, for example
  1. cat > /etc/wpa_supplicant/wpa_supplicant.conf
  2. Paste in your complete file
  3. Press CTRL-D to signify end-of-file
  4. Type cat /etc/wpa_supplicant/wpa_supplicant.conf to confirm correct content

Customising the hardware

I customised my Air like so:

  • I drilled a 6.35mm mounting hole for the antenna in the acrylic cover
  • I added a USB-A socket from my junk box (such as this component)

FullSizeRender 2

First impressions in use

The pre-installed Ubuntu installation looks a little strange (including only busybox's vi emulator as an editor is fine for an old hand like me, but a little rude to newcomers), I will be looking at switching to Armbian soon. The Armbian distribution for this board has just reached beta-test stage in the last few days; I previously booted the Armbian alpha-test version from SD card and it worked well, though I didn't yet test WiFi.

Power consumption is good, the board has been running from a single lithium battery throughout all the testing I have done.

The lack of on-board type A ports means I wouldn't recommend this board for use as a security camera hub, I would look at the Orange Pi Zero as an alternative here.

Looks ideal for robotic applications, especially connecting one or more Arduinos running Firmata via one or more of the three serial ports.

Next Steps

In upcoming articles I'll be looking at how to manage your IoT devices in a way that reduces risk to you and others in case of vulnerable or rogue devices. Rather than relying on the manufacturer's poorly supported cloud services to control to devices, I'll show how to use Node-RED and other tools to create a secure IoT installation.