A few days ago, Hardkernel released the first version of Ubuntu 12.11 (Linaro) with Mali-400 GPU support for their ODROID boards (ODROID-X/X2, ODROID-U/U2). This is still WIP (Work in Progress), but this is one of the few boards together with Pandaboard, Origen and Snowball that can support 2D/3D GPU acceleration in Ubuntu Quantal. Since I have an ODROID-X development board, I decided to give it a try. There are different ways to install it. I chose the way that is most convenient for me (LCD display instead of HDMI), and likely to yield more performance (eMMC instead of SD Card). The current installation instructions to eMMC are extremely cumbersome and you have to go through 5 main steps:

Install Android (yes, seriously) in the eMMC

Install Ubuntu in the SD Card

Install Ubuntu to the eMMC

Upgrade Ubuntu to the latest version

Install the Mali drivers

In this post I’m going to go through all those steps, and do some testing for eMMC and 2D/3D performance. If you just want to boot Ubuntu from SD, simply skip steps 1 and 3. For eMMC installation, I followed the “eMMC Ubuntu” guide on odroid forums, as well as the instructions on the release post to install Mali drivers, and enable 2D/3D acceleration in Ubuntu. Similar instructions are also available for ODROID-X2 and ODROID-U2.

If you use Windows, do it with Win32DiskImager. Back in the times when I still used Windows and Win32DiskImager, I never had problems myself, but some people apparently have, and Hardkernel released an improved version of Win32DiskImager to verify the copy.

Then insert the SD card in your ODroid-X board, connect a Jumper on SD/MMC connector (JP2) to boot from SD card, and install the latest version of Android. During installation I had no display on the 10″ LCD display, and the board simply powered itself off after a while. Not sure this is normal, but after removing the Jumper, I could boot to Android (3-Jan-2013 build) from the eMMC.

Installing Ubuntu 12.11 for ODROID-X to the SD card

Now take the SD card back to your Linux computer to copy the Ubuntu image:

Inset the SD card in ODroid-X board, insert the Jumper in JP2 to boot from SD card to verify Ubuntu 12.10 boots correctly.

Install Ubuntu to ODROID-X eMMC Module

Once you’ve verified Ubuntu boots correctly from the SD Card, put the SD card back in your PC and copy odroidx_20130128-linaro-ubuntu-desktop_SD_with_LCD.img.xz to the rootfs. In my PC running Ubuntu 12.04, it will automount it to /media/rootfs:

Once umount is successfully (which means the data is fully written to the SD card), you can insert it back into your ODroid-X board to install Ubuntu 12.10 to your eMMC. First locate your eMMC device with:

ls /dev/mmcblk*

The eMMC is the device with with boot0/boot1, as well as p1/p2/p3/p4. In my case, it’s mmcblk0. Once you know this, copy Ubuntu to the eMMC by using the following command in a terminal:

If you are outputting to an HDMI monitor, the installation should be complete at this stage. In my case I could only the 4 tux and nothing else showed up on the display. I could however access the command line via the serial console. After further reading, I found out I had to modify /usr/share/X11/xorg.conf.d/99-hkl_mali.conf to make it work with the LCD display as follows:

Option "fbdev" "/dev/fb0"
.......
DefaultDepth 24

Ubuntu Linaro 12.11 Performance in ODROID-X

The first thing I’ve noticed is that Ubuntu feel snappy with this hardware, at least snappier than in my Atom netbook running Ubuntu 12.04, and it’s the first time I could see myself using this platform as a desktop replacement. Booting from power off takes 15 to 20 seconds. There are still some issues though. Once of them is that software-center is not working when run from the eMMC (SD card is OK). Even though this post is mainly about GPU support, I’ve compared startup times from eMMC and SD card with Libreoffice Writer, Software Center, and Firefox

Libreoffice Writer was not pre-installed, so I installed it first:

sudo apt-get install libreoffice-writer

Firefox

Software Center

Libreoffice Writer

SD Card

5s

18s

11s

eMMC

3s

Does not start

5s

Each program was started after a reboot. We can notice there’s a significant advantage of using eMMC instead of SD card when it comes to startup time.

I’ve done another test to check whether WebGL would work, and I’ve got between 0 to 1 fps on both Firefox and Chromium with WebGL Aquarium. A final comment, since many people still seem to be confused with GPU and video decoding. The Mali-400 does not handle video decoding, this is done normally done by the Video Processing Unit (VPU), and AFAIK this is not currently supported in Linux on ODROID boards.

@onebir
“Yes”
The Debian/Ubuntu-repos are pretty completely available for ARMHF. So binaries need to be compiled for this “different” (to x86/x64) Platform, but most software comes already compiled for this.
Ubuntu-PPAs are a different thing though… sometimes noone needed the special PPA and compilation for armhf/armel is not enabled.
Same goes for other binary distribution of software, you won’t be able to download some x86-flashplugin from Adobe and use it. If you have the code however, you could compile it yourself.

I am stuck with no HDMI output after installing the image (with_HDMI) to an 8GB SD card. It seems to boot correctly one blue LED constantly on and the other blinking just like under Android – but nothing on the screen. When booting under Android I get the normal display…

@Klaus
I suppose you are at “step 2″. Difficult to know what’s going on if you don’t have USB to TTL board to access the serial console.
It could be your TV does not support the default output mode, but normally a message should show up on your TV.

Hi again, just checked it on another monitor and same result. At sep 2 the system seems to boot from the SD card: one blue led on, the other blinking – but no display – it actually does not even wake up (the display). Next I will try another SD card but if someone has another idea I would be happy.

Its me again, sorry!
I tried now several Monitors (HDMI) and SD cards and I can’t get it to work. I do step 2:
Download (several times) the HDMI version of the xz file
unzip it (>5GB) and “burn” it to an SD card.

As already said it gets quickly to the point of one blue LED on and the other one blinking. However,
I think it gets stuck at this point. The cooling device of the processor stays cold (not the case with Android). Android boots normal

Hello, I got quite far now. I am able to boot with openSuse for odroidx and I can run version: odroidx_20121015-linaro-precise-ubuntu-desktop_with_HDMI.img.gz. Actually I am impressed with the performance of the later! I am not able to run version: odroidx_20130128-linaro-ubuntu-desktop_SD_with_HDMI.img.xz. No display…

@cnxsoft
> It seems AllWinner forgot to “lock” something so their drivers can also be used on other ARM SoC.
Totally late answer, but no, it is not Allwinner. Mali-400 libs are done like that, they are universal, you can use r3p2 from hardkernel on any Mali-400 compatible device, if you will update your platform definition (config.h & mali_platform.c) to match r3p2 kernel drivers. Info about how to do can be gathered from hardkernel repo, just checkout r2p4 drivers in 3.0.y and r3p2 in 3.5.y branches. You will see what changed and you can grab any device r2pX and update it to use hardkernel’s release of r3p2.

P.S.: dont forget about EULA, include it, hardkernel worked hard-time to get libraries licensed to them.

Well since i did these tests from my unstable linaro on microsd before passing to the emmc i retried the tests.
Consider in the sd i had a lot of self compiled drivers for X just to test the sixaxis (ps3 console).
After passed to the emmc with standard installation I had:
1) at first run it gave result glmark2 Score: 75 not so good so….

so i was wondering for the reason… and… try to repeat the test in this manner (i do that from ssh console usually):
– log as root
> /etc/init.d/lightdm stop
> export DISPLAY=:0.0
> X&
> glmark2-es2

>> Klaus
>> I am stuck with no HDMI output after installing the image (with_HDMI) to an 8GB SD card. It seems to boot
>> correctly one blue LED constantly.

i am also stuck with same problem using linaro 12.11 HDMI image. when i was insert card into board, it display an error as “cannot display this video mode”.
i was tried with different sd cards, and also with android image, but still am getting same error.

and i followed all the steps said above, when i am trying to play videos using gstreamer with xvimagesink, it is showing error
” xvimagesink.c(1443): gst_xvimagesink_get_xv_support (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
No port available” .

@rajashekar
hi,
now ,I met the same problem with the 2D accelerator open ,sametime,the 3D accelerator open yet.
But I also get this:
xvinfo command output
X-Video Extension version 2.2
screen #0
no adaptors present
I want to know the ODROID support the X-video or not under linaro 12.11 or linux ?
now ,I am upgrating the kernel to odroid-3.8-y,but the kernel can not boot successfully yet
please tell me someting ,3Q.