Posted on

Installing Ubuntu Server 14.04 on the ARM Allwinner A80 Optimusboard or pcDuino8 Arches

Previously in this series, we investigated building and running a minimal linux server on the Allwinner A80 Optimusboard.  While that was a great exercise in learning about the A80 and its SDK, the output of that work was not all that useful.  Additionally, we were still missing major hardware components such as ethernet, wi-fi, and NAND.  More recently, the pcDuino team released both a Fedora and a Lubuntu beta image for the pcDuino8 board (recently renamed Arches).  Their Lubuntu build is made up of two pieces: a kernel image and a rootfs image.  The kernel image is 3.4.39, and it simply boots the board and then points over to the rootfs.  However, they utilized an older Lubuntu 12.10 image, which also inherently provides the LXDE desktop, neither of which is optimal when looking to deploy a server.

To build an ideal microserver, we really needed a bare minimum Ubuntu LTS system.  Thus, we kept the 3.4.39 kernel they provided, but we swapped in a freshly built Ubuntu 14.04 LTS file system created by mk-sbuild.  There is no window manager, no video acceleration, and no packages above and beyond what is needed to bring up the system.  It is up to the user to install whatever software they want, whether that is a LAMP stack, nodejs, ruby, FTP, DNS, Gnome, VNC, etc, etc.

Here is how to make use of this image:

First and foremost, you’ll need to download 3 files that we are going to use.  One file will be used by LiveSuit, and the other 2 files we are going to place on a microSD card.  Here are our downloads:

After they are finished downloading, we need to uncompress the ubuntu-trusty-arm-mininodes-20141227.img.gz image file.

gzip -d ubuntu-trusty-arm-mininodes-20141227.img.gz

Next, copy and ubuntu-trusty-arm-mininodes-20141227.img to a microSD card and then set it aside, we’re going to need it later in the process.

Now, we are ready to start.  First, load LiveSuit and select the kernel file so that it is ready to format / flash when the board is powered up.


Next, we need to connect the serial cable to the Optimusboard, open up a screen session (or use Putty if on Windows), and apply power.  Quickly press any key to interrupt its boot process and drop to the u-boot shell.  Type ‘efex’ (without the quotes) and press Enter.


LiveSuit will now find the board, and flash the kernel to the NAND (/dev/nanda to be exact).  It only takes a moment, because we are simply flashing the kernel at this point.


Once finished, the Optimusboard will reboot itself, and attempt to boot, but it fail with an error of “No valid rootfs found”.  Now it is time for the micro SD card.


Place the micro SD card in the slot, and the board will recognize that it contains an file.  It will immediately begin copying the contents of ubuntu-trusty-arm-mininodes-20141227.img to the NAND (/dev/nandd).


After approximately 5 minutes it will finish copying the data, and we can safely remove the SD card.


Once it’s removed, press the Reset button on the Optimusboard, and we should now boot up cleanly, and after a moment arrive at an Ubuntu login prompt.  The default username / password combo is ubuntu / ubuntu.

The build script only gets us to a minimal working state, so, let’s finish bringing the system all the way up and prepare it for use.  First, lets expand the filesystem to use all of the available space on the NAND (roughly 8gb):

resize2fs /dev/nandd

Then to verify the results:

df -h

Obviously we’ll want to change the passwords, for security purposes:


su root


Finally, lets bring up the ethernet port and grab a DHCP ip address, so we can access the internet.

ifconfig eth0 up

dhclient eth0

If all goes according to plan, you should now have a minimal Ubuntu 14.04 LTS ARMv7 install running on your Allwinner A80 Optimusboard! From here, you can customize the system to best suit your needs!

Posted on

Running Linux on the Allwinner A80 Optimusboard ARM Server (Part 2)

Previously, we discussed how to build Linux for the new Allwinner A80 Optimusboard ARM Microserver using the SDK.  Now, let’s go through the process of installing it to the board and getting Linux actually up and running.

We’ll pick up where we left off previously, with the build process having just completed.

Next, we are going to create an image that can be flashed via LiveSuit.  LiveSuit is going to need a rootfs.ext4 file as input for the process, and it will be looking in the A80/lichee/out/sun9iw1p1/dragonboard/common directory.  This file should have been created automatically during the build process.  After verifying it exists, we can run our ‘pack’ command.

./ pack

If successful, you will get an output file of sun9iw1p1_dragonboard_optimus.img in the A80/lichee/tools/pack directory.  This is the file we will use in LiveSuit to push Linux to the Optimusboard.  Load LiveSuit from its directory via:


We need to choose the file to flash, so we navigate to the proper location and select our sun9iw1p1_dragonboard_optimus.img file.

The A80 Optimusboard does not have a dedicated FEL button on it like some other devices, so, to get the board ready for the flash we have to attach a Serial cable and manually intervene with it’s boot process.  We hook up the cable to the UART port, use the ‘screen’ command to capture the input and output, and plug it in to a USB port.  While the board initializes, we press any key on the keyboard to interrupt the autoboot and are presented with a command prompt.  The ‘efex’ command will launch FEL mode for us.


The board will switch to FEL mode, and LiveSuit will automatically recognize that it is now ready to flash the image to the NAND.  It will take a couple of minutes to complete, and once done, we should now have Linux installed.  Leaving the console cable attached, we reboot the board, and we can now see that it boots up and has a Linux filesystem installed and running.  Keep in mind, its pretty minimal at this point, as we have not built a robust, feature rich environment like Ubuntu, Fedora, or other Linux distributions.  But this is a good base to build upon as we continue further development and leverage ARM processors for use as microservers.







Posted on

How to Build Linux for the Allwinner A80 Optimusboard

With the recent leak of an SDK for the Allwinner A80 ARM processor, it is now possible to build Linux for the Optimusboard.  However, the SDK does not appear to be a final build, and has quite a few bugs that have to be squashed before the build will successfully complete.  Here are the steps required to get the Linux build to finish:

First, we have to download and extract the SDK from the Linux-Sunxi website:

tar -xvf A80_SDK_20140728.tar.gz
cd lichee
./ config

I have selected the following options:

@ubuntu:~/A80/lichee$ ./ config
Welcome to mkscript setup progress
All available chips:
0. sun9iw1p1
Choice: 0
All available platforms:
0. android
1. dragonboard
2. linux
Choice: 2
All available kernel:
0. linux-3.4
Choice: 0
All available boards:
0. optimus
1. p1
2. perf
3. perf5
4. perf-lpddr3
Choice: 0

gedit lichee/buildroot/toolchain/toolchain-external/

In the last section, where the external toolchains are defined, update Line 127 to read:

gedit /lichee/out/sun9iw1p1/linux/common/buildroot/build/host-m4-1.4.15/lib/stdio.h

Edit Line 456, and change ‘gets’ to ‘fgets’



tar -xvf fuse-exfat-0.9.5.tar.gz

Copy the contents to /lichee/out/sun9iw1p1/linux/common/buildroot/build/fuse-exfat-0.9.5

gedit /lichee/out/sun9iw1p1/linux/common/buildroot/.config

Edit Line 72, to point to


Download, and then copy it to /lichee/buildroot/dl/


The build should now complete successfully. Next time, we will discuss getting the newly built Linux written to an SD Card and boot up the Optimusboard straight to Linux!

Credit for many of the packages that we needed to self-host go to Qubir, who had the exact versions we needed for an A20 board he had hosted on

Posted on

Allwinner A80 Optimus Board Arrives for Testing!

The Allwinner A80 Optimus Board has arrived, and we are currently evaluating its ability to perform as an ARM microserver!

It just got here, and the first thing we noticed right away, is that it is FAST!

I’ll keep the blog updated as we make progress getting Linux running on it, and then getting a good software stack in place.

Here is what we have so far:

Allwinner A80 Optimus Board
Allwinner A80 Optimus Board Android
Allwinner A80 Optimus Board Android









Stay up to date on our Google+ page, as well!