First contact with the Cubieboard

I got myself a Cubieboard some months ago, not because I needed one by because I had the opportunity to join a group purchase organized by some friends back then. I wasn’t looking for a new board, however, the Cubieboard looked interesting because of the onboard SATA connector. Plus the analog audio input / output on the board may also prove useful for SDR and digital voice experiments.

Few days ago we were talking about the Cubieboard and the discussion inspired me to finally power on the board. The board (or the chip) has 4 GB of NAND with Android installed. If you don’t insert an SD card with an OS into the slot it will just boot from NAND. I did that once but couldn’t use it for anything. I managed to see the animated android logo during boot, then shortly the screen turned into the funkiest pixel art that I have seen in a long time. This was probably because of screen resolution mismatch but who cares?

I started looking for the right linux OS to use on the Cubieboard. After trying several options, including a few from the official download page, I ended up with a quite recent Fedora 19 image by Hans de Goede. I must admit, I was kind of excited to try Fedora again. Of course, it helped a lot that it came with Xfce desktop instead of the default Gnome 3. Initially it worked well and had good support for all the hardware. Unfortunately, it didn’t take me more than an evening to break it completely. I think it was because of some package upgrades… and suddenly I could no longer run the graphical package management tool yumex, which by the way was painfully slow. Every time I clucked on something in the yumex window it had to re-read and analyze the whole package database – or that’s how it felt. Okay, it was time to look for something else…

The next option that I have tried was BerryBoot mostly because it was “not recommended” on the linux-sunxi wiki page. So far, all the recommended options failed for me and  I felt it was time to try something “not recommended”. The BerryBoot option was working fine using the Linaro Ubuntu ALIP image – at least until I found out that USB audio was not compiled into the kernel. Since one of my potential applications for the Cubieboard is to serve as SDR using the Funcube Dongle I didn’t wish to proceed with this OS option either.

After a little more searching I found Cubian: A minimalistic Cubieboard OS based on Debian 7 armhf. I was very appealing at first. No graphics, small memory footprint, DHCP all set up and working, USB audio working. Despite its minimalistic approach there is access to the comprehensive package database available in the Debian distribution.

Cubian r5

I worked long enough in Cubian to notice that the MAC address of the Cubieboard was changing at each boot. This is a known issue and can be fixed in several ways. It was a good exercise to learn how to use the bin2fex and fex2bin tool to manipulate the boot script, see http://linux-sunxi.org/Sunxi-tools . I was quite happy with Cubian for a while. Unfortunately, I was getting kernel ooops’es more and more frequently. Initially while trying to install the Cubian image onto the NAND using the cubian-nandinstall tool, later also while trying to update the installed packages. Probably related to disk I/O; I tried 3 different SD cards otherwise known to work well. The errors were so obvious and persistent (I really didn’t do anything else than “apt-get upgrade”) that I started to suspect that something was wrong with the board.

I am not sure if the different distributions use different kernels or if they all use the same kernel from http://linux-sunxi.org . In any case, I have decided to try one more distribution before trashing the board as a useless piece of junk. One of my problems so far has been that most official images are made to be programmed into the NAND. That requires using a binary-only tool which does not work on my linux computers. Not that I was any more impressed by its performance on Windows but at least I managed to flash the lubuntu-desktop-nand-12.xx_v1.05.img into the chip. This is a Linaro / Ubuntu desktop using LXDE as desktop environment.

This image boots and runs well. I have done lots of package upgrades and installs without encountering any kernel issues like I was with the Cubian image. So the kernel oops’es were either a kernel issue in Cubian or due to the SD card interface, which I am not using with the lubuntu desktop installed in the NAND.

The lubuntu image starts the lightdm display manager automatically. I don’t need that, in fact, I would prefer a text console and use startx if I decide to use LXDE on the Cubieboard. Fortunately, disabling the auto-start of lightdm is easy:

  $ sudo echo "manual"  >  /etc/init/lightdm.override 

then reboot. After this change the memory footprint of the OS is down at 22 MB – just like it was with Cubian. I can still start and stop lightdm manually from the console:

  $ start lightdm
$ stop lightdm

If I am to write some sort of conclusion on any of this I would say that the Cubieboard is an interesting board, in particular if you need a board with SATA interface. Unfortunately, there seems to be a lots of closed source around the Allwinner A10 processor, which is probably why it is not so well adopted by the linux dev community and it is difficult to find the perfect linux distribution for this board. Android support on the other hand seems to be much better and even officially supported by the company who makes the chips. I guess the chip is made for cellphones, media centers and such. If you want to make an Android based media center it is probably a good choice. But for a quick-start linux devboard there are much better alternatives, such as the Beaglebone.

Still, since the board has analog audio input and output it makes an interesting option for radio stuff. I have already compiled rtl-sdr on the board and rtl_fm is running at 12% CPU load, so it is promising.