Home > Allwinner A-Series, Hardware, Linux, Testing, Ubuntu > How-to Install Ubuntu on Allwinner A80 Powered pcDuino8 and A80 OptimusBoard

How-to Install Ubuntu on Allwinner A80 Powered pcDuino8 and A80 OptimusBoard

November 17th, 2014 Leave a comment Go to comments

Last month, pcDuino released Android 4.4 and Ubuntu images for pcDuino8 board powered by Allwinner A80 octa core processor, and since it’s the same board layout as A80 OptimusBoard, I decided to try it out, but it failed as the update script would try to flash it to a partition that’s too small for the root file systems. But last week, Ian Morrison and Minidodes gave it another try, and successfully booted Ubuntu, or more exactly Lubuntu, on A80 OptimusBoard.

Lubuntu Screenshot in A80 OptimusBoard

Lubuntu Screenshot in A80 OptimusBoard

Both their screenshot reports sun9i platform in /proc/cpuinfo, so that’s definitely Allwinner A80, but only one core is shown. I’m not sure if it’s because the other are idled and don’t show, or for some reasons, the kernel only supports one core at this stage.

Anyway, here’s how they did to install Lubuntu:

  • Flash the kernel (pcduino8_kernel_livesuit_20141008.img) with PhoenixCard or Livesuit first. See instructions to use Livesuit with A80 OptimusBoard.
  • Extract the rootfs (pcduino8_ubuntu_20141008.rar) to an SD card or USB flash drive. There should be two files: pcduino8_ubuntu_20141008.img and update.sh.
  • Boot the board, but don’t insert the SD card or USB flash drive yet.
  • update.sh script will attempt to copy the rootfs to /dev/nandd, but there’s not even space, so it will fail. So instead login as root (no password) and kill update.sh: ps ax | grep update, kill “pid”.
  • Now connect the mass storage device to pcDuino3 / A80 Optimusboard, and mount it to /mnt
  • Flash the Ubuntu image to /dev/mmcblk0p1:
  • Now reboot the board and interrupt the boot sequence to enter U-boot, and use ‘env’ to change the bootargs with mmc_root to /dev/mmcblk0p1 and init to /sbin/init.
  • Save the environment with env save, and boot the board to start Ubuntu.

I have not tried (yet), since I’m busy with other hardware, so let me know if the instructions above need improvement. [Update: the procedure may depend on the Android firmware / flash partition, as described in the comments section]

On a side note, Merrii released some new SDKs for A10, A20, A31, and A80.

  1. Toto
    November 18th, 2014 at 16:49 | #1

    For the CPU, there is the same behavior on the cubieboard2 with archlinuxARM, only one cpu is displayed on proc/cpuinfo, but htop (or new version of top) for example, displays 2 CPUs. I suppose this is due to linux-sunxi kernel patchs ?

  2. JIV
    November 18th, 2014 at 23:19 | #2

    whats the kernel version?

  3. November 18th, 2014 at 23:57 | #3

    1. Change ‘of= /dev/mmcblk0p1’ to ‘of=/dev/mmcblk0p1’ (there is a space).
    2. Change ‘I decoded to try it out’ to ‘I decided to try it out’.

    The device /dev/mmcblk0p1 does not exist.
    When creating it with
    mknod /dev/mmcblk0 b 254 0
    mknod /dev/mmcblk0p1 b 254 1
    it still does not work as if no appropriate kernel driver is loaded for them.

    In U-Boot, the old value of the variable was:

    To save the environment variables, “env save”.

    I performed the dd instruction on the ‘/dev/nandd’ device (8GB eMMC) instead and it worked. Now I am in Ubuntu on the A80 Optimusboard, as shown in the screenshot.

  4. November 19th, 2014 at 06:29 | #4

    /var/log/kern.log mentions all cores. Apparently they just do not show up in /proc/cpuinfo.

    Nov 18 20:11:56 ubuntu kernel: [11878.787202] CPU2: Booted secondary processor
    Nov 18 20:11:57 ubuntu kernel: [11879.289774] CPU3: Booted secondary processor
    Nov 18 20:11:57 ubuntu kernel: [11879.812919] CPU4: Booted secondary processor
    Nov 18 20:12:01 ubuntu kernel: [11883.273026] CPU3: shutdown
    Nov 18 20:12:01 ubuntu kernel: [11883.775673] CPU2: shutdown
    Nov 18 20:12:02 ubuntu kernel: [11884.277526] CPU4: shutdown
    Nov 18 20:12:03 ubuntu kernel: [11885.275437] CPU1: shutdown

    glxinfo output: http://paste.ubuntu.com/9080957/
    There is “software rendering”, which does not take advantage of the GPU capabilities.
    If you feel the environment is somewhat fast, it’s due to the CPUs.

    Xorg.log.0: http://paste.ubuntu.com/9081038/

  5. November 19th, 2014 at 10:23 | #5

    Thanks for the update.
    You may have had a different Android firmware installed. If you had to dd to /dev/nandd, the update script should have worked too.

  6. December 14th, 2014 at 03:43 | #6

    It might be that CPU cores just go offline when they are not needed and go online if you run some processes which really need more performance. So they will not show up in /proc/cpuinfo.

  7. December 14th, 2014 at 04:11 | #7

    What about the following in Ubuntu ?
    sudo apt-get install cpuburn
    sudo -i #get root
    burnCortexA9 & burnCortexA9 & burnCortexA9 & burnCortexA9 & burnCortexA9 & burnCortexA9 & burnCortexA9 & burnCortexA
    This should give some workload for all 8 CPU cores.

  8. December 14th, 2014 at 10:21 | #8

    @Peter Bauer
    Yes, that’s correct, cores will turn off when not in use, so they don’t show up.
    I have not tried cpuburn, but I’m now sure a eight cores can be used at the same time in this Ubuntu image.

  9. December 30th, 2014 at 13:48 | #9

    Some alternative instructions to install Ubuntu 14.04 server on A80 OptimusBoard and pcDuino 8 (now called Arches) – http://www.mininodes.com/installing-ubuntu-server-14-04-on-the-arm-allwinner-a80-optimusboard-or-pcduino8-arches/

  10. MRB
    January 4th, 2015 at 16:49 | #10

    When I turned other cpus(1-7), they shutdown immediately even I assigned task by ‘taskset’ command. How can I turn them all?

  11. vpeter
    January 25th, 2015 at 23:34 | #11

    I don’t get any output over HDMI to TV (hd ready). Is this normal or doing something wrong? Console works and also vnc works.

  12. erik
    June 1st, 2015 at 17:38 | #12


    dd on ‘/dev/nandd’ on optiumsboard complains about not enough disk space. Optimusboard does NOT have NAND, it has 8GB of mmc instead, pcduino8 HAS 8GB of NAND. This is why you cannot dd on /dev/nandd with this board.

  13. erik
    June 1st, 2015 at 17:48 | #13

    The instructions of this guide are incorrect. After flashing the kernel with phoenixsuit and the file pcduino8_kernel_livesuit_20141008.img and booting, the system loops indefinitely. Inserting a SD card in the slot does not stop the system from looping.

  1. December 31st, 2014 at 06:17 | #1
  2. January 2nd, 2015 at 13:40 | #2
  3. March 14th, 2015 at 03:32 | #3