Cubieboard4 is a development board powered by Allwinner A80 octa-core processor with 2GB RAM and 16GB eMMC. I’ve already shown how to get started with the board using the pre-installed Android 4.4 image, and run some benchmarks in Android, so now it’s time to check out the Ubuntu Linaro 14.04 image provided by CubieTech. I’ll show how to install and setup Ubuntu 14.04 on the board using a micro SD card, run desktop applications like Chromium, Libre Office, and son on on the board, and complete the review with some Linux benchmarks.
Firmware images for Cubiebord4 can be downloaded @ http://dl.cubieboard.org/model/cc-a80/Image/. Currently Android 4.4, Debian server, Ubuntu Linaro server, and Ubuntu Linaro desktop with LXDE desktop environment. That’s the latter I’ll use for the experiment, and two images are available:
- linaro-desktop-cb4-card-hdmi-v0.4.img.7z – Bootable image from micro SD card
- linaro-desktop-cb4-emmc-hdmi-v0.4.img.7z – Installation image to eMMC to be written to micro SD card (and not via PhoenixSuite).
I’ve just downloaded and flash the “card” image to a 32GB Class 10 micro SD card in a terminal windows in a Linux computer:
7z x linaro-desktop-cb4-card-hdmi-v0.4.img.7z
sudo dd if=linaro-desktop-cb4-card-hdmi-v0.4.img | pv | sudo dd of=/dev/sdX bs=16M
where X is the letter of your SD card, which you can check with lsblk. Be very careful as using the wrong letter may wipe out your hard drive, and you may consider using a virtual machine to be extra safe. This step also be done in a Windows computer with 7-zip and Win32DiskImager utilities.
Now insert the micro SD card into the board, connect the necessary cable, and power it on. After around 35 seconds, maybe a little more the first time, I get a usable desktop. Your own boot time will obviously be impacted by your micro SD card performance.
Firefox and Nautilus are not part of the default image, but I’ve installed them with apt-get, and added shortcuts to the desktop.
Usually, you need to run gparted or resize2fs to make full use if your SD card capacity, but this is automatically taken care of by the image, and my root partition was automatically extended to 30GB:
linaro@cubieboard4:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 30G 4.2G 25G 15% /
devtmpfs 814M 4.0K 814M 1% /dev
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 163M 476K 163M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 814M 0 814M 0% /run/shm
none 100M 4.0K 100M 1% /run/user
/dev/mmcblk1p2 128M 5.6M 123M 5% /media/mmcblk1p2
/dev/mmcblk1p7 756M 587M 170M 78% /media/linaro/57f8f4bc-abf4-655f-bf67-946fc0f9f25b
/dev/mmcblk1p10 630M 11M 620M 2% /media/linaro/57f8f4bc-abf4-655f-bf67-946fc0f9f25b1
/dev/mmcblk1p1 5.7G 3.4G 2.4G 59% /media/linaro/57f8f4bc-abf4-655f-bf67-946fc0f9f25b2
/dev/mmcblk0p1 12M 6.1M 5.9M 51% /media/linaro/29BC-6723
Since I’m connected to Internet via an Ethernet connection I did not have to configure anything else, except the timezone set with:
sudo dpkg-reconfigure tzdata
At this stage, you’ve got a fully workable ARM Linux computer, although if you want to use Wi-Fi, Bluetooth, and/or a printer more configuration work is required, but I haven’t tried any of these.
The image is quite minimal, and beside Pacman file manager and a few other small programs, only Chromium browser is already installed. So I installed Firefox, Libre Office, Nautilis and Gimp with apt-get:
sudo apt-get install libreoffice nautilus firefox gimp
The system is quite responsive, although programs don’t quite load as fast as from an SSD or eMMC, and you need to wait a few seconds for Chromium or Libre Office to load.
Since the font looked quite poor in Chromium, I installed Firefox, but I had the same results. So finally I installed Ubuntu fonts:
sudo apt-get install ttf-ubuntu-font-family
and configured the web browsers accordingly leading to much better font rendering.
I’ve run the following tests in Cubieboard4 to show the performance, and what is working or not:
- 30 seconds boot
- List of installed applications
- LibreOffice (Writer)
- Chromium – Multi-tabs, YouTube (embedded / full screen; VP9), and Candy Crush Saga (Flash game) in Facebook
- 3D hardware acceleration with es2gears and glmark2-es2
- 1080p video playback with VideoLAN
- Power off
I also ran htop in a terminal to show the eight cores CPU usage. Sorry the video is not quite straight and audio is poor with SJ1000 camera.
The system is working quite well, except with YouTube videos which are not so smooth, because YouTube has now mostly switched to VP9 codec, and 3D support failed with “DRI2: failed to authenticate”. Candy Crush Saga worked fine, although not amazingly smooth, but performance is not that much different from my regular Ubuntu PC for that game. 2D hardware acceleration is supposed to be implemented (a80-xf86-video-fbturbo), but I’m not quite sure how to formally test this. H.264 and MPEG4 video could be played in VideoLAN with only one CPU core use confirming hardware video decoding support, but MPEG2, VC1 and H.265 codecs all failed.
In the screenshot above, I play Big Buck Bunny in VideoLAN on the top left corner, but since hardware video decoding is activated, the video won’t show in the screenshot, which is perfectly normal.
Even though Cubieboard4 Ubuntu support is not too bad right now, I still think ODROID-XU3 Lite delivers a better Linux experience, especially when using an eMMC module, as programs load faster, 3D acceleration is working, as well as Kodi with hardware video decoding. The only downside is that flash (Chromium + pepperflash) did not work when I tried on XU3 Lite, but this may have been fixed by now.
I’ve installed the latest version of Phoronix Test Suite to run a few benchmarks in Linux:
sudo apt-get install php5-cli php5-gd
sudo dpkg -i phoronix-test-suite_5.4.1_all.deb
After configure the test suite for batch benchmark with
I decide to run the same three tests as on ODROID-XU3 Lite, encoding MP3, compressing files, and performing some HTTP server tasks:
phoronix-test-suite batch-benchmark pts/encode-mp3 pts/compress-7zip pts/apache
Unfortunately, apache failed to compiled, so only the MP3 and 7-zip test completed.
So the only direct comparison with the test I’ve done between ODROID-XU3 Lite and Cubieboard4 is for MP3 encoding, and in this test the Exynos platform is faster, but the Allwinner A80 board still compares favorably to slower or/and older ARM board like Radxa Rock, ODROID-C1, or PCDuino (cpu test) in 7-Zip test, especially this test runs on all available cores.
Now let’s see how fast the board build Linux 3.19.
sudo apt-get install libncurses5-dev gcc make git exuberant-ctags
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
git checkout -b stable v3.19
Mainline kernel requires gcc 4.9 to build, but Ubuntu 14.04 only comes with gcc 4.8.2, so let’s install the new compiler. Since add-apt-repository is missing, we have to install the relevant package first:
sudo apt-get install software-properties-common
We’ll also need to edit /etc/lsb-release to replace DISTRIB_ID=Linaro by DISTRIB_ID=Ubuntu temporary, as the toolchain repo has never heard about a Linaro distribution, and then we can complete gcc 4.9 installation.
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
Allwinner enginners themselves are not directly involved in mainline kernel develompent, but they are usually in the loop when members of linux-sunxi community send patchsets to the ARM Linux kernel mailing list, which mean Allwinner processor are supported in mainline kernel, albeit with limitation. Allwinner A80 codename is sun9i, and we can see a device tree file for A80 OptimusBoard:
linaro@cubieboard4:~/linux-stable$ ls -l arch/arm/boot/dts/ | grep sun9
-rw-rw-r-- 1 linaro linaro 3561 Apr 1 13:23 sun9i-a80-optimus.dts
-rw-rw-r-- 1 linaro linaro 12608 Apr 1 13:23 sun9i-a80.dtsi
Nevertheless, I’ve built the kernel using sunxi default config used for all Allwinner platforms:
time make -j8 CC=gcc-4.9
Kernel: arch/arm/boot/zImage is ready
So Cubieboard4 took 6 minutes on 36 seconds to build Linux 3.19, while ODROID-XU3 Lite took 5 minutes 43 seconds to build Linux 3.18, not too bad, but this is show some performance advantage for the Exynos processor.
Ideally video transcoding should not be done by software, since most ARM processors can handle MPEG2 to H.264 transcoding using the VPU, but this can still be useful to evaluate a processor performance, so just like for ODROID-XU3 Lite, I’ve converted a short MPEG2 into H.264 with avconc:
sudo apt-get install libav-tools
time avconv -i big_buck_bunny_1080p_MPEG2_MP2_25fps_6600K.MPG \
-vcodec libx264 -minrate 300k -maxrate 300k -bufsize 1835k bbb-h.264.avi
avconv version 9.11-6:9.11-2ubuntu2, Copyright (c) 2000-2013 the Libav developers
built on Mar 24 2014 06:21:10 with gcc 4.8 (Ubuntu/Linaro 4.8.2-17ubuntu1)
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mpeg, from 'big_buck_bunny_1080p_MPEG2_MP2_25fps_6600K.MPG':
Duration: 00:00:44.74, start: 0.240000, bitrate: 7159 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 9792 kb/s, 24.75 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1c0]: Audio: mp2, 44100 Hz, stereo, s16p, 160 kb/s
[libx264 @ 0x6c9c0] using SAR=1/1
[libx264 @ 0x6c9c0] MB rate (734400000) > level limit (2073600)
[libx264 @ 0x6c9c0] using cpu capabilities: ARMv6 NEON
[libx264 @ 0x6c9c0] profile High, level 5.2
Output #0, avi, to 'bbb-h.264.avi':
ISFT : Lavf54.20.3
Stream #0.0: Video: libx264, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=-1--1, 90k tbn, 90k tbc
Stream #0.1: Audio: libmp3lame, 44100 Hz, stereo, s16p
Stream #0:0 -> #0:0 (mpeg2video -> libx264)
Stream #0:1 -> #0:1 (mp2 -> libmp3lame)
Press ctrl-c to stop encoding
frame= 1037 fps= 6 q=56.0 size= 30759kB time=40.60 bitrate=6205.9kbits/s
It took 3 minutes 3 seconds to convert the 44 seconds video, so just like with the Exynos board it’s not possible to transcode a 1080p video @ 25 fps in real-time by software, at least with avconv, and the parameters I used. ODROID-XU3 Lite was a bit faster however, managing to convert the same video in 2 minutes and 33 seconds.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.